SC34 2088 2_ISPF_Dialog_Mangement_MVS_Mar85 2 ISPF Dialog Mangement MVS Mar85
SC34-2088-2_ISPF_Dialog_Mangement_MVS_Mar85 SC34-2088-2_ISPF_Dialog_Mangement_MVS_Mar85
User Manual: SC34-2088-2_ISPF_Dialog_Mangement_MVS_Mar85
Open the PDF directly: View PDF .
Page Count: 362
Download | |
Open PDF In Browser | View PDF |
--...----- --- - --- e ee e Interactive System Productivity Facility (ISPF) Dialog Management Services MVS, VM/SP, and VSElAF Publication Number SC34-2088-2 File Number S370/4300-39 Program Number ·5668-960 Third Edition (March 1985) This edition applies to the program product Interactive System Productivity Facility (ISPF) as shown in the table below, and to all subsequent releases and modifications until otherwise indicated in new editions or Technical Newsletters. I System Release ISPF I I I I I Changes are made periodically to the information herein. Therefore, before using this publication, consult the latest IBN System 370 and 4300 Processors Bibliography (GC20-0001) for the editions that are applicable and current. References in this publication to IBM products, programs, or services do not imply that IBN intends to make these available in all countries in which IBM operates. Any reference to an IBN program product in this document is not intended to state or imply that only IBM's program product may be used. Any functionally equivalent program may be used instead. Publications are not stocked at the address given below. Requests for copies of IBM publications should be made to your IBN representative or to the branch office serving your locality. A form for readers' comments has been provided at the back of this publication. If this form has been removed, address comments to: IBM Corporation, Systems Publications, Dept. T46, P.O. Box 60000, Cary, NC 27511. IBN may use or distribute whatever information you supply in any way it believes appropriate without incurring any obligation to you. Copyright International Business Machines Corporation 1982, 1983, 1984, 1985 © I MVS 3.8 1 VN/SP 1.01 VSE/AF 1.3.51 VSE/AF 2.11 5746-XE8 1 5666-301 1 1 1 I I 1 1 5668-960 1 5668-960 1 5668-9601 5668-960 I I PREFACE The Interactive System Productivity Facility (ISPF) and the ISPF/Program Development Facility (ISPF/PDF or PDF) are related IBM program products. Together, they are designed to improve user productivity in the development of applications, and contain special functions for the development and use of interactive applications, called dialogs. Specifically: • ISPF is a dialog manager for interactive applications. It provides control and services to support execution of the dialogs in the MVS, VM/SP, and VSE environments. • PDF is a facility that aids in the development of dialogs and other types of applications. It makes use of display terminals and an interactive environment to help with many programming tasks. This manual provides a detailed description of the dialog management services and related information required to develop and use an interactive application that runs under ISPF. It is assumed that the reader is an application or systems programmer, engaged in the development of interactive programs, who is familiar with the host operating system environment; or is the user of an application running under ISPF. Users who do not develop programs may wish to read only the following parts of' the manual, which describe application user functions: Chapter 1, selected topic: Processing a Dialog Chapter 2, selected topics: Online Tutorial Split Screen ISPF Parms Option Chapter 3, selected topics: Command Entry System Commands Terminal Keys Light Pen and Cursor Select Appendix B The first five chapters of this manual describe how to use ISPF facilities to support the operation of interactive applications dialog organization, use of variables, library setup, invocation of dialogs, etc. Following that are detailed descriptions of each dialog service, and then detailed formats for panel, message, and file definitions. Finally, the appendixes contain a description of PARMS option use, an example of using the DISPLAY and TBDISPL services, a services summary, character translations for APL, TEXT, and Katakana keyboards, how to use the command table utility, and the appendix described below. Preface iii For the MVS and VM/SP operating systems, the dialog management functions of ISPF and the program development functions of PDF were previously combined in the predecessor program product, the System Productivity Facility (SPF). Major changes from SPF are described in an Appendix G. ISPF Dialog Management Services Examples (SC34-2085) is a supplement to this manual and provides examples (in CLIST, EXEC 2, COBOL, FORTRAN, and PL/I) of ISPF application dialogs. Other related publications are: VSE ~IVS SC34-2089 SC34-2090 SC34-2079 ISPF/PDF Reference tells how to use the Program Development Facility. SC34-2084 SC34-2083 SC34-2080 ISPF and ISPF/PDF Installation and Customization provides information needed to install ISPF and PDF and to custom tailor these products for a particular installation. SYNTAX NOTATION In this manual, the following notation conventions are used: • Uppercase commands and their operands should be entered as shown. Operands shown in lowercase are variable; a value should be substituted for them. • Operands shown in brackets [] are optional, with a choice indicated by vertical bars I. One or none may be chosen; the defaults are underscored. • Operands shown in braces { } are alternatives; one must be chosen. • An ellipsis ( ... ) indicates that the parameter shown may be repeated to specify additional items of the same category. TERMINOLOGY In this manual, the following terms are used to bridge the differences in terminology between the MVS, VM/SP, and VSE environments: iv • Library - A partitioned data set in the MVS environment, a MACLIB in the VM/SP environment, a VSE/AF source library in the VSE/AF 1.3.5 environment, or a VSE/AF library in the VSE/AF 2.1 environment. • File - A sequential data set in the MVS environment, a sequential CMS file in the VM/SP environment, or a sequential data set in the VSE environment. • Command Procedure - A CLIST in the MVS environment, or an EXEC in the VM/SP environment. ISPF Dialog Management Services CONTENTS I 1 Chapter 1. Introduction Using ISPF Services Developing a Dialog An Example of a Dialog Processing a Dialog . . . . MVS and VM/SP: Invoking an ISPF Application VSE: Invoking an ISPF Application Invoking an ISPF Application from a Master Application Menu Data Communications Within ISPF . . . . . . Parts of a Dialog ......... . . . . 2 3 4 5 5 5 6 7 7 9 Chapter 2. Dialog Processing Concepts Dialog Organization .... . Control Facilities ..... . MVS and VM/SP: Starting a Dialog VSE: Starting a Dialog .... The SELECT Service Online Tutorial Split Screen ISPF PARMS Option Dialog Services Overview Display Services Panel Definitions Message Definitions Table Services ..... Table Residency . . . . . . . . . Accessing Data . . . . . General Services . . . . . MVS, VM/SP, and VSE/AF 1.3.5: Resource Protection VSE/AF 2.1: Resource Protection ..... Row Services ... . Example ..... . Table Size ..... . File Tailoring Services Skeleton Files Example ..... . Variable Services Variable Access - Order of Search from Services Select Service and Variable Pools ...... . Relationship of Function Pools to Dialog Functions MVS and VM/SP: The Function Pool for Command Procedures The Function Pool for Programs . . . . The Shared Pool ..... . . . . The Application Profile Pool Representation of Variables System Variables ..... Summary of Variable Services 9 12 12 12 14 16 16 17 17 17 18 20 22 23 23 24 25 25 26 26 28 28 29 31 32 32 33 35 35 36 38 38 39 40 42 Contents v Miscellaneous Services .... EDIT and BROWSE Services LOG Service CONTROL Service VM/SP: Use of the Virtual Machine Communication Facility I vi (V~fCF) 42 42 43 43 44 Chapter 3. Use of Commands, Program Keys, and Light Pen Command Entry System Commands STOPAT Command END and RETURN Commands Jump Function Scrolling Command Tables Command Table Format SELECT Action Commands Assigning Command Aliases Overriding System Commands Passing Commands to a Dialog Function Dynamically Specified Command Actions Terminal Keys ..... . Program Function Keys Defining PF Keys ..... Saving PF Key Definitions ..... MVS and VM/SP: Program Access (PA) Keys VSE: Program Access (PA) Keys Light Pen and Cursor Select 45 Chapter 4. Library Requirements MVS: Library Setup ... . Required Libraries ..... . Table and File Tailoring Libraries CLIST and Program Libraries ...... . VM/SP: Library Setup ......... . Required Libraries ...... . Table and File Tailoring Libraries EXEC and Program Libraries Restrictions on Use of MODULE Files MVS and VM/SP: Use of Libraries VSE/AF 1.3.5: Library Setup Required Libraries . . . . . Library Definition ........ . Table and File Tailoring Libraries ... . VSE/AF 1.3.5: Use of Libraries VSE/AF 2.1: Library Setup Required Libraries Library Definition Table and File Tailoring Libraries VSE/AF 2.1: Use of Libraries 65 Chapter 5. I nvocation and Termination MVS and VM/SP: Invocation of ISPF VSE: Invocation of ISPF ISPSTART Syntax ..... 87 ISPF Dialog Management Services 45 47 49 50 51 52 53 54 55 56 56 57 58 59 59 60 62 62 63 63 65 65 66 67 68 68 69 71 72 72 73 73 74 78 78 79 79 80 84 85 87 87 88 Test Modes Trace Modes Dialog Initiation and Termination SELECT Service Invocation VSE: Dialog Abend Intercept Batch Execution of ISPF Services TSO Batch Environment Sample Batch Job Error Processing VM/SP Batch Environment Sample Batch Job Error Processing VSE Batch Environment Sample Batch Job Error Processing 91 93 93 93 95 95 95 96 96 98 98 98 100 100 101 Chapter 6. Description of Services I \ Invocation of Services .... . Command Invocation ..... . VM/SP: Using the &PRESUME Statement Call Invocation .... Parameters . . . . . . . . Return Codes from Services MVS and VM/SP: Return Codes from Services .... VSE: Return Codes and Other Processing Considerations FORTRAN . . . . . . . . PL/I . . . . COBOL ........... . Services .... . . . . . . . . BROWSE - MVS or VM/SP: Display a Data Set or File BROWSE - VSE: Display a Library or File CONTROL - Set Processing Modes ....... . DISPLAY - Display Panels and Messages ... . EDIT - MVS or VM/SP: EDIT a Data Set or File EDIT - VSE: EDIT a Library or File FTCLOSE - End File Tailorlng .... FTERASE - Erase File Tailoring Output FTINCL - Include a Skeleton ..... . FTOPEN - Begin File Tailoring LOG - Write a Message to the Log File SELECT - Select a Panel or Function SETMSG - Set Next Message .... . TBADD - Add a Row to a Table .... . TBBOTTOM - Set the Row Pointer to Bottom .... ... . TBCLOSE - Close and Save a Table ......... . TBCREATE - Create a New Table . . . . . . . . . TBDELETE - Delete a Row from a Table . . . . . TBDISPL - Display Table Information . . . . . . TBEND - Close a Table without Saving ..... . . . . . TBERASE - Erase a Table ..... TBEXIST - Determine if a Row Exists in a Table TBGET - Retrieve a Row from a Table TBMOD - Modify a Row in a Table ... . TBOPEN - Open a Table ......... . Contents 103 103 103 105 105 108 109 110 111 111 111 112 112 113 116 120 124 126 129 133 135 136 137 139 140 145 147 149 150 153 155 156 162 163 164 165 167 169 vii TBPUT - Update a Row in a Table TBQUERY - Obtain Table Information TBSARG - Define a Search Argument TBSAVE - Save a Table . . . . . TBSCAN - Search A Table TBSKIP - Move the Row Pointer .... TBTOP - Set the Row Pointer to the Top TBVCLEAR - Clear Variables .... VCOPY - Create a Copy of a Variable ... . VDEFINE - Define Function Variables ... . VDELETE - Remove a Definition of Function Variables VGET - Retrieve Variables from a Pool or Profile VPUT - Update Variables in a Pool or Profile VREPLACE - Replace a Variable .... VRESET - Reset Function Variables viii 171 173 175 177 180 182 184 185 186 188 191 192 194 196 198 Chapter 7. Panel and Message Definition and Skeleton Formats Panel Definitions ..... Formatting Guidelines Syntax Rules and Restrictions General Rules Blanks and Comments Lists .... .... . . .. ... . Variables within Text Fields and Literal Expressions ... . Attribute Section ..... Default Attribute Characters Statement Formats Panel Body Section ..... Command and Message Fields Sample Body Section Model Section ..... . Initialization and Processing Sections Statement Formats ........ . Control Variables ........ . Default Cursor Positioning .... . "Zit Variables as Field Name Placeholders Panel Processing Considerations Special Panel Requirements .... . Menus . . .. . .. . Primary Option Menus ..... . Set Next Menu . . . . . . . . Examples of Menus Help/Tutorial Panels Table Display Panels Message Definitions Message ID Nessage Library Syntax Rules Skeleton Definitions Data Records Control Statements Sample Skeleton File 199 199 200 202 203 203 204 205 206 206 207 210 211 211 213 213 214 223 226 226 227 228 229 232 233 234 239 243 251 251 251 253 254 255 256 258 Appendix A. Using the DISPLAY Service 261 ISPF Dialog Management Services Reading List ............... . Steps in Function Processing ..... . Description of Steps in Function Processing 262 263 264 Appendix B. Using the ISPF PARMS Option Specify Terminal Characteristics (Option 0.1) MVS: Specify Log and List Defaults (Option 0.2) VMjSP: Specify Console, Log, and List Defaults (Option 0.2) VSE: Specify Log and List Defaults (Option 0.2) ..... Specify Program Function Keys (Option 0.3) 275 Appendix C. Using the TBDISPL Service Steps in Function Processing ..... Description of Steps in Function Processing 289 Appendix D. Command Table Utility 297 Appendix E. Summary of ISPF Syntax Invoking an ISPF Application Message Definitions Skeleton Control Statements Panel Definitions Panel Header Statements Attribute Section Body Section Model Section Initialization Section Processing Section . . . . Statement Specifying the End of a Panel Definition Panel Statements and Built-in Functions Attribute Section Initialization and Processing Sections .... Panel Control Variables . . . . Dialog Services ..... Command Invocation Syntax Display Services Table Services - General Table Services - Row Operations . . . . File Tailoring Services . . . . . . . . . Variable Services ........... . Other Services ... . Call Invocation Syntax ... . Display Services . . . . Table Services - General Table Services - Row Operations File Tailoring Services Variable Services Other Services 301 301 301 301 302 Appendix F. VDEFINE Exit Routine 311 Appendix G. Character Translations for APL, TEXT, and ...................... . Katakana 313 275 279 281 282 284 290 291 302 302 302 302 302 302 303 303 303 303 303 304 304 304 304 305 305 306 306 307 307 307 308 308 309 309 Contents ix x Appendix H. MVS and VM/SP: Summary of Changes From SPF New and Revised Functions . . . . . . . . . Migration of Dialogs from SPF to ISPF .... .... 317 317 320 Appendix I. VM/SP: Use of Shared Minidisks 323 Index 325 ISPF Dialog Management Services FIGURES 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. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. Developing a Dialog Using PDF Application Dialog Running Under ISPF Typical Dialog Starting with a Menu Typical Dialog Starting with a Function Control and Data Flow SELECT Service Used To Invoke and Process a Dialog Sample Panel Definition Sample Panel - When Displayed Sample Member in Message Library Sample Table Sample Skeleton File Control and Data Flow in a Dialog Default Program Key Arrangement PF Key Definition Panel Use of Light Pen Attribute ISPDEF Statement Parameters and Libraries to Which They Apply Relationship Between Defaults Specified by the '*' Libname Statement and Unspecified ISPF Libraries. ISPDEF Statement Parameters and Libraries to Which They Apply Relationship Between Defaults Specified by the '*' Libname Statement and Unspecified ISPF Libraries.Sublibraries ~lVS Batch Job V~l/SP Batch Job VSE/AF 1.3.5 Batch Job VSE/AF 2.1 Batch Job Sample Panel Definition Sample Panel - When Displayed Sample Panel with TRANS and TRUNC Sample Panel with IF Statement Sample Panel with Verification Sample Panel with Control Variables Example of "z" Variable Placeholders Master Application Menu ISPF Primary Option Menu Lower-Level Menu Sample Tutorial Hierarchy Sample Tutorial Panel (B) Sample Tutorial Panel (F2) Table Display Panel Definition Current Contents of Table Table as Displayed Table Display Panel Definition with Multiple Model Lines Table as Displayed with Multiple Model Lines Sample Member in Message Library Sample Skeleton File Five Rows in Table Library Member TAB1 (TAB1 is Referenced by Steps 1b, 3a, 6a, and 8a) Figures 4 6 10 11 13 15 19 21 22 23 30 34 60 61 64 76 77 82 83 97 99 100 101 212 213 217 219 222 225 227 235 237 238 241 242 243 247 247 248 249 250 252 259 268 xi 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. xii Panel Library Member, Panel Definition SER (Used in Steps 2a, 4a, and 7 a ) . Panel Display SER (Displayed by Steps 2a, 4a, and 7a) Panel Display SER With an ISPF-provided Message Superimposed on Line 1 (Displayable During Steps 2a and 7a) Message Library Member EMPX21 (Used by Steps 4a, 5b, and 7a) Panel Display SER With the Short Form of Message EMPX210 Superimposed on Line 1 (Displayed by Step 4a) Panel Display SER With the Long Form of Message EMPX210 Superimposed on Line 3 (Displayable During Step 4a) Panel Library Member, Panel Definition DATA (Used in Step 5b) Panel Display DATA (Displayed by Step 5b) Parameter Options Menu Terminal Characteristics Panel (MVS and VM/SP) Terminal Characteristics Panel (VSE) . Log and List Defaults Panel (MVS) Console, Log, and List Defaults Panel (VM/SP) Log and List Defaults Panel (VSE) PF Key Definition Panel (12 PF Keys) PF Key Definition Panels (24 PF Keys) Table TAB1 Contents Table TAB1 as Displayed Table Display Panel Definition T1PANEL Command Table Utility Partel Command Table Editing Panel Internal Character Representations for APL Keyboards Internal Character Representations for Text Keyboards ISPF Dialog Management Services 268 269 270 270 271 272 273 274 275 276 277 279 281 283 285 284 294 294 295 298 299 314 315 CHAPTER 1. INTRODUCTION The Interactive System Productivity Facility (ISPF) Program Product provides dialog management services in three environments: • MVS Time Sharing Option (TSO) • VM/SP Conversational Monitor System (CMS) • VSE/lnteractive Computing and Control Facility (ICCF) Conceptually, ISPF is an extension to these host systems. ISPF services are complementary to those of the host system and are expressly designed to implement interactive processing. ISPF provides services to interactive applications that run under its control. Developers of these applications rely on ISPF to: • Display predefined screen images and messages • Originate and maintain tables of user information • Generate output files for job submission or other processing • Define and control symbolic variables • Interface to edit and browse facilities (ISPF/PDF must be installed to make these facilities available), and log hardcopy output • Control operational modes during processing An application that runs under ISPF is called a dialog. coding may be done in: Application • In MVS and VM/SP, a command procedure language (CLIST or EXEC 2). • A programming language, such as PL/I, COBOL, or FORTRAN. following compilers may be used: The In MVS and VM/SP: PL/I Optimizer 5734-PL1 COBOL 5740-CB1 FORTRAN IV G1 5734-F02 Chapter 1. Introduction 1 In VSE: PL/I (Release 6) 5736-PLl COBOL (Release 3) 5746-CBl VS FORTRAN (Release 4) 5748-F03 A developer may use more than one language in·a dialog. For example, within a single dialog containing three functions, each function could be written using a different language, such as PL/I, COBOL, and FORTRAN. In MVS and VM/SP, one (or more) of the functions could be written using a command procedure language (CLIST or EXEC 2) instead of a programming language. A dialog coded in a programming language may be designed for cross-system use, to be processed by ISPF running under MVS, VM/SP, or VSE. USING ISPF SERVICES When a dialog is running under ISPF, ISPF services are invoked from a dialog function, at the point where the service is desired, by a command (in MVS and VMjSP only) or a call statement. (In VSE, dialog functions cannot be written as ICCF procedures). • In MVS and VM/SP, dialog functions coded in a command procedure language invoke ISPF services by means of the ISPEXEC command; for example: i, p e')( ~ 1.)- ~ ISP~EC DISPLAY PANEL(XYZ) This example invokes a service that displays information on a 3270 screen (such displays are called panels). A panel definition named XYZ, prepared by the developer and prestored in the ISPF panel library, specifies both the content and the format of the display. • Dialog functions coded in a programming language invoke ISPF services by calling a service interface routine named ISPLINK; for example, in PL/I~: f'Ii, I' ,.. ."). !l'~ . r t..--N .../ CALL ISPLINK ('DISPLAY', 'XYZ '); i' This example invokes a service that displays information on a 3270 screen (such displays are called panels). ISPLINK is a small program module distributed with ISPF. (Because FORTRAN allows only six characters in a called module's name, the module may also be called by using the 6-character name ISPLNK). In MVS and VM/SP, ISPLINK may be called from programs coded in any language that uses standard OS register conventions for call interfaces, and the standard convention for signaling the end of a variable length 2 ISPF Dialog Management Services parameter list. Assembler programs must include code to implement the standard save area convention. In VSE, programs issuing requests for ISPF services must adhere to the standard call, save, return linkage described in "Program Linkage" in the DOS/VSE Macro User's Guide, GC24-5139. More examples of ISPF services requests may be found with each service description in Chapter 6, "Description of Services." DEVELOPING A DIALOG A developer, using an editor such as the edit option of the ISPF/Program Development Facility (ISPF/PDF, or simply PDF), develops a dialog by entering its various components from a terminal and storing them in libraries. Any available editor may be used by a developer when creating dialog components; however, PDF does provide special facilities to aid dialog development and testing. Figure 1 shows a developer using PDF to create and test dialog components. 1 Two types of components generally present in dialogs are functions (command procedures or programs) and panel definitions. A function is created in the same way as any command procedure or program and stored in an appropriate host system library or CMS EXEC file. A panel definition specifies a 3270 display image. The definition specifies both the content and format of a particular display. It is created by a dialog developer at a 3270 terminal and, when completed, is saved as a member of an ISPF panel library.· The panel definition requires no compilation or preprocessing step and closely resembles the appearance of the 3270 display screen that it specifies. Each character position in the panel definition is mapped to the same relative position on the display screen. Panel definitions specify where variable data and literal data are to appear on the 3270 display screen. The developer specifies the place on a display where he wants a variable to appear by entering the variable's name at the same place in the panel definition. Literal data is specified by entering the literal itself on the panel definition at the place at which it is to appear on the screen. When the developer completes the functions, panel definitions, and any other dialog components (such as messages, tables, and file tailoring 1 Using PDF facilities to aid in dialog development and testing is described in ISPF/PDF Reference. See, particularly, "Using Dialog Development Models" and "Dialog Test (Option 7)" in that manual. Chapter 1. Introduction 3 Operating System ISPF EJ EJ EJ EJ . B EJ Message Library Panel Library A ISPF/PDF ... ....... y ) Table Library File Tailoring Skeleton Library *Log and List Files File Tailoring Output Files ISPF Libraries and Files .... ~ Dialog Developer ... .... ~ "f .... t 1 ...... . . . ,. Opera ting Syste m Program or Co mmand ~ Procedure Library '1 *In addition to being an output file, the log file can be browsed and is an input file when PDF option 7.5 is in effect. Figure 1. Developing a Dialog Using PDF skeletons) required by the application being developed, the dialog is ready to be processed under ISPF. AN EXAMPLE OF A DIALOG An example of a dialog (consisting of a function, messages, and two display panel definitions) appears in Appendix A, "Using the DISPLAY Service" on page 261. This appendix includes a list of sections of this publication (a reading list) containing information needed to understand the example. 4 ISPF Dialog Management Services PROCESSING A DIALOG Figure 2 shows a dialog being processed under ISPF. ISPF dialog services are available only to command procedures or programs running under ISPF. Dialog processing begins either with the display of a selection panel (also called a menu) that provides the user with a choice of actions, or with a function. The developer determines, when he designs the dialog, whether it will begin with a menu or a function. In either case, the user can invoke a dialog from a 3270 terminal running under control of TSO, eMS, or IeeF. MVS and VM/SP: I nvoking an ISPF Application In MVS and V~1/SP, an ISPF application is invoked from a 3270 running under TSO or eMS by use of the ISPSTART command; for example: • ISPSTART PANEL(ABC) This command invokes ISPF and specifies that dialog processing is to begin with display of a selection panel named ABC from the panel library. • ISPSTART CMD(DEF) This command invokes ISPF and specifies that dialog processing is to begin with a command procedure function (CLIST or EXEC 2) named DEF. • ISPSTART PGM(GHI) This command invokes ISPF and specifies that dialog processing is to begin with a program function named GHI. VSE: I nvoki ng an I SPF Application In VSE, an ISPF application is invoked from a 3270 running under ICCF by use of an ICCF procedure. Assuming that the name of this procedure is ISPSTART, ISPF is invoked by a single command; for example: • ISPSTART 'PANEL(ABC), This command invokes ISPSTART, an ICCF procedure, which, in turn, invokes ISPF. 'PANEL(ABC), specifies that dialog processing is to begin with display of a selection panel named ABC from the panel library. • ISPSTART 'PGM(GHI) LANG(COBOL) , Chapter 1. Introduction 5 Operating System ISPF BB BB BB Panel Library Application Dialog Table Library Log and List Files Message Library File Tailoring Skeleton Library File Tailoringl Output Files Application User Figure 2. ISPF Libraries and Files Operating System Program or Command Procedure Library Application Dialog Running Under ISPF This command invokes turn, invokes ISPF. dialog processing is which was written in ISPSTART, an IeCF procedure, which, in 'PGM(GHI) LANG (COBOL) , specifies that to begin with a program function named GHI, the COBOL programming language. Invoking an ISPF Application from a Master Application Menu At installations that provide an ISPF master application menu, the user can invoke a dialog by making appropriate selections on that menu, or on that menu and one or more subsequently displayed menus. (A master application menu is one from which any of the installation's applications may be invoked. It generally is displayed at the outset of each ISPF session.) In these installations, the master menu is generally invoked by the ISPSTART command or an ICCF procedure invoked (with no operands) at a terminal. In ~lVS and V~1/SP, ISPSTART may be issued automatically as part of a user's logon procedure. Also, the ISPSTART command may be issued from a command procedure (CLIST or EXEC 2). 6 ISPF Dialog Management Services DATA COMMUNICATIONS WITHIN ISPF Data is communicated within a dialog and to ISPF services by means of dialog variables. A dialog variable is a character string referred to by a symbolic name. Dialog variables may be defined and used in panels, messages, skeleton definitions, and in functions that comprise a dialog. For example, a dialog variable name can be defined in a panel definition and be referenced in a function of the same dialog. Or, the variable can be defined in a function and used in a panel definition to initialize information on a display panel, and then used to store data entered by the user on the display panel. For functions coded in a programming language, the internal program variables that are to be used as dialog variables may be identified to ISPF through the use of the ISPF VDEFINE service, or the program may access and update dialog variables by using the ISPF VCOPY and VREPLACE services. These services do not apply to commana procedures. In MVS and VMjSP, for functions coded as a command procedure (CLIST or EXEC 2), variables used in the procedure are automatically treated as dialog variables; no special action is required to define them to ISPF. PARTS OF A DIALOG In summary, a dialog is any application designed to be run under the control of the ISPF dialog manager. Each dialog is composed of program and data elements, which allow an orderly interaction between the computer and the user of the application. The types of elements that make up a dialog are: • Functions - a function is a command procedure or a program that performs processing requested by the user. It may invoke ISPF dialog services to display panels and messages, build and maintain tables, generate output files, and control operational modes. • Panels - a panel is a predefined display image. It may be a menu, a data entry panel) or an information-only panel. t-lost panels prompt the user for input. The user response may identify which path is to be taken through the dialog, or it may be interpreted as data. • Messages - a message is a comment that provides special information to the user. It may confirm that a user-requested action is in progress or completed, or report an error in the user's input. Messages may be directed to the user's terminal and superimposed on the display to which they apply, to a hardcopy log, or both. • Tables - a table is a two-dimensional array used to maintain data. A table may be created as a temporary data repository, or it may be retained across sessions. A retained table may also be shared among several applications. The type and amount of data stored in a table depends upon the nature of the application. Chapter 1. Introduction 7 • File Tailoring Skeletons - a file tailoring skeleton (or simply a skeleton) is a generalized representation of sequential data that may be customized during dialog execution to produce an output file. The output file may be used to drive other processes. File skeletons are frequently used to produce job files for batch execution. A dialog need not include all types of elements. In particular, tables and skeletons may not be needed, depending upon the type of application. Panel definitions, message definitions, and skeletons are stored in libraries prior to execution of the dialog. They are created by editing directly into the panel, message, or skeleton libraries; no compile or preprocessing step is required. Tables are generated and updated during dialog execution. The organization of each table is specified to ISPF by the functions that use ISPF. 8 ISPF Dialog Management Services CHAPTER 2. DIALOG PROCESSING CONCEPTS This chapter describes basic concepts of dialog organization and control, and the capabilities of the ISPF dialog management services. DIALOG ORGANIZATION A dialog may be organized in a variety of ways to suit the requirements of the application and the needs of the application user. A typical dialog organization, shown in Figure 3, starts with display of the highest menu in a hierarchy (called the primary option menu) for the application. User options selected from this menu may result in the invocation of a dialog function, or the display of a lower-level menu. Each lower-level menu may also cause functions to receive control, or still other menus to be displayed. The menu hierarchy may extend as many levels deep as desired. Note: Menus are also called selection panels. In this publication, the terms are used interchangeably. Eventually, a dialog function receives control. The function may use any of the dialog services provided by ISPF. In particular, the function may continue the interaction with the user by means of the DISPLAY service. Typically, the function displays data entry panels to prompt the user for information. When the function ends, the menu from which it was invoked is redisplayed. Figure 4 shows another type of dialog organization in which a dialog function receives control first, prior to the display of a menu. The function may perform application-dependent initialization, and display data entry panels to prompt the user for basic information. It may then start the selection process by using the SELECT service to display the primary option menu for the application. As shown in Figure 4, a function may also invoke another function, using SELECT, without displaying a menu. (In MVS and VMjSP, this provides a convenient way to pass control from a program-coded function to a command-coded function, or vice versa.) The invoked function then starts a lower-level menu process, again by using the SELECT service. Chapter 2. Dialog Processing Concepts 9 START I 1 V -;': .,~ -;': #~ .,,: Nenu .,'~ .,~ .,~ .,,: .,'r I 1 I I I I 1 I V I I 1 V V 'it: Dialog Nenu ,'\ Function .,'r .,'( 'it: ,'( ,,: .,tr .,,: .,'r ,,: 'it: .,,: ~': ~': Nenu .,,: .,tr I I I I I .,~ .,'r * I 1 I I 1 V V I I 1 V 1 I I V I I V V I Dialog Function .,,: I ,,: I 1-->,;'( 1 -;': 1 I .,~ .,,: .,,: 10 Typical Dialog Starting with a Nenu ISPF Dialog Nanagement Services .,'c ,tr 'it: -,,: Entry ,,: Figure 3. ,,: Data .,"( .,'~ ';~ START I 1 V I 1 .. 1 1<-->,,: 1 II 'i~ ~" ;': Dialog Function -;'( 'it: I 'i~ ~~ Data Entry Panels 'i~ -;': i~ i~ 4~ i'~ ,,\ i~ 1 V -;'( i'( .,,, .,~ ..,,, i'lenu 'i': .,'\ ,~ .,~ "it: I 1 1 1 1 V V I i'r it: ;'r Nenu "i': i~ V .,'( .,'( ,;'c .,'( 'it: it: 'it: .,'c .,,, ~~ I 1 .,'c Dialog .,'c Nenu Function .,~ .,,, "it: I J I 1 1 V V V I V 1 I V 1 1 V Dialog I I 1 1 1 1 1 Function >1 1 1 1 1 ~--------------~II~ .,,, Dialog .,~ Function . Nenu >,'~ ~ ";': ";~ 'it: 'i'( ______________~ ~,j ho1 e -~/ Figure 4. 4'\ .,'( I 1 I I I V V V Typical Dialog Starting with a Function Chapter 2. Dialog Processing Concepts 11 CONTROL FACILITIES Control and data flow are shown in Figure 5. A dialog is started by means of the ISPSTART command or, in VSE, by means of an IeCF procedure. ISPSTART is the recommended name for this procedure and, in this publication, that is the name used. MVS AND VM/SP: STARTING A DIALOG In NVS and V~l/SP, a dialog is started by the ISPSTART command. ISPSTART command may be entered in various ways: The • By a user at the terminal • From a command procedure (CLIST or EXEC 2) • During LOGON (from a TSO LOGON procedure or CMS PROFILE EXEC) ISPSTART command parameters specify the first menu to be displayed or the first dialog function to receive control (prior to the display of a menu). In this case, the ISPSTART command is typically entered during LOGON or from a command procedure. Example: A user begins an application from his terminal by entering the ABC command. ABC allocates the appropriate libraries for the application, and then issues an ISPSTART command to begin ISPF processing. Thus, the ABC command serves as a "front end" to start the application. ABC cannot use ISPF dialog services, because it does not run under ISPF. VSE: STARTING A DIALOG In VSE, a dialog is started by an ICCF procedure, generally named ISPSTART. This procedure may be invoked directly from a terminal. A parameter, passed in the command that invokes the ISPSTART procedure, specifies the first menu to be displayed or the first dialog function to receive control (prior to display of any menu). Example: A user invokes an application from his terminal by invoking an ICeF procedure named ISPSTART. This procedure defines libraries for the application and invokes ISPF. The procedure cannot use ISPF dialog services, because it does not run under ISPF. 12 ISPF Dialog Management Services - In MVS and VM/SP, ISPSTART is a command - In VSE, ISPSTART is an ICCF procedure ISPSTART I 1 1 1 V I I ISPF I 1INITIALIZATION 1 I 1 I I I I 1 V I I I I 1 1 I I I I I 1 1 1 1 1 1 1 1 I I V I 1 1 1 1 A N >1 1 A I G E 1 R 1 1 1 I Control flow Figure 5. flow 1 1 I I 1<···········1I TABLE SERVICES 1 1 1 I 1 1<··········>1I 1 1 I I 1 1 1 1 1 1 1 1 1 II 1 I DATA TABLES I 1 1 MESSAGE LIBRARY 1 1 1 PANEL LIBRARY 1 G 1 I I I 1<···········1I 1 1 I I 1 I M 'I DIALOG FUNCTION I 0 1 I I PROFILE I IVARIABLE POOLI I 1<··········>1 LIBRARY 1 1 1 ..... > Data VARIABLE SERVICES D I I I I A I DISPLAY L 1 SERVICES >1 SELECT SERVICE --> I FILE TAILORING SERVICES 1<···········1 1 SKELETON LIBRARY I 1 1 1 I I I 1 1···········>1 OUTPUT FILES Control and Data Flow Chapter 2. Dialog Processing Concepts 13 THE SELECT SERVICE SELECT is both a control facility and a dialog service. SELECT is used by ISPF during its initialization to invoke a function or selection panel that begins a dialog. During dialog processing, SELECT may be used in the dialog to display menus and invoke program or command procedure functions. Parameters passed to SELECT specify the next action as follows (CMD applies only in MVS and VM/SP; in VSE, dialog functions may not be written as ICCF procedures): PANEL(panel-name) CMD(command) PGM(program-name) The PANEL parameter specifies the name displayed. The CMD and PGM parameters as a command or program, respectively) parameters may be passed to the dialog specification or, for programs, by the of the next panel to be specify a dialog function (coded to receive control. Input function as part of the command use of the PARM parameter. Figure 6 emphasizes that the SELECT service is used when invoking and when processing a dialog. After SELECT is used to start a dialog, it is used by the dialog, as a dialog service, to invoke a function or to display a menu. In turn, that function or menu may use SELECT to invoke another function or to display another menu. This function or menu may, in turn, using SELECT, invoke still another function or menu. This process may continue for many levels and establishes a hierarchy of invoked functions and menus. There is no restriction as to the number of levels allowed in this hierarchy. When a lower-level function or menu in the hierarchy completes its processing, control is returned to the higher-level function or menu from which it was invoked. The higher-level function resumes its processing or the higher-level menu is redisplayed for the user to make another selection. Thus, SELECT is used in a dialog to establish a hierarchy of functions and menus and this hierarchy determines the sequence in which dialog functions and menus are processed, including the sequence in which they are terminated. In MVS and VM/SP, dialog functions written as command procedures may directly invoke other functions written as command procedures without using the SELECT service. Program-coded functions can invoke another function only through using the SELECT service. Thus when a progr~m~coded function calls another program directly, without using the SELECT service, the called program is treated as part of the function that called it. It is not treated as a new dialog function by ISPF. The scope of a dialog function is defined as the period of time from the invocation of a function to its termination. 14 ISPF Dialog Management Services 1 - In MVS and VM/SP, ISPSTART is a command 1 1 ISPSTART - In VSE, ISPSTART is an ICCF procedure 1 1 1 1 1 V r Begin ISPF 1 1 1 1 1 1 V 1 1 1 1 .-------> SELECT Service 1 1 1 1 Display 1<----> 1 Menu 1 1 1 1 Select Lower 1 Level Menu 1 <_ _ _ _ _----'1 1 1 1 Invoke Function DISPLAY Service 1 1 1 1 1 1 V 1 Select L < 1 Lower 1 1 1 Display 1 Dialog 1< > I Level Menu FunctionlData Entry I or Function I IPanel I I I ~I Figure 6. _ _ _~I ~I _ _ _ _ _ _~ SELECT Service Used To Invoke and Process a Dialog Chapter 2. Dialog Processing Concepts 15 ONLINE TUTORIAL A tutorial is a set of panels that provides online information for a user of an application. A dialog developer may include tutorial panels with his dialog to be displayed at the option of the user. Generally, the developer incorporates information that is helpful to a first-time user or is instructive about the actions the user may select when some particular condition occurs during application processing. The program that displays tutorial panels is part of ISPF. entered in either of two ways: It may be • As an option from a menu • Indirectly from any non-tutorial panel when the user enters the HELP command Transfer in and out of the tutorial using the HELP command is transparent to the dialog functions. Tutorial panels are arranged in a hierarchy. When the tutorial is entered from a menu, the first panel to be displayed is normally the top of the hierarchy. When the tutorial is entered by invoking the HELP command, the first panel to be displayed is a panel within the hierarchy, appropriate to what the user was doing when the HELP command was invoked. When viewing a tutorial, the user may select topics by number (or other appropriate code), or simply press the ENTER key to view the next topic. On any tutorial panel, the user may also enter the following commands: BACK or B - to return to the previously viewed tutorial panel SKIP or S - to skip to the next topic UP or U - to display a higher-level list of topics TOP or T - to display the table of contents INDEX or I - to display the tutorial index When the user ends the tutorial, by means of the END or RETURN command, the panel from which the tutorial was entered is redisplayed. SPLIT SCREEN At any time during a dialog, the user may partition the display screen into two "logical" screens. The two logical screens are treated as though they were independent terminals. ISPF provides control for mapping the two logical screens onto the physical screen. (Panels that are displayed by the DISPLAY service always pertain to a logical screen. ) 16 ISPF Dialog Management Services In split screen mode, only one of the logical screens is considered active at a time. The location of the cursor identifies the active screen. Use of split screen mode and the size of each logical screen is under control of the user and is transparent to the dialog function. In VSE, user dialog functions are restricted to one logical screen. While a user dialog function may be executed on either logical screen, it may not be executed on both logical screens concurrently. This restriction does not apply to ISPF and ISPF/PDF functions. Split screen mode is entered by invoking the SPLIT command. This command is also used to reposition the split line that separates the two logical screens. Thus, the size of a logical screen may be changed by use of the SPLIT command. Split screen mode is terminated by ending the application on either logical screen. The remaining logical screen is then expanded to its full size. ISPF PARMS OPTION ISPF includes a facility, generally referred to as "ISPF PARHS," that allows a user to specify terminal characteristics, default options for processing the ISPF list and log files, and program function (PF) key assignments. This facility operates as a dialog and may be invoked from other dialogs. Typically, it should be included as an option on an application's primary option menu. See "Primary Option Menu" on page 235 for an example of how to specify the invocation of the ISPF PARHS option. See Appendix B, "Using the ISPF PARHS Option" for a description of how to use the PARMS option. DIALOG SERVICES OVERVIEW The display services, table services, file tailoring services, variable services, and miscellaneous services available to dialogs are described in the following sections. Display Services The display services allow a dialog to display information and interpret responses from the user. There are three display services: • DISPLAY - Display a panel • TBDISPL - Display a table • SETMSG - Display a message on the next panel The DISPLAY service reads panel definitions from the panel library, initializes variable information in the panel from the corresponding dialog variables in the function, shared, or profile pools, and displays Chapter 2. Dialog Processing Concepts 17 the panel on the screen. the panel display. Optionally, a message may be superimposed on After the user has entered information, it is stored in the corresponding dialog variables in the function, shared, or profile pools, and the DISPLAY service returns to the calling function. Use of the DISPLAY service is illustrated in Appendix A, "Using the DISPLAY Service." The TBDISPL service combines information from panel definitions with information stored in ISPF tables. It display3 selected columns from a table, and allows the user to identify rows for processing. The user may scroll the table information up and down (see "Scrolling" in Chapter 3, "Use of Commands, Program Keys, and Light Pen"). Panel definitions used by the table display service contain non-scrollable text, including column headings, followed by one or more "model lines" that specify how each row from the table is to be formatted in the scrollable area of the display. Use of the TBDISPL service is illustrated in Appendix C, "Using the TBDISPL Service." The SET~ISG service constructs a specified message in a system save area. The message will be superimposed on the next panel displayed by any ISPF service. Panel Definitions A panel definition consists of up to five sections: 18 • Attribute section (optional) - defines the special characters that will be used in the body of the panel definition to represent attribute (start of field) bytes. Default attribute characters, which may be overridden, are provided. • Body section (required) - defines the format of the panel as seen by the user, and defines the name of each variable field on the panel. • Model section (required for table display; not allowed for other types of panels) - specifies the format for displaying each row of the table. • Initialization section (optional) - specifies the initial processing that is to occur prior to displaying the panel. This section is typically used to define how variables are to be initialized. • Processing section (optional) - specifies processing that is to occur after the panel has been displayed. This section typically is used to define how variables are to be verified and/or translated. ISPF Dialog Management Services The panel definition syntax is fully described in Chapter 7, "Panel and Message Definition and Skeleton Formats." Panel definitions are created by editing directly into the panel library; no compile or preprocessing step is required. Each panel definition is a member in the library, and is identified by member na~e. A sample panel definition is shown in Figure 7. It consists of a panel body followed by an ")END" control statement. It has no attribute, initialization, or processing sections. It uses the default attribute characters, namely: % (percent sign) - text (protected) field, high intensity - text (protected) field, low intensity (underscore) - input (unprotected) field, high intensity + (plus sign) )BODY %---------------------------- ENPLOYEE RECORDS ~~COM~lAND ------------------------------ + ==> ZCND % %EMPLOYEE SERIAL: &ENPSER + + + + + + + + + + + + TYPE OF CHANGE%===> TYPECHG + EMPLOYEE NAME: LAST %===> LNA~1E FIRST %===> FNANE INITIAL%===> 1+ + + + + + + HOME ADDRESS: LINE 1 %===> LINE 2 %===> LINE 3 %===> LINE 4 %===> (NEW, UPDATE, OR DELETE) + + + + + + ADDR1 ADDR2 ADDR3 ADDR4 HOME PHONE: AREA CODE %===> PHA+ LOCAL NUMBER%===> PHNUM + )END Figure 7. Sample Panel Definition For text fields, the information following the attribute character ("%" or "+") is the text to be displayed. Text fields may contain substitutable variables consisting of an ampersand (&) followed by a dialog variable name. The ampersand and name are replaced with the value of the variable prior to displaying the panel. Chapter 2. Dialog Processing Concepts 19 For input fields, a dialog variable name immediately follows the attribute character ("_") with no intervening ampersand. The name is replaced with the value of the variable prior to displaying the panel, and any information entered by the user is stored in the variable after the panel has been displayed. The panel in Figure 7 has eleven input fields (ZCMD, TYPECHG, LNAME, etc.), indicated with underscores. It also has a substitutable variable (EMPSER) within a text field (on line 5). The first three lines of the panel and the arrows preceding the input fields are all highlighted, as indicated by percent signs. The other text fields are low intensity, as indicated by plus signs. Before the panel is displayed, all variables in the panel body are automatically initialized from the corresponding dialog variables (ZCMD, TYPECHG, LNAME, etc.) and EMPSER. After the panel has been displayed and the user has finished entering requested input and depresses the ENTER key, the input fields are automatically stored into the corresponding dialog variables. Figure 8 shows the panel as it appears when displayed, assuming that the current value of EMPSER is "123456", and that the other variables are initially null or blank. Panel variables that are blank are initialized to null. Message Definitions Message definitions are created by dialog developers, using an editor, and are saved in a member of the message library; no compile or preprocessing step is required. Each member of the library may contain several messages. Messages are referenced by message id. Each message in the message library consists of two lines. line contains the message id, and optionally: The first • The short message text, enclosed in apostrophes (') • The name of the corresponding help panel (if the user requests help when the message is displayed) • The audible alarm indicator (yes or no) The second line contains the long message text, enclosed in apostrophes. Short messages are displayed in the upper right-hand corner of the screen. If the user enters the HELP command (or presses the Help PF key), the long message is then displayed on line 3 of the screen. If the user requests help again, tutorial mode is entered. Note: The default screen positions for short and long messages (upper right-hand corner and line 3, respectively) may be changed by a dialog developer specifying some other position in the panel definition. 20 ISPF Dialog Management Services If a short message is not specified, the long message is displayed first. If the user then requests help, tutorial mode is entered. Variable names, preceded by an ampersand (&), may appear anywhere within the short and long message text, and are replaced in the display with their current value. ---------------------------COMNAND ==> ENPLOYEE RECORDS ------------------------------ EMPLOYEE SERIAL: 123456 TYPE OF CHANGE ===> (NEW, UPDATE, OR DELETE) ENPLOYEE NA~1E: LAST ===> FIRST ===> INITIAL ===> HOHE ADDRESS: LINE 1 ===> LINE 2 ===> LINE 3 ===> LINE 4 ===> HOME PHONE: AREA CODE LOCAL NUHBER Figure 8. ==> ===> Sample Panel - When Displayed Figure 9 shows an example of a member in the message library. This member contains all messages that begin with a message id of "EMPX21". The message definition syntax is fully described in "Message Definitions" in Chapter 7, "Panel and Message Definition and Skeleton Formats." Chapter 2. Dialog Processing Concepts 21 EMPX210 'INVALID TYPE OF CHANGE' .HELP=PERS033 'TYPE OF CHANGE MUST BE NEW, UPDATE, OR DELETE. ' . ALAR~1=YES EMPX213 'ENTER FIRST NA~1E' . HELP=PERS034 . ALARM=YES 'EMPLOYEE NAME MUST BE ENTERED FOR TYPE OF CHANGE = NEW OR UPDATE. ' EMPX214 'ENTER LAST NAME' .HELP=PERS034 .ALARM=YES 'EMPLOYEE NAME NUST BE ENTERED FOR TYPE OF CHANGE = NEW OR UPDATE. ' ENPX215 'ENTER HOME ADDRESS' .HELP=PERS035 . ALAR~I=YES 'HOME ADDRESS MUST BE ENTERED FOR TYPE OF CHANGE = NEW OR UPDATE. ' EMPX216 'AREA CODE INVALID' 'AREA CODE &PHA IS NOT DEFINED. .ALARM=YES PLEASE CHECK THE PHONE BOOK. ' EMPX217 '&EMPSER ADDED' 'ENPLOYEE &LNAME, &FNAME &1 ADDED TO FILE.' EMPX218 '&EMPSER UPDATED' 'RECORDS FOR &LNAME, &FNAME &1 UPDATED. ' EMPX219 '&E~IPSER DELETED' 'RECORDS FOR &LNAME, &FNAME &1 DELETED.' Figure 9. Sample Member in Message Library Table Services Table services allow sets of dialog variables to be maintained and accessed. A table is a 2-dimensional array of information in which each column corresponds to a dialog variable, and each row contains a set of values for those variables. A table is shown in Figure 10. define the columns are: EMPSER LNAME FNAME I PHA PHNUM - In this example, the variables that Employee Serial Number Last Name First Name Middle Initial Home Phone: Area Code Home Phone: Local Number <', 22 ISPF Dialog Management Services EMPSER LNAME FNAME I PHA PHNUM 598304 172397 813058 395733 502774 Robertson Smith Russell Adams Caruso Richard Susan Charles John Vincent P A L Q J 301 301 202 202 914 840-1224 547-8465 338-9557 477-1776 294-1168 Figure 10. Sample Table Table Residency A table may be either temporary or permanent. A temporary table exists only in virtual storage, it cannot be written to disk storage. A permanent table, while created in virtual storage, may be saved on direct access storage. It may be opened for update or for read-only access, at which time the entire table is read into virtual storage. When a table is being updated (in virtual storage), the copy of the table on direct access storage cannot be accessed until the update has been completed. Permanent tables are maintained in one or more table libraries, in which each member contains an entire table. For both temporary and permanent tables, rows are accessed and updated from the in-storage copy. A permanent table that has been accessed read-only may be modified in virtual storage, but may not be written back to disk storage. When a permanent table is opened for processing, it is read from a table input library. When the table is saved, it is written to a table output library that may be different from the input library. The input and output libraries should be the same if the updated version of the table is to be reopened for further processing by the same dialog. See Chapter 4, "Library Requirements," for a discussion of libraries. Accessing Data The variable names that define the columns of a table are specified when the table is created. Each variable is specified as either a KEY field or a NAME (non-key) field. One or more columns (variable names) may be specified as keys for accessing the table. For the table shown in Figure 10, EMPSER might be defined as the key variable. Or EMPSER and LNAME might both be defined as keys, in which case a row would be found only if EMPSER and LNAME both match the current values of those variables. A table may also be accessed by one or more "argument" Chapter 2. Dialog Processing Concepts 23 variables, that need not be key variables. The variables that constitute the search argument may be defined dynamically by means of the TBSARG and TBSCAN services. In addition, a table may be accessed by use of the "current row pointer" (CRP). The table may be scanned by moving the CRP forward or back. A row is retrieved each time the CRP is moved. When a table is opened, the CRP is automatically positioned to TOP -- ahead of the first row. When a row is retrieved from a table, the contents of the row are stored into the corresponding dialog variables. When a row is stored (updated or added), the contents of the dialog variables are saved in that row. When a row is stored, a list of "extension" variables may be specified by name. These extension variables, and their values, are added to the row. This permits variables to be stored in the row that were not specified when the table was created. A list of extension variable names for a row may be obtained when the row is read. If the list of extension variables is not respecified when the row is rewritten, the extensions are deleted. General Services The following services operate on an entire table: TBCREATE Creates a new table and opens it for processing TBOPEN Opens an existing (permanent) table for processing TBQUERY Obtains information about a table TBSAVE Saves a permanent copy of a table without closing TBCLOSE Closes a table, and saves a permanent copy if the table was opened in WRITE mode TBEND Closes a table without saving TBERASE Deletes a permanent table from the table output library Temporary tables are created by TBCREATE (NOWRITE mode) and deleted by either TBEND or TBCLOSE. A new permanent table is created by TBCREATE (WRITE mode). This simply creates the table in virtual storage. The table does not become permanent until it is stored on direct access storage by either TBSAVE or TBCLOSE. An existing permanent table is opened and read into virtual storage by TBOPEN. If the table is to be updated (WRITE mode), the new copy is saved by either TBSAVE or TBCLOSE. If ~t is not to be updated (NOWRITE mode), the virtual storage copy is deleted by either TBEND or TBCLOSE. 24 ISPF Dialog Management Services MVS, VM/SP, and VSE/AF 1.3.5: Resource Protection Table services provides a resource protection mechanism designed to prevent concurrent updating of the same table by multiple users. This protection mechanism is built on the assumption that all users who may want to update a given table will have the same first library definition for ISPTLIB. When a table is opened or created in write mode, an exclusive enqueue (MVS and CMS) or lock (VSE) is requested for a resource name consisting of the first library name in the ISPTLIB definition concatenated with the table name. The TBOPEN orTBCREATE service fails with a return code of 12 if this enqueue or lock is unsuccessful. A successful enqueue or lock stays in effect until the completion of a TBEND or TBCLOSE service for the table. If the NAME parameter is specified on the TBSAVE or TBCLOSE service, an additional exclusive enqueue or lock is issued. The resource name consists of the first library name in the ISPTLIB definition concatenated with the name specified in the NAME parameter. If this enqueue or lock fails, the service terminates with a return code of 12 and the table is not written. The table output library represented by the ISPTABL definition is protected from concurrent output operations from any ISPF function through a separate mechanism not specific to table services. Volume protection prevents physically writing to the same volume by more than one user at a time. VSE/AF 2.1: Resource Protection Table services provides a resource protection mechanism designed to prevent concurrent updating of the same table by multiple users .. This protection mechanism is built on the assumption that all users who may want to update a given table will have the same first library definition for ISPTLIB. When a table is opened or created in write mode, an exclusive lock is requested for a resource name consisting of the first library.sublibrary name in the ISPTLIB definition concatenated with the table name. The TBOPEN or TBCREATE service fails with a return code of 12 if this lock is unsuccessful. A successful lock stays in effect until the completion of a TBEND or TBCLOSE service for the table. If the NAME parameter is specified on the TBSAVE or TBCLOSE service, an additional exclusive lock is issued. The resource name consists of the first library.sublibrary name in the ISPTLIB definition concatenated with the name specified in the NAME parameter. If this lock fails, the service terminates with a return code of 12 and the table is not written. The table output library represented by the ISPTABL definition is protected from concurrent output operations from any ISPF function through a separate mechanism not specific to table services. Volume protection prevents physically writing to the same volume by more than one user at a time. Chapter 2. Dialog Processing Concepts 25 Row Services The following services operate on a row of the table: TBADD Adds a new row to the table TBDELETE Deletes a row from the table TBGET Retrieves a row from the table TBPUT Updates an existing row in the table TBMOD Updates a row in the table if it exists (if the keys match); otherwise, adds a new row to the table TBEXI ST Tests for the existence of a row (by key) TBSCAN Searches a table for a row that matches a list of "argument" variables, and retrieves the row TBSARG Establishes a search argument for use with TBSCAN TBTOP Sets CRP to TOP (ahead of the first row) TBBOTTOM Sets CRP to the last row and retrieves the row TBSK I P Moves the CRP forward or back by a specified number of rows, and then retrieves the row at whi~h the CRP is positioned TB VCLEAR Sets dialog variables (that correspond 'to variables in the table) to null Example The following series of commands demonstrate the use of table services (also see Appendix C, "Using the TBDISPL Service"): 1. Create a permanent table, named DALPHA, to consist of dialog variables AA, BB, andCC. AA is the key field; BB and CC are name fields. ISPEXEC TBCREATE DALPHA KEYS(AA) NAMES(BB Ce) WRITE DALPHA AA 26 ISPF Dialog Management Services BB CC 2. Display a panel named XYZ. (This panel requests a user to enter values for dialog variables AA, BB, and CC, which are used in following steps of this example.) ISPEXEC DISPLAY PANEL (XYZ) 3. Assume the user enters the following values on panel XYZ: AA = Pauly John BB = W590 CC = Jones Beach ISPF automatically updates dialog variables AA, BB, and CC -- in the function variable pool -- with the user-entered values. Record these values in the table DALPHA. ISPEXEC TBADD DALPHA DALPHA I I I I BB AA IPauly John W590 cc IJones Beachl I II I II 4. I I I II Assume the following values for dialog variables AA, BB, and CC are entered by a user, as in step 2, through a panel display operation: AA BB CC = Clark = Y200 = Bar Joan Harbor Record these values in table DALPHA. ISPEXEC TBADD DALPHA DALPHA I AA BB I I Pauly John I W590 Clark Joanl Y200 I I I CC I I I IJones Beachl IBar Harbor I I I I I Table services adds a row to table DALPHA immediately following the row added by the previous TBADD. Following the TBADD, the current row pointer (CRP) is positioned at the newly added row. (Before a row is added by the the TBADD service, table service scans the table to determine if the KEY field of the new row to be added duplicates Chapter 2. Dialog Processing Concepts 27 the KEY field of an existing row. performed.) 5. If it does, the TBADD is not Save table DALPHA (by writing it to the table output library) for later use. ISPEXEC TBCLOSE DALPHA The table DALPHA is written from virtual storage to member DALPHA in the table library. Table Size The length of any row in a table cannot exceed 65,536 bytes. can be computed as follows: The length Row size = 22 + 4a + b + 9c where: a = total number of variables in the row including extensions b = total length of variable data in the row c = total number of extension variables in the row The total table size is the sum of the row lengths, plus the length of the data table control block (DTCB). The length of the DTCB can be computed as follows: DTCB length = 152 + 16d where: d = total number of columns (not including extension variables) in the table The number of tables that may be processed at one time is limited only by the amount of available virtual storage. File Tailoring Services File tailoring services read skeleton files from a library and write tailored output that may be used to drive other functions. Frequently, file tailoring is used to generate job files for batch execution. The file tailoring output may be directed to a library or sequential file that has been specified by the dialog function, or it may be directed to a temporary sequential file provided by ISPF. The name of the temporary file is available in system variable ZTEMPF. In MVS, ZTEMPF contains a data set name; in VM/SP and VSE, ZTEMPF contains a filename. 28 ISPF Dialog Management Services Skeleton Files Each skeleton file is read record-by-record. Each record is scanned to find any dialog variable names (preceded by an ampersand). When a variable name is found, its current value is substituted from a variable pool (see "Variable Access - Order of Search from Services"). Skeleton file records may also contain statements that control processing. These statements provide the ability to: • Set dialog variables • Imbed other skeleton files • Conditionally include records • Iteratively process records in which variables from each row of a table are substituted When iteratively processing records, file tailoring services read each row from a specified table. If the table was already open (prior to processing the skeleton), it remains open with the CRP positioned at TOP. If the table was not already open, file tailoring opens it automatically and closes it upon completion of processing. A sample skeleton file is shown in Figure 11. It contains MVS job control language (JCL) for an assembly and optional load-go. In an MVS environment, the ta~Jore~output could be submitted to the background for execution. In ~/S~),.,environment, it could be punched to an MVS machine for batch executfon~_ _ _ _.__ ............" .._. " ,," .... _<~..;:A Chapter 2. Dialog Processing Concepts 29 EXEC PG~l=IFOXOO, REGION=128K, IIASM PARM=(&ASMPARMS) II IISYSIN DD DSN=&ASHIN(&~IEHBER) ,DISP=SHR IISYSLIB DD DSN=SYS1.MACLIB,DISP=SHR ) SEL &ASM~lAC 1 .,= &Z II DD DSN=&ASMMAC1,DISP=SHR )SEL &ASHHAC2 .,= &Z 1/ DD DSN=&ASMHAC2,DISP=SHR )ENDSEL )ENDSEL IISYSUT1 DD UNIT=SYSDA,SPACE=(CYL,(5,2)) IISYSUT2 DD UNIT=SYSDA,SPACE=(CYL,(2,1)) IISYSUT3 DD UNIT=SYSDA,SPACE=(CYL,(2,1)) IISYSPRINT DD BYSOUT=(&ASNPRT) )CM IF USER SPECIFIED "GO", WRITE OUTPUT IN TEMP DATA SET )CM THEN IHBED "LINK AND GO" SKELETON )SEL &GOSTEP = YES I/SYSGO DD DSN=&&&&OBJSET,UNIT=SYSDA,SPACE=(CYL,(2,1)), II DISP=(HOD,PASS) )IM LINKGO )ENDSEL )CM ELSE (NOGO), WRITE OUTPUT TO USER DATA SET )SEL &GOSTEP = NO I/SYSGO DD DSN=&ASMOUT(&MEMBER),DISP=OLD )ENDSEL I / ..~ Figure 11. Sample Skeleton File The sample skeleton references several dialog variables (ASMPARMS, ASMIN, MEMBER, etc.). It also illustrates use of select statements ")SEL" and ")ENDSEL" to conditionally include records. The first part of the example has nested selects to include concatenated macro libraries if the library names have been specified by the user (i.e., if variables ASMMAC1 and ASMMAC2 are not equal to the null variable Z). In the second part of the example, select statements are used to conditionally execute a load-go step. An imbed statement, ")IM", is used to bring in a separate skeleton for the load-go step. The file tailoring services are: 30 FTOPEN Prepares the file tailoring process, and specifies whether the temporary file is to be used for output. FTINCL Specifies the skeleton to be used, and starts the tailoring process. ISPF Dialog Management Services FTCLOSE Ends the file tailoring process. FTERASE Erases (deletes) an output file created by file tailoring. Example The following example illustrates file tailoring services. example assume that: • For this LABLSKEL is a member in the file tailoring skeleton library, containing: LABLSKEL )DOT DALPHA NAME: &AA APARTMENT: &BB CITY: &CC YEAR: &ZYEAR )ENDDOT ZYEAR is the name of an ISPF system variable that contains the current year. • DALPHA is a member in the table library, containing: DALPHA I AA I I Pauly John I Clark Joan I II 1. I BB W590 Y200 I I CC I IJones Beachl IBar Harbor I II II Issue ISPF commands to process skeleton LABLSKEL. Obtain values for dialog variables AA, BB, and CC from table DALPHA. The resulting file tailoring output consists of one address label for each row of information in table DALPHA. ISPEXEC ISPEXEC FTOPEN FTINCL LABLSKEL FTOPEN prepares for access (opens) both the file tailoring skeleton and file tailoring output libraries. These libraries must have been allocated before starting the ISPF session. FTINCL performs the file tailoring process using the file tailoring skeleton named LABLSKEL. LABLSKEL contains the file tailoring controls, )DOT and )ENDDOT, which specify the use of table DALPHA. Chapter 2. Dialog Processing Concepts 31 2. Write the resulting file tailoring output to a member named LABLOUT in the file tailoring output library ISPEXEC 3. FTCLOSE NAME (LABLOUT) At the conclusion of processing the above commands, file tailoring output library member LAB LOUT contains: LAB LOUT NANE: AP ART~1ENT : CITY: YEAR: NANE: AP ART~lENT : CITY: YEAR: Pauly John W590 Jones Beach 82 Clark Joan Y200 Bar Harbor 82 Variable Services Variable services allow the definition and use of dialog variables. Dialog variables are the main communication vehicle between dialog functions (program modules or command procedures) and ISPF services. Program modules, command procedures, panels, messages, tables, and skeletons can all reference the same data through the use of dialog variables. A dialog variable's value is a character string that may vary in length from zero to 32K bytes. Some services restrict the length of dialog variable data. For example, dialog variables used as input or output fields in panels are limited to a length of 255 bytes. Dialog variables are referenced symbolically, by name. The name is composed of one to eight characters (six, for FORTRAN). Alphameric characters (A-Z, 0-9, #, $, or @) are used in the name, but the first character may not be numeric. Variable Access - Order of Search from Services Dialog variables are organized into groups (or pools) according to the dialog function and application with which they are associated. (See the SELECT service for a description of how the dialog developer can control creation of these pools.) A pool may be thought of as a list of variable names that enables ISPF to access the associated values. When an ISPF service encounters a dialog variable name (in a panel, message, table, or skeleton) it searches these pools to access the dialog variable's value. The pools and the types of dialog variables that reside in them are shown below in the standard search sequence used by ISPF services. 32 ISPF Dialog Management Services Function pool - A variable that resides in the function pool of the in control is called a function variable. It is acc'e'ssible only by that function. (tlJo51tt elite.".. ;"-I('il CL/),T/EXEC) ~c.t~~~.!!:)currently 2. Shared pool - A variable that resides in the shared pool of the current application is called a shared variable. It is accessible only by functions belonging to the same application. Application profile pool - A variable that resides in the application profile pool is called an application profile variable and is automatically retained for the user from one session to another. Profile variables are automatically available wheniin application begins and are automatically saved when it ends. Select Service and Variable Pools Figure 12 shows how the SELECT service may be used to pass control within a dialog and illustrates the resulting variable pool structures. The flow is shown from the initial command entry through menus and through dialog functions. ISPF access to dialog variables is shown at each point. (0 y""vc1 1 i>1,J I:~I Initially, menus A and B are processed. Since menus a~ not part of any function, all variables are accessed from the shared and profile pools. Function X is invoked and uses the VPUT service to copy one of the var1ables from its function pool into the shared pool. Next, function Y is invoked. Function Y is shown using the VGET service to copy the dialog variable from tlie shared pool to its function pool and then using the SELECT service for further menu processing. Chapter 2. Dialog Processing Concepts 33 J . I I I I r====================l ISPSTART PANEL(A) v ..~ ..~ Menu A ..~ .~ H ------ ..~ * S ..~ Variable Data Flow Menu"~ * <=========================> B I .~ -II I SELECT PGM(X) I A R E D A P P L I C A P V r============ Variable II I I <=============>1 I Function T I a a a L N I Function X I IL ______ __ I - - __ JI Data Flow I I I I SELECT PGM(Y) I V r - - - - - - - - - - - - -1 I I Pool for II X L============== I VPUT +===> +====== VGET I V r============== II <=============> II Function Data Flow I I Pool for II Y I I Function I Y IL-I ___--' I I SELECT I Variable P R a F I L E P a a L L============= PANEL(C) V ~'r .,tr * Menu C -;t.r * * * Menu D * Variable Data Flow * <=========================> * L================== Figure 12. 34 Control and Data Flow in a Dialog ISPF Dialog Management Services J Figure 12 also shows how the SELECT service controls access to dialog variable pools from both functions and menus. When a variable is defined as an input variable on a menu, the following actions apply during processing of the menu: • If the variable does not exist in either the shared pool or the profile, it is created in the shared pool. • If the variable exists in the shared pool, it is accessed from, and is updated in, the shared pool. • If the variable exists in the profile and not in the shared pool, it is accessed from, and is updated in, the profile pool. Relationship of Function Pools to Dialog Functions Each dialog function has associated with it a unique function pool of dialog variables. The pool is maintained by ISPF for the associated function. The function uses the dialog variables to communicate with the various ISPF services. When a dialog variable is function pool and may not variables associated with variables associated with variables.) created, it is entered into the current be referenced by other functions. (Dialog one function may have the same names as dialog another function, but they are not the same When a new function is started, a function pool is created for it. Variables may then be created in the function pool and accessed from it. When the function ends, its function pool -- along with any variables in it -- is deleted. MVS and VMjSP: The Function Pool for Command Procedures In MVS and VMjSP, when the function in control is a command procedure (CLIST or EXEC 2), the list of variable names kept by the command language processor and the list of function variables kept by ISPF are the same list. Thus, a variable created by the command procedure during its execution is automatically a dialog variable, and a dialog variable entered in the function pool by ISPF is automatically accessible to the command procedure. However, in ISPF, variable names may not exceed eight characters. Notes: 1. EXEC 2 variables &DATE and &TIME and CLIST variables &SYSDATE and &SYSTIME may not be used in ISPF. Use instead, ISPF system variables ZDATE and ZTIME, which contain similar information. 2. In MVS, TSO global variables in effect at when ISPF is started, are not available to CLISTs running under ISPF. These global variables Chapter 2. Dialog Processing Concepts 35 are restored when ISPF terminates. Any global variables put into effect from within ISPF are lost when ISPF terminates. The following command procedure example (CLIST language) illustrates that command procedure variables are automatically treated as ISPF dialog variables. Example: SET &AAA = 1 ISPEXEC DISPLAY PANEL(XYZ) SET &CCC = &AAA + &BBB In the example,above, variable AAA is created by the command procedure simply by setting it to a value (a "I", in this case). The DISPLAY service is then invoked to display panel XYZ. Assume that the panel definition for XYZ contains two dialog variables, named AAA and BBB, and that they are defined as input (unprotected) fields. In the panel definition, they might appear as follows: + INITIAL VALUE + INCRENENT %===> AAA ~{,===> BBB + + where the underscore indicates the start of an input field, followed by the name of the variable. When the panel is displayed, the content of AAA (a "I") is displayed. ISPF creates the variable BBB in the function pool and displays it as a blank. Now assume the user, in response to the panel display, types 100 in the first field (AAA) and types 20 in the second field (BBB). When the user presses the ENTER key, the value 100 is automatically stored in AAA and the value of 20 is automatically stored into BBB. The DISPLAY service then returns control to the command procedure. Then the next statement is executed. This statement creates variable eec, setting it to the sum of AAA and BBB, namely 120. The Function Pool for Programs When the dialog function in control is a program, the program' does not share a common list of variables with ISPF because a program is compiled, not interpreted as command procedures are. ISPF maintains a list of variables that belong to the function so that ISPF s~vices can use dialog variables for communication of data. ISPF makes two types of entries in the function pool for a program: ~efined and !mp . 't. _ - - -....--~'";~.J;IJ.!M~~~~~ C~X,4BJ.ABLES.v~".:g"@fined variables are entered explicitly through the use of the VDEFINE service. The VDEFINE service creates a dialog variable name in the function pool and associates it with the program's own variable. This association enables ISPF to directly access and modify that program variable. Otherwise, the program's variables are 36 ISPF Dialog Management Services not available to ISPF. The VDELETE service ends this association and removes ISPF's ability to access that program variable. Example: The following program code (PL/I) specifies that field PA of the program can be accessed by ISPF using dialog variable name FA. DECLARE PA CHAR(8); DECLARE LENGTHPA FIXED BIN(31) INIT(LENGTH(PA)); PA = 'OLD DATA'; CALL ISPLINK ('VDEFINE', 'FA', PA, 'CHAR', LENGTHPA); CALL ISPLINK ('DISPLAY', 'XYZ I); PA is declared as a program variable (character string, length 8). The program calls the VDEFINE service to make PA accessible to ISPF by use of dialog variable FA. Then, the DISPLAY service is called to display panel XYZ. Assuming dialog variable FA is specified as an input field on the panel definition, then when data is entered for field'FA, ISPF stores the data into the program variable PA. (". ··--:~~ni~-VARiA-B~mplicit variables are placed in the function pool "'---whe.n...,.e..i,t-laS>F""'6T.. "ttre ,,,.,€0 11 ow ing c i r c urns t anc e s a r is e : 1. When an ISPF service refers to a dialog variable name that is not found in the standard search reference. 2. When an ISPF service must store into a dialog variable that does not already exist in the function pool. Implicit variables can not be accessed directly from a program function. Programs access implicit variables only through the use of VCOPY and VREPLACE. However, any ISPF service invoked by a program function may access an implicit variable directly by referencing the variable name. To illustrate how an implicit variable is created, assume that panel XYZ, in the above example, allows the user to enter another value and the panel definition specifies ~hat this value is to be stored in dialog variable IA. This is the first reference to IA and therefore it does not exist in the function pool. Because IA does not exist, ISPF creates it in the function pool and stores into IA the value entered on the panel by the user. IA is an implicit dialog variable. IDENTICAL DIALOG VARIABLE NAMES: A defined variable and an implicit variable can have the same name. This occurs when (using the VDEFINE service) a defined variable is created using the same name as an existing implicit variable. When the same name exists in both the defined and ,the implicit areas of a function pool, the defined entry can be accessed and the implicit entry can not be accessed. The implicit entry is made accessible by removing (through VDELETE) any entries for that variable name made through the VDEFINE service. A given dialog variable name can be defined (by VDEFINE) many times within a given function. Each definition may associate a different program variable with the dialog variable name. This is referred to as "stacking." When each successive VDEFINE request is processed for a Chapter 2. Dialog Processing Concepts 37 given dialog variable name, the previous definition is not accessible. Only the most recent definition of that dialog variable is accessible. A previous definition of that variable may be made accessible by deleting (using VDELETE) the more recent definitions of that name. For example, the mainline of a program can define a dialog variable to be associated with one program variable. A subroutine is called and can define the same dialog variable name to be associated with a different program variable. Any ISPF services invoked after the second VDEFINE would have access to only the subroutine's program variable. The subroutine would delete (using VDELETE) that dialog variable before returning, thereby uncovering the earlier definition set up in the mainline program. Note: To avoid a possible program error, for each VDEFINE processed within a function for a given dialog variable name, a VDELETE should be processed using the same name. The Shared Pool The shared variable pool allows functions and selection panels to share access to dialog variables. Shared pools are created by the SELECT service when it processes the ISPSTART or ISPF command and when the NEWAPPL or NEWPOOL keywords are specified with the SELECT service. When SELECT returns, the shared pool is deleted and the previous shared pool (if any) is reinstated. A function may copy dialog variables from its function pool to the shared pool by means of the VPUT service. Since a panel displayed by the SELECT service does not belong to any function, any dialog variables used in the panel are read from and stored into the shared or profile pools. Variables in the shared pool are accessible to all ISPF services that use the standard search sequence. In addition, another function may directly copy these variables to its function pool by means of the VGET service. The Application Profile Pool Like the shared variable pool, the application profile pool contains variables that are accessible to functions within an application, but the profile variables are saved across sessions. (An application consists of one or more dialogs, each of which have been started using the same application id). When a new application is started, it has access to an application profile variable pool. If an application is restarted (for example, by split screen) then both invocations of the application access exactly the same application profile. The profile data is maintained as an ISPF table whose name is xxxxPROF, where xxx x is the application-id. If the 38 ISPF Dialog Management Services application is already active, then the current profile is used. Otherwise, ISPF must search for the table. When accessing an application profile that is not currently active, ISPF first searches the user's profile library for a member with the name xxxxPROF. The member is found if the user had previously run the application and so had a local copy of the profile table. If the member is not found, the table input library is searched. The application developer may provide a profile in this library. This profile is to contain variable names and values initialized for the application. If the member cannot be found in either the user's profile or table input library, the application profile is initialized with the contents of the default application profile pool, ISPPROF, which is read from the table input library. ISPPROF is distributed with ISPF and contains a set of default PF key values. An installation may modify this table to change these settings or to include other variables which will be copied to initialize brand new application profiles. Refer to Chapter 4, "Library Requirements," for information on profile and table libraries. Upon completion of the application, the contents of the application profile pool are saved in the user's profile library under the name xxxxPROF. The profile is deleted from storage when the last invocation of the application is terminated. Functions can directly access the profile pool using the VGET variable services. The VPUT service must be used to enter variables in the profile pool. However, menus (selection panels) automatically update existing profile variables. Note: A second level of profile variable pool, the system profile pool (ISPSPROF), is always active. These dialog variables are owned by the dialog manager and may not be modified by an application. Their values may be read, however, because the system profile is included in the standard search sequence after the application profile. All system variable names begin with "z" (such as "ZTERH") and supply information such as terminal type and list/log defaults. Representation of Variables Information entered by a user on a panel is in character string format. All dialog variables remain in character string format when stored as implicit function variables, or when stored in the shared pool, in a profile, or in ISPF tables. Defined variables, however, may be translated to fixed binary or to a bit string, hex string, or a user-defined format when stored internally in a program module. The internal format is specified when the variable is defined (through the use of the VDEFINE service). The translation Chapter 2. Dialog Processing Concepts 39 occurs automatically when the variable is stored by an ISPF service. A translation back to character string format occurs automatically when the variable is fetched. When a defined variable is stored, either of two errors may occur: • Truncation - if the current length of the variable is greater than the defined length within the module, the remaining data will be lost. • Translation - if the variable is defined as other than a character string, and the external representation has invalid characters, the contents of the defined variable is lost. In either case, the ISPF service issues a return code of 16. System Variables Certain variable names are reserved for use by the system. They all begin with the letter "Z". Therefore, dialog developers should avoid names which begin with "z" when choosing dialog variable names. System variables are used to communicate special information between the dialog and the dialog manager. The variables are discussed with the ISPF service to which they apply. Some system variables cannot be modified. They provide the dialog with information about the environment, such as user id, current date, and time. These variables ~Q.e··~±rrttre·~'~~d vgxJable pool. They may be obtained for a comman~function through th~~ervice, and for a p~~~ ~~~:_~.:m through th@ry service. ~ 40 ISPF Dialog Management Services I Commonly used system variables that a dialog may access are listed below: Note: ~': = may not be modified by a dialog General * * * ~': ~': ~': ~': ~': -.'r ~': ~': .,'~ ZUSER - User id ZPREFIX - TSO user prefix in MVS; in VMjSP and VSE, ZPREFIX contains the same value as ZUSER ZLOGON - Stepname of TSO LOGON procedure in MVS; in VMjSP and VSE, ZLOGON contains a null value ZTIME Time of day (format hh:mm) ZDATE Current date (format yyjmmjdd) ZJDATE Day-of-year date (format yy.ddd) ZDAY - Day of month (2 characters) ZHONTH - Month of year (2 characters) ZYEAR Year (2 characters) ZTE~IPF Name of temporary file for file tailoring output ZAPPLID Application identifier Z Null Variable - Terminal type - Number of PF keys - Setting for PF Keys: ZPF13-ZPF24 contain settings for the primary keys ZPF01-ZPF12 contain settings (on 24-key terminals only) for the alternate keys ZERRMSG - Error message id ZERRSM - Short error message text ZERRLM - Long error message text ZERRHM - Name of help panel associated with error message - Command verb after a command table (SETVERB) action ZVERB ZTDTOP - Current top row upon return from table display - Scroll amount for the BROWSE service ZSCBR - Scroll amount for the EDIT service ZSCED - Scroll amount for member lists ZSCML ZTERM ZKEYS ZPFxx Tutorial Panels ZUP ZCONT ZIND ZHTOP ZHINDEX - Name of parent panel Name of next continuation panel YES specifies an index page Name of top panel Name of first index panel (,Selection~anels ZCMD ZSEL ZPARENT ZPRIM - Command input field Command input field truncated at first period Parent menu name (when in explicit chain mode) YES specifies panel is a primary option menu Chapter 2. Dialog Processing Concepts 41 Summary of Variable Services The variable services are: VGET Retrieve variables from shared pool or profile VPUT Update variables in shared pool or profile VDEFINE Define function variables VDELETE Remove definition of function variables VRESET Reset function variables VCOpy Copy data from a dialog variable to the program VREPLACE Copy data from the program to a dialog variable The first two services, VGET and VPUT, may be invoked from any function. The other variable services are for use from program modules only (they are not applicable to functions coded in a command language). Miscellaneous Services ISPF provides EDIT, BROWSE, LOG, and CONTROL services. These services are discussed below. EDIT and BROWSE are available only if ISPF/PDF is installed. EDIT and BROWSE Services The EDIT and BROWSE services allow a dialog function to invoke the ISPF/PDF edit or browse programs. These services require specification of a data set name (MVS) , fileid (VM/SP), or filename (VSE) and a member name, if applicable. The entry panel, which is displayed if edit or browse is selected from the primary option menu, is bypassed. See ISPF/PDF Reference. In MVS, EDIT and BROWSE services use subpools 2 and 3 and will issue FREEPOOL macros for the subpools that they use. Therefore, a dialog that invokes EDIT and BROWSE services should not use subpools 2 and 3. EDIT and BROWSE services must not be invoked from PL/I programs that also use subtasking. 42 ISPF Dialog Management Services LOG Service The LOG service allows a dialog function to write a message to the ISPF log file. The user may specify whether the log is to be printed, kept, or deleted when ISPF is terminated. CONTROL Service /. StlP The(CONTRO~vice Pi \ 2 () allows a dialog function to condition ISPF to expect cert~k:inds of display output, or to control the disposition of errors encountered by ISPF services. For example, some display conditions are: LINE Expect line output, to be generated by the dialog or by execution of a TSO or CMS command. In MVS, optionally, the starting line may be specified. In VM/SP and VSE, the starting line is ignored. LOCK Allow the next display without unlocking the 3270 keyboard. LOCK is generally used with the DISPLAY service to overlay a currently displayed panel with an "in process" message; for example: CONTROL DISPLAY LOCK DISPLAY MSG (message-id) SPLIT Enable or disable split screen operation by a user as required by the application. REFRESH Refresh the entire screen on the next display. Typically used before or after invoking some other full screen application that is not using ISPF display services. NONDISPL Do not display the next panel (process the panel without actually displaying it, and simulate the ENTER key or END command) . The disposition of errors may be controlled as follows: CANCEL Terminate the dialog function on an error (return code 12 or higher from any service). A message is displayed and logged prior to termination. RETURN Return control to the dialog function on all errors (with appropriate return code). A message id is stored in system variable ZERRMSG, which may be used by the dialog function to display or log a message. The default disposition is CANCEL. If a dialog function sets the disposition to RETURN, the change affects only the current function. does not affect lower-level functions invoked through the SELECT service, nor a higher-level function when the current function completes. Chapter 2. Dialog Processing Concepts It 43 VM/SP: USE OF THE VIRTUAL MACHINE COMMUNICATION FACILITY (VMCF) For VM/SP systems, the Virtual Machine Communication Facility (VMCF) is used by ISPF and may be used by dialogs. (VMCF provides services to allow virtual machines to communicate messages and data. ISPF uses V~fCF in its implementation of ENQ/DEQ services to control file sharing by dialogs.) To use VMCF facilities,2 a dialog must issue the following, in the sequence shown, for each transaction: 1. VMCF diagnose - to authorize the virtual machine for general communications (see note) 2. C~1S HNDEXT SET macro and STCTL/LCTL instructions ,- to enable virtual machine for external interrupts th~ Note: Because ISPF services may change the settings for VMCF authorization and interrupt handling, these settings must be reestablished following each use of ISPF services. 3. VMCF diagnose - for data transfer protocol 4. CMS HNDEXT CLR macro and STCTL/LCTL instructions - to disable the virtual machine for external interrupts; issued at the end of transaction processing-and before returning. In addition, the dialog: 44 • Must accept the IDENTIFY protocol as well as any desired data transfer protocols. • Must not use the VMCF AUTHORIZE SPECIFIC or VMCF UNAUTHORIZE services. Their use could result in an ABEND due to an ISPF ENQ/DEQ failure. 2 Refer to VM/SP CMS Command and Macro Reference Manual, SCI9-6209, and VM/SP System Programmer's Guide, SC19-6203 for more information. ISPF Dialog Management Services CHAPTER 3. USE OF COMMANDS, PROGRAM KEYS, AND LIGHT PEN This chapter describes the three levels of ISPF commands and their use and processing, and the operation of the program access (PA) and program function (PF) keys of the 3270 terminal. Commands may be used to request processing functions. levels of commands: There are three • System commands - provided by the dialog manager and always available to an end user (unless explicitly overridden by an application). • Application commands - available to an end user throughout operation of an application. • Function commands - meaningful only while operating a particular function within an application. The first two levels (system and application commands) are defined through the use of command tables. Processing of these commands is handled by the dialog manager. Use of system and application commands is generally transparent to the dialog functions. For example, HELP is a system command. The third level (function commands) includes all commands that are processed by a dialog function. For example, the edit NUMBER command is a function command. Note: Virtual machine settings (such as device spool and tag settings and minidisk concatenation)" could be changed during display of a panel by execution of CP or CMS commands or SELECT. For example, the terminal user may change the spooling of the printer to class C by entering on the command line of a displayed panel: CP SPOOL PRT CLASS C Therefore, upon return from ISPF services, the dialog should establish any settings required for its processing. COMMAND ENTRY The user may enter a command by: • Pressing a PF key . Chapter 3. Use of Commands, Program Keys, and Light Pen 45 • Selecting an ATTENTION FIELD by using the light pen or the cursor select key. (The cursor select key is a hardware feature on 3278 and 3279 terminals.) • Typing the information in the command field and pressing ENTER. (This includes the command field in browse, edit, member lists, and table displays, as well as the command field on a panel.) ISPF intercepts all commands entered by the user, regardless of whether the command was typed in the command field or entered with a PF key or attention field. If the command matches an entry in the application or system command table, it is executed by the dialog manager. Otherwise, it is assumed to be a function command and is passed through to the dialog function. See "-Command Tables" for more information on how ISPF intercepts and processes commands. Commands may be passed to the operating system by entering the appropriate ISPF-provided command verb (CP, TSO, CMS, or ICCF) followed by the actual TSO, VM/SP, or ICCF command; for example: ===> ===> ===> TSO LISTC LEVEL(Z77PHJ) CMS L -J, ";.~ A ICCF ILIST XYZ Commands may be stacked for execution by entering a special delimiter between the commands; for example: ===> SORT BLDG DEPT NAME; HENU ABC Note: Commands cannot be stacked following the HELP command (HELP processing deletes any commands in the stack). The default delimiter is a semicolon (;), which the user may change with the ISPF parms option (see Appendix B, "Using the ISPF PARHS Option"). In the above example, the SORT command is executed first. completes, the MENU command is executed. When it Note: In VSE, do not attempt to execute ICCF commands from both screens at once, because ICCF can process just one command at a time. PRESSING A PF KEY: In ISPF, the PF keys have not been assigned to special functions. Each PF key is equated to a character string and simply simulates command entry. When the PF key is pressed, the processing is the same as though the character string had been typed in the command field and the ENTER key pressed. A dialog function cannot sense the difference between a command entered by a PF key and a command entered by typing in the command field. When a PFkey is pressed, there may be user-entered information already in the command field. If so, the PF key definition, followed by a blank, is concatenated ahead of the contents of the command field. For example, suppose PF7 is equated to the character string "UP". If the 46 ISPF Dialog Management Services user types "4" in the command field and then presses PF7, the results are exactly the same as if the user had typed "UP 4" in the command field and then pressed ENTER. A command entered in the command field is passed to the function in control if it is logically not related to the function of the PF key depressed. However, any valid commands chained behind an unrelated command are concatenated with the PF key definition. SELECTING AN ATTENTION FIELD: Attention fields may also be used to simulate command entry. When an attention field is detected by the light pen or cursor select key, the processing is exactly the same as though the contents of the attention field had been typed into the command field and the ENTER key pressed. Again, the dialog function cannot sense the difference. Note: Attention fields are intended as an alternative means of selecting options from a menu. They should not be used on data entry panels, since any information that is typed by the user into an input field (including command fields) will be lost when the attention occurs. Unlike PF keys, information in the command field is not concatenated with the contents of the attention field. SYSTEM COMMANDS The system commands, distributed with ISPF, include the following (PF key defaults are shown in parentheses): HELP (PF1/13) Displays additional information about an error message or provides tutorial information about commands and options. SPLIT (PF2/14) Causes split screen mode to be entered, or changes the location of the split line. END (PF3/1S) Terminates the current operation and returns to the previous menu. If the primary option menu is displayed, this command terminates ISPF. RETURN (PF4/16) Causes an immediate return to the primary option menu or to the display from which the user entered a nested dialog. (See "END and RETURN Commands.") RFIND (PFS/17) Repeats the action of the previous FIND command or the FIND part of the most recent CHANGE command (applies to browse and edit only). RCHANGE (PF6/18) Repeats the action of the previous CHANGE command (applies to edit only). UP (PF7/19) Causes a scroll toward the top of the data. Chapter 3. Use of Commands, Program Keys, and Light Pen 47 DOWN (PF8/20) Causes a scroll toward the bottom of the data. SWAP (PF9/21) Moves the cursor to wherever it was previously positioned on the other logical screen of a split screen pair. When operating in split screen mode and the SWAP key (PF9) is depressed, any entry on the command line is ignored and is not processed. LEFT (PF10/22) Causes a scroll left. RIGHT (PFl1/23) Causes a scroll right. CURSOR (PF12/24) Moves the cursor to the first input field on the panel being displayed (which generally is the option selection or command field) or to the alternate command field if one has been designated on the )BODY statement. If invoked a second time on a panel with scrollable data (a BROWSE, EDIT, or table display panel), this command causes the cursor to be moved to the second input field. The system commands described below have no default PF key assignments: 48 CP or CMS In VM/SP, allows the user to enter a VM/SP command or an EXEC. Because ISPF uses the same mechanism to execute both CP and CMS commands, the two commands (CP and CMS) are treated synonymously; ISPF does not attempt to distinguish between them. TSO In MVS, allows the user to enter a TSO command or CLIST. ICCF In VSE, allows the user to enter an ICCF command. STOPAT In VM/SP, causes display of a message and entry to CMS SUBSET mode whenever a specified program is loaded by the select service. KEYS causes an immediate display of a panel that allows the user to view and change the current PF key definitions (equivalent to option 0.3 in the ISPF PARMS option). PANELID ONIOFF The command PANELID or PANELID ON causes all subsequent panels to be displayed with the name of the panel shown at the beginning of line 1. The command PANELID OFF turns off this mode of operation. During initial entry to ISPF, this mode is initialized OFF. ISPF Dialog Management Services Note: The panel id is displayed only if the panel contains a protected-field attribute byte in row 1 column 1, and no other attribute bytes in the next eight character positions. PRINT Causes a "snapshot" of the screen image to be recorded in the ISPF list file for subsequent printing. PRINT-HI Same as PRINT except that high-intensity characters on the screen are printed with overstrikes to simulate the dual intensity display. If desired, an installation may add new system-wide command definitions by modifying the system command table. STOPAT Command For VM/SP systems, the STOPAT command is used to cause entry to CMS SUBSET mode when a specified program is loaded by the SELECT service. The STOPAT command is entered on the command line of a panel displayed on a logical screen: COMMAND => STOPAT pgmname where pgmname is the name of a program. Whenever the specified program is loaded by the SELECT service for the logical screen on which STOPAT was entered, a message is displayed and CMS SUBSET mode is entered. The message gives the name of the program and the storage address at which the program was loaded. For example, suppose the following STOPAT command, specifying a program named MYPROGA, is entered on the command line of a panel: COMMAND ==> STOPAT ~IYPROGA After MYPROGA is loaded by the SELECT service (assuming the storage address at which it is loaded is OOOD17AO) the message displayed is: PROGRAM MYPROGA LOADED AT OOOD17AO CMS SUBSET While in CMS SUBSET mode, the user may enter CP or CMS commands for debugging. To end CMS SUBSET mode and begin execution of the program (MYPROGA in this example), the user enters RETURN. STOPAT is effective for one program per logical screen and remains in effect for the specified program until another STOPAT command specifying another program name is entered or a STOPAT command without a program name is entered; for example: COMMAND ==> STOPAT Chapter 3. Use of Commands, Program Keys, and Light Pen 49 This STOPAT command, without a program name specified, cancels the STOPAT command previously in effect. END and RETURN Commands The END command is used to request termination of a function or dialog. When entered on a selection panel displayed by the SELECT service, it causes a redisplay of the next higher menu in the hierarchy. When entered on a panel displayed by the tutorial program, it terminates the tutorial and causes a redisplay of the menu from which the tutorial was invoked or the panel from which HELP was requested. When the END command is entered on a panel that was displayed by a dialog function (through the DISPLAY or TBDISPL service), the dialog function must take whatever action is appropriate to terminate and return control. Entry of the END command is signalled by a return code of 8 from the DISPLAY or TBDISPL service. The RETURN command simulates repeated END commands, up to some appropriate stopp{ng point, without displaying intervening panels. When a RETURN command is entered, the dialog manager takes the following action: 1. The END command is simulated on the panel that is currently displayed (i.e., the DISPLAY or TBDISPL service returns a code of 8). 2. For subsequent requests (made through the DISPLAY or TBDISPL service) for display of a different panel, the panel is not displayed and a return code of 8 is issued by the service. 3. However, when two consecutive display requests name the same panel, normal operation of the DISPLAY and TBDISPL services is restored and processing may proceed as though RETURN had not been entered. Whether to proceed is decided by the dialog developer. (Generally, because RETURN signals the application user's desire to end the current processing, a developer will limit processing, after the RETURN is received, to clean up and final processing before returning control to the dialog element from which the function was invoked.) 4. If two consecutive requests do not specify the same panel, processing continues in the mode described in item 2 above, until control is returned to a primary option menu or a nested dialog completes. Then, normal operation of the DISPLAY and TBDISPL services is restored. Note: If it is necessary to suspend processing of a panel temporarily so that other panels may be displayed, issue a CONTROL DISPLAY SAVE request to save the contents and control information of the panel whose processing is to be suspended. Before resuming the processing of this panel, issue CONTROL DISPLAY RESTORE to reinstate the contents and control information for the panel. If 50 ISPF Dialog Management Services non-ISPF screens have been displayed, issue CONTROL DISPLAY REFRESH to clear the screen. This mode of operation continues until a primary option menu is encountered or a nested dialog completes, whichever occurs first. If a primary option menu is encountered, it is displayed. If a nested dialog completes, the panel from which it was invoked is redisplayed exactly as the user last saw it (except that the command field is blank). In either case, this completes the action of the RETURN command. Note: A nested dialog is one that is invoked from any panel by a SELECT action command (see "Command Tables"). The HELP and KEYS commands invoke nested dialogs. In addition, the TSO, CMS, and CP system commands invoke nested dialogs when they are used to execute a CLIST or EXEC that displays panels through ISPF services. If a dialog function needs to distinguish between END and RETURN, it can do so in one of the following ways: • Upon return from the DISPLAY or TBDISPL service (with a return code of 8), the function may examine variable ZVERB in the shared variable pool. It will contain either "END" or "RETURN". • Upon return from the SELECT service when the PANEL keyword was specified, the dialog function may examine the return code from SELECT. Return code 0 indicates that the END command was entered on the selected menu panel. Return code 4 indicates that the RETURN command was entered on the selected menu panel or on some lower-level menu. Jump Function The jump function (also referred to as extended return) allows a user to go directly to any option that is valid from the primary option menu currently in effect. The function is entered in the command field of any panel, preceded by an equal sign; for example: COMMAND ===> =3.1 The action is as follows: • If not entered on a primary option menu, the jump function causes repeated END commands to be simulated until a primary option menu is encountered. What follows the equal sign is then entered on the primary option menu and the ENTER key is simulated. (The primary option menu is not displayed.) • If entered on a primary option menu, a jump function is treated the same as if the equal sign were not present; i.e., the specified option is selected. Chapter 3. Use of Commands, Program Keys, and Light Pen 51 Unlike the RETURN command, the jump function is unaffected by nested dialogs. For example: from the ISPF/PDF edit option, the user enters a HELP command to enter the tutorial. Then from the tutorial, the user enters "=1". This causes tutorial to end, edit to end, and primary option 1 to be invoked. For user convenience, the jump function may be entered in any field that is preceded by an arrow. The arrow must consist of at least two equal signs followed by a greater-than sign ("==>") and must immediately precede the input attribute byte. For compatibility with the SPF Program Product, the jump function may be entered in conjunction with the RETURN command (or RETURN PF key). For example: the user types "=2" and then presses the RETURN PF key rather than pressing ENTER. The action is just the same as if the user had typed "=2" and pressed ENTER. When operating in split screen mode, if a user enters a jump function (for example, =3) and chains other commands to it (=3;other), the chained commands are ignored. Scrolling The scroll commands are used if the dialog function invokes the table display service (TBDISPL) or the interfaces to edit and browse. During execution of the tutorial, the commands are interpreted as follows: UP DOWN LEFT RIGHT - same same same same as as as as the the the the UP command SKIP command BACK command ENTER key (display the next page). When scrollable data is displayed, scrolling allows the screen "window" to be moved up, down, left, or right across the information. (Only up and down scrolling is allowed for table displays.) Whenever scrolling is allowed, a scroll amount is displayed at the top of the screen (line 2). This amount determines the number of lines (or columns) scrolled with each use of a scroll command. To change the scroll amount, move the cursor to the scroll field and overtype the displayed amount. Valid scroll amounts are: 52 • A number from 1 to 9999 - specifies the number of lines (up or down) or columns (left or right) to be scrolled. • PAGE - specifies scrolling by one page. • HALF - specifies scrolling by a half page. • MAX - specifies scrolling to the top, bottom, left margin, or right margin, depending upon which scrolling command is used. ISPF Dialog Management Services • CUR - specifies scrolling based on the current position of the cursor. The line or column indicated by the cursor is moved to the top, bottom, left margin, or right margin of the screen, depending upon which scrolling command is used. If the cursor is not in the body of the data, or if it is already positioned at the top, bottom, left margin, or right margin, a full page scroll occurs. For scrolling purposes, a "page" is defined as the amount of information currently visible on the logical screen. In split screen mode, for example, a browse display might have 12 lines by 80 columns of scrollable data. In this case, a scroll amount of HALF would move the text up or down by 6 lines, or right or left by 40 columns. The current scroll amount is saved in the application profile. Three values are saved -- one for browse (ZSCBR), one for edit (ZSCED), and one for member lists (ZSCHL). When you overtype the scroll amount, the new value remains in effect until you change it again. The value MAX is an exception; following a HAX scroll, the scroll amount reverts to its previous value. Users can also enter any valid scroll amount as part of the scroll command. For example, enter: COHMAND ===> up 3 and press the ENTER key, or enter COHMAND ===> 3 and press the UP PF key. Either form results in a temporary, one-time override of the scroll amount. COMMAND TABLES System and application commands are implemented through the use of command tables. A system command table (ISPCMDS) is distributed with ISPF in the table (~''''"-'~input library. An application may provide an application command table " ~tv\Jb,l by including a table named xxxxCMDS in its table input library, where '1-Sf /" xxxx is a 1- to 4-character application id. ,.r.,~ Whenever a command is entered, the dialog manager searches the application command table (if any) and then the system command table. If the command is found, action is taken immediately. If the command is not found in the application or system tables, the command is passed through to the dialog, unaltered, in the command field. The dialog may then take appropriate action. Chapter 3. Use of Commands, Program Keys, and Light Pen 53 10'. Command Table Format A command table is an ISPF table in which each row contains the specification for one command. (Refer to Appendix D, "Command Table Utility," for a discussion of the utility that is used to generate or modify command tables.) The variables that define the table columns are: • ZCTVERB - specifies the name of the command. A command name must be from two to eight characters in length, and must begin with an alphabetic character. Note that the terms 'command name' and 'command verb' are synonymous and are used interchangeable. • ZCTTRUNC - specifies the minimum number of characters that the user must enter to find a match with the command name. If this number is zero or equal to the length of the name, the user must enter the entire name. This number may not be one, nor greater than the len.g.t- ,..,~ / / ~ / . ZCTACT - specifies the acti;:>to be performed when the command is entered. See below. ZCTDESC - contains a brief description of the purpose of the command. This variable is optional. It is not used by the dialog manager in processing the command, but it is displayed by the command table utility. The description is limited to 57 characters. The variable names listed above (ZCTVERB, ZCTTRUNC, ZCTACT, and ZCTDESC) are treated as defined function variables by the dialog manager; they are not accessible to dialogs. ZCTACT defines the action that the command specified in ZCTVERB will perform. ",-~--....... ~~) that can be specified in the ZCTACT variable are: 54 • SELECT (followed by selection keywords) - causes the selected dialog (command, program, or menu) to be given control immediately. • ALIAS (followed by the name of another command) - allows specification of command aliases. • PASSTHRU - causes the command to be passed to the dialog, as though it had not been found in the table. • SETVERB - causes the command to be passed to the dialog with the command verb stored separately from the parameters. • NOP - causes the command to be functionless. message is displayed in this case. • Blank (no action) - causes the table entry to be ignored, and scanning to continue (to search for additional entries with the same name) . ISPF Dialog Management Services An "inactive command" • A variable name (beginning with an ampersand) whose content may be one of the above valid actions - allows dynamic specification of command action. These actions are described in the sections that follow. Additional action keywords are used to indicate system commands for which special processing is required. These are: SPLIT, SWAP, CURSOR, P~, and PRINT-HI. Although these are valid actions, they are intended for use only in the system command table distributed with ISPF. They are not intended for use in application command tables. ---- - - SELECT Action Commands A SELECT action command is one type of command that may be specified in a command table. The action is coded exactly the same as for the SELECT service. All SELECT keywords are valid, including NEWAPPL. The selected dialog (function or menu panel) is invoked immediately when a SELECT action command is entered on the command line of any panel. This temporarily suspends the current dialog. When the selected dialog completes, the screen is refreshed and the suspended dialog resumes execution. Examples of SELECT action commands: ZCTVERB ZCTTRUNC SORT PREPARE MENU 0 4 4 Note: ZCTACT SELECT PGM(PQRSORT) PARM(&ZPARM) SELECT CMD(XPREP &ZPARM) NEWPOOL SELECT PANEL(&ZPARM) In VSE, CMD is not used. In the example, the TRUNC variable indicates that the SORT and MENU command names may not be truncated. PREPARE, however, may be truncated to any of the following: PRE PAR , PREPA, PREP. The functions and keywords in the ZCTACT field indicate the actions that the commands will perform. The ZPARM variable that appears in the SELECT keywords indicates that command parameters are to be substituted at that point. For example, if the following commands were entered: ===> SORT BLDG DEPT NA~1E ===> PREPA LOG LISTING ===> MENU PQRMENUl the following SELECT actions would result: SELECT SELECT SELECT PGM(PQRSORT) PARM(BLDG DEPT NAME) LOG LI STING) NEWPOOL PANEL (PQRMENUl) ct-m (XPREP Chapter 3. Use of Commands, Program Keys, and Light Pen 55 The ZPARM variable is used only to substitute user-entered parameters into SELECT action commands. It is a dummy variable; it is not stored in a variable pool and is not accessible to dialogs. Use of SELECT action commands may cause recursive entry into dialog functions, which the dialog manager allows. The dialog developer should either design functions for recursive use, or display a message if a user attempts to reenter a non-recursive function. Note: The ISPF EDIT and BROWSE services are non-recursive. There is an ISPF restriction that commands entered from edit and browse may not re-invoke edit and browse. The ISPF DISPLAY and TBDISPL services may be used recursively. The current display environment is automatically saved whenever a SELECT action command is entered, and restored upon completion of the command. Assigning Command Aliases A command table may establish aliases by designating, as an action in the ZCTACT field, the keyword ALIAS followed by the name (verb) of another command. The alias entry must precede the command that it references. Normally, alias entries are used in an application command table to reference system commands; for example: ZCTVERB ZCTTRUNC QUIT EXPLAIN FORWARD BACK 0 4 3 0 ZCTACT ALIAS ALIAS ALIAS ALIAS END HELP DOWN UP This defines QUIT as an alias of END, EXPLAIN as an alias of HELP, etc. For example, when the user enter;s QUIT, the system responds as though END had been entered. , Overriding System Commands An application can override any system command simply by including the same command name in the application command table; for example: ZCTVERB ~ t:, .\~ \\ CJ'fI'-? \"\ ~~ I"~ ~~' 56 ~ HELP TSO ZCTTRUNC 0 0 ZCTACT PASSTHRU NOP In this example, the dialog has overridden both the HELP and TSO commands. During ISPF processing, if the user enters HELP, it is passed to the dialog function then in control and its function is determined by the function. The action specified for the TSO command is NOP. This disables the TSO command and if TSO is entered by a user, Nap causes the ISPF Dialog Management Services command to be functionless. An "inactive command" message is automatically displayed when a NOP action command has been processed. Passing Commands to a Dialog Function As previously noted, any command that is not found in the application or system command table is passed to the dialog, unaltered, in the command field. This occurs regardless of whether the command was typed in the command field or entered by use of a PF key or the attention field. The user may force a command to be passed to the dialog, even if the command exists in the command table, by typing a greater-than sign (» in front of the command verb. In the command table, any command that has an action of PASSTHRU is processed as though the command were not found in the table - it is passed to the dialog in the command field. Commands may also be passed to the dialog via the SETVERB action. This action causes the dialog manager to separate the verb from the command parameters (if any). The command verb is stored in variable ZVERB, which is in the shared variable pool. The command parameters are passed to the dialog, left-justified, in the command field; for example: ZCTVERB QUERY ZCTTRUNC ZCTACT 0 SETVERB The verb "QUERY" is stored in variable ZVERB and the character string (for example "DEPT 877") is passed in the command field. The following user actions produce the same results: • The user types "QUERY DEPT 877" in the command field and presses ENTER. • The user types "DEPT 877" in the command field and then presses a PF key that has been equated to the character string "QUERY". • The user presses a PF key that has been equated to the character string "QUERY DEPT 877". • The user employs the light pen or cursor select key to select an attention field that contains the character string "QUERY DEPT 877". The following system commands, distributed with the dialog manager, are defined as SETVERB action commands: END RETURN RFIND RCHANGE UP DOWN LEFT RIGHT Chapter 3. Use of Commands, Program Keys, and Light Pen 57 Note: The ZVERB variable can be interrogated to distinguish between END and RETURN. (The effect of END and RETURN on the DISPLAY service is the same because RETURN is used to simulate repeated END commands, until the primary option menu is reached.) Dynamically Specified Command Actions A command action may be specified dynamically by means of a dialog variable. A variable action may be used to "share" commands with the dialog manager, such as UP, DOWN, LEFT, and RIGHT, and to enable or disable command~_4HE~ng certain points in the dialog. Suppose, for exam~le, an~i~~~=}ommand table includes the following two entrl.es: ZCTVERB UP DOWN ZCTTRUNC o o ZCTACT &SCRVERT &SCRVERT The variable SCRVERT may be used to dynamically control the action of the vertical scroll commands (UP and DOWN), as follows: • If SCRVERT is set to Nap, the commands are disabled. • If SCRVERT is set to PASSTHRU, the commands are passed to the dialog. • If SCRVERT is set to blank, command scanning continues, in which case the system definitions for UP and DOWN (in th~ syste~lcommand table) take effect. • - \,",-,~.~.~~~.r_~~,_c:,.;' If SCRVERT is set to an invalid action, the commands are disabled, as in Nap. For this particular example, settlng SCRVERT to SETVERB would have the same effect as setting it to blank, because UP and DOWN are defined in the system command table as SETVERB action commands. Note: If the dialog overrides or shares the use of the scroll commands, it becomes that dialog's responsibility to ensure that the commands have been redefined with an action of blank (or SETVERB) before invoking any ISPF function that requires them; namely, browse, edit, and table display. The same rule applies to the RFIND command (used by browse and edit) and the RCHANGE command (used by edit). 58 ISPF Dialog Management Services TERMINAL KEYS On the terminal, the two program access (PA) keys and the program function (PF) keys (if any) are used to request commonly used operations. No PF keys are required for ISPF operations, but ISPF is shipped with a default set of PF key definitions that users can change. Refer to Appendix B, "Using the ISPF PARHS Option," for information on specifying PF key operation. Program Function Keys ISPF does not require PF keys for its operation. Commands are entered in the command field of any display (including edit, browse, member lists, and table display). PF keys are strongly recommended, however, for ease of use. The default PF key assignments, distributed with ISPF, for the 3x4- key pad (right-hand side of the keyboard) are shown in Figure 13. These are PF keys 1-12 on a 12-key terminal, or keys 13-24 on a 24-key terminal. For 24-keyterminals, PF keys 1-12 have the same defaults as keys 13-24. It is recommended that users of 24-key terminals continue to use the key pad (13-24) for ISPF operations, and redefine PF keys 1-12 as needed by dialog applications. Chapter 3. Use of Commands, Program Keys, and Light Pen 59 PFI / 13 HELP PF4 / 16 RETURN Figure 13. PF2 / 14 SPLIT PF5 / 17 PF3 / 15 END PF6 / 18 RFIND RCHANGE PF7 / 19 PF8 / 20 PF9 / 21 SCROLL UP SCROLL DOWN SWAP PFI0 / 22 PFl1 / 23 PF12 / 24 SCROLL LEFT SCROLL RIGHT CURSOR Default Program Key Arrangement Defining PF Keys When the KEYS command is entered or option 3 is selected from the ISPF PARMS option menu, the panel shown in Figure 14 is displayed. The panel shown in the figure is displayed for terminals with 12 PF keys. For terminals with 24 PF keys, the first panel displayed by the KEYS command shows the "primary" keys (PFI3-PF24). When the ENTER key is pressed, a panel is displayed showing the "alternate" keys (PFI-PFI2). The user may flip-flop between the two panels by continuing to press ENTER. The user may define or change a PF key function simply by equating the key to a command. Example: PF9 ===> CHANGE ALL ABC XYZ PF12 ===> PRINT 60 ISPF Dialog Management Services ------------------------CO~IMAND NUNBER OF PF KEYS PF1 PF2 PF3 PF4 PFS PF6 PF7 PF8 PF9 PF10 PF11 PF12 PF KEY DEFINITION ==> ===> => ===> => ==> ===> ===> ===> ===> ==> ===> ===> ==> 12 TER~lINAL ----------------------------TYPE ===> 3277 HELP SPLIT END RETURN RFIND RCHANGE UP DOWN SWAP LEFT RIGHT CURSOR INSTRUCTIONS: Verify number of PF keys and terminal type before proceeding. Press ENTER key to process changes. Enter END command to process changes and exit. Figure 14. PF Key Definition Panel In this example, PF9 has been equated to an edit command, and PF12 has been equated to the system-defined PRINT command. A PF key definition case. The colon is equated is inserted cursor is currently beginning with a colon (:) is treated as a special stripped off and the command to which the key is in the first input field on whichever line the positioned. A PF key definition beginning with a greater-than sign (» is another special case. It causes the command to be passed to the dialog regardless of whether the command appears in the command tables. This feature provides compatibility with SPF, in which edit and browse commands were defined with a greater-than sign. Note: When an ISPF function is executing, do not press RESET and then attempt to enter information or use a PF key; results are unpredictable. Chapter 3. Use of Commands, Program Keys, and Light Pen 61 Saving PF Key Definitions PF key definitions are kept- in a set of system variables named ZPF01, ZPF02, ... ,ZPF24. Variables ZPF13-ZPF24 always contain the "primary" PF key definitions. For 24-key terminals, these correspond to physical keys 13-24. For 12-key terminals, these correspond to physical keys 1-12. Variables ZPF1-ZPF12 contain the "alternate".key definitions, and are meaningful only for terminals with 24 PF keys. The current values for all 24 keys (variables ZPF01-ZPF24) are kept in the application profile. Hence, different PF key definitions can be associated with different applications. An application can provide default PF key settings for a new user by providing a default profile. An application can prevent the user from changing the default PF key settings by overriding the KEYS command (by assigning it to NOP in the application command table). MVS and VM/SP: Program Access (PA) Keys The two PA keys are defined as follows. changed. These definitions may not be ATTENTION! (PAl) Normally, this key should not be used while you are in ISPF full screen mode. See the discussion below for exceptions. RESHOW (PA2) Redisplays the contents of the screen. PA2 may be useful if a user has pressed the ERASE INPUT or CLEAR key accidentally, or has typed unwanted information but has not yet pressed ENTER or a PF key. Generally, PAl is used to terminate TSO commands or CLISTs running under ISPF. However, some TSO commands and CLISTs process PAl in their own way. CLISTs with attention exists should not be run under ISPF because results are unpredictable when PAl is pressed. If PAl is pressed while ISPF is in full screen mode after the keyboard has been unlocked, it is treated as a RESHOW request. If PAl is again pressed, the current function is terminated and the primary option menu or a top-level selection panel supplied by the dialog developer, is displayed. When an ISPF function is executing, if the RESET key is pressed to unlock the keyboard and PAl is pressed, ISPF will attempt to terminate the current function and redisplay the primary option menu. The attempt may not always be successful (if, for example, there is an error in MVS allocation) . 62 ISPF Dialog Management Services VSE: Program Access (PA) Keys The two PA keys are defined below. Because these definitions may be changed by an installation, consult the installation's system administrator or system programmer to obtain the current definitions. RESHOW (PAl) Redisplays the contents of the screen. PAl may be useful if the user has pressed the ERASE INPUT or has unwanted information but has not yet pressed ENTER or a PF key. CANCEL (PA2) Normally, this key should not be used while you are in ISPF full screen mode. See the discussion below for exceptions. The PA2 key, pressed after the keyboard has been manually unlocked (by pressing the RESET key), terminates processing and redisplays the primary option menu. If PA2 is pressed after the keyboard has been unlocked by ISPF, it functions the same as the PAl key. However if PA2 is pressed a second time without any intervening interaction, it terminates processing of the current function or panel and the primary option menu is redisplayed. When an ISPF function is executing, if the RESET key is pressed to unlock the keyboard and PA2 is pressed, ISPF will attempt to terminate the current function and redisplay the primary option menu. LIGHT PEN AND CURSOR SELECT ISPF permits fields on a panel to be detected with a light pen or the cursor select key. (The cursor select key is a hardware feature on 3278 and 3279 terminals.) Only the "attention" mode of light pen selection is used. Panel fields that are to be detectable by light pen or cursor selection must be defined as attention fields. This is done with an attribute character that has been defined with the ATTN(ON) keyword. The panel designer must provide the number of blank characters before and after the attention attribute character that are required by the 3270 hardware. Processing of light pen/cursor selected fields is handled in much the same way as PF keys. The entire contents of the selected field are treated as a command and processed as though they had been typed into the command field. If the command is found in the tables, it is executed immediately. If the command is not found in the tables, it is inserted into the command field and the entire command field is passed to the dialog. Attention fields may be used on a menu to simulate option selecti.on. The panel designer must truncate any unwanted characters resulting from Chapter 3. Use of Commands, Program Keys, and Light Pen 63 an attention entry into the command field. Figure 15. An example is shown in In this example, a light pen or cursor selection of the first option would cause the character string "1 - BROWSE" to be placed in the ZCMD field and the ENTER key to be simulated. In the )PROC section, the contents of the ZCMD field are truncated at the first blank before the ZSEL variable is set based on a translation of the ZCMD field. )ATTR $ TYPE(TEXT) ATTN(ON) )BODY %------------------------------%SELECT OPTION ===> ZCMD SOME MENU ------------------------------+ % $ $ 1 - BROWSE 2 - QUERY +DISPLAY SOURCE DATA OR LISTINGS +FIND OUT INFORMATION ABOUT SOMETHING )PROC &ZCND = TRUNC (&ZCMD, ' ') &ZSEL = TRANS (TRUNC (&ZCMD, '. ') 1, 'PGM(ISPBRO), 2 , ' PANE L (XYZ) , Figure 15. 64 Use of Light Pen Attribute ISPF Dialog Management Services CHAPTER 4. LIBRARY REQUIREMENTS This chapter describes the libraries that are used by ISPF. Some are always required and others are required only if certain operations are to be performed. Libraries that are to be required during a given invocation of ISPF must be allocated before that invocation. MVS: LIBRARY SETUP Required and optional libraries for the operation of ISPF in the MVS environment are described in this section. Required Libraries The following libraries (partitioned data sets) are required for operation of ISPF in the MVS/TSO environment: DDNAME DESCRIPTION ISPPLIB ISPHLIB ISPSLIB ISPTLIB ISPPROF Panel Library Message Library Skeleton Library Table Input Library User Profile Library RECFM LRECL FB FB FB FB FB 80 80 80 80 80 BLKSIZE 3120 3120 3120 3120 (see note) Note: The block size may be established by the application. must be a mUltiple of 80. It A filemode number other than 1 on a minidisk other than the A-disk may not result in proper updating. The panel, message, skeleton, and table input libraries are distributed with ISPF. There is a separate profile library for each end-user. Its contents are dynamically generated and updated during execution of ISPF. The recommended data set names for these libraries are shown below. Check with your system programmer to determine if these are the actual data set names used at your installation. DDNAME ISPPLIB ISPMLIB ISPSLIB ISPTLIB ISPPROF DSNAME ISP.V1R1MO.ISPPLIB ISP.V1R1MO.ISPMLIB ISP.V1R1MO.ISPSLIB ISP.VlR1MO.ISPTLIB user selected Chapter 4. Library Requirements 65 Application libraries for panels, messages, skeletons, and tables should be concatenated ahead of the corresponding ISPF libraries using the ddnames shown above. They must all have a record format of FB, a logical record length of 80, and a block size of 3120 or greater. (The block size must be a multiple of 80.) Example. Suppose application XYZ uses the following partitioned data sets for panels, messages, skeletons, and tables: XYZ.PANELS XYZ.HSGS XYZ.SKELS The following allocations are required: IIISPPLIB II IIISPHLIB II DD DSN=XYZ.PANELS,DISP=SHR DD DSN=ISP.VIRIMO.ISPPLIB,DISP=SHR DD DSN=XYZ.MSGS,DISP=SHR DD DSN=ISP.VIRIMO.ISPMLIB,DISP=SHR II DD DSN=XYZ.SKELS,DISP=SHR DD DSN=ISP.VIRIMO.ISPSLIB,DISP=SHR IIISPTLIB 'DD DSN=ISP.VIRIMO.ISPTLIB,DISP=SHR IIISPPROF DD DSN=USERAA.ISPF.PROFILE,DISP=OLD IIISPSLIB These allocations must be performed prior to invoking ISPF. They may be done in the user's TSO LOGON procedure using DD statements, as shown above, or in a CLIST using the corresponding TSO ALLOCATE commands. Table and File Tailoring Libraries The following data sets are optional, and have to be allocated only if an application uses table or file tailoring services. DDNAME DESCRIPTION ISPTABL ISPFILE Table Output Library File Tailoring Output RECFM LRECL FB FB 80 80 BLKSIZE (See note) (See note) Note: The block size may be established by the application. must be a multiple of 80. It The table output library must be a partitioned data set. The ISPTABL ddname that defines it may specify the same data set as the table input library (ddname ISPTLIB) or a different data set. The data sets must be the same if the updated version of a table is to be reprocessed by the same dialog that updated it. 66 ISPF Dialog Management Services The table output library must be allocated to ddname ISPTABL prior to use of table services. ISPF includes ENQ logic to prevent simultaneous updates. ISPTABL must not specify a concatenated sequence of data sets. In HVS and VH/SP, ISPTABL may be allocated dynamically by the dialog, and freed upon completion of use. In MVS, ISPTABL should be allocated with DISP=SHR even though it specifies an output data set. Note: In MVS, the TSO Programming Control Facility II (PCF) may not be used to protect the table output library from unauthorized updating if the library is allocated DISP=SHR. The library may either be protected by RACF, or allocated with DISP=OLD and protected by PCF. File tailoring output may be written to a temporary sequential data set provided by ISPF. The temporary data set is allocated automatically, so there is no need for the dialog to allocate a data set. The fully qualified name of the temporary data set is available in system variable ZTEMPF. If the temporary data set is not used, file tailoring output may be written either to a partitioned or a sequential data set. The data set must be allocated to ddname ISPFILE prior to invoking file tailoring services. ISPFILE may be allocated dynamically by the dialog, and freed upon completion. For a sequential data set, ISPFILE must be allocated with DISP=OLD. For a partitioned data set, it may be allocated with DISP=SHR, but may not be protected by the Program Control Facility II (PCF) unless it is allocated with DISP=OLD. ISPFILE must not specify a concatenated sequence of data sets. CLIST and Program Libraries Dialog functions that are coded as CLISTs must be in a procedure library that has been allocated to ddname SYSPROC prior to invoking ISPF. Dialog functions that have been coded as programs must be link edited. The load module may reside in a step library, a system link library (such as SYS1.LINKLIB), or the link pack area. Alternatively, it may be in the following partitioned data set (RECFH=U): DDNAME DESCRIPTION ISPLLIB ISPF Link Library This library may be used for testing new dialogs that contain program-coded functions. If used, it must be allocated to ddname ISPLLIB (DISP=SHR) prior to invoking ISPF. ISPLLIB may specify a concatenated sequence of partitioned data sets. ISPLLIB is used as a task library when fetching load modules. It is searched prior to the system link libraries and the link pack area. If both a step library and task library (ISPLLIB) are used, then the step library should be included in the ISPLLIB concatenation sequence. Chapter 4. Library Requirements 67 Note: If a program is to be used in split screen mode from both screens, it should be linked as reentrant or nonreusable. VM/SP: LIBRARY SETUP Required and optional libraries for the operation of ISPF in the VM/SP environment are described in this section. Note: Before ISPF is invoked, the user's virtual device 191 must be accessed as the A-disk. ISPF assumes that this minidisk is available at all times in read/write mode, and that no other user has write access to it. Note: I, Shared minidisk support is described in Appendix Use of Shared Minidisks." "V~1/SP: Required Libraries The following libraries (MACLIBs) are required for operation of ISPF in the VM/CMS environment: DDNAME DESCRIPTION ISPPLIB ISPMLIB ISPSLIB ISPTLIB ISPPROF Panel Library Message Library Skeleton Library Table Input Library User Profile Library FILENAME (note (note (note (note (note 1) ISPPLIB 1) ISPMLIB 1) ISPSLIB 1) ISPTLIB 2) user MACLIB MACLIB MACLIB MACLIB Notes: 1. These libraries are distributed with ISPF. 2. This library is not distributed with ISPF and is empty the first time a user logs on. There is a separate profile library for each user. Its contents are dynamically generated and updated during execution of ISPF. Application libraries for panels, messages, and skeletons should be concatenated ahead of the corresponding ISPF libraries using FILEDEF statements with the ddnames shown above. . Example. Suppose application XYZ uses the following libraries for panels, messages, and skeletons, respectively: XYZPANLS XYZMSGS! XYZSKELS 68 MACLIB MACLIB MACLIB ISPF Dialog Management Services The following FILEDEFs are required, assuming that the minidisks containing the XYZ libraries and the distributed ISPF libraries have already been linked and accessed. FILEDEF ISPPLIB DISK XYZPANLS MACLIB FILEDEF ISPPLIB DISK ISPPLIB MACLIB (' \ FILEDEF ISPMLIB DISK XYZMSGS FILEDEF ISP~ILIB DISK ISP~ILIB CFILEDEF FILEDEF 4': i'( ~IACLIB 4', ~IACLIB *;', ISPSLIB DISK XYZSKELS MACLIB ISPSLIB DISK ISPSLIB MACLIB ~': #': (PERM CONCAT) (PERM CONCAT) (PERM CONCAT) (PERM CONCAT) (PERM CONCAT) (PERM CONCAT) Note: A GLOBAL MACLIB command is not required; ISPF handles the concatenation automatically based on the FILEDEF information. These FILEDEFs must be issued prior to invoking ISPF. They may be issued in the user's PROFILE EXEC or in an EXEC that initiates the XYZ application. Any EXEC that invokes ISPF must be coded in EXEC 2 language. Note: Duplicate file names are not permitted in CMS. Table and File Tailoring Libraries The following files are optional, and need to be defined only if an application uses table or file tailoring services: DDNAME Description Filename ISPTABL ISPFILE Table Output Library File Tailoring Output user selected user selected HACLIB MACLIB The table input and output libraries must both be MACLIBs. The ddnames that define them may specify the same MACLIB or different MACLIBs. The MACLIBs must be the same if the updated version of a table is to be reprocessed by the same dialog that updated it. If tables are used, the table input library must be allocated (in a FILEDEF statement) to ddname ISPTLIB prior to invoking ISPF. It may consist of a concatenated sequence of libraries, in which case the FILEDEFs must include the CONCAT parameter (see the above example). Again, a GLOBAL MACLIB command is not required. The table output library must be allocated (using a FILEDEF statement) to ddname ISPTABL prior to use of table services. The ISPTABL ddname may be allocated dynamically by the dialog, and freed (FILEDEF CLEAR) upon completion of use. ISPTABL must not specify a concatenated sequence of libraries. File tailoring output may be written to a temporary sequential file provided by ISPF. In this case, there is no need for the dialog to allocate an output file. The temporary file is written on the user's Chapter 4. Library Requirements 69 A-disk. The file name of the temporary file is available in system variable ZTENPF. The file type is always ISPTEHP. If the temporary file is not used, file tailoring output may be written to either a NACLIB or a sequential file. The HACLIB or sequential file must be allocated (in a FILEDEF statement) to ddname ISPFILE prior to use of file tailoring services. If the HACLIB or file does not already exist, the FILEDEF statement must include a "RECFH F" parameter. The ISPFILE ddname may be allocated dynamically by the dialog, and freed (FILEDEF CLEAR) upon completion. ISPFILE must not specify a concatenated sequence of libraries. Note: Table output libraries and, in some cases, file tailoring output may need to be on shared minidisks. (Shared minidisk support is further described in Appendix I, "VH/SP: Use of Shared Minidisks") , ISPF ensures the integrity of these minidisks provided all updating is done by ISPF services. However, ISPF cannot prevent destructive conflicts if other means (e.g" ordinary CNS commands) are used to update shared minidisks. To guard against destructive conflicts, the following procedures are suggested: • Isolate shared ISPF tables and file tailoring output files on minidisks that do not have other types of files. • Caution users not to update these minidisks except through the use of ISPF services. • Always access these minidisks as read-only extensions of themselves. This prevents inadvertent updating. For example: CP LINK XYZ 294 294 MW ACCESS 294 D/D FILEDEF ISPTABL DISK XYZTABL MACLIB D (PERM) In this example, the table output library for the application is assumed to be on the XYZ 294 minidisk. The disk is linked in multiwrite (~M) mode to allow concurrent updating by mUltiple users. However, when the disk is accessed as the D-disk, "D/D" is specified making it a read-only extension of itself. This prevents inadvertent updating. A FILEDEF statement for the table output library (ddname ISPTABL) is then issued to specify the particular table library (XYZTABL MACLIB) on the D-disk. ISPF automatically reaccesses the disk, when needed, to write an updated copy of the table. ISPF then restores the original (D/D) access mode. The same technique should be used when a table library is allocated for both input and output. For example: 70 ISPF Dialog Management Services CP LINK XYZ 294 294 MW ACCESS 294 DID FILEDEF ISPTLIB DISK XYZTABL MACLIB D (PERM) FILEDEF ISPTABL DISK XYZTABL MACLIB D (PERM) EXEC and Program Libraries Dialog functions coded in EXEC 2 must be in EXEC files on minidisks that have been linked and accessed prior to invoking the EXEC. Dialog functions that are coded as programs may be invoked in text (object) module format, or they...J.!!5i ink edited and invoked mload module format. They may be in "TEXT files on minidisks that have been ljLnked and accessed prior to invo lng e function,~they may be members of either of the following two libraries: DDNAME DESCRIPTION ISPXLIB ISPLLIB Text Module Library (TXTLIB) Load Module Library (LOADLIB) If a TXTLIB is used, it must be allocated (using a FILEDEF statement) to ddname ISPXLIB. A concatenated sequence of TXTLIBs may be specified, in which case the FILEDEF statements must include the CONCAT parameter. A GLOBAL TXTLIB command is not required. When a text module is invoked (either as a TEXT file or as a member of a TXTLIB), any additional text modules that it calls are loaded automatically by "automatic call" reference. The called modules must also be TEXT files on an ISPF-accessible minidisk or members of the TXTLIB allocated to ddname ISPXLIB. If a LOADLIB is used, it must be allocated (using a FILEDEF statement) to ddname ISPLLIB. A concatenated sequence of LOADLIBs may be specified, in which case the FILEDEFs must include the CONCAT parameter. A GLOBAL LOADLIB command is not required. No automatic call referencing is available with load modules; all load module references must be resolved prior to invocation by ISPF. Note: Load~dules may be used only for programs that are reenterable. Nested use of the same load module or concurrent use in split screen mode causes the same copy of the load module to be invoked, even if it is marked reenterable. Chapter 4. Library Requirements 71 Restrictions on Use of MODULE Files Use of NODULE files, which are non-relocatable, should be avoided whenever possible. Dialog functions that are invoked as programs by means of the SELECT parameter: SELECT PGN(program-name) --- --- must be relocatable (text or load module format). ...... In VN/SP, whenever SU~h a ~ is loaded into the user area, ISPF automatically turns o· CMS sub';';t~'modeJo prevent NODULE files from overlaying the relocata e progra~--fSPF turns off subset mode whenever all relocatable programs in the user area have completed operation. Note: In the split screen environment, subset mode is not turned 6ff until all relocatable programs associated with both logical screens have completed execution. A dialog may control the use of split screen through use of the CONTROL service. Dialog functions that are invoked as commands use the following SELECT parameter: r t CND(command) This parameter may be used to invoke NODULE files if CMS is not currently operating in subset mode. However, these files may not use dialog services. If subset mode is on, any attempt to invoke or load a NODULE file will result in a CMS return code of +1. MVS AND VM/SP: USE OF LIBRARIES The following steps describe the order in which MVS and VM/SP libraries are set up for use in development and test of a dialog: 72 1. Set up the panel, message, skeleton, table, and program libraries for the application. For the MVS environment, allocate new partitioned data sets. For the VM/SP environment, selectminidisks on which the libraries are to reside, and ensure that the dialog has access to the minidisks. 2. Create a command procedure (CLIST or EXEC 2) that contains the necessary ALLOCATE or FILEDEF statements to allocate the libraries. Concatenate the application libraries ahead of the libraries required by ISPF, as described previously. 3. Create the panels, messages, and skeletons by editing directly into the application libraries. In the VM/SP environment, these libraries can be updated only in test or trace mode. 4. Create the dialog functions and assure that the text or load modules are in libraries (or on minidisks) accessible to'ISPF. ISPF Dialog Management Services Note: edited. Functions coded as program modules must be link Under V~1/SP, they may be link edited. In either environment, when a function is link edited, the ISPLINK subroutine must be included (explicitly or by automatic call) in the load module. For MVS, ISPLINK is distributed in load'module format and may be placed in a system library for automatic call during link edit. For VM/SP, ISPLINK is distributed as a TEXT file. 5. Invoke the application. To do this, add an ISPSTART command to the command procedure created in step 2. The ISPSTART commend should invoke the application, using the appropriate PANEL, CMD, or PGM parameter. This command procedure may be made available to the end users as the means of invoking the application. Alternatives are to invoke the application from the master menu or other menu. VSE/AF 1.3.5: LIBRARY SETUP In VSE, source statement libraries are used to store panels, messages, tables and skeletons. The following sublibraries are used: TYPE MESSAGES PANELS SKELETONS TABLES SUBLIBRARY M N S (Includes file tailoring output) T Source statement libraries to be used in an ISPF session are defined through ISPDEF control statements. These ISPDEF control statements are -specified in the ICCF procedure used to invoke ISPF. Required Libraries The following ISPDEF library definitions are required for operation of ISPF in the VSE/ICCF environment. LIBNAME DESCRIPTION ISPPLIB ISPMLIB ISPSLIB ISPTLIB ISPPROF Panel Library Library Skeleton Library Table Library User Profile Library ~lessage Panel, message, skeleton, and table input libraries are provided in a source statement library distributed with ISPF. A profile library must be created for each user. Its contents are dynamically generated and updated during execution of ISPF. Chapter 4. Library Requirements 73 Application libraries for panels, messages, skeletons, and tables should be concatenated ahead of the corresponding ISPF libraries using the libnames shown above. Example Assume that application XYZ uses VSE library XYZLIB for its panels, messages, skeletons, and tables. The following ISPDEF statements are required: ISPDEF ISPDEF ISPDEF ISPDEF ISPDEF ISPPLIB,SEARCH=(XYZLIB,ISPFDMS) ISPMLIB,SEARCH=(XYZLIB,ISPFDMS) ISPSLIB,SEARCH=(XYZLIB,ISPFDMS) ISPTLIB,SEARCH=(XYZLIB,ISPFDMS) ISPPROF,SEARCH=USERA,TO=USERA Or, alternatively: ISPDEF *,SEARCH=(XYZLIB,ISPFDMS) ISPDEF ISPPROF,SEARCH=USERA,TO=USERA Library Definition The ISPDEF control statement defines libraries to be used by ISPF. The following syntax rules apply to the ISPDEF statement: 74 • A statement may start in any column. • Parameters must be separated by a comma or one or more blanks. • A statement may be continued at any point a comma is valid and the comma must be specified. • A continued statement may start in any column. • Parentheses in a SEARCH parameter are optional if a single library is specified. ISPF Dialog Management Services ISPDEF libname ,SEARCH=(af-name-input, ... ) ,TO=af-name-output ,SEARCH=(af-name-input, ... ),TO=af-name-output ,ICCFLIB=iccf-number-ft-output I PRIM ,FILENAME=vse-name-ft-output libname Specifies the ISPF library this definition represents. The ISPF library names that may be specified are ISPPLIB, ISPMLIB, ISPSLIB, ISPTLIB, ISPPROF, ISPPHOD, ISPTABL and ISPFILE. User-defined names may be specified to support the LIBRARY parameter of table services and file tailoring. * Specifies that this library definition applies to all ISPF libraries that have not been explicitly defi~ed by other library definition statements. af- name- input Specifies the name of an Advanced Function (AF) library used for input. Multiple libraries may be specified, in which case they are concatenated beginning with the initially specified library name. This parameter applies to libraries ISPPLIB, ISPMLIB, ISPSLIB, A maximum of ISPTLIB, ISPPROF or ISPPMOD, and to the libname '*' 15 libraries may be specified. af- name-output Specifies the name of an AF library used for output. This parameter applies to libraries ISPPROF, ISPPHOD, ISPTABL, ISPFILE, user defined libraries, and to the libname 'i'.' iccf- n umber-ft-output Specifies the number of an ICCF library number to be used for file tailoring output. This parameter applies to library ISPFILE and to user defined libraries. vse- name-ft-output Specifies the filename of a VSE sequential file to be used for file tailoring output. This parameter applies to library ISPFILE only. Figure 16 shows the ISPDEF statement parameters and the ISPF libraries that may be specified in each. Figure 17 shows relationships between defaults specified by the '*' libname statement and unspecified ISPF libraries. Chapter 4. Library Requirements 75 I libname SEARCH ISPPLIB M R ISPMLIB M R ISPSLIB M R ISPTLIB M R ISPPROF M R1 ISPPMOD 0 R1 ISPTABL 0 NA ISPFILE 0 NA 0 NA 0 R3 user defined ~~ Figure 16. I I I I I I I I I I I I I I I I I I I I I II TO ICCFLIB FILENAME NA NA NA NA NA NA NA NA NA NA NA NA R1 NA NA R1 NA NA R NA NA R2 R2 R2 R2 R2 NA R3 NA NA ISPDEF Statement Parameters and Libraries to Which They Apply Meanings for the codes used in Figure 16 are: 76 M - Mandatory ISPF library NA - Not applicable o Optional ISPF library R Required parameter Rl - The library specified for ISPPROF and ISPPMOD is used for input and output operations. A single library must be specified using either the SEARCH or TO parameters. The same library must be indicated if both the SEARCH and TO parameters are specified. R2 - A single AF library or ICCF library or VSE sequential data set filename must be specified. For a user defined library used by table services, only the TO parameter is valid. ISPF Dialog Management Services The libname '*' specifies the default input library chain and/or default output library. The SEARCH parameter specifies one or more libraries as the default ISPF input library chain. The TO parameter specifies one library as the default ISPF output library. Refer to Figure 17 for the relationship between the '*' libname statement and unspecified ISPF libraries. R3 - libname SOURCE OF DEFAULT LIBRARY SPECIFICATION ISPPLIB libraries specified by the SEARCH parameter ISPMLIB libraries specified by the SEARCH parameter ISPSLIB libraries specified by the SEARCH parameter ISPTLIB libraries specified by the SEARCH parameter ISPPROF ISPPMOD first library specified by the SEARCH parameter or library specified by the TO parameter. The same default library must result if both the SEARCH and TO defaults have been established. ISPTABL library specified by the TO parameter ISPFILE library specified by the TO parameter Figure 17. Relationship Between Defaults Specified by the '*' Libname Statement and Unspecified ISPF Libraries. Three examples of ISPDEF statements are given below. In example 1, all ISPF input libraries are defined by USER1 followed by the ISPF product source library, and all ISPF output libraries are defined to USER1. Example 2 defines the same ISPF libraries as example 1, but uses the '*' libname. Example 3 explicitly specifies an ISPPROF definition. In this case, if ISPPROF were not explicitly specified, the default definition from the '*' ISPDEF statement would be in effect and would be invalid. The default is invalid because the first library in the SEARCH parameter is not the same as the library in the TO parameter. In this example, the optional ISPF library ISPPMOD will not be defined from the defaults established because th~ result also would be invalid. Note: The name ISPFDMS, used in these examples, is the recommended name. Chapter 4. Library Requirements 77 1. ISPDEF ISPDEF ISPDEF ISPDEF ISPDEF ISPDEF ISPDEF ISPDEF ISPDEF ISPPLIB,SEARCH=(USER1,ISPFDMS) ISPMLIB,SEARCH=(USER1,ISPFDMS) ISPSLIB,SEARCH=(USER1,ISPFDMS) ISPTLIB,SEARCH=(USER1,ISPFDMS) ISPPROF,SEARCH=USER1,TO=USER1 ISPPMOD,SEARCH=USER1,TO=USER1 ISPTABL,TO=USER1 ISPFILE,TO=USERI USERDEF,ICCFLIB=4 2. ISPDEF ISPDEF *,SEARCH=(USER1,ISPFDMS),TO=USERI USERDEF,ICCFLIB=4 3. ISPDEF ISPDEF ISPDEF *,SEARCH=(USER2,USERl,ISPFDMS),TO=USER1 ISPPROF SEARCH=USERl,TO=USER1 USERDEF,ICCFLIB=4 Table and File Tailoring Libraries The following libraries are optional, and need be specified only when an application is to use table or file tailoring services. LIBNAME DESCRIPTION ISPTABL ISPFILE Table Output Library File Tailoring Output The table output library must be a VSE library. The ISPTABL definition may specify the same library as the table input library or a different library. The libraries must be the same if the updated version of a table is to be reprocessed by the same dialog that updated it. File tailoring output maybe written to a temporary sequential data set defined under the filename "ISPCTLn". The filename of the temporary data set is available in system v~riable ZTEMPF. (When accessing this data set use RECFM of fixed, BLKSIZE of 800, and LRECL of 80.) If the temporary data set is not used, file tailoring output may be written to a VSE library, an ICCF library, or a sequential data set as specified by the ISPDEF statement for ISPFILE. (When accessing this data set use fixed RECFM, BLKSIZE of 800, and LRECL of 80.) VSE/AF 1.3.5: USE OF LIBRARIES The following steps describe the order in which VSE libraries are set up for use in development and test of a dialog: 78 1. Allocate an AF private source statement library to contain the panels, message, skeletons, and tables associated with the dialog. 2. Create an ICCF procedure that contains the necessary ISPDEF statements to define the libraries to be used during ISPF execution. ISPF Dialog Management Services The sample ISPSTART ICCF procedure located in the ICCF common library should be used as a guide. (This procedure is placed in the ICCF common library during ISPF installation.) 3. Create the panels, messages, and skeletons by editing directly into the application library (allocated in step 1). 4. Create the dialog functions and make them available in core image libraries accessible to ISPF. Each dialog function must be link edited and the subroutine ISPLINK must be included (explicitly or by autolink) in the phase. 5. Invoke the application. To do this, modify the ISPSTART command in the ICCF procedure created in step 2. The ISPSTART command should invoke the application using the appropriate panel or pgm parameter. This ICCF procedure may be made available to application users as a means of invoking the application. Alternatives are to invoke the application from the master menu or other menu. VSE/AF 2.1: LIBRARY SETUP In VSE, libraries.sublibraries are used to store panels, messages, tables and skeletons. The following member types are used: CATEGORY HESSAGES PANELS SKELETONS TABLES TYPE H N S T (Includ~s file tailoring output) Libraries.sublibraries to be used in an ISPF session are defined through ISPDEF control statements. These ISPDEF control statements are specified in the ICCF procedure used to invoke ISPF. Required Libraries The following ISPDEF library definitions are required for operation of ISPF in the VSE/ICCF environment. LIBNAHE DESCRIPTION ISPPLIB ISPHLIB ISPSLIB ISPTLIB ISPPROF Panel Library Hessage Library Skeleton Library Table Library User Profile Library Panel, message,skeleton, and table input libraries are provided in a VSE/AF library.sublibrary distributed with ISPF. A profile library.sublibrary must be created for each user. Its contents are dynamically generated and updated during execution of ISPF. Chapter 4. Library Requirements 79 Application libraries.sublibraries for panels, messages, skeletons, and tables should be concatenated ahead of the corresponding ISPF libraries using the libnames shown above. Example Assume that application XYZ uses VSE library.sublibrary XYZLIB.XYZSUB for its panels, messages, skeletons, and tables. The following ISPDEF statements are required: ISPDEF ISPDEF ISPDEF ISPDEF ISPDEF ISPPLIB,SEARCH=(XYZLIB.XYZSUB,ISPF.DM) ISPMLIB,SEARCH=(XYZLIB.XYZSUB,ISPF.DM) ISPSLIB,SEARCH=(XYZLIB.XYZSUB,ISPF.DM) ISPTLIB,SEARCH=(XYZLIB.XYZSUB,ISPF.DM) ISPPROF,SEARCH=USERLIB.USERA,TO=USERLIB.USERA Or, alternatively: ISPDEF *,SEARCH=(XYZLIB.XYZSUB,ISPF.DM) ISPDEF ISPPROF,SEARCH=USERLIB.USERA,TO=USERLIB.USERA Library Definition The ISPDEF control statement defines VSE libraries.sublibraries, ICCF libraries, or VSE sequential files to be used by ISPF. The following syntax rules apply to the ISPDEF statement: 80 • A statement may start in any column. • Parameters must be separated by a comma or one or more blanks. • A statement may be continued at any point a comma is valid and the comma must be specified. • A continued statement may start in any column. • Parentheses in a SEARCH parameter are optional if a single library.sublibrary is specified. ISPF Dialog Management Services ,SEARCH=(af-name-input, ... ) ,TO=af-name-output ,SEARCH=(af-name-input, ... ),TO=af-name-output ,ICCFLIB=iccf-number-ft-output I PRIM ,FILENAME=vse-name-ft-output ISPDEF libname Specifies the ISPF library this definition represents. The ISPF library names that may be specified are ISPPLIB, ISPMLIB, ISPSLIB, ISPTLIB, ISPPROF, ISPPMOD, ISPTABL and ISPFILE. User-defined names may be specified to support the LIBRARY parameter of table services and file tailoring. * Specifies that this library definition applies to all ISPF libraries that have not been explicitly defined by other library definition statements. af-name-input Specifies the name of a VSE/Advanced Function (AF) library.sublibrary used for input. Multiple libraries.sublibraries may be specified, in which case they are concatenated beginning with the initially specified library.sublibrary name. This parameter applies to libraries ISPPLIB, ISPMLIB, ISPSLIB, ISPTLIB, ISPPROF or ISPP~1OD, and to the libname '''-:'. A maximum of 15 libraries.sub1ibraries may be specified. af- name-outp ut Specifies the name of a VSE/AF library.sublibrary used for output. This parameter applies to libraries ISPPROF, ISPPMOD, ISPTABL, ISPFILE, user defined libraries, and to the libname '*' iccf- n umber-ft-outp ut Specifies the number of an ICCF library number to be used for file tailoring output. This parameter applies to library ISPFILE and to user defined libraries. vse- name-ft-outp ut Specifies the filename of a VSE sequential file to be used for file tailoring output. This parameter applies to library ISPFILE only. Figure 18 shows the ISPDEF statement parameters and the ISPF libraries that may be specified in each. Figure 19 shows relationships between Chapter 4. Library Requirements 81 defaults specified by the '*' libname statement and unspecified ISPF libraries. libname SEARCH TO ICCFLIB FILENA~lE ISPPLIB ~1 R NA NA NA ISPMLIB M R NA NA NA ISPSLIB M R NA NA NA ISPTLIB M R NA NA NA ISPPROF M R1 R1 NA NA ISPPMOD 0 R1 R1 NA NA ISPTABL 0 NA R NA NA ISPFILE 0 NA R2 R2 R2 0 NA R2 R2 NA 0 R3 R3 NA NA user defined .,~ Figure 18. ISPDEF Statement Parameters and Libraries to Which They Apply Meanings for the codes used in Figure 18 are: 82 M - Mandatory ISPF library NA - Not applicable o Optional ISPF library R Required parameter Rl - The 1ibrary.sub1ibrary specified for ISPPROF and ISPPMOD is used for input and output operations. A single library.sublibrary must be specified using either the SEARCH or TO parameters. The same library.sublibrary must be indicated if both the SEARCH and TO parameters are specified. ISPF Dialog Management Services R2 - A single VSE/AF library.sublibrary or ICCF library or VSE sequential data set filename must be specified. For a user defined library used by table services, only the TO parameter is valid. R3 - The libname '*' specifies the default input library chain and/or default output library. The SEARCH parameter specifies one or more libraries.sublibraries as the default ISPF input library chain. The TO parameter specifies one library.sublibrary as the default ISPF output library. Refer to Figure 19 for the relationship between the '*' libname statement and unspecified ISPF libraries. libname SOURCE OF DEFAULT LIBRARY.SUBLIBRARY SPECIFICATION ISPPLIB libraries.sublibraries specified by the SEARCH parameter ISPMLIB libraries.sublibraries specified by the SEARCH parameter ISPSLIB libraries.sublibraries specified by the SEARCH parameter ISPTLIB libraries.sublibraries specified by the SEARCH parameter ISPPROF ISPPMOD first library.sublibrary specified by the SEARCH parameter or library.sublibrary specified by the TO parameter. The same default library.sublibrary must result if both the SEARCH and TO defaults have been established. ISPTABL library.sublibrary specified by the TO parameter ISPFILE library.sublibrary specified by the TO parameter Figure 19. Relationship Between Defaults Specified by the '*' Libname Statement and Unspecified ISPF Libraries.Sublibraries Three examples of ISPDEF statements are given below. In example 1, all ISPF input libraries are defined by USERLIB.USER1 followed by the ISPF product library, and all ISPF output libraries are defined to USERLIB.USER1. Example 2 defines the same ISPF libraries as example 1, but uses the '*' libname. Example 3 explicitly specifies an ISPPROF definition. In this case, if ISPPROF were not explicitly specified, the default definition from the '*' ISPDEF statement would be in effect and would be invalid. The default is invalid because the first library in the SEARCH parameter is not the same as the library in the TO parameter. In this example, the Chapter 4. Library Requirements 83 optional ISPF library ISPPMOD will not be defined from the defaults established because the result also would be invalid. The name ISPF.DM, used in these examples, is the recommended name. Note: 1. ISPDEF ISPDEF ISPDEF ISPDEF ISPDEF ISPDEF ISPDEF ISPDEF ISPDEF ISPPLIB, SEARCH=(USERLIB.USERl, ISPF . Dt-I) ISPMLIB,SEARCH=(USERLIB.USERl,ISPF.DM) ISPSLIB,SEARCH=(USERLIB.USERl,ISPF.DM) ISPTLIB,SEARCH=(USERLIB.USERl,ISPF.DM) ISPPROF,SEARCH=USERLIB.USERl,TO=USERLIB.USERl ISPPMOD,SEARCH=USERLIB.USERl,TO=USERLIB.USERl ISPTABL,TO=USERLIB.USERI ISPFILE,TO=USERLIB.USERI USERDEF, ICCFLIB=4 2. ISPDEF ISPDEF *,SEARCH=(USERLIB.USERl,ISPF.DM),TO=USERLIB.USERl USERDEF,ICCFLIB=4 3. ISPDEF -l: ISPDEF ISPDEF , SEARCH=(USERLIB.USER2,USERLIB.USERl,ISPF.DM), TO=USERLIB.USERI ISPPROF SEARCH=USERLIB.USERl,TO=USERLIB.USERl USERDEF,ICCFLIB=4 Table and File Tailoring Libraries The following libraries are optional, and need be specified only when an application is to use table or file tailoring services. LIBNAME DESCRIPTION ISPTABL ISPFILE Table Output Library File Tailoring Output The table output library must be a VSE library.sublibrary. The ISPTABL definition may specify the same library.sublibrary as the table input library or a different library.sublibrary. The library.sublibraries must be the same if the updated version of a table is to be reprocessed by the same dialog that updated it. File tailoring output may be written to a temporary sequential data set defined under the filename "ISPCTLn". The filename of the temporary data set is available in system variable ZTEMPF. (When accessing this data set use RECFM of fixed, BLKSIZE of 800, and LRECL of 80.) If the temporary data set is not used, file tailoring output may be written to a VSE library.sublibrary, an ICeF library, or a sequential data set as specified by the ISPDEF statement for ISPFILE. (When accessing this data set use fixed RECFM, BLKSIZE of 800, and LRECL of 80.) 84 ISPF Dialog Management Services VSE/AF 2.1: USE OF LIBRARIES The following steps describe the order in which VSE/AF libraries.sublibraries are set up for use in development and test of a dialog: 1. Define an AF library.sublibrary to contain the panels, message, skeletons, and tables associated with the dialog. 2. Create an ICCF procedure that contains the necessary ISPDEF statements to define the libraries to be used during ISPF execution. The sample ISPSTART ICCF procedure located in the ICCF common library should be used as a guide. (This procedure is placed in the ICCF common library during ISPF installation.) 3. Create the panels, messages, and skeletons by editing directly into the application library.sublibrary (defined in step 1). 4. Create the dialog functions and make them available in libraries.sublibraries accessible to ISPF. Each dialog function must be link edited and the subroutine ISPLINK must be included (explicitly or by autolink) in the phase. 5. Invoke the application. To do this, modify the ISPSTART command in the ICCF procedure created in step 2. The ISPSTART command should invoke the application using the appropriate panel or pgm parameter. This ICCF procedure may be made available to application users as a means of invoking the application. Alternatives are to invoke the application from the master menu or other menu. Chapter 4. Library Requirements 85 86 ISPF Dialog Management Services CHAPTER 5. INVOCATION AND TERMINATION This chapter describes how to invoke ISPF in both interactive and batch environments, and how to terminate ISPF processing. MVS AND VM/SP: INVOCATION OF ISPF In MVS and VM/SP, ISPF is invoked using the ISPSTART command. ISPSTART command may be issued: The • By the user at a terminal • From a command procedure (CLIST or EXEC 2) • During LOGON (from a TSO LOGON procedure or CMS PROFILE EXEC) When PDF is installed, the ISPF command may be used to invoke either ISPF/PDF or other dialogs if a PANEL, CMD, or PGM keyword is specified. The ISPF command provides compatibility with the SPF Program Product. VSE: INVOCATION OF ISPF In VSE, ISPF is invoked by an ICCF procedure. The procedure may have any name acceptable to ICCF, however, in this publication, ISPSTART is the name assumed. The procedure to invoke ISPF consists of the following kinds of statements: &&OPTIONS 0010001 /INPUT &/LOAD ISPSTART &/OPTION GETVIS P-22 TIME=32767,65535 &/FILE ISPLOG,DISP=DELETE,SPACE=2 &/FILE ISPLIST,DISP=DELETE,SPACE=2 &/FILE ISPCTL1,DISP=DELETE,SPACE=2 &/FILE ISPCTL2,DISP=DELETE,SPACE=2 ISPSTART &&PARA~l1 &&PARAM2 &&PARAM3 &&PARAM4 I SPDEF ..,~, SEARCH= ( ... , I SPFDMS) , TO= .. . (for VSE/AF 1.3.5) ISPDEF ..~, SEARCH=( ... , ISPF . DM) , TO= .. . (for VSE/AF 2.1) /END /PEND /RUN The /LOAD job entry statement invokes ISPF. The /OPTION job entry statement specifies a maximum GETVIS area size. The /FILE job entry statements define the log, list, and temporary data sets to be used during ISPF processing. Chapter 5. Invocation and Termination 87 ISPDEF command processing is described in Chapter 4, "Library Requirements. " \ \ II ~7NT;X '/~ -~-,,'~-'"~ £:-x (;C I ~ ~/1A\/~, <'1-1 This section describes syntax for the command that invokes ISPF. In HVS and VH/SP, this command is the ISPSTART command. In VSE, the command invokes an ICeF procedure that, in turn, invokes ISPF. Generally, this IceF procedure is named ISPSTART. Other names may be used; however, the name ISPSTART is used in this publication. Notation conventions are described in the Preface. In ~lVS and below. V~l/SP, the command and its parameters are coded as shown In VSE, command parameters are coded as shown below, but with the parameter string enclosed in apostrophes when any parameter in the string includes parenthesis, as in the following example~ ISPSTART 'PANEL(USER) NEWAPPL(ZZZZ), The resulting ISPSTART command statement, after ICCF substitution, is: ISPSTART PANEL(USER) NEWAPPL(ZZZZ) I5pvc5 88 ISPF Dialog Hanagement Services The format for ISPSTART is: ISPSTART PANEL(panel-name) [OPT(option)] CMD(command) PGM(program-name) [PARN(parameters)] [LANG(PLIIPLl [,storage-area])] [LANG(COBOL) ] [NEWAPPL[(application-id)]] [TESTITESTXITRACEITRACEX] panel-name Specifies the name of the first menu (i.e., the primary option m"enu) to be displayed. option Specifies an initial option, which must be a valid option on the first menu. This causes direct entry to that option without displaying the menu. (The menu is processed in nondisplay mode, as though the end user had entered the option.) command In MVS and VMjSP, specifies a command procedure (CLIST or EXEC 2) that is to be invoked as the first dialog function. Command parameters may be included within the parentheses. These parameters are passed to the command procedure. A percent sign (%) may precede the CLIST or EXEC 2 name to improve performance. In VSE, this parameter is not used because ICCF procedures may not be used for writing dialog functions. program-name Specifies the name of a program that is to be invoked as the first dialog function. If the program is coded in PLjI, it must be a MAIN procedure. Note: Dialog developers should avoid using the ISP and ISR prefixes (the ISPF and PDF component codes) in naming dialog functions. Special linkage conventions, intended only for internal ISPF use, are used to invoke programs named "ISPxxxxx" and "ISRxxxxx". In MVS, this parameter must specify the name of a load module that is accessible by use of the LINK macro. Chapter 5. Invocation and Termination 89 In VHjSP, this parameter may specify the name of a TEXT file, a member of a TXTLIB,~a member of a LOADLIB. See -rr-Library Setup VHjSP Environment" for more information. (~u. parameters p CaB) Specifies input parameters to be passed to the program. program should not attempt to modify these parameters. The The parameters within the parentheses are passed as a single character s-tring, preceded by a halfword containing the length of the character string, in binary. (The length value does not include itself.) This convention is the same as that for passing parameters by use of the PARM= keyword on a JCL EXEC statement. Parameters on the ISPSTART command to be passed to a PLjI program are coded in the standard way: XXX: PROC (PAR~1) OPTIONS (MAIN) ; DCL PARM CHAR (nnn) VAR; If the value of the PARM field is to be used as an ISPF dialog variable, it must be assigned to a fixed character string because the VDEFINE service cannot handle varying length PLjI strings. In MVS and VHjSP, the first character of the PARM field must be a slash ('j') since PLjI assumes that any value prior to the slash is a run-time option. LANG(PLI) or LANG(PL 1) In VSE, specifies that the function being invoked is written in the PLjI language. In MVS and VMjSP, this keyword is not used. storage-area In VSE, for programs written in PLjI, specifies the number of bytes of dynamic storage to be made available to the function being invoked. The default storage size is 2816 bytes. Generally, the amount of storage required for a PL/I program can be determined by using the storage option to compile the program and then adding 2192 to the DSA sizes specified on the compile listing. However, the storage requirement will vary considerably depending on the compiler options specified, i.e. "FLOW" will use slightly more storage but "COUNT" will substantially increase the storage requirement. In MVS and VMjSP, this parameter is not used. LANG(COBOL) In VSE, specifies that the function being invoked is written in the COBOL language. In MVS and VMjSP, this keyword is not used. 90 ISPF Dialog Management Services NEWAPPL(application-id) Specifies a 1- to 4-character code that identifies the application that is being invoked. The code is to be prefixed to the user and edit profile names or the command table associated with the application, as follows: User Profile Edit Profile Command Table xxxxPROF xxxxEDIT xxxxCHDS where xxxx is the application-id. If the application-id is omitted, or if the NEWAPPL keyword is omitted, the application-id defaults to ISP. TEST Specifies that ISPF is to be operated in TEST mode, described below. TESTX Specifies that ISPF is to be operated in extended TEST mode, described below. TRACE Specifies that ISPF is to be operated in TRACE mode, described below. TRACEX Specifies that ISPF is to be operated in extended TRACE mode, ~~ 't . T~~~eturn .__code from ISPST~~T is -always ~,.,) ---..---~.- ~--"-.- ~-... •.... Test Modes The testing modes of ISPF provide special processing actions to help in the debugging of a dialog. If PDF is installed, consider using the dialog test option of that facility (see ISPFjPDF Reference), instead of the testing modes described here. Anyone of four mutually exclusive keyword parameters may be specified on the ISPSTART command to control the operational mode when testing a dialog: • TEST - Test mode • TESTX - Extended test mode • TRACE - Trace mode • TRACEX - Extended trace mode Chapter 5. Invocation and Termination 91 In TEST mode, ISPF operates differently from normal mode in the following ways: 1. Panel and message definitions are refetched from the panel and message libraries whenever a panel name or message id is specified in an ISPF service. (In normal mode, the most recently accessed panel definitions are retained in virtual storage and, under MVS, a table of TTRs returned from BLDL macros is kept in virtual storage for frequently used message, panel, skeleton, and table members. If you have modified the panel or message library, use of TEST mode will ensure that the latest v2rsion of each panel or message is accessed during a test run. Under MVS, a new extent on a DASD may be caused when using an editor to modify a panel, message, or skeleton or by link editing a module. When a new extent is allocated, the modification can be accessed only by first terminating and then reinvoking ISPF. 2. Tutorial panels are displayed with current panel name, previous panel name, and previous message id on the bottom line of the display screen. This will assist you in identifying the position of the panel in the tutorial hierarchy. 3. Screen printouts (obtained through use of the PRINT or PRINT-HI commands) include line numbers, current panel name, and message ida 4. If a dialog function is operating in the CANCEL error mode (the default), the panel that is displayed on an error allows you to force the dialog to continue, in spite of the error. Results from that point on, however, are unpredictable and may result in an ABEND. S. Other than the situation described in item 4, any ISPF-detected error, ABEND, or program interrupt forces an ABEND of ISPF. The user may also force an ABEND by entering ABEND or CRASH in the command line of any panel. 6. For MVS/TSO: The PAl key causes an immediate exit from ISPF. If an ISPF subtask ABENDs, a dump may be taken by pressing ENTER after the ABEND message appears, provided that a SYSUDUMP, SYSMDUMP, or SYSABEND data set has been allocated. 7. For VM/CMS: An ADSTOP set within ISPF code is not lost, even if ISPF invokes a eMS command that executes in the user area. If ISPF is operating in DCSS, the page containing the ADSTOP is marked non-shareable, and is copied automatically to the user area. 92 ISPF Dialog Management Services In TESTX (extended test) mode, ISPF operates the same as in TEST mode except that all messages written to the ISPF log file are also displayed at the terminal. Trace Modes In TRACE mode, ISPF operates the same as it does in TEST mode, with the following exception. In MVS, VM/SP, and ISPF/PDF option 7.6, a message is written to the ISPF log file whenever any ISPF service is invoked (even if CONTROL ERRORS RETURN has been issued) and whenever any error is detected by an ISPF service. Note that only CLIST and EXEC 2 service requests, and service requests issued under PDF option 7.6 are recorded; program module requests for service are not recorded in the log file. In TRACEX (extended trace) mode, ISPF operates the same as it does in TRACE mode except that all messages written to the ISPF log file (including the trace messages) are also displayed at the terminal. DIALOG INITIATION AND TERMINATION Execution of a dialog is initiated by the SELECT service. Selection keywords, passed to the SELECT service, specify whether the dialog begins with the display of a menu (PANEL keyword) or the execution of a dialog function (CMD or PGM keyword). The dialog terminates when the selected menu or function terminates. The action at termination depends upon how the SELECT service was originally invoked. SELECT Service Invocation The SELECT service may be invoked in the following ways: • During initialization, the SELECT service is automatically invoked by the dialog manager to initiate the first dialog. The selection keywords originally specified on the ISPSTART command are passed to the SELECT service. For dialogs invoked by ISPSTART, ISPF error processing is not put into effect until ISPF initialization is completed. • If the user enters split screen mode, the dialog manager again invokes the SELECT service and again passes the selection keywords from the ISPSTART command. This causes the first dialog (specified in the ISPSTART command) to be initiated on the second logical screen. In VSE, user dialog functions are restricted to one logical screen. That is, a user dialog function may be executed in either logical screen, but may not be executed in both logical screens Chapter 5. Invocation and Termination 93 concurrently. functions. This restriction does not apply to ISPF or ISPF/PDF • The SELECT selects an this case, definition service recursively invokes itself whenever the user option from a menu displayed by the SELECT service. In the selection keywords are specified in the panel for the menu. • The SELECT service may be invoked from a dialog function. In this case, the selection keywords are passed as calling sequence parameters. The action taken at dialog termination is as follows: • If the SELECT service was invoked from a dialog function, control is returned to that function and the function continues execution. • If the SELECT service was invoked from a menu, that menu is redisplayed (including execution of the INIT section in the panel definition) . • If the user is terminating split screen mode, the original dialog is ended on that logical screen and the other logical screen expands to the full size of the physical display screen. • If the user is terminating ISPF (which can only be done in single screen mode), either the ISPF termination panel is displayed or the user's defaults for list/log processing are employed (as specified using the ISPF PARMS option). The termination panel is displayed if: ----~--.--""j~..,..~'" • The dialog started with the display of a menu and the user entered the END command on that menu. • The dialog started with the execution of a function and the function ended with a return code of o. The list/~og • The dialog started with the display of a menu and the user entered the RETURN command or selected the "exit" option (see "Special Panel Requirements" in Chapter 7 for discussion of the EXIT keyword). • The dialog started with the execution of a function and the function ended with a return code of 4 or higher. (A return code higher than 4 will cause an error message to be displayed.) defaults are used if: If the user has not specified valid list/log defaults, the ISPF termination panel is displayed in all cases. ,~~~"")l~~~M.iC~-&V:.JMIil{.'j;"..r.,,;r,.:;.;w;,(,.I..~';' 94 \I$j ISPF Dialog Management Services VSE: Dialog Abend Intercept In VSE, the STXIT AB facilities of VSE are available to dialogs. Each function of a dialog - invoked using SELECT PGM(program-name) - may issue the STXIT AB macro to establish its own STXIT AB exit. ISPF manages dialog STXIT AB exit information so that each function of the dialog operates independently. If an abnormal condition is detected, each dialog STXIT AB exit routine that is active is given control prior to ISPF terminating the currently running logical screen. This permits data needed for debugging to be saved before the dialog is terminated. Because ISPF and user dialogs operate in the same partition, an error that causes a dialog to abend may also destroy ISPF's ability to process dialog service requests. Therefore, requests for dialog services included within an STXIT AB exit may themselves cause an abend and should be avoided or, at least, not specified until all other dialog recovery processing has been specified. Note: When a dialog is cancelled by the system operator or because execution time expires, dialog STXITs do not receive control. BATCH EXECUTION OF ISPF SERVICES When initiated in a batch environment, ISPF services execute as a command in the background. Only services that are non-interactive execute successfully. Any services that cause a full screen write result in an error message. Background invocations are generally used to invoke ISPF table and file tailoring services; however, access to other non-interactive dialog services are also available. TSO Batch Environment TSO provides facilities for executing command processors in the batch environment. The JCL stream provides for data sets to be pre-allocated prior to the invocation of any command. The Terminal Monitor Program (TMP) is invoked by use of the EXEC statement, and establishes the necessary control blocks for the TSO environment. The command input stream is accessed from the SYSTSIN DD statement and all terminal line I/O outputs issued by the TSO I/O service routines are directed to the SYSTSPRT DD statement definition. The ISPF libraries are allocated using DD statements. The panels, messages, skeleton, table, and profile data sets must be preallocated. While not required, it is recommended that the log data set also be preallocated. If a log data set is dynamically allocated, it is always kept at ISPF termination. The ISPF command is placed in the input stream with the CMD or PGM keywords that name the dialog to be invoked. All dialog services are permitted except for BROWSE, DISPLAY, EDI~, SELECT PANEL, SETMSG, and TBDISPL. Chapter 5. Invocation and Termination 95 A userid is selected for the background job, as follows: 1. If available, the userid supplied during RACF authorization checking is used. 2. If a userid is not available from RACF, the prefix supplied with the TSO PROFILE command is used. 3. If neither of the above occurs, the default is "BATCH." Sample Batch Job Figure 20 shows a sample batch job. This job invokes the MVS/TSO Terminal Monitor Program (TMP) which, in MVS, establishes the environment necessary to attach command processors. The ISPSTART command is specified in the TSO background input stream (SYSTSIN) with the name of a CLIST (TBUPDATE) that contains the ISPF services to be executed. Error Processing ISPF terminates with an error message if a required library is not available. The ISPSTART command must also be invoked naming either a CLIST or PGM function. If no dialog is specified, a message is issued. These messages are directed to the file defined by the SYSTSPRT DD statement. 96 ISPF Dialog Management Services IIUSERAA JOB (AA04,BIN1,OOOOOO), 'I. M. USERAA', II CLASS=L,MSGCLASS=A,NOTIFY=USERAA,MSGLEVEL=(l,l) 11*-------------------------------------------------------*1 I I~': ~': I EXECUTE I SPF COMMAND IN THE BACKGROUND 11*-------------------------------------------------------*1 IIISPFBACK EXEC PGM=IKJEFT01,DYNAMNBR=25,REGION=1024K I I~': I I~':- - - ALLOCATE PROFILE, PANELS, MSGS, PROCS, AND LOG IIISPPROF DD DSN=USERAA.ISPF.PROFILE,DISP=OLD IIISPPLIB IIISPMLIB IIISPSLIB IIISPLOG DD DD DD DD DSN=ISP.V1R1MO.ISPPLIB,DISP=SHR DSN=ISP.V1R1MO.ISPMLIB,DISP=SHR DSN=ISP.V1R1MO.ISPSLIB,DISP=SHR DSN=USERAA.ISPF.LOG,DISP=SHR I I~': 11*- - - ALLOCATE TABLE DATA SETS - - - - - - - - - - - - *1 IIISPTLIB IIISPTABL DD DSN=ISP.V1R1MO.ISPTLIB,DISP=SHR DD DSN=USERAA.ISPF.TABLES,DISP=SHR I I~': 11*- - - ALLOCATE DIALOG PROGRAM AND CLIST LIBRARIES- - - ~': I IIISPLLIB IISYSPROC DD DSN=USERAA.ISPF.LOAD,DISP=SHR DD DSN=USERAA.ISPF.CLIST,DISP=SHR I I~': 11*- - - ALLOCATE TSO BACKGROUND OUTPUT AND INPUT DS- - - *1 IISYSTSPRT DD DSNAME=USERAA.ISPF.ISPFPRNT,DISP=SHR I I SYSTS IN DD ,,: PROFILE PREFIX(USERAA) 1* ESTABLISH PREFIX ISPSTART CMD(%TBUPDATE) 1* INVOKE CLIST DIALOG I'': Figure 20. MVS Batch Job Errors encountered during background dialog execution are handled in the same manner as errors encountered during foreground execution. Messages normally written to the ISPF log data set for severe errors are also written to the SYSTSPRT file. This is useful when executing a CLIST dialog because any error messages are listed immediately after the ISPEXEC service in which the error occurred. If a function encounters an abend, the entire ISPF batch job stream terminates. A message is issued to the SYSTSPRT file indicating the type of abend. Chapter 5. Invocation and Termination 97 VM/SP Batch Environment A disconnected virtual machine or a CMS batch machine can be used to execute non-interactive dialogs. The command inputs may be specified via the CMS Console stack or by using the CMS PUNCH command to provide input to the batch machine reader. In either case, the ISPF libraries must be specified using FILEDEF commands for the panels, messages, skeleton, tables, and profile maclibs. All dialog services may be invoked except BROWSE, DISPLAY, EDIT, SELECT PANEL, SETMSG, and TBDISPL. Sample Batch Job Figure 21 shows a sample batch job. This job provides the links and accesses needed by the batch machine to invoke ISPF with the correct libraries. This EXEC also sends any list and log files back to the originator. The profile tables could also be sent. Error Processing ISPF terminates with an error message if a required library is not available. The ISPSTART command must also be invoked naming either an EXEC or a PGM function. If no dialog is specified, a message is issued. These messages are directed to the console log. Errors encountered during background execution are handled in the same manner as errors encountered during normal execution. Messages normally written to the ISPF log file for severe errors are also written to the eMS Console Log. 98 ISPF Dialog Management Services *",( *BUILD * * *THE* *BATCH * * *JOB* *CARDS ** ************* ** ** ***** *************** *********** CP SPOOL PUNCH CLASS A NOHOLD CONT TO BATCH &PUNCH 1"''( &PUNCH IJOB USERAA AA04 BUPDATE ,,'~ KEEP TRACK OF BATCH EXECUTION OF THIS JOB FOR USER ,,'~ MAKE SURE SYSTEM LIBRARY DISK IS AVAILABLE FOR BATCH * THE SYSTEM DISK HAS ~STRIBUTED ISPF LIBRARIES &PUNCH CP LINK MAINT 19E 19E RR ~~~ &PUNCH ACC 19E Y ~ . .'~ HAVE BATCH LINK TO USER DISKS AS REQUIRED &PUNCH CP LINK USERAA 191 291 RR USERAAR &PUNCH ACC 291 B * SET UP FILEDEFS TO ACCESS LIBRARIES &PUNCH FILEDEF ISPPLIB DISK ISPPLIB MACLIB * (PERM &PUNCH FILEDEF ISPMLIB DISK ISP~lLIB MACLIB . .'~ (PERM &PUNCH FILEDEF ISPSLIB DISK SKELS MACLIB * (PERM CONCAT &PUNCH FILEDEF ISPSLIB DISK ISPSLIB MACLIB * (PERM CONCAT &PUNCH FILEDEF ISPTLIB DISK TABLES MACLIB * (PERM CONCAT &PUNCH FILEDEF ISPTLIB DISK PROFLIB MACLIB . .'( (PERM CONCAT &PUNCH FILEDEF ISPTLIB DISK ISPTLIB MACLIB * (PERM CONCAT &PUNCH FILEDEF ISPPROF DISK PROFILE ~lACLIB A (PERM ,,'~ INVOKE THE DIALOG ~lANAGER PASSING THE NAME OF THE COMMAND &PUNCH EXEC ISPSTART CMD( BUPDATE ) . .'( CLEANUP &PUNCH CP SP PUN TO USERAA &PUNCH CP SP CONS CLOSE STOP TO USERAA . .': SEND BACK LIST AND LOG FILES &PUNCH DISK DUMP SPFLOG LISTING A &PUNCH DISK DUMP SPFLIST LISTING A &PUNCH CP CLOSE E &PUNCH CP SPOOL CONSOLE STOP CLOSE &PUNCH 1"'( CP SPOOL PUNCH NOCONT CLOSE Figure 21. VI-liSP Batch Job Chapter 5. Invocation and Termination 99 VSE Batch Environment User program dialogs may be executed in a VSE batch environment. The sequential data sets required by ISPF are defined with DLBL/EXTENT/ASSGN JCL. The panel, message, skeleton, and table libraries are defined by ISPDEF control statements. The ISPSTART command specifies the dialog to be executed. The log data set, although not required for batch execution, should be specified. If the log data file is used, it is kept. It is available to be viewed by use of the ISPF/PDF BROWSE service, if ISPF/PDF is installed. Sample Batch Job Figure 22 shows a sample VSE/AF 1.3.5 batch job. Figure 23 on page 101 shows a sample VSE/AF 2.1 batch job. The ISPSTART command is specified in the VSE background input stream (SYSIN) with the parameter PGM(DIALOG). This program contains the ISPF service requests to be performed. ~': $$ JOB JNM=BATCH,CLASS=O,DISP=D II JOB BATCH ~'r DEFINE THE LOG AND TEMPORARY CONTROL DATA SETS II DLBL ISPLOG, 'BATCH.LOG' // EXTENT SYS001,SERNUM,1,1,3000,10 II DLBL ISPCTL1, 'BATCH.TEMP.CONTROL' // EXTENT SYS001,SERNUM,1,1,4000,10 II ASSGN SYS001,160 /1 LIBDEF CL,SEARCH=ISPFDMC /1 EXEC ISPSTART, SIZE=20K * SPECIFY DIALOG TO BE EXECUTED ISPSTART PGM(DIALOG) * DEFINE VSE LIBRARIES ISPDEF *,SEARCH=(XYZLIB,ISPFDMS) I~'r 1& ~'r $$ EOJ Figure 22. 100 VSE/AF 1.3.5 Batch Job ISPF Dialog Management Services ,.. $$ JOB JNH=BATCH,CLASS=O,DISP=D II JOB BATCH .... DEFINE THE LOG AND TEMPORARY CONTROL DATA SETS II DLBL ISPLOG, 'BATCH.LOG' II EXTENT SYSOOl,SERNUM,I,I,3000,10 II DLBL ISPCTLl,'BATCH.TEMP.CONTROL' II EXTENT SYSOOl,SERNUM,I,I,4000,10 II ASSGN SYSOOl,160 II LIBDEF PHASE,SEARCH=ISPF.DM II EXEC ISPSTART, SIZE=20K ,.. SPECIFY DIALOG TO BE EXECUTED ISPSTART PGM(DIALOG) * SET UP ISPDEF TO ACCESS VSE LIBRARIES/SUBLIBRARIES ISPDEF *,SEARCH=(XYZLIB.XYZSUB,ISPF.DM) I'" 1& ,': $$ EOJ Figure 23. VSE/AF 2.1 Batch Job Error Processing ISPF terminates with an error message if a required library is not available. In batch mode, the ISPSTART command must specify invocation of a program function - PGM(program-name) - and if one is not specified, ISPF is not invoked and a message, issued on SYSLOG, states that display services are not available in a batch environment. Any errors, including severe errors, that occur during batch mode execution are handled in the same way as errors encountered during IeeF execution. In both instances, severe error messages are written to SYSLOG. If a function abends, an IDUMP is taken and the ISPF batch job is terminated. Chapter 5. Invocation and Termination 101 102 ISPF Dialog Management Services CHAPTER 6. DESCRIPTION OF SERVICES This chapter contains a description of syntax conventions and return codes for the dialog services, followed by a detailed description of each service. The service descriptions are arranged in alphabetic order for ease of reference. Appendix E, "Summary of ISPF Syntax," contains a quick reference summary of dialog services. (See ISPF Dialog Management Services Examples for examples of invoking ISPF services in application dialogs.) Notation conventions are described in the Preface. INVOCATION OF SERVICES Each service description shows the format for command invocation and for call invocation from a program module. The command invocation format is used from a CLIST, EXEC or, option 7.6 of PDF (the dialog test facility). In VSE, the command invocation format may be used only while in option 7.6 of PDF. Call invocation formats are shmvn in PL/I syntax. For example, ";" ends statements in the formats described. This is a PL/I convention, but syntax should be appropriate to the language being used. Included in each service description is an example of its use in the command procedure forma~the PL/I call format. Additional examples, including COBOL and FORT~call formats, may be found in ISPF Dialog Management Services Examples. If ISPF/PDF is installed, consider using its model facilities (under edit) when coding requests for ISPF services (see ISPF/PDF Reference for a description of these facilities). Command Invocation ISPF services are invoked using the ISPEXEC command in a command procedure (CLIST or EXEC) or while operating under option 7.6 of ISPF/PDF. The gen~ral ISPEXEC The format for command invocation is: service-name parameterl parameter2 serVlce-name It is alphabetic, up to eight characters long. " . Chapter 6. Description of Services 103 For some services, "parameterl" is a positional parameter and is required. Other parameters are keyword parameters. They may take either of two forms: keyword keyword (value) Some keyword parameters are required and others are optional, as indicated for each service. Keyword parameters may be coded in any order. If conflicting keywords are coded, the last keyword is used. In MVS and VM/SP, CLIST or EXEC variables consisting of a name preceded by an ampersand (&), may be used anywhere within the statement as the service name or as a parameter. Each variable is replaced with its current value prior to execution of the ISPEXEC command. Notes: 1. In MVS, TSO CLIST attention exits are not recognized by ISPF and, if used, may cause unpredictable results. 2. In VM/SP, EXEC variables appearing within parentheses must be followed by a blank, preceding the closing parenthesis. For example: ISPEXEC DISPLAY PANEL(&PNAME) Some ISPF services allow the names of dialog variables to be passed as parameters. (Variable names are eight characters or less). These names should not be preceded with an ampersand unless substitution is desired; for example: ISPEXEC ISPEXEC VGET XYZ VGET ~V~ w~\l Jl-\,6siitde In the first example, XYZ is the name of the dialog variable to be passed. In the second example, variable VNAME contains the name of the dialog variable to be passed. Some services accept a list of variable names, passed as a single parameter. For example, the syntax for the VGET service is: ISPEXEC VGET name-list [ASISISHAREDIPROFILE] In this case, "name-list" is a positional parameter. It may consist of a list of one or more (up to 254) dialog variable names, each name separated by commas or blanks. If the name-list consists of more than one name, it must be enclosed in parentheses. Parentheses may be omitted if a single name constitutes the list; for example: ISPEXEC ISPEXEC ISPEXEC ISPEXEC 104 VGET VGET VGET VGET (AAA,BBB,CCC) (LNAME FNAME I) (XYZ) XYZ ISPF Dialog Management Services The last two lines of the example (with and without the parentheses) are equivalent. In other cases, a list of variable names may be passed as a keyword parameter. For example, the syntax for the TBPUT service is: ISPEXEC TBPUT table-name [SAVE(name-list)] where the parentheses are required by the "keyword(value)" syntax. Again, the names may be separated by commas or blanks. Examples: ISPEXEC ISPEXEC TBPUT TBPUT TBLA SAVE(LNAHE FNAME I) XTABLE SAVE (XYZ) VM/SP: Using the &PRESUME Statement In VH/SP, the following statement may be included in an EXEC 2 procedure prior to issuing the first ISPEXEC command: &PRESUHE &SUBCOHHAND ISPEXEC This statement allows the omission of requests for ISPF services. "&SUBCOM~1AND" and "ISPEXEC" in A subsequent &PRESUME statement with no operands may be used to cancel the subcommand environment for the purpose of issuing other VH/SP commands. If &PRESUME &SUBCOMHAND ISPEXEC statement is not included, every request for ISPF services must be preceded by &SUBCOMMAND ISPEXEC, as follows: &TRACE OFF &SUBCOMMAND ISPEXEC DISPLAY PANEL(ABC) &TRACE specifies the use of the EXEC 2 language. This last mentioned form is used in this publication, but the '&SUBCOMHAND' is not shown with the service. Call Invocation ISPF services are invoked from programs, except FORTRAN programs, by calling a subroutine named ISPLINK. FORTRAN programs must invoke this subroutine using another name, ISPLNK, because, in FORTRAN, the maximum length of a module name is six characters. Note: Only a single task level is permitted. In MVS, a dialog function may attach a lower-level subtask, but the subtask may not invoke ISPF services. User dialogs may not use storage subpools 33 through 48, because these pools are reserved for use by ISPF. Chapter 6. Description of Services 105 Examp'les of service requests in programs (COBOL, FORTRAN, and PL/I) may be found in ISPF Dialog Management Services Examples. The general format for invoking ISPF services from functions, other than FORTRAN, is: CALL ISPLINK (service-name, parameter1, parameter2 ... ) The parameters in call statements are all positional; they must be coded in the order described for each service. Optional parameters may be omitted in a right-to-Ieft dropout sequence. To obtain the default value for an optional parameter, code the parameter as one or more blanks. This has the same effect as omitting the parameter and is used when parameters are to be dropped in other than a right-to-Ieft sequence. The general format for invoking ISPF services from FORTRAN functions is: ISPLNK (service-name, parameter1, parameter2 ... ) a FORTRAN integer variable in which the return code from the ISPF service is available. ,\ 1 astrc 1S any va I'1d FORTRAN name. I) • For functions written in FORTRAN,' arguments may be passed as FORTRAN variables or literals. Standard register conventions are used. across the call. Registers 2-14 are preserved Note: The last parameter in the calling sequence must be indicated with a high-order "1" bit in the last entry of the address list. This high-order bit is automatically generated by PL/I, COBOL, and FORTRAN call statements. It requires use of the VL keyword in Assembler call statements. Call statements are shown in PL/I syntax. Service names and keyword values are shown as literals, enclosed in apostrophes C'); for example: CALL ISPLINK ('TBOPEN', table-name, 'NOWRITE'); where "table-name" must be supplied either as a literal or as a variable containing the table name. 106 ISPF Dialog Management Services In PL/I programs, the following declare statements should be included: DECLARE ISPLINK ENTRY EXTERNAL OPTIONS ( ASM, INTER, /,;"NA~1E OF ENTRY POINT'" / /*EXTERNAL ROUTINE*/ /*NEEDED OPTIONS*/ /*DO NOT USE PL/I DOPE VECTORS*/ /';', INTERRUPTS,;', / RETCODE); /*EXPECT A RETURN CODE*/ Note: In VSE, RETCODE should not be specified. Some languages, such as COBOL, do not allow literals within a call statement. Use of literals is never required; all parameters may be specified as variables, as in the following examples: PL/I example: DECLARE "SERVICE CHAR(8) INIT('TBOPEN '), r,cr£B~E? CHAR(8) INITC'XTABLE '), ('-. ~DN':)~,(8) INIT( 'NOWRITE '); '-'"-.:::~~;:;:~::'''':,,- CALL .-~-"-.--..."'~'""" ..''', " ISPLINK ,(SERVICE, TABLE, OPTION); COBOL example: WORKING-STORAGE SECTION. 77 SERVIS PICTURE A(8) VALUE 'TBOPEN 77 TABL PICTURE A(8) VALUE 'XTABLE 77 OPTSHUN PICTURE A(8) VALUE 'NOWRITE ' PROCEDURE DIVISION. CALL 'ISPLINK' USING SERVIS TABL OPTSHUN. FORTRAN example: INTEGER DATA DATA DATA SERVICE(2),TABLE(2),OPTION(2) SERVICE/'TBOP', 'EN '/ TABLE/'XTAB', 'LE '/ OPTION/'NOWR', 'ITE '/ LASTCC=ISPLNK(SERVICE ,TABLE ,OPTION) Chapter 6. Description of Services 107 For service calls in PL/I and COBOL parameter variables may be initialized using literals in assignment statements, as in the following examples: PL/I example: SERVICE='TBOPEN'; COBOL example: NOVE "TBOPEN" TO SERVICE. FORTRAN example: For FORTRAN service requests, previously defined constants must be used in assignment statements; for example: INTEGER DATA TBOPEN(2),SERVICE(2) TBOPEN/'TBOP', 'EN 'I SERVICE=TBOPEN Parameters The following types of parameters may appear in a calling sequence to ISPLINK or ISPLNK: • Service name or keyword: A left-justified character string that must be coded as shown in the description of the particular service. The string may be up to eight characters long. It need not be delimited by a trailing blank. • Single name: A left-justified character string. If the string is less than the maximum length for the particular parameter, it must have a trailing blank to delimit the end of the string. The maximum length for most names is eight characters. The exceptions are data set name, volume serial, and fileid (see the description of the EDIT and BROWSE services). • Numeric value: • Name list - string format:. A list of dialog variable names coded as a character string. Each name is one to eight characters. The string must start with a left parenthesis and end with a right parenthesis. Within the parentheses, the names may be separated with commas or blanks; for example: A fullword signed binary number. '(AAA BBB CCC)' When the list consists of a single name, the parentheses are not required, but a trailing blank is required if the name is less than eight characters in length. 108 ISPF Dialog Management Services • Name list - structure format:. A list of dialog variable names passed in a structure. Each name is one to eight characters. The structure must contain the following information in the following order: 1. Count - Full word binary integer containing the number of names in the list. 2. Reserved - Full word binary integer that must contain a value of either zero or eight. 3. List of names - Each element in the list must be an 8-byte character string. Within each element, the name of the variable must be left-justified with trailing blanks. RETURN CODES FROM SERVICES Return codes from services are grouped into three general categories: • Normal completion (code 0). • Exception condition (codes 4 and 8). Indicates a condition that is not necessarily an error, but that the dialog should be aware of. • Error condition (codes 12, 16, and 20). Indicates that the service did not complete, or only partially completed operation, due to errors. The action taken in the case of errors (return code 12 or higher) depends upon the error mode setting. There are two error modes: • CANCEL - displays and logs a message, then terminates the dialog and redisp1ays the primary option menu. • RETURN - formats an error message (but does not display or log it), then returns to the function that invoked the service, pas~n;.:a~ 12 b the designated return code. ..P ~,.~~~_ . , The dialog may set the error mode by means of the/CONTROL servic:] The default mode is CANCEL. In CANCEL mode, genera11y~ontror is not returned to the function that invoked the service. Hence, the function generally will not see a return code of 12 or higher, and may not include logic to process these kinds of errors. However, this is not so for a return code of 20 from ISPLINK, when it is caused by an invalid ISPF environment. In this case, because ISPF is not capable of displaying an error panel (or any panel), control is returned to the dialog, even though the return code is 20. In RETURN mode, control is returned to the function that invoked the service. That function must then have logic to handle return codes of 12 or higher. Chapter 6. Description of Services 109 The RETURN mode applies only to the function that set it with the CONTROL service. If a lower-level function is invoked, it starts out in CANCEL mode. When a function returns to the higher-level function that invoked it, the mode in which the higher-level function was operating is resumed. In RETURN mode, an error message is formatted prior to returning to the function. The message id is contained in system variable ZERRMSG. The short and long message text (in which substitutable variables have been resolved) is contained in system variables ZERRSM and ZERRLl"1, respectively. ZERRMSG, ZERRSM, and ZERRLM are changed only when the return code from an ISPF service is greater than 8. If a corresponding help panel was specified in the message definition, the name of the help panel is contained in system variable ZERRHM. All of these system variables are in the shared variable pool. The function may display and/or log the message, if desired, simply by invoking the appropriate service with the message id contained in ZERRMSG. Examples: ISPEXEC ISPEXEC DISPLAY MSG(&ZERRMSG) LOG MSG(&ZERRMSG) The short and long message text and the name of the corresponding help panel are provided in the event that other action is desired. MVS and VM/SP: Return Codes from Services Each service returns a numeric code operation. For command invocation, variable LASTCC, or EXEC 2 variable code is returned in register 15 or, and O. indicating the results of the the code is returned in the CLIST RETCODE. For call invocation, the in FORTRAN programs, in registers 15 Programs coded in FORTRAN may examine the return code by using an integer variable, such as lastrc in the following example: lastrc = ISPLNK (service name, parameter1, parameter2 ... ) Programs coded in PL/I may examine the return code by using the PLIRETV built=in function. The following declare statements are required: DECLARE ISPLINK EXTERNAL ENTRY OPTIONS(ASM INTER RETCODE); DECLARE PLIRETV BUILTIN; Programs coded in COBOL may examine the return code by using the RETURN-CODE built-in variable. 110 ISPF Dialog Management Services VSE: Return Codes and Other Processing Considerations This section describes the use of return codes and other processing considerations when preparing a dialog, written in a high-level language, to run in VSE. FORTRAN Programs coded in FORTRAN may examine the return code by using an integer variable, such as lastrc in the following example: lastrc = ISPLNK (service name, parameter1, parameter2 ... ) Programs written at language level 77, must specify the compiler option SC for ISPLNK. This creates a parameter list acceptable to ISPF. ISPF does not permit the use of FORTRAN programs that use phase overlay structures. When invoking a PL/I program by use of the ISPSTART command or the SELECT service, the LANG keyword must be specified with either the PLI or PL1 parameter, e.g., LANG(PLI). A second parameter, storage-area, may also be specified to indicate the number of storage bytes to be made available to the PL/I program being invoked. (The default storage size is 2816 bytes. Generally, the amount of storage required for a PL/I program can be determined by compiling the program using the storage option and adding 2192 to the DSA sizes indicated on the compile listing. However, the storage requirement will vary considerably depending on the compiler options specified; for example: while "FLOW" requires a small amount of additional storage, "COUNT" adds substantially to required storage). PL/I programs may examine the return code from ISPF services by using the PLIRETV built-in function. The following declare statements are required for PL/I programs: DECLARE ISPLINK EXTERNAL ENTRY OPTIONS(ASM INTER); DECLARE PLIRETV BUILTIN; PL/I programs must be link edited with modules ISPPLI and IBMBPJRA. ISPPLI must be the first physical module in the phase and IBMBPJRA must be the second physical module. In addition, linkage editor control statements must include a statement defining the entry point of the program; for example: Chapter 6. Description of Services 111 PHASE EHPLFN, ~~ INCLUDE ISPPLI INCLUDE IBHBPJRA INCLUDE ENPLFN INCLUDE ISPLINK ENTRY EHPLFN ISPF does not permit the use of PL/I programs that use phase overlay structures. COBOL When invoking a COBOL program by use of either the ISPSTART command or the SELECT service, the LANG keyword must be specified with the COBOL parameter, e.g., LANG(COBOL). To examine the return code from ISPF services, COBOL programs must have a LINKAGE section with the return code field coded as the first item in the section; for example: LINKAGE SECTION 77 RETURN-CODE PIC 9(8) COHP-4. Although the name of the return code field can be any name valid in COBOL, it is recommended that RETURN-CODE be used to make the dialog compatible with MVS and VM/SP. Regardless of what name is used, the data description must appear exactly as shown. ISPF does not permit the use of COBOL programs that use phase overlay structures. SERVICES This section describes alphabetic order. For shown, followed by the used when invoking the 112 the ISPF services. The services are presented in each service, the command procedure format is PL/I call format. Following this, the parameters service are described. ISPF Dialog Management Services BROWSE - MVS or VM/SP: Display a Data Set or File The BROWSE service provides an interface to the ISPF/PDF browse program, bypassing display of the browse entry panel. (Use of BROWSE requires installation of ISPF/PDF.) The BROWSE service may not be issued by a PL/I main program that also uses subtasking. See ISPF/PDF Reference for a description of BROWSE. Syntax for use in an MVS environment: ISPEXEC BROWSE DATASET (dsname) [VOLUi'IE (serial)] [PASSWORD(pswd-value)] CALL ISPLINK ('BROWSE', dsname [,serial] [,pswd-va1ue] ); Syntax for use in a VM/SP environment: ISPEXEC CALL BROWSE FILE(fi1eid) [MENBER(member-name)] ISPLINK ('BROWSE', fileid [,member-name] ); dsname Specifies the name of the data set, in TSO syntax, to be browsed. A fully qualified data set name may be specified, enclosed in apostrophes. If the apostrophes are omitted, the TSO user prefix is automatically left-appended to the data set name. For partitioned data sets, a member name may be specified, enclosed in parentheses. If a member name is not specified, a member selection list is displayed. The maximum length of the dsname parameter is 56 characters. Chapter 6. Description of Services 113 serial Specifies the serial number of the volume on which the data set resides. If this parameter is omitted or coded as blank, the system catalog is searched for the data set name. The maximum length of this parameter is 6 characters. pswd-value Specifies the password if the data set has OS password protection. (The password is not specified for RACF or PCF protected data sets.) fileid Specifies the fileid, in CMS syntax, to be browsed. The fileid consists of a filename, filetype, and (optionally) filemode, separated by one or more blanks. For call invocation of the browse service, the fileid must be enclosed in parentheses. That is, fileid is one calling sequence parameter consisting of a character string that starts with a left parenthesis and ends with a right parenthesis. The maximum length of the fileid parameter (including the parentheses for call invocation) is 22 characters. member- name Specifies the member to be browsed for a MACLIB or TXTLIB (ignored for other file types). If member name is not specified, a member selection list for the MACLIB or TXTLIB is displayed. Nested dialogs may not use the BROWSE service if any of the functions listed below are active under the same logical screen. Violation of this restriction results in a severe error. • ISPF/PDF option 1 (BROWSE) • ISPF/PDF option 3 (UTILITIES)- • ISPF/PDF option 4 (FOREGROUND) • User functions that invoke the BROWSE service The following return codes are possible: o- Normal completion 20 - Severe error 114 ISPF Dialog Management Services Example: 1. NVS Invoke the BROWSE service to allow browsing of TELOUT, a member of the ISPFPROJ.FTOUTPUT data set. ISPEXEC BROWSE DATASET('ISPFPROJ.FTOUTPUT(TELOUT)') CALL ISPLINK('BROWSE', 'ISPFPROJ.FTOUTPUT(TELOUT) I); 2. VH/SP Invoke the BROWSE service to allow browsing of TELOUT, a member of the FTOUTPUT HACLIB maclib. ISPEXEC BROWSE FILE (FTOUTPUT HACLIB ~,.. ) i'IEHBER(TELOUT) CALL ISPLINK('BROWSE', '(FTOUTPUT MACLIB *)', 'TELOUT '); Chapter 6. Description of Services 115 BROWSE - VSE: Display a Library or File The BROWSE service provides an interface to the ISPFjPDF browse program, bypassing display of the browse entry panel. (Use of BROWSE requires installation of ISPFjPDF.) The BROWSE service may not be issued by a PLjI main program that also uses subtasking. See ISPFjPDF Reference for a description of BROWSE. BROWSE DATASET(dsname) [RECFORM(recfm)] [RECSIZE(lrecl)] [BLKSIZE(blksize)] [DEVADDR(sysno) ] [VOLUME(serial)] CALL ISPLINK ('BROWSE', dsname [,recfm] [,lrecl] [ , blksize] [ ,sysno] [,serial] ); dsname (for VSE/AF 1.3.5) Specifies one of the following: 116 • lllllll.s.mmmmmmmm.tt • lllllll .. mmmmmmmm.tt • lllllll.s .. tt • 1111111 ... tt • nnnn • nnnn.iiiiiiii • nnnn.iiiiiiii.pppp • fffffff ISPF Dialog Management Services where: l's represent an AF library name; maximum length is 7 characters s represents the AF sublibrary (source libraries only); length is 1 character mrs represent the AF member name; maximum length is 8 characters tt represents the AF library type (SL, RL, PL), nls represent a VSE/ICCF library number; maximum length is 4 digits ils represent the VSE/ICCF library member name; maximum length is 8 characters pIS represent the VSE/ICCF library member password; maximum length is 4 characters fls represent a VSE sequential fileid; maximum length is 7 characters Note: If a member name is not specified, a selection list is provided. dsname (for VSE/AF 2.1) Specifies one of the following: • lllllll.ssssssss.mmmmmmmm.tttttttt • lllllll.ssssssss.mmmmmmmm • lllllll.ssssssss .. tttttttt • nnnn • nnnn.iiiiiiii • nnnn.iiiiiiii.pppp • fffffff where: l's represent a VSE/AF library name; maximum length is 7 characters , s s represents a VSE/AF sublibrary; maximum length is 8 characters Chapter 6. Description of Services 117 mrs represent the VSE/AF member name; maximum length is 8 characters tIs represent the VSE/AF member type; maximum length is 8 characters n's represent a VSE/ICCF library number; maximum length is 4 digits its represent the VSE/ICCF library member name; maximum length is 8 characters pIS represent the VSE/ICCF library member password; maximum length is 4 characters f's represent a VSE sequential fileid; maximum length is 7 characters Note: If a member name is not specified, a selection list is provided. reefm Specifies follows: the record format of the VSE sequential data set, as F - specifies fixed format v- specifies variable format U - specifies undefined format Ireel Specifies, in five digits or less, the record size of the sequential data set. If called from a program, lrecl should be declared as a fullword variable and set to the correct value. blksize Specifies, in five digits or less, the block size of the sequential data set. If called from a program, blksize should be declared as a fullword variable and set to the correct value. sysno Specifies the three numerical digits of the programmer logical unit on which the sequential data set is mounted. serial Specifies, in six characters or less, the serial number of the volume on which the data set resides. Nested dialogs may not use the BROWSE service if any of the functions listed below are active under the same logical screen. Violation of this restriction results in a severe error. • 118 ISPF/PDF option 1 (BROWSE) ISPF Dialog Management Services • ISPFjPDF option 3 (UTILITIES) • User functions that invoke the BROWSE service The following return codes are possible: o- Normal completion 20 - Severe error Example: 1. Under VSEjAF 1.3.5, invoke the BROWSE service to allow browsing of TELOUT, a member of source statement library USERSRC. CALL 2. Under VSEjAF 2.1, invoke the BROWSE service to allow browsing of TELOUT, a skeleton member of library.sublibrary USERLIB.USER1. CALL 3. ISPLINK ('BROWSE', 'USERSRC.S.TELOUT.SL I); ISPLINK ('BROWSE', 'USERLIB.USER1.TELOUT.S'); Invoke the BROWSE service to allow browsing of a sequential data set named SEQFILE, consisting of fixed length 80-byte records, blocked 10, mounted on SYS001, volume number 111111. Program variables RSIZE and BSIZE are full words and contain the binary equivalent of 80 and 800, respectively. CALL ISPLINK ('BROWSE', 'SEQFILE " 'F', RSIZE, BSIZE, '001', '111111'); Chapter 6. Description of Services 119 CONTROL - Set Processing Modes The CONTROL service defines certain processing options for the dialog environment. The processing options control the display screen and error processing. ISPEXEC CONTROL DISPLAY LOCK LINE [START(line-number)] SM [START(line-number)] REFRESH SAVE I RESTORE NONDISPL [ENTER lEND] ERRORS SPLIT CALL [CANCEL IRETURN] ENABLE } { DISABLE ISPLINK ('CONTROL', type [,mode] [,line-number] ); For call invocation: ~ may be 'DISPLAY', 'NONDISPL', 'ERRORS', or 'SPLIT' mode may be, ~ LocK', , LINE', 'SK', 'REFRESH', 'SAVE', or 'RESTORE' ENTER' or ~'for type 'DISPLAY'; type 'NONDISPL'; i"'CANCEL' or 'RETURN' for type 'ERRORS'; 'ENABLE' or 'DISABLE' ,for type 'SPLIT'. DISPLAY Specifies that a display mode is to be set. The valid modes are LOCK, LINE, SM, REFRESH, SAVE and RESTORE. LINE and SM are in effect until the next display of an ISPF panel. REFRESH occurs on the next display of an ISPF panel. LOCK Specifies that the next (and only the next) display output (e.g., by the DISPLAY or TBDISPL service) is to leave the terminal user's 120 ISPF Dialog Management serVices~ ~ tk 5 r; Lice 1-f7?tle{ St'1' v; ( e.. keyboard locked. ISPF processes the next display output as though the user had depressed the ENTER key. This facility may be used to display an "in process" message during a long running operation. It is the dialog developer's responsibility to ensure that the keyboard is unlocked (by the subsequent display of a message or panel). LINE Specifies that terminal line-mode output is expected (e.g., from a TSO or CMS command or VSE system or program dialog). The screen is completely rewritten on the next ISPF full screen write operation, after the line(s) have been written. Note: CONTROL DISPLAY LINE is automatically invoked by the SELECT service whenever a SELECT CMD request is encountered, unless the command begins with a percent (%) sign; for example: SELECT CMD(ABC) - causes automatic entry into line mode. SELECT CMD('7~ABC) - no automatic entry into line mode. line-number In MVS, this parameter specifies the line number on the screen where the line-mode output is to begin. (The first line on the screen is line number 1.) The screen is erased from this line position to the bottom. If this parameter is omitted or coded as zero, the value defaults to the end of the body of the currently displayed panel. The line-number parameter must have an integer value. For call invocation, it must be a full word binary integer. The parameter should specify a line value that is not within 3 lines of the bottom of the logical screen. If the value is within 3 lines of the bottom of the logical screen, a.default line value is used. This value is equivalent to the number of the bottom line of the screen, minus 3. This parameter ~s meaningful only when entering line mode. It may be specified with the SM keyword, since SM reverts to LINE if the Session Manager is not installed. Once line mode has been set, subsequent attempts to set line mode (without intervening full screen output) are ignored. Accordingly, the line-number, once set, cannot be changed. In VM/SP, this parameter is ignored. Line mode output is always displayed starting at the top of a blank screen. In VSE, this parameter is ignored. Line mode output is always displayed immediately following the ICCF column indicator line. Chapter 6. Description of Services 121 SM Specifies that the TSO Session ~1anager should take control of the screen when the next line-mode output is issued. If the Session Manager is not installed, the SM keyword is treated the same as LINE. REFRESH Specifies that the entire screen image should be rewritten when the next ISPF-generated full screen write is issued to the terminal. This facility should be used before or after invoking any program that uses non-ISPF services for generating full screen output ( e . g., XE DIT) . SAVE Used in conjunction with DISPLAY, TBDISPL, BROWSE, or EDIT processing, specifies that information about the current logical screen (including control information) is to be saved. Use of the CONTROL service SAVE and RESTORE allows DISPLAY, TBDISPL, BROWSE, or EDIT processing to be nested. The CONTROL service is used to save and restore the environment at each level. Nesting of successive requests for the same service is not allowed. Note: Whenever the dialog manager encounters a SELECT command entered by the user in the command field of a displayed panel as described in "Command Table Format" on page 54, the current display environment is automatically saved prior to invoking the designated dialog. That environment is subsequently restored when the dialog ends. Certain positioning information, including the ZTDTOP variable and the current row pointer, is not saved. The variable ZVERB is not saved. RESTORE Specifies the restoration of information previously saved by CONTROL DISPLAY SAVE. The logical screen image is restored exactly as it appeared when the SAVE was performed. Processing of the previous panel or table display can then be resumed. NONDISPL Specifies that no display output is to be issued to the terminal when processing the next panel definition. This option is in effect only for the next panel; after that, normal display mode is resumed. ENTER Specifies that the ENTER key is to be simulated as the user response to the NONDISPL processing for the next panel. END Specifies that the END command is to be simulated as the user response to the NONDISPL processing for the next panel. 122 ISPF Dialog Management Services ERRORS Specifies that an error mode is to be set. The valid modes are CANCEL and RETURN. If the RETURN mode is set, it applies only to the function that set it using this, the CONTROL, service. CANCEL Specifies that return code of written to the the particular the dialog should be terminated on an error (a 12 or higher from any service). A message is ISPF log file and a panel is displayed to describe error situation. RETURN Specifies that control should be returned to the dialog on an error. The system variable ZERRMSG contains the message id for a message that describes the error. The message is not written to the ISPF log file (unless TRACE mode is in effect), nor is an error panel displayed. -~ fCJi. fdi Note: If a dialog developer wan~s, on an error, to ABEND with STAE, he must specify CONTROL RETURN because specification of CONTROL CANCEL can nullify the developer's requested STAE. SPLIT Defines the user's ability to enter split screen mode. ENABLE Specifies that the user is be allowed to enter split screen mode. Split screen mode is normally enabled. It is disabled only if explicitly requested by use of the CONTROL service. It remains disabled until explicitly re-enabled by the CONTROL service. DISABLE Specifies that the user's ability to enter split screen mode should be disabled, until explicitly enabled via the CONTROL service. If the user is already in split screen mode, a return code of 8 is issued and split screen remains enabled. The following return codes are possible: o - Normal completion. 8 - Split screen mode already in effect (applies only to a SPLIT DISABLE request); split screen remains enabled. 20 - Severe error. Example: Set the error processing mode to allow the dialog function to process return codes of 12 or higher. ISPEXEC CONTROL ERRORS RETURN CALL ISPLINK('CONTROL', 'ERRORS I 'RETURN I); Chapter 6. Description of Services 123 D I SPLAY - Display Panels and Messages The DISPLAY service reads a panel definition from the panel library, initializes variable panel fields from the c6rresponding dialog variables, and displays the panel on the screen. A message may optionally be displayed with the panel. The user may enter information in fields specified to be input fields on the panel definition. After the user presses ENTER, content of the input fields is stored in dialog variables specified on the panel definition. Then, any processing specified on the panel definition is performed and the DISPLAY service returns to the calling function. ISPEXEC DISPLAY [PANEL(panel-name)] [MSG(message-id)] [CURSOR(field-name)] CALL ISPLINK ('DISPLAY' [,panel-name] [ ,message-id] [,field-name] ); panel-name Specifies the name of the panel to be displayed. message-id Specifies the identification of a message to be displayed on the panel. field-name Specifies the name of the field where the cursor is to be positioned. Regardless of the format, all of· the parameters are optional. The processing of the panel-name and message-id parameters is as follows: 124 • If panel-name is specified and message-id is not specified, the panel is read from the panel library, initialized, and displayed without a message. • If panel-name and message-id are both specified, the panel is read from the panel library, initialized, and displayed with the specified message. ISPF Dialog Management Services • If panel-name is not specified and message-id is specified, the current panel is overlaid with a message, without any initialization being performed on the panel. • If neither panel-name nor message-id is specified, the current panel is redisplayed, without a message and without any initialization. The field-name parameter may be used to control the initial position of the cursor when the panel is displayed. However, the field-name parameter may be overridden by initialization statements in the panel definition. For more information on use of the field-name parameter, see "Default Cursor Positioning" and "Panel Processing Considerations" in Chapter 7. The following return codes are possible: o- Normal completion. 8 - User requested termination via the END or RETURN command. 12 - The specified panel, message, or cursor field could not be found. 16 - Truncation or translation error in storing defined variables. 20 - Severe error. Example: (See Appendix A, "Using the DISPLAY Service" on page 261 for another example of DISPLAY processing). Panel definition XYZ specifies display of variables AAA and KLM (an input field). Using this definition, invoke ISPF services to display these variables at the terminal and superimpose, on line 1, the short form text of message number ABCX013. Position the cursor, on the display, at the beginning of input field KLM ready for entry of data by the person at the terminal. ISPEXEC DISPLAY PANEL(XYZ) MSG(ABCX013) CURSOR(KLM) CALL ISPLINK('DISPLAY', 'XYZ' 'ABCX013', 'KLM f); Chapter 6. Description of Services 125 EDIT - MVS or VM/SP: EDIT a Data Set or File The EDIT service provides an interface to the ISPF/PDF editor, bypassing display of the edit entry panel. (Use of EDIT requires installation of ISPF/PDF.) The EDIT service may not be issued by a PL/I main program that also uses subtasking. See ISPF/PDF Reference for a description of the editor. Syntax for use in an MVS environment: ISPEXEC EDIT DATASET(dsname) [VOLUr-IE (serial)] [PASSWORD(pswd-value)] CALL ISPLINK ('EDIT', dsname [,serial] [,pswd-value] ); Syntax for use in a VM/SP environment: ISPEXEC CALL EDIT FILE(fileid) [MEMBER(member-name)] ISPLINK ('EDIT', fileid [,member-name] ); dsname Specifies the name of the data set, in TSO syntax, to be edited. A fully qualified data set name may be specified, enclosed in apostrophes. If the apostrophes are omitted, the TSO user prefix is automatically left-appended to the data set name. For partitioned data sets, a member name may be specified, enclosed in parentheses. If a member name is not specified, a member selection list is displayed. The maximum length of the dsname parameter is 56 characters. 126 ISPF Dialog Management Services serial Specifies the volume serial on which the data set resides. If this parameter is omitted or coded as blank, the system catalog is searched for the data set name. The maximum length of this parameter is 6 characters. pswd-value Specifies the password if the data set has OS password protection. (The password is not specified for RACF or PCF protected data sets.) fileid Specifies the fileid, in CHS syntax, to be edited. The fileid consists of a filename, filetype, and (optionally) filemode, separated by one or more blanks. For call invocation of the edit service, the fileid must be enclosed in parentheses. That is, fileid is one call~ng sequence parameter consisting of a character string that starts with a left parenthesis and ends with a right parenthesis. The maximum length of the fileid parameter (including the parentheses for call invocation) is 22 characters. Note: The EDIT service is intended for use with existing files. In the VM/SP environment, if fileid specifies a non-existent file, the user is able to create a new file. However, the file characteristics (record format and logical record length) may be unpredictable. They are whatever was saved in the last-used edit profile for the specified file type. If the user has no edit profile for this file type, the characteristics of the new file are fixed 80. member- name Specifies the member to be edited for a HACLIB or TXTLIB (ignored for other file types). If member name is not specified, a member selection list for the MACLIB or TXTLIB is displayed. Nested dialogs may not use the EDIT service if any of the functions listed below are active under the same logical screen. Violation of this restriction results in a severe error. F~. ISPF/PDF option 2 (EDIT) • ISPF/PDF option 3 (UTILITIES) • ISPF/PDF option 4 (FOREGROUND) • User functions that invoke the EDIT service Chapter 6. Description of Services 127 The following return codes are possible: o- Normal completion, data was saved. 4 - Normal completion, data was not saved. Note: For a D37 space ABEND, a partial save is done, up to the point where space was depleted. 20 - Severe error. Example: 1. MVS Invoke the EDIT service to allow editing of TELOUT, a member of the ISPFPROJ.FTOUTPUT data set. ISPEXEC EDIT DATASET(ISPFPROJ.FTOUTPUT(TELOUT)) CALL ISPLINK('EDIT', 'ISPFPROJ.FTOUTPUT(TELOUT) I); 2. VM/SP Invoke the EDIT service to allow editing of TELOUT, a member of the FTOUTPUT MACLIB maclib. ISPEXEC EDIT FILE(FTOUTPUT MACLIB *) MEMBER(TELOUT) CALL ISPLINK('EDIT', '(FTOUTPUT MACLIB *)', 'TELOUT I); 128 ISPF Dialog Management Services EDIT - VSE: EDIT a Library or File The EDIT service provides an interface to the ISPFjPDF editor, bypassing display of the edit entry panel. (Use of EDIT requires installation of ISPFjPDF.) The EDIT service may not be issued by a PLjI main program that also uses subtasking. See ISPFjPDF Reference for a description of the editor. EDIT DATASET (dsname) [PROFILE(profile)] [RECFORtl(recfm) ] [RECSIZE(lrecl)] [BLKSIZE(blksize)] [DEVADDR(sysno)] [VOLUHE (serial)] CALL ISPLINK ('EDIT', dsname [,profile] [ , recfm] [,lrecl] [ ,blksize] [ ,sysno] [ , serial] ); dsname (for VSE/AF 1.3.5) Specifies one of the following: • 1111111.s.mmmmmmmm.tt • 1111111 .. mmmmmmmm.tt • 1111111.s .. tt • 1111111 ... tt • nnnn • nnnn.iiiiiiii Chapter 6. Description of Services 129 • nnnn.iiiiiiii.pppp • fffffff where: lIs represent an AF library name; maximum length is 7 characters s represents the AF sublibrary (source libraries only); length is 1 character mls represent the AF member name; maximum length is 8 characters tt represents the AF library type (SL, RL, PL), nls represent a VSE/ICCF library number; maximum length is 4 digits ils represent the VSE/ICCF library member name; maximum length is 8 characters pIS represent the VSE/ICCF library member password; maximum length is 4 characters fls represent a VSE sequential fileid; maximum length is 7 characters Note: If a member name is not specified, a selection list is provided. (for VSE/AF 2.1) Specifies one of the following: dsname • lllllll.ssssssss.mmmmmmmm.tttttttt • lllllll.ssssssss.mmmmmmmm • lllllll.ssssssss .. tttttttt • nnnn • nnnn.iiiiiiii • nnnn.iiiiiiii.pppp • fffffff where: lIs represent a VSE/AF library name; maximum length is 7 characters 130 ISPF Dialog Management Services sts represents a VSEjAF sublibrary; maximum length is 8 characters mts represent the VSEjAF member name; maximum length is 8 characters tts represent the VSEjAF member type; maximum length is 8 characters nts represent a VSEjICCF library number; maximum length is 4 digits its represent the VSEjICCF library member name; maximum length is 8 characters pts represent the VSEjICCF library member password; maximum length is 4 characters fts represent a VSE sequential fi1eid; maximum length is 7 characters Note: If a member name is not specified, a selection list is provided. profile Specifies the name of the edit profile. is ISPEDIT. When omitted, the default reefm Specifies the record format of the VSE sequential data set, as follows: F - specifies fixed format v- specifies variable format Ireel Specifies, in five digits or less, the record size of the sequential data set. If called from a program, 1recl should be declared as a fu11word variable and set to the correct value. blksize Specifies, in five digits or less, the block size of the sequential data set. If called from a program, b1ksize should be declared as a ful1word variable and set to the correct value. sysno Specifies the three numerical digits of the programmer logical unit on which the sequential data set is mounted. serial Specifies the volume serial, six or less characters, on which the sequential data set resides. Chapter 6. Description of Services 131 Nested dialogs may not use the EDIT service if any of the functions listed below are active under the same logical screen. Violation of this restriction results in a severe error. • ISPF/PDF option 2 (EDIT) • ISPF/PDF option 3 (UTILITIES) • User functions that invoke the EDIT service The following return codes are possible: o - Normal completion. 20 - Severe error. Example: 1. Under VSE/AF 1.3.5, invoke the EDIT service to allow browsing of TELOUT, a member of source statement library USERSRC. CALL 2. Under VSE/AF 2.1, invoke the EDIT service to allow browsing of TELOUT, a skeleton member of library.sublibrary USERLIB.USER1. CALL 3. ISPLINK ('EDIT', 'USERLIB.USER1.TELOUT.S') Invoke the EDIT service to allow editing of a sequential data set named SEQFILE, consisting of fixed length BO-byte records, blocked 10, mounted on SYS001, volume number 111111. Program variables RSIZE and BSIZE are full words and contain the binary equivalent of BO and BOO, respectively. Use the default profile. CALL 132 ISPLINK ('EDIT', 'USERSRC.S.TELOUT.SL') ISPLINK ('EDIT', 'SEQFILE ' ISPF Dialog Management Services , , 'F', RSIZE, BSIZE, '001', '111111'); .••"r"" ....,.....-'~·"·-".,_. '" FTCLOSE - End (File Tailoring \. The FTCLOSE service is used to terminate the file tailoring process and to indicate the final disposition of the file tailoring output. A member-name parameter should be specified if the output file is a library. The file tailoring output is given the specified member name. No error condition results if the member-name parameter is not specified, and the output is not stored in the library. If the member-name parameter is specified and the output file is sequential, a severe error results. The library parameter should be specified if a library other than that represented by the ISPFILE definition is to be used. The library parameter is ignored if the "TEHP" option is specified on the FTOPEN service or if the ISPFILE definition specifies a sequential data set. A severe error occurs if file tailoring attempts to use the data set and it is not a library. The NOREPL parameter specifies that an existing member in the file tailoring output library is not to be overlaid (replaced) by the current FTCLOSE service. If a member of the same name already exists, the FTCLOSE service request is terminated with a return code of 4 and the original member remains unaltered. ISPEXEC FTCLOSE [NA~1E(member-name) [LIBRARY(library-name)] [NOREPL] CALL ISPLINK ('FTCLOSE' [,member-name] [,library-name] [ , 'NOREPL ' ] ) ; member- name Specifies the name of the member in the output library that is to contain the file tailoring output. library-name Specifies the name of aDD, FILEDEF, or ISPDEF statement that defines the output library in which the member-name exists. ISPFILE is the default if this parameter is omitted. NOREPL Specifies that FTCLOSE is not to overlay an existing member in the output library. Chapter 6. Description of Services 133 The following return codes are possible: o- Normal completion. 4 Member already exists in the output library and NOREPL was specified. The original member is unchanged. 8 - File not open (FTOPEN was not used prior to FTCLOSE). 12 - Output file in use; ENQ failed. 16 - Skeleton library or output file not allocated. 20 - Severe error. Example: End the file tailoring process and store the result of the processing in the file tailoring output library in member TELOUT. ISPEXEC FTCLOSE NAME(TELOUT) CALL ISPLINK('FTCLOSE', 'TELOUT '); 134 ISPF Dialog Management Services .. FTERASE - Erase File /' Tailoring~ Output The FTERASE service erases (deletes) a member of a file tailoring output library. A severe error occurs if a specified library or the default (ISPFILE) is a sequential file. ISPEXEC CALL FTERASE member-name [LIBRARY(library-name)] ISPLINK ('FTERASE', member-name [,library-name]); member- name Specifies the name of the member that is to be deleted from the output library. library-name Specifies the name of aDD, FILEDEF, or ISPDEF statement that defines the output library in which the member-name to be deleted exists. ISPFILE is the default if this parameter is omitted. The following return codes are possible: o- Normal completion. 8 - Hember does not exist. 12 Output library in use; ENQ failed. 16 - Output library not allocated. 20 - Severe error. Example: Erase member TELOUT in the file tailoring output library. ISPEXEC FTERASE TELOUT CALL ISPLINK('FTERASE', 'TELOUT '); Chapter 6. Description of Services 135 ." { ' '.:' '~ ... ..... FTINCL - Include r'Skeleton,) "" __~._~."".~.".,.,.,,,,.,Jf' The FTINCL service specifies the name of the skeleton (member of the skeleton library) that is to be used to produce the file tailoring output. See "Skeleton Definitions" in Chapter 7. ISPEXEC CALL FTINCL skel-name [NOFT] ISPLINK ('FTINCL', skel-name [, 'NOFT'] ); skel-name Specifies the name of the skeleton. NOFT Specifies that no file tailoring is to be performed on the skeleton: the entire skeleton is to be copied to the output file exactly as is with no variable substitution or interpretation of control records. The following return codes are possible: o- Normal completion. 8 - Skeleton does not exist. 12 Skeleton or table in use; ENQ failed. 16 - Data truncation occurred; or skeleton library or output file not allocated. 20 - Severe error. Example: Perform file tailoring using the file tailoring skeleton named TELSKEL, a member in the file tailoring skeleton library, to control processing. ISPEXEC FTINCL TELSKEL CALL ISPLINK('FTINCL', 'TELSKEL I); 136 ~ISPF Dialog Management Services The FTOPEN service begins the file tailoring process. It allows skeleton files to be accessed from the skeleton library, specified by ddname ISPSLIB. The skeleton library must be preallocated prior to invoking ISPF. ISPSLIB may specify a concatenation of libraries. See Chapter 4, "Library Requirements," for library setup requirements. If output from file tailoring is not to be placed in a temporary file, the desired output file must be allocated to ddname ISPFILE prior to invoking this service. ISPFILE may designate either a library or a sequential file. ISPEXEC CALL FTOPEN [TEHP] ISPLINK ('FTOPEN' [, 'TEMP'] ); TEMP Specifies that the output of the file tailoring process should be placed in a temporary sequential file. The file is automatically allocated by ISPF. Its name is available in system variable ZTEMPF. If this parameter is omitted, the output will be placed in the library or sequential file as designated by ddname ISPFILE. In MVS, ZTEHPF contains a fully qualified data set name. Generated JCL in this file may be submitted for background execution using the following TSO command: SUBMIT '&ZTEMPF' Note: If ISPCTL1 and ISPCTL2 are preallocated to VIO, this temporary data set may not be accessed using BROWSE or EDIT. Chapter 6. Description of Services 137 In V~l/SP, the temporary file is written to the user's A-disk. The ISPF-generated file name is contained in ZTEMPF. The file type is always ISPTEMP. Data in this file may be sent to another virtual machine using the following CMS command: PUNCH &ZTEMPF ISPTEMP In VSE, ZTEMPF contains the filename of the temporary sequential data set. The following return codes are possible: o- Normal completion. 8 File tailoring already in progress. 12 - Output file in use; ENQ failed. 16 - Skeleton library or output file not allocated. 20 - Severe error. Example: Prepare for access (open) both the file tailoring skeleton and file tailoring output libraries. ISPEXEC FTOPEN CALL ISPLINK('FTOPEN'); 138 ISPF Dialog ~lanagement Services LOG - Write a Message to the Log File The LOG service causes a message to be written to the ISPF log file. ISPEXEC CALL LOG NSG(message-id) ISPLINK ('LOG', message-id); message-id Specifies the identification of the message that is to be retrieved from the message library and written to the log. The following return codes are possible: o12 ~ Normal completion. The message-id contains invalid syntax or was not found. 20 - Severe error. Example: • In a CLIST or EXEC, dialog variable TERNSG contains a message-ide Write this message in the ISPF log file. ISPEXEC LOG NSG(&TERHSG ) • In a PL/I program, program variable TERHSG contains a message-ide Write this message in the ISPF log file. CALL ISPLINK('LOG', TERHSG); • Write message ABCX013 in the ISPF log file. ISPEXEC LOG MSG(ABCX013) CALL ISPLINK('LOG', 'ABCX013 f); Chapter 6. Description of Services 139 L '0 ' i I SELECT - Select a Panel or Function The SELECT service may be used to display a hierarchy of selection panels (menus), or invoke a function. Within a dialog function a program may invoke another program using standard CALL or link conventions. These are nested programs and are transparent to the dialog manager. On the other hand, when the invoked program is a new dialog function, SELECT must be used. Note: Programs or command processors that use VNCF to communicate with their own disconnected virtual machine, may not be invoked under ISPF. ISPEXEC SELECT PANEL(panel-name) [OPT(option)] C}1D ( command) PGM(program-name) [PARM(parameters)] [NEWAPPL [(application-id)]INEWPOOL] CALL ISPLINK ('SELECT', buf-length, buffer); Note: parameters which may appear in buffer are: PANEL(panel-name) [OPT(option)] CND(command) PGM(program-name) [PARN(parameters)] [LANG(PLI-IPL1 [,storage-area])] [LANG(COBOL)] [NEWAPPL [(application-id)] INEWPOOL] ..... , panel-name Specifies the name of a selection panel to be displayed. option ~ ~-)\Q~ 1i. i~~ S~\a ~ 140 .,.A specifies an initial option, which must be a valid option on the menu specified by panel-name. Specifying an option causes direct entry to that option without displaying the menu. (The menu is processed in nondisplay mode, as though the user had entered the option.) ISPF Dialog Management Services command In MVS and VM/SP, specifies a command procedure (CLIST or EXEC 2), or any TSO or CMS command that is to be invoked as a dialog func t ion. -C8mmart(r'pa'rame"t'e'r's"'maf"13°e"'''Inc1~uOea-wrtnl11't Y""'P'1"feili'fl'e!es . command ) 11fLIST or EXEC 2) to improve performance, and to avoid ~ automatic entry into line display mode (see description of CONTROL ~;2. ') service) . pr6ce~ure -~'A"'p'e~rcen:t""'(%)'-'sI'gn""'may~~'pr'ece(f;t~lne"''''ii.'am'eo~ Note: In MVS, ordinary commands (command processors) are invoked by the ATTACH macro and may not issue requests for ISPF dialog services. In VM/SP, references made by CMS commands while running ISPF, generally, give unpredictable results. In VSE, this parameter is not used because ICCF procedures may not be used for writing dialog functions. ~.- -_.. " ~.:,.:::.::.,-.-.....,~.~,:,,~-~~ (p;~gram-~a~v __,___.....S.p,e.c.:l:-:t-Ies the name of a program that is to be invoked as a dialog ) function. If the program is coded in PL/I, it must be a MAIN ,/ procedure. / -1',.1 / / ,/ ;' I I \ \ \ ~'" Note: Dialog developers should avoid the ISP and ISR prefixes (the ISPF and PDF component codes) in naming dialog functions. Special linkage conventions, intended only for internal ISPF use, are used to invoke programs named "ISPxxxxx" and "ISRxxxxx". In MVS, this parameter must specify the name of a load module that by use of the LINK macro. ~sible -----""'""... -' •. ');;"'....,,.~"~-......'.--""~"~-.. ' '. In VM/SP, this parameter may specify the name of a TEXT file, a member of a TXTLIB, or a member of a LOADLIB. For more information, see "Library Setup - VM/SP Environment" in Chapter 4. In VSE/AF 1.3.5, this parameter must specify the name of a phase contained in a core image library. This library must be defined by a LIBDEF CL statement. In VSE/AF 2.1, this parameter must specify the name of a phase contained in a library.sublibrary, which must be defined by a LIBDEF PHASE statement. parameters Specifies input parameters to be passed to the program. program should not attempt to modify these parameters. The The parameters within the parentheses are passed as a single character string, preceded by a halfword containing the length of the character string, in binary. (The length value does not include itself.) This convention is exactly the same as if the Chapter 6. Description of Services 141 parameters had been passed in a PARH= keyword on a JCL EXEC statement. Parameters passed from the SELECT service to a PLjI program may be declared on the procedure statement in the standard way: XXX: PROC (PARM) OPTIONS(HAIN); DeL PARM CHAR (nnn) VAR; If the value of the PARM field is to be used as an ISPF dialog variable, it must be assigned to a fixed character string, because the VDEFINE service cannot handle varying length PLjI strings. In MVS and VMjSP, the first character of the PARM field must be a slash ('j'), because PLjI assumes that any value prior to the slash is a run-time option. LA N G ( P L I) 0 r LA N G ( P L 1 ) In VSE, specifies that the function being invoked is written in the PLjI language. In MVS and VMjSP, this keyword is not used. storage-area In VSE, for programs written in PLjI, specifies the number of bytes of dynamic storage to be made available to the function being invoked. The default storage size is 2816 bytes. Generally, the amount of storage required for a PLjI program can be determined by using the storage option to compile the program and then adding 2192 to the DSA sizes specified on the compile listing. However, the storage requirement will vary considerably depending on the compiler options specified, i.e. "FLOW" will use slightly more storage but "COUNT" will substantially increase the storage requirement. In MVS and VMjSP, this parameter is not used. LANG(COBOL) In VSE, specifies that the function being invoked is written in the COBOL language. In MVS and VMjSP, this keyword is not used. NEWAPPL Specifies that a new application is being invoked. application - id Specifies a 1- to 4-character code for the new application named in t0l:>: p~e~i~~d t? t~e <:~~.~~, . pro fi I!:) t~"~di t . P ro f.~J~, or th~~'~c:mffif~lfa~~''t ao 1 e' .as socia·t~a, with t lie-- apt>1: i cat ion ;-_. lIs"foT I ows (where xxx)Cis··"t heapplication-id): _!J.1jJ?__~g.1~<2,!".service._:S~JlJ,l~s_t~ . _.~.!he code. is 142 ISPF Dialog Management Services Application Profile Edit Profile Command Table xxxxPROF xxxxEDIT xxxxCMDS These are table (member) names in the profile or table input library. If the NEWAPPL keyword is specified but the application-id is not specified, the default application-id is ISP, as follows: User Profile Edit Profile Command Table ISPPROF ISPEDIT ISPCMDS NEWPOOL Specifies that a new shared variable pool is to be created without specifying a new application. Upon return from the SELECT service, the current shared variable pool is reinstated. buf-Iength Specifies the length of a buffer containing the selection keywords. This parameter must be a fullword binary integer. buffer Specifies the name of a buffer containing the selection keywords. This is a character string parameter. The selection keywords in the buffer are specified exactly as they would be coded for the ISPEXEC command; for example: BUFNAME = 'PANEL(ABC) OPT(9) NEWPOOL'; In the above example, it is assumed that BUFNAME is the name of the buffer. The apostrophes are part of the syntax of the PL/I assignment statement. They are not stored in the buffer itself. If a command or program is invoked using SELECT, the return code from the command or program is passed to the function that invoked SELECT. Note: If a selected command, not using ISPF display services, could cause a full screen input or output operation, the developer should refresh the entire screen on the next display. To do this, use the CONTROL DISPLAY REFRESH service. See "Control Service" in Chapter 2. ~ rr rvJ., Chapter 6. Description of Services 143 The following return codes are possible if a menu is specified: o- Normal Completion. menu. The END command was entered from the selected 4 - Normal Completion. The RETURN command was entered or the EXIT option as specified from the selected menu or from some lower-level menu. 12 - The specified panel could not be found. 16 Truncation error in storing the ZCMD or ZSEL variable. 20 - Severe error. Example: • In MVS or V~l/SP (in a CLIST or EXEC), start a hierarchy of selection panels (menus) from a dialog function. The first menu in the hierarchy is named QOPTION. ISPEXEC SELECT PANEL(QOPTION) • In a PL/I program, program variable QOPT contains 'PANEL(QOPTION), and program variable QOPTL is a full word containing the bi<~~f'y~,w.~" . equivalent of 14. Start a hierarchy of selecti~D""",pane"rs,-uCmenus) ""\,; beginning with panel QOPTION. ;.~e·,·<-v:'~;""·h r 5Pt'Yt,C 5t LtC-, ' ,,,>"," CALL ISPLINK('SELECT' • QOPTL QOPT). :i'/" 1,·e.".t~(1{ c"~Jq,~I,Y\,, ,dr, ' "";;;;;:.:~, I S }" Le, ) """".," ...,--<.~ . ". . '"-, ; ~ (,. \ S_T'" 01(' f",)(' ' / a, . .~~:tST or"':~', invoke a'E!~~E~~:E;:~e:~::~~,.,. ~li,a.1.og' , , In MVS or VM/SP (in function named PROG1, aii'd"'pass'it'a parameter string consisting of ABCDEF. ISPEXEC SELECT PGM(PROG1) PARM(ABCDEF) • In NVS or VN/SP, in a PL/I program, program variable PROG contains 'PGN(PROG1) PAR~l(ABCDEF)' and program variable PROGL is a full word containing the binary equivalent of 23. Invoke a program-coded dialog function, named PROGl, and pass it a parameter string consisting of ABCDEF. CALL ISPLINK('SELECT', PROGL, PROG); • In VSE, in a PL/I program, program variable PROG contains 'PGM(PROGl) PARN(ABCDEF) LANG(PLI), and program variable PROGL is a full word containing the binary equivalent of 33. Invoke a program-coded dialog function (written in PL/I), named PROG1, and pass it a parameter string consisting of ABCDEF. CALL ISPLINK('SELECT', PROGL, PROG); 144 ISPF Dialog Management Services SETMSG - Set Next Message The set next message service allows a dialog function to display a message on the next panel that is written by ISPF to the terminal. The next panei does not have to be displayed as a result of action taken by the function routine. The function routine may have, in fact, terminated before the next panel is displayed. The specified message is retrieved from the message library at the time the set message request is issued. Values for all variables defined in the message are substituted at this time and the message is saved in a message area for the application. When the next panel is displayed, the message is retrieved from the save area and displayed on the panel. If multiple set-message requests have been issued before a panel is displayed, only the last message is displayed. A message specified on the panel display request is overridden by any outstanding set next message request. A message that has been set with SETNSG is displayed the next time any full screen output is sent to the display, regardless of whether that output is a panel, table display, browse data, or edit data. The message is preserved across CONTROL NONDISPL. That is, the message is displayed on the next actual output to the terminal. If the next panel is processed in non-display mode, the message remains pending, to be displayed with any following panel that is processed in display mode. If the message refers to a help panel, the help panel should not include substitutable variables. Variables in related help panel(s) contain the values current at the time the HELP command is issued, not at the time the SETNSG service is invoked. Syntax for the set message function is: ISPEXEC SETMSG MSG(message-id) CALL ISPLINK C'SETMSG', message-id}; message-id Specifies the identification of the message to be displayed on the next panel. Chapter 6. Description of Services 145 The following return codes are possible: o - Normal completion. 12 - The specified message could not be found. 20 - Severe error. Example: Put, on the next panel that is displayed, a message whose id, ABCX015 , is in a dialog variable named TERMSG. ISPEXEC SETMSG MSG(&TERMSG ) CALL ISPLINK('SETMSG', 'ABCX015 I); 146 ISPF Dialog Management Services TBADD - Add a Row to a Table The TBADD service adds a new row of variables to a table. The new row is added immediately following the current row, pointed to by the current row pointer (CRP). The CRP is then set to point to the newly inserted row. The current contents of all dialog variables that correspond to columns in the table (that were specified by the KEYS and NAHES parameters in a TBCREATE) are saved in the row. Additional variables (those not specified when the table was created) may also be saved in the row. These "extension" variables apply only to this row; not the entire table. The next time the row is updated, the extension variables must be respecified if they are to be rewritten. For tables with keys, the table is searched to ensure that the new row has a unique key. The current contents of the key variables (dialog variables that correspond to keys in the table) are used as the search argument. For tables without keys, no duplicate checking is performed. ISPEXEC CALL TBADD table-name [SAVE(name-list)] ISPLINK ('TBADD', table-name [,name-list] ); table-name Specifies the name of the table to be updated. name-list Specifies a list of extension variables, by name, that are to be saved in the row, in addition to the variables specified when the table was created. The following return codes are possible: 0 - Normal completion. 8 - Tables with keys: A row with the same key already exists; CRP set to TOP (zero). 12 - Table is not open. 20 - Severe error. Chapter 6. Description of Services 147 Example: Add a row to the table TELBOOK, copying to the row values from function pool variables whose names match those of table variables. ISPEXEC TBADD TELBOOK CALL ISPLINK('TBADD', 'TELBOOK I); 148 ISPF Dialog Management Services TB BOTTOM - Set the Row Poi nter to Bottom The TBBOTTOM service sets the current row pointer (CRP) to the last row of a table, and retrieves the row. All variables in the row, including keys, name, and extension variables (if any), are stored into the corresponding dialog variables. A list of extension variable names may also be retrieved. IS:2EXEC CALL TBBOTTOM ISPLINK table-name ('TBBOTTO~II, [SAVENAME(var-name)] table-name [,var-name] ); table-name Specifies the name of the table to be used. var-name Specifies the name of a variable into which a list of extension variable names contained in the row will be stored. The list must be enclosed in parentheses, and the names within the list must be separated by a blank. The following return codes are possible: o- Normal completion. 8 Table is empty; CRP set to TOP (zero). 12 Table is not open. 16 - Variable value has been truncated or insufficient space provided to return all extension variable names. 20 - Severe error. Example: Move the current row pointer (CRP) of the table TELBOOK to the last row of the table. Store values from variables in that row, in function pool variables having names that match the names of the variables in the row. ISPEXEC TBBOTTOM TELBOOK CALL ISPLINK('TBBOTTOM', 'TELBOOK f); Chapter 6. Description of Services 149 TBCLOSE - Close and Save a Table The TBCLOSE service terminates processing of the specified table and deletes the virtual storage copy, which is then no longer available for further processing. If the table was opened in WRITE mode, TBCLOSE copies the table from virtual storage to the table output library. In this case, the table output library must be allocated to a ddname of ISPTABL before invoking this service. Optionally, the table can be stored under a different name in the output iibrary. If the table was opened in NOWRITE mode, TBCLOSE simply deletes the virtual storage copy. Table output can be directed to a table output library other than the library specified on the table output ISPTABL DD, FILEDEF, or ISPDEF statement. (The library to be used must be allocated before table services receives control.) Thus, an application can update a specific table library. This is particularly useful for applications that need to maintain a common set of tables containing their data. The output table library - specified by the ISPTABL DD, FILEDEF, or ISPDEF statement - is the default output library. Therefore, dialogs previously written for SPF that use table services continue to function in the same manner in ISPF as they did when running under SPF. ISPEXEC TBCLOSE table-name [NEWCOPYI REPLCOPY] [NANE(alt-name)] [PAD(percentage)] [LIBRARY(library-name)] CALL ISPLINK ('TBCLOSE', table-name [, 'NEWCOPY' I 'REPLCOPY'] [ ,alt-name] [ ,percentage] [,library-name]); table-name Specifies the name of the table to be closed. 150 ISPF Dialog Nanagement Services NEWCOPY Specifies that the table is to be written at the end of the output library, regardless of whether an update in place would have been successful. This ensures that the original copy of the table is not destroyed before a replacement copy has been written successfully. REPLCOPY Specifies that the table is to be rewritten in place in the output library. If the existing member is smaller than the table that replaces it, or if a member of the same name does not exist in the library, the complete table is written at the end of the output library. Note: If both the NEWCOPY and REPLCOPY keywords are omitted, a comparison is made between the virtual storage size of the table and the external size in the table output library. If there is insufficient storage to write the table in-place, it is written at the end of the table output library. alt-name Specifies an alternate name for the table. The table is stored in the output library with the alternate name. If another table already exists in the output library with that name, it is replaced. If the table being saved exists in the output library with the original name, that copy remains unchanged. percentage Specifies the percentage of padding of the table. The padding is added only when the table is written as a not increase the table size when an space, based on the total size to the total size of the table new copy. This parameter does update in place is performed. This parameter must have an unsigned integer value. For call invocation, it must be a fullword fixed binary integer. The default value for this parameter is zero. Padding permits future updating in place, even when the table has expanded in size. Should the table expand beyond the padding space, the table is written at the end of the table output library instead of being updated in place. library-name Specifies the name of aDD, FILEDEF, or ISPDEF statement that defines the output library in which table-name is to be closed. this parameter is omitted, the default is ISPTABL. Chapter 6. Description of Services If 151 The following return codes are possible: 0 - Normal completion. 12 - Table is not open. 16 - Table output library not allocated. 20 - Severe error. Example: Close the table TELBOOK. ISPEXEC TBCLOSE TELBOOK CALL ISPLINK('TBCLOSE', 'TELBOOK f); 152 ISPF Dialog Management Services TBCREATE - Create a New Table The TBCREATE service creates a new table in virtual storage, and opens it for processing. TBCREATE allows specification of the variable names that correspond to columns in the table. These variables will be stored in each row of the table. Additional "extension" variables may be specified for a particular row when the row is written. One or more variables may be defined as keys for accessing the table. If no keys are defined, only the current row pointer can be used for update operations. ISPEXEC TBCREATE table-name [KEYS(key-name-1ist)] [NAMES(name-1ist)] [WRITE INOWRITE] [REPLACE] CALL ISPLINK ('TBCREATE', table-name [,key-name-1ist] [ ,name -1 is t ] [, 'WRITE' I' NOWRITE' ] [ , 'RE PLACE'] ); table-name Specifies the name of the table to be created. The name may be from one to eight alphameric characters in length, and must begin with an alphabetic character. key- name-list Specifies the variables, by name, that are to be used as keys for accessing the table. See the section entitled "Invocation of Services" for specification of name lists. If this parameter is omitted, the table will not be accessible by keys. name-list Specifies the non-key variables, by name, to be stored in each row of the table. Chapter 6. Description of Services 153 If key-name-list and name-list are omitted, the table can contain only extension variables that must be specified when the row is written. WRITE Specifies that the table is permanent, to be written to disk by the TBSAVE or TBCLOSE service. The disk copy is not actually created until the TBSAVE or TBCLOSE service is invoked. NOWRITE Specifies that the table is for temporary use only. When processing is complete, a temporary table should be deleted by the TBEND or TBCLOSE service. REPLACE Specifies that an existing table is to be replaced. If a table of the same name is currently open, it is deleted from virtual storage before the new table is created, and return code 4 is issued. If the WRITE parameter is also specified and a duplicate table name exists in the table input library, the table is created and return code 4 is issued. The duplicate table is not deleted from the input library. The following return codes are possible: o- Normal completion. 4 - Normal completion was specified. a duplicate table exists but REPLACE 8 - Table already exists; REPLACE was not specified. 12 Table in use; ENQ failed. 16 - WRITE mode specified and table input library is not allocated. (TBCREATE checks the input library to determine if a duplicate table exists; see return code 8.) 20 - Severe error. Example: • In MVS or VM/SP, in a CLIST or EXEC, create a permanent table, TELBOOK, to contain the variable TABKEY and other variables, the names of which are specified in dialog variable TABVARS. The key field is TABKEY. ISPEXEC TBCREATE TELBOOK KEYS(TABKEY) NAMES(&TABVARS ) • In a PL/I program, create a permanent table, TELBOOK, to contain the variable TABKEY and other variables, the names of which are specified in program variable TABVARS. The key field is TABKEY. CALL ISPLINK('TBCREATE', 'TELBOOK' 154 ISPF Dialog Management Services 'TABKEY', TABVARS); TBDELETE - Delete a Row from a Table The TBDELETE service deletes a row from a table. For tables with keys, the table is searched for the row to be deleted. The current contents of the key variables (dialog variables that correspond to keys in the table) are used as the search argument. For tables without keys, the row pointed to by the current row pointer (CRP) is deleted. The CRP is always updated to point to the row prior to the one that was deleted. ISPEXEC CALL TBDELETE table-name ISPLINK ('TBDELETE', table-name); table-name Specifies the deleted. The (if the table variables (if name of the table from which the row is to be row is determined by the current position of the CRP has no keys) or the current contents of the key the table has keys). The following return codes are possible: o- Normal completion. 8 - Keyed tables: The row specified by the value in key variables does not exist; CRP set to TOP (zero). Non-keyed tables: CRP was at TOP (zero) and remains at TOP. 12 - Table is not open. 20 - Severe error. Example: Delete a row of the table TELBOOK. ISPEXEC TBDELETE TELBOOK CALL ISPLINK('TBDELETE', 'TELBOOK f); Chapter 6. Description of Services 155 TBD I SPL - Display Table Information The TBDISPL service combines information from a panel definition with information stored in an ISPF table. It displays all or selected rows from the table, allowing the application user to scroll the information up and down (only). An illustration appears in Appendix C, "Using the TBDISPL Service" on page 289. When only selected rows from a table are to be displayed, the TBSARG service is used before issuing TBDISPL to define the selection criteria. In this case, ROWS(SCAN) must be specified on the )MODEL statement in the panel definition. The format of the display is specified by a panel definition, which TBDISPL reads from the panel library. The panel definition contains two input fields (the command and scroll fields) and the non-scrollable text, which includes column headings. It also contains one or more "model" lines that specify the format of the scrollable data and which columns (i.e., which variables) from the table are to be displayed. For a description of panel formats for table display, see "Special Panel Requirements, Table Display Panels" in Chapter 7. Each line of scrollable data may have one or more input (unprotected) fields, as well as output (protected) fields. The user may modify the input fields and may also enter commands in the command field. Before TBDISPL is invoked, the table to be displayed must be open, and the current row pointer (CRP) positioned to the row in the table at which the display is to begin. (CRP at TOP is a value of 0 and is valid; it is treated as though the CRP were pointing to the first row.) Note: Do not attempt to use TBDISPL to display a command table currently in use. The result would not be predictable. TBDISPL does not modify information in the table. The dialog function may use the information entered by the user to determine what processing is to be performed, and may modify the table accordingly. 156 ISPF Dialog Management Services ISPEXEC TBDISPL table-name [PANEL(panel-name)] [MSG(message-id)] [CURSOR(field-name)] [CSRROW(table-row-number)] CALL ISPLINK ('TBDISPL', table-name [,panel-naQe] [ ,message-id] [,field-name] [,table-row-number] ); table-name Specifies the name of the table to be displayed. panel-name Specifies the name of the panel to be displayed. message-id Specifies the identification of a message to be displayed on the panel. field-name specifies the column (variable name) where the cursor is to be positioned on the display. Any .CURSOR setting (done in the IN IT section of the panel definition) takes precedence over this parameter. table-row-number specifies the table row number (CRP) corresponding to the line on the display where the cursor is to be positioned. If the specified row is not displayed on the screen, the cursor is placed at the command field. For call invocation, this parameter must be a full word fixed binary number. The panel-name and message-id parameters are optional. is as follows: • Their processing If panel-name is specified and message-id is not specified, the panel is read from the panel library, rows from the table are read to fill the screen, and the screen is displayed without a message. Chapter 6. Description of Services 157 • If panel-name and message-id are both specified, the panel is read from the panel library, rows from the table are read to fill the screen, and the screen is displayed with the specified message. • If panel-name is not specified and message-id is specified, the current table display is overlaid with a message, without reinitializing the screen nor rereading the table. • If neither panel-name or message-id is specified, the CRP is set to point to the table row corresponding to the next modified line on the display. If no modified lines remain to be processed, the following occurs: If the application user's last act was to: Press the ENTER key, then rows from the table are again read to fill the screen and the screen is redisplayed. Enter a scroll command, then the scroll function is now honored by reading and displaying the appropriate rows from the table. Enter an END or RETURN command, then the CRP is set to TOP (zero) and return is made to the function (issuing the TBDISPL) with a return code of 8. If this occurs more than once in immediate sequence, a return code of 20 is issued, since the application may be in a loop. The field-name and table-row-number parameters are optional. processing is as follows: 158 Their • If the field-name parameter is not specified but the table-row-number parameter is specified, the cursor is placed on the first field in the specified row. • If the field-name parameter is specified but the table-row-number parameter is not specified, the current value of the CRP determines the row location and the cursor is placed in this row, on the field specified by the field-name parameter. • Whenever the table-row-number parameter is specified, the contents of the row are always returned by TBDISPL, even if the user did not modify the row. This allows the dialog developer to force the user to correct an error on that row, before going on to process other rows. • The .CURSOR control variable may be set within the )INIT section of a table display panel to specify a field name where within a row the cursor is to be initially positioned. If .CURSOR is not explicitly set, it assumes the value passed from the c~lling sequence in the field-name parameter, (if any). If cursor placement is not specified (in .CURSOR or a passed value), the cursor is positioned at the command input line. ISPF Dialog Management Services TBDISPL allows the user to scroll the data up and down, and enter primary commands or information on one or more lines of scrollable data. After display of a panel using TBDISPL and after the user has made any modifications to the scrollable data on the display and has pressed the ENTER key or issued the SCROLL, END, or RETURN command, the TBDISPL service performs the following functions: 1. The contents of the command field are stored in the dialog variable specified in the panel definition. 2. If there was no modified line to process, the CRP is set to TOP (zero). 3. If the user entered information into one or more lines of scrollable data, the CRP is positioned to the row in the table that corresponds to the first modified line, and the row is retrieved (all variables from that row are stored into the corresponding dialog variables). The information entered by the user on that line is then stored in the corresponding dialog variables. This includes all input fields in the line, which mayor may not correspond to variables in the table. 4. The row number that corresponds to the first line currently displayed on the screen is stored in the system variable ZTDTOP. If, in a dialog, a dialog developer wants to reposition the scrollable data as the user last saw it, he must reposition the CRP to the row number stored in ZTDTOP prior to reinvoking the TBDISPL service. (ZTDTOP is a variable in the function pool. A command procedure CLIST or EXEC - may access it directly. A program may access it through use of the VCOPY service.) 5. TBDISPL then returns to the dialog function. If the application user modified more than one line in a single interaction, a call to TBDISPL is required to position the CRP to the row corresponding to each modified line. After the CRP is positioned to each modified line, the function may process the line, for example, by issuing a TBPUT request to update the table. For these calls, neither the panel-name nor the message-id should be specified. The processing sequence for each of these calls is as described above, except that the next modified line is processed. The combination of the return code and CRP values indicate whether there are more modified lines to be processed. Whenever modified table entries remain to be processed, the dialog can choose to ignore them by calling TBDISPL with a specified (non-blank) panel name. This clears out any remaining information about previous calls. If the dialog wants to display another table before processing all remaining entries from the first display, and then resume processing of multiple entries from the first display, it must invoke the CONTROL service to save and restore the display environment. Chapter 6. Description of Services 159 The following return codes are possible from TBDISPL: o- The ENTER key was pressed or a scroll command was entered. One or both of the following occurred: one line was modified in the scrollable part of the display. The CRP is set to point to the table row corresponding to that line. The row is retrieved (i.e., stored in the function pool) and then the line is stored in the function pool. a function command was entered by the user. 4 - The ENTER key was pressed or a scroll command was entered. The first or both of the following occurred: two or more lines in the scrollable part of the display were modified by the user. The CRP is set to the table row corresponding to the first line changed. That row is retrieved (i.e., stored in the function pool) and then the line is stored in the function pool. a function command was entered by the user. For subsequent TBDISPL requests (with no panel name and no message-id), return code 4 is issued for each request until one modified line remains to be accessed. For this last line, a return code of zero is issued by the TBDISPL request (still specified with no panel name and no message-id). 8 The END or RETURN command was entered. The CRP is set to the table row corresponding to the first of any lines modified in the scrollable part of the display. That row is retrieved (stored in the function pool) and then the line is stored in the function pool. If the CRP is at the top (zero), no lines were changed. To capture data entered when END or RETURN was entered, continue to issue TBDISPL requests with no panel name or message-id specified, until the CRP is at zero. For each request, a return code of 8 is issued. In addition to the action described above, a function command mayor may not have been originated by the user. 12 - The specified panel or message could not be found or the table was not open. 20 - Severe error. 160 ISPF Dialog Management Services Example: (See Appendix C, "Using the TBDISPL Service" on page 289 for another exampl~ of TBDISPL use.) Display the table TELBOOK using panel definition TPANEL2 to format the display. ISPEXEC TBDISPL TELBOOK PANEL(TPANEL2) CALL ISPLINK('TBDISPL', 'TELBOOK " 'TPANEL2 I); Chapter 6. Description of Services 161 TBEND - Close a Table without Saving The TBEND service deletes the virtual storage copy of the specified table, making it unavailable for further processing. The permanent copy (if any) is not changed. ISPEXEC CALL TBEND table-name ISPLINK ('TBEND', table-name); table-name Specifies the name of the table to be ended. The following return codes are possible: o- Normal completion. 12 - Table is not open. 20 - Severe error. Example: Delete the virtual storage copy table TELBOOK; do not change any permanent copy (in the table library). ISPEXEC TBEND TELBOOK CALL ISPLINK('TBEND', 'TELBOOK I); 162 ISPF Dialog Management Services TBERASE - Erase a Table The TBERASE service deletes a table from the table output library. The table output library must be allocated before invoking this service. The table must not be open in WRITE mode when this service is invoked. ISPEXEC CALL TBERASE table-name [LIBRARY(library-name)] ISPLINK ('TBERASE', table-name [,library-name]); table-name Specifies the name of the table to be erased. library-name Specifies the name of aDD, FILEDEF, or ISPDEF statement that defines the library in which table-name exists. If this parameter is omitted, the default is ISPTABL. The following return codes are possible: o- Normal completion. 8 Table does not exist in the output library. 12 - Table in use; ENQ failed. 16 - Table output library not allocated. 20 - Severe error. Example: Delete (erase) the table TELBOOK from the table library. ISPEXEC TBERASE TELBOOK CALL ISPLINK('TBERASE', 'TELBOOK '); Chapter 6. Description of Services 163 TBEXIST - Determine if a Row Exists in a Table The TBEXIST service tests for the existence of a specific row in a table with keys. The current contents of the key variables (dialog variables that correspond to keys in the table) are used to search the table for the row. This service is not valid for non-keyed tables and causes the current row pointer (CRP) to be set to the top. ISPEXEC CALL TBEXIST table-name ISPLINK ('TBEXIST', table-name); table-name Specifies the name of the table to be searched. The following return codes are possible: o- Normal completion; the CRP is positioned to the specified row. 8 - Keyed tables: the specified row does not exist; the CRP is set to TOP (zero). Non-keyed tables: service not possible; the CRP is set to TOP. 12 - Table is not open. 20 - Severe error. Example: In the keyed table TELBOOK, test for the existence of a row having a specific key value. ISPEXEC TBEXIST TELBOOK ... if return code = 0 ... then the row exists ... CALL ISPLINK('TBEXIST', 'TELBOOK '); ... if return code = 0 ... then the row exists ... 164 ISPF Dialog Management Services TBGET - Retrieve a Row from a Table The TBGET service fetches a row from the table. For tables with keys, the table is searched for the row to be fetched. The current contents of the key variables (dialog variables that correspond to keys in the table) are used as the search argument. For tables without keys, the row pointed to by the current row pointer (CRP) is fetched. The CRP is always set to point to the row that was fetched. All variables in the row, including keys and extension variables (if any), are stored into the corresponding dialog variables. A list of extension variable names may also be retrieved. ISPEXEC CALL TBGET table-name [SAVENAHE(var-name)] ISPLINK ('TBGET', table-name [,var-name] ); table-name Specifies the name of the table to be read. var-name Specifies the name of a variable into which a list of extension variable names contained in the row will be stored. The list is enclosed in parentheses, and the names within the list are separated by a blank. The following return codes are possible: o- Normal completion. 8 - Keyed tables: The row specified by the value in the key variables does not exist; the CRP is set to TOP (zero). Non-keyed tables: the CRP was at TOP and remains at TOP. 12 - Table is not open. 16 - Variable value has been truncated or insufficient space was provided to return all extension variable names. 20 - Severe error. Chapter 6. Description of Services 165 Example: In the keyed table TELBOOK, for a row having a specific key value, copy values from variables in that row to variables in the function pool having names that match names of the variables in the row. ISPEXEC TBGET TELBOOK CALL ISPLINK('TBGET', 'TELBOOK I); 166 ISPF Dialog Management Services TBMOD - Modify a Row in a Table The TBMOD service unconditionally updates a row in a table. For tables with keys, the table is searched for the row to be updated. The current contents of the key variables (dialog variables that correspond to keys in the table) are used as the search argument. If a match is found, the row is updated. If a match is not found, a TBADD is performed, adding the row to the end of the table. For tables without keys, TBMOD is equivalent to TBADD. The current row pointer (CRP) is always set to point to the row that was updated or added. The current contents of all dialog variables that correspond to columns in the table (keys and names) are saved in the row. Additional variables, not specified when the table was created, may also be saved in the row. These "extension" variables apply only to this row; not the entire table. Whenever the row is updated, the extension variables must be respecified if they are to be rewritten. ISPEXEC CALL TBMOD table-name [SAVE(name-list)] ISPLINK ('TBMOD', table-name [,name-list] ); table-name Specifies the name of the table to be updated. name-list Specifies a list of extension variables, by name, that are to be saved in the row, in addition to the variables specified when the table was created. See the section entitled "Invocation of Services" for specification of name-lists. The following return codes are possible: o- Normal completion. Keyed tables: Existing row updated. Non-keyed tables: New row added to table. 8 - Keyed tables: Keys did not match; new row added to the table. 12 - Table is not open. 20 - Severe error. Chapter 6. Description of Services 167 Example: Update or add a row of variables in the table TELBOOK using values from variables in the function variable pool. ISPEXEC TBMOD TELBOOK CALL ISPLINK('TBMOD', 'TELBOOK '); 168 ISPF Dialog Management Services TBOPEN - Open a Table The TBOPEN reads a permanent table from the table input library into virtual storage, and opens it for processing. TBOPEN should not be issued for temporary tables. The table input library, specified by ddname ISPTLIB, must be preallocated prior to invoking ISPF. ISPTLIB may specify a concatenation of libraries. Refer to "Library Setup" in Chapter 4 for additional information. An ENQ is issued to ensure that no other user is currently accessing the table. The ENQ applies only to the specified table (member) in the table input library - not to the entire library. For the WRITE option, it is an exclusive ENQ that remains in effect until the table is closed. For the NOWRITE option, it is a shared ENQ that remains in effect only during the time that the table is read into storage. ISPEXEC CALL TBOPEN table-name [WRITE I NOWRITE] ISPLINK ('TBOPEN', table-name [, 'WRITE' I 'NOWRITE'] ); table-name Specifies the name of the table to be opened. WRITE Specifies that the table is being accessed for update. The updated table may subsequently be saved on disk by use of the TBSAVE or TBCLOSE service. This option is the default. NOWRITE Specifies read-only access. Upon completion of processing, the virtual storage copy should be deleted by invoking the TBEND or TBCLOSE service. The following return codes are possible: o - Normal completion. 8 - Table does not exist. 12 - ENQ failed; table in use by another user or the current user. 16 - Table input library not allocated. 20 - Severe error. Chapter 6. Description of Services 169 Example: Access (open) the table TELBOOK for updating. ISPEXEC TBOPEN TELBOOK WRITE CALL ISPLINK('TBOPEN', 'TELBOOK' 170 ISPF Dialog Management Services 'WRITE'); TBPUT - Update a Row in a Table The TBPUT service conditionally updates the current row of a table. For tables with keys, the current contents of the key variables (dialog variables that correspond to keys in the table) must match the key of the current row, pointed to by the current row pointer (CRP). Otherwise, the update is not performed. For tables without keys, the row pointed to by the CRP is always updated. If the update was successful, the CRP remains unchanged. It continues to point to the row that was updated. The current contents of all dialog variables that correspond to columns in the table, including key variables, are saved in the row. Additional variables not specified when the table was created, may also be saved in the row. These "extension" variables apply only to the row; not the entire table. Whenever the row is updated, the extension variables must be respecified if they are to be rewritten. ISPEXEC CALL TBPUT table-name [SAVE(name-list)] ISPLINK ('TBPUT', table-name [,name-list] ); table-name Specifies the name of the table to be updated. name-list Specifies a list of extension variables, by name, that are to be saved in the row, in addition to the variables specified when the table was created. See the section entitled "Invocation of Services" for specification of name lists. The following return codes are possible: o- Normal completion. 8 - Keyed tables: The key does not match that of the current row; CRP set to TOP (zero). Non-keyed tables: CRP was at TOP and remains at TOP. 12 - Table is not open. 20 - Severe error. Chapter 6. Description of Services 171 Example: Update a row, in the table TELBOOK, using values from variables in the function variable pool. ISPEXEC TBPUT TELBOOK CALL ISPLINK ('TBPUT', 'TELBOOK I); 172 ISPF Dialog Management Services TBQUERY - Obtain Table Information The TBQUERY service returns information about a specified table, which must be open prior to invoking this service. The number of key fields and their names, as well as the number of all other columns and their names may be obtained. The number of rows and the current row position may also be obtained. All of the parameters except for table-name are optional. If they are all omitted, TBQUERY simply validates the existence of an open table. ISPEXEC TBQUERY table-name [KEYS(key-name)] [NAMES(var-name)] [ROWNUM(rownum-name)] [KEYNUM(keynum-name)] [NAMENUH(namenum-name)] [POSITION(crp-name)] CALL ISPLINK ('TBQUERY', table-name [,key-name] [ , var-name] [ , rownum -name] [ ,keynum -name] [ ,namenum-name] [,crp-name] ); table-name Specifies the name of the table for which information is desired. key-name Specifies the name of a variable into which a list of key variable names contained in the table will be stored. The list will be enclosed in parentheses, and the names within the list will be separated by a blank. var-name Specifies the name of a variable into which a list of variable names in the table, specified with the NAMES keyword when the table Chapter 6. Description of Services 173 was created, will be stored. The list will be enclosed in parentheses, and the names within the list will be separated by a blank. rownum-name Specifies the name of a variable into which the number of rows contained in the table will be stored. keyn um- name Specifies the name of a variable into which the number of key variables contained in the table will be stored. namen um- name Specifies the name of a variable into which the number of variables in the table specified with the NANES keyword when the table was created, will be stored. crp-name Specifies the name of a variable into which the current row pointer (CRP) number for the table will be stored. If the CRP is positioned to TOP, the relative row number returned is zero. The parameters rownum-name, keynum-name, namenum-name, and crp-name all specify the names of variables into which numeric values will be stored. If these are defined variables (in a program module), they may be either full word fixed variables or character string variables. Note: The following return codes are possible: o- Normal completion. 12 - Table is not open. 16 - Not all keys or names returned because insufficient space was provided. 20 - Severe error. Example: For the keyed table TELBOOK: • In dialog variable QKEYS, store the names of key variables • In dialog variable QNANES, store the names of non-key variables • In dialog variable QROWS, store the number of rows ISPEXEC TBQUERY TELBOOK KEYS(QKEYS) NAHES(QNANES) ROWNUN(QROWS) CALL ISPLINK('TBQUERY', 'TELBOOK' 174 ISPF Dialog Management Services 'QKEYS' 'QNAMES' 'QROWS I); TBSARG - Define a Search Argument The TBSARG service establishes a search argument for scanning a table using the TBSCAN service. The search argument is specified in dialog variables that correspond to columns in the table, including key variables. A value of null for one of the dialog variables means that the corresponding table variable is not to be examined during the search. Generally, TBSARG is used prior to TBSCAN or TBDISPL operations to establish search arguments for these operations. To set up a search argument, set table variables in the function pool to nulls by using TBVCLEAR. Next, set a value in each variable that is to be part of the search argument. Then, issue TBSARG to establish this variable(s) as the search argument to be used in subsequently requested TBSCAN or TBDISPL operations. Extension variables, only, may be included in the search argument by specifying their names in the name-list parameter. The values of these variables become part of the search argument. A null value in an extension variable is a valid search argument and requires a corresponding null variable in the matching row. A search argument of the form AAA* means that only the characters up to the ",';," are compared. This is called a generic search argument. A generic search argument is specified by placing an asterisk in the last non-blank position of the argument. Asterisks imbedded in the argument are treated as data. For example, to perform a generic search for a row value of DATA*12, the generic search argument is: DATA";'12,';, The first asterisk is part of the search argument. The second asterisk designates the argument to be a generic search argument. Note: In a CLIST, the following technique may be used to set a variable to a literal value that ends with an asterisk: SET &X = AAA&STR C"'") The position of the current row pointer (CRP) is not affected by the TBSARG service. TBSARG replaces all previously set search arguments for the specified table. Chapter 6. Description of Services 175 ISPEXEC CALL TBSARG table-name [ARGLIST(name-list)] ISPLINK ('TBSARG', table-name [,name-list] ); table-name Specifies the name of the table for which an argument is to be established. name-list Specifies a list of extension variables, by name, whose values are to be used as part of the search argument. See the section entitled "Invocation of Services" for specification of name lists. The following return codes are possible: o - Normal completion. 8 - All column variables are null and the name-list parameter was not specified; no argument established. 12 - Table is not open. 20 - Severe error. Example: Establish a search argument to be used by a TBSCAN operation of the table TELBOOK. Assume that the argument values are contained in function pool variables whose names are the same as table variables in TELBOOK. ISPEXEC TBSARG TELBOOK CALL ISPLINK('TBSARG', 'TELBOOK I); 176 ISPF Dialog Management Services TBSA VE - Save a Table The TBSAVE service writes the specified table from virtual storage to the table output library. The table output library must be allocated to a ddname of ISPTABL before invoking this service. The table must be open in WRITE mode. Optionally, the table can be stored under a different name in the output library. TBSAVE does not delete the virtual storage copy of the table; the table is still open and available for further processing. Table output can be directed to a table output library other than the library specified on the table output ISPTABL DD, FILEDEF, or ISPDEF statement. (The library to be used must be allocated before table services receives control.) Thus, an application can update a specific table library. This is particularly useful for applications that need to maintain a common set of tables containing their data. ISPEXEC TBSAVE table-name [NEWCOPYIREPLCOPY] [NAHE(alt-name)] [PAD(percentage)] [LIBRARY(library-name)] CALL ISPLINK ('TBSAVE', table-name, [, 'NEWCOPY' I 'REPLCOPY'] [ ,al t-name] [ ,percentage] [,library-name]); table-name Specifies the name of the table to be saved. NEWCOPY Specifies that the table is to be written at the end of the output library, regardless of whether an update in place would have been successful. This insures that the original copy of the table is not destroyed before a replacement copy has been written successfully. Chapter 6. Description of Services 177 REPLCOPY Specifies that the table is to be rewritten in place in the output library. If the existing member is too small to complete the update in place successfully, or if a member of the same name does not exist in the library, the complete table will be written at the end of the output library. If both the NEWCOPY and REPLCOPY keywords are omitted, a comparison is made between the virtual storage size of the table and the external size in the table output library. If there is insufficient storage to write the table in-place, it is written at the end of the table output library. alt-name Specifies an alternate name for the table. The table will be stored in the output library with the alternate name. If another table already exists in the output library with that name, it will be replaced. If the table being saved exists in the output library with the original name, that copy will remain unchanged. percentage Specifies the percentage of padding of the table. The padding is added only when the table is written as a not increase the table size when an space, based on the total size to the total size of the table new copy. This parameter does update in place is performed. Padding permits future updating in place, even when the table has expanded in size. Should the table expand beyond the padding space, the table is written at the end of the table output library instead of updated in place. This parameter must have an unsigned integer value. For call invocation, it must be a fullword fixed binary integer. The default value for this parameter is zero. lib r a ry - n arne Specifies the name of aDD, FILEDEF, or ISPDEF statement that defines the output library in which table-name is to be saved. this parameter is omitted, the default is ISPTABL. The following return codes are possible: 0 - Normal completion. 12 - Table is not open. 16 - Table output library not allocated. 20 178 - Severe error. ISPF Dialog Management Services If Example: Write a table TELBOOK, previously opened and currently in virtual storage, to the table library. Retain the copy in virtual storage for further processing (do not close the table). ISPEXEC TBSAVE TELBOOK CALL ISPLINK('TBSAVE', 'TELBOOK I); Chapter 6. Description of Services 179 TBSCAN - Search A Table The TBSCAN service searches a table for a row with values that match an argument list. The argument list may be established by use of the TBSARG service, or specified in the name-list for TBSCAN. The search is always in a forward direction, starting with the row after the current row, and continuing to the end of the table. If a match is . found, the row is retrieved and the current row pointer (CRP) is set to that row. All variables in the row, including keys and extension variables (if any), are stored into the corresponding dialog variables. A list of extension variable names may also be retrieved. Use of the name-list parameter is optional. If specified, it overrides the search argument set by the TBSARG service for this search only. The values of all variables specified in the name-list parameter become part of the search argument. A value of the form AAA* means that only the characters up to the ",;,," are compared. This is called a generic search argument. A generic search argument is specified by placing an asterisk in the last non-blank position of the argument. Asterisks imbedded in the argument are treated as data. For example, to perform a generic search for a row value of DATA*12, the generic search argument is: The first asterisk is part of the search argument. The second asterisk designates the argument to be a generic search argument. Note: In a CLIST, the following technique may be used to set a variable to a literal value that ends with an asterisk: SET &X = AAA&STR(';',) A null value requires a corresponding null value in the matching row. If the name-list parameter is omitted, a search argument must have been established by a previous TBSARG command. Otherwise, a severe error occurs. ISPEXEC TBSCAN table-name [ARGLIST(name-list)] [SAVENAHE(var-name)] CALL ISPLINK ('TBSCAN', table-name [,name-list] [ , var-name] ); 180 ISPF Dialog Management Services table-name Specifies the name of the table to be searched. name-list Specifies a list of variables, by name, whose values are to be used as the search argument. See the section entitled "Invocation of Services" for specification of name lists. var-name Specifies the name of a variable into which a list of extension variable names contained in the row will be stored. The list will be enclosed in parentheses, and the names within the list will be separated by a blank. The following return codes are possible: ° - Normal completion. 8 - Row does not exist, no match found; CRP set to TOP (zero). 12 - Table is not open. 16 - Variable value has been truncated or insufficient space provided to return all extension variable names. 20 - Severe error. Example: For the table TELBOOK: • Establish a search argument to be used by a TBSCAN operation of table TELBOOK. ISPEXEC TBSARG TELBOOK CALL ISPLINKC'TBSARG', 'TELBOOK I); • Hove table TELBOOK's CRP to the row that fulfills the search argument as specified in the TBSARG operation, above. Copy values from variables in that row to function pool variables whose names match those of the table variables. ISPEXEC TBSCAN TELBOOK CALL ISPLINKC'TBSCAN', 'TELBOOK I); If the return code is 0, the row was found and values were copied from the row variables to function pool variables. Chapter 6. Description of Services 181 TBSKIP - Move the Row Pointer The TBSKIP service moves the current row pointer (CRP) of a table forward or backward by a specified number of rows, and then retrieves the row to which it is pointing. All variables in the row, including keys and extension variables (if any), are stored into the corresponding dialog variables. A list of extension variable names may also be retrieved. ISPEXEC TBSKIP table-name [NUMBER(number)] [SAVENAME(var-name)] CALL ISPLINK ('TBSKIP', table-name [,number] [ , var-name] ); table-name Specifies the name of the table to be used. number Specifies the direction and number of rows to move the CRP. This parameter must be a positive or negative integer. A positive integer moves the CRP toward the bottom of the table; a negative integer moves it toward the top. Zero is an allowable value that results in retrieving the current row. For call invocation, this parameter must be a fullword fixed binary number. If this parameter is omitted, the default value is 1. var-name Specifies the name of a variable into which a list of extension variable names contained in the row is stored. The list is enclosed in parentheses, and the names within the list are separated by a blank. 182 ISPF Dialog Management Services The following return codes are possible: o - Normal completion. 8 - CRP would have gone beyond the number of rows in the table (this includes a table empty condition); CRP set to TOP (zero). 12 Table is not open. 16 - Variable value has been truncated or insufficient space provided to return all extension variable names. 20 - Severe error. Example: In the table TELBOOK, move the current row pointer (CRP) to the next row. After the move, copy values from variables in that row to variables in the function variable pool having names that are the same as the names of the variables in the row. ISPEXEC TBSKIP TELBOOK CALL ISPLINK('TBSKIP', 'TELBOOK I); Chapter 6. Description of Services 183 TBTOP - Set the Row Pointer to the Top The TBTOP service sets the current row pointer (CRP) to the top of a table, ahead of the first row. ISPEXEC CALL TBTOP table-name ISPLINK (tTBTOpt, table-name); table-name Specifies the name of the table to be used. The following return codes are possible: o - Normal completion. 12 - Table is not open. 20 - Severe error. Example: For the table TELBOOK, move the current row pointer (CRP) to the row immediately before its first row. ISPEXEC TBTOP TELBOOK CALL ISPLINKCtTBTOP', 'TELBOOK t); 184 ISPF Dialog Management Services TBVCLEAR - Clear Variables The TBVCLEAR service sets dialog variables to nulls. All dialog variables that correspond to columns in the table (specified when the table was created) are cleared. The contents of the table and the position of the current row pointer (CRP) are not changed by this service. ISPEXEC CALL TBVCLEAR table-name ISPLINK ('TBVCLEAR', table-name); table-name Specifies the name of the table to be used. The following return codes are possible: o- Normal completion. 12 - Table is not open. 20 - Severe error. Example: Clear dialog variables associated with the table TELBOOK to nulls. ISPEXEC TBVCLEAR TELBOOK CALL ISPLINK('TBVCLEAR', 'TELBOOK I); Chapter 6. Description of Services 185 VCOpy - Create a Copy of a Variable This service is used only with call invocations. The VCOpy service allows a program module to obtain a copy of dialog variables. The copied data is in character string format, and may be accessed in either "locate" or "move" mode. The variable names may be specified as a single 8-character value, a list enclosed in parentheses, or a name-list strueture. IIi LOCATE mode -an array of pointers must be supplieo to receive the data address. An array of ltngths must be supplied to receive the data lengths. The VCOPY service automatically allocates storage for the data, and returns the address and length of each variable to the caller. In MOVE mode, an array of lengths must be supplied on input; its values map the structured area which must be supplied to receive the data. The caller first allocates storage for the data, and then invokes VCOPY, passing the address and length of the storage area into which the data is to be copied. The length array is then set with the data lengths. As with other ISPF services, the search for each variable starts with the defined area of the function pool, followed by the function's implicit area, followed by the shared variable pool, and then the profile pool. If a variable of the specified name is not found, VCOPY issues a return code of 8. ISPEXEC *This service does not apply to command procedures* CALL ISPLINK ('VCOPY', name-list, length-array, value-array [,'LOCATE'I'MOVE'] ); name-list Specifies an area containing the names of dialog variables to be copied. The standard name-list format is used. length-array Specifies an array of fullword fields containing the lengths of the data areas for the dialog variable values. (The array may consist of a single item.) In move mode, each element of the array is set by the caller to the output area size. In move mode or locate mode, each element of the array is set by the service to the number of bytes of data for the corresponding variable. 186 ISPF Dialog Management Services value-array In locate mode, specifies the name of an array that contains pointers to fields into which the copied variables are placed. (The array may consist of a single item.) In move mode, specifies the name of a structure that is mapped by the length array. LOCATE Specifies locate mode. The address of the copied value is returned to the user invoking the service. MOVE Specifies move mode. The copied value is returned to the user invoking the service. The following return codes are possible: o- Normal completion. 8 - One or more variables do not exist. 16 - Truncation has occurred during data movement (move mode only). 20 - Severe error. Example: Copy the value in dialog variable QROWS to a field named QROWSDATA in this PL/I program module. Perform the copy in move mode (as opposed to locate mode). Variable L8 contains a value of 8. CALL ISPLINK('VCOPY', 'QROWS ',L8, QROWSDATA, 'MOVE'); ~. 'i La . ~ 11 __ ,.. _.. _.,,, .. ..•. /J' P Chapter 6. Description of Services 187 VDEFINE - Define Function Variables The VDEFINE service is used only with call invocations. The VDEFINE service is invoked by a program to give ISPF the ability to use dialog variable names to directly access variables within the particular program module. In the call to VDEFINE, the program specifies the format (character string, fixed binary, bit string, hex or user-defined) and length of the variables. (As described in "The Function Pool for Programs" in Chapter 2, stacking of definitions for a particular dialog variable may be achieved by successive calls to VDEFINE for that dialog variable.) When the VDEFINE service is called, ISPF enters the dialog variable names into the function pool for the dialog function currently in control. Dialog variables entered in the function pool by use of the VDEFINE service are called defined variables to distinguish them from implicit variables in the function pool. (Refer to "The Function Pool for Programs" in Chapter 2, for a further discussion of defined and implicit variables.) A list of dialog variables can be defined with a single call to the VDEFINE service. The program variables that correspond to the dialog variables defined to ISPF by VDEFINE must have the same format and length and be in contiguous locations or defined as an array or structure within the program. The program variable name passed to ISPF must be the name of the first variable as defined in the program, the name of the array, or the name of the structure. The format and length specified in the call to VDEFINE are the format and length of each individual variable. EXIT ROUTINE: The dialog writer may specify an exit routine to define dialog variables when program variables are in non-standard formats (formats other than CHAR, FIXED, BIT, or HEX). When a variable is then accessed by any ISPF service, the exit routine is invoked to perform any conversion necessary between the program variable's format and the character string format required for a dialog variable. Appendix F, "VDEFINE Exit Routine," describes invocation, parameters used, and return codes required for the exit routine. ISPEXEC *This service does not apply to command procedures* CALL ISPLINK ('VDEFINE', name-list, variable, format, length [,options-list] [,user-data]); name-list Specifies the symbolic name or name-list to be used by ISPF when ~referencing the specified variables. 188 ISPF Dialog Management Services An asterisk specifies (in conjunction with the USER format keyword described below) that the exit routine (whose address is specified in the user-data parameter) is to be called for variables not found in the function pool. variable Specifies the variable whose storage is to be used. If a name list is passed, this storage contains an array of variables. The number of names in the list determines the dimension of the array. format Specifies the data conversIon format. The format parameters are: CHAR Character string. Within the variable, the data is left-justified and padded on the right with blanks. the default. This is No data conversion is performed when fetching and storing a CHAR variable, nor is there any checking for valid characters. Note: In PL/I, a character string to be used as a dialog variable must be declared as fixed length, because VDEFINE cannot distinguish varying length PL/I strings. FIXED Fixed binary integer, represented by the characters 0-9. Fixed variables that have a length of 4 bytes (fullword) are treated as signed, represented by the absence or presence of a leading minus sign (-). They may also have a null value, which is stored as the maximum negative number (X'80000000'). Fixed variables that have a length of less than 4 bytes are treated as unsigned. For these variables, a null value is stored as binary zeros, and cannot be distinguished from a zero value. BIT Bit string, represented by the characters 0 or 1. Within the variable, the data is left-justified and padded on the right with binary zeros. HEX Bit string, represented by the characters 0-9 and A-F. Within the variable, the data is left-justified and padded on the right with binary zeros. USER Specifies that the format is to be determined by the user. Any conversion format is allowed. A conversion routine must Chapter 6. Description of Services 189 be specified and is specified by naming it in the user-data parameter, described below. length Specifies the length of the variable storage, in bytes. This parameter must be a full word binary integer. The maximum length for a FIXED variable is 4 bytes. The maximum length for other types of variables is 32,767 bytes. options-list Specifies initialization of the defined storage and/or retention of trailing blanks in variable data. The options-list parameters are COpy and NOBSCAN (both may be specified and are specified in the name-list format): COpy Specifies that any dialog variable with the same name may be used to initialize the defined storage. The variable pools are searched in the standard (function pool, shared pool, profile pool) sequence. NOBSCAN Specifies that any trailing blanks in the variables are to remain in the variables. user-data Specifies the storage location that contains the entry point address of the conversion subroutine followed by any other data that should be passed to the routine. This parameter is specified whenever the USER parameter is specified. The following return codes are possible: o - Normal completion. B - Variable not found. 16 - Data truncation occurred. 20 - Severe error. Example: Establish ISPF accessibility, using the name ZMSGNAME, to a field named ZERRMSG in this PL/I module. The field is a character string and is B bytes long. Program variable LB contains a value of B. CALL ISPLINK(' VDEFINE', 'ZMSGNAME', ZERRMSG, 'CHAR', LB); 190 ISPF Dialog Management Services VDELETE - Remove a Definition of Function Variables The VDELETE service is used only with the call invocations. The VDELETE service removes variable names, previously defined by the program module, from the function pool. This service is the opposite of VDEFINE. ISPEXEC *This service does not apply to command procedures* CALL ISPLINK ('VDELETE', name-list); name-list Specifies the dialog variable names that are to be removed from the function pool, or contains an asterisk. An asterisk (*) specifies removal, from the function pool, of all dialog variable names previously defined by the program module, including exit routine definitions. The following return codes are possible: o - Normal completion. 8 - At least one variable not found. 16 - Data truncation occurred. 20 - Severe error. Example: Remove ISPF accessibility to PL/I program variable ZERRMSG that was previously established by VDEFINE to be accessible using dialog variable name ZMSGNAME. CALL ISPLINK ('VDELETE', 'ZMSGNAME'); Chapter 6. Description of Services 191 VGET - Retrieve Variables from a Pool or Profile The VGET variable with the updated; service copies values from dialog variable(s) in the shared pool or the application profile to the function pool variables same names. If a named function variable already exists, it is if not, it is created and then updated. ISPEXEC VGET CALL name-list [ASISISHAREDIPROFILE] ISPLINK ('VGET', name-list [, 'ASIS' I 'SHARED' I 'PROFILE'] ); name-list Specifies the names of one or more dialog variables whose values are to be copied from the shared or profile pool to the function ~GvPOOI. The names are passed in the standard name-list format. See \'J "Invocation of Services" for specification of name lists. -- \' ASIS -- -- Specifies that the variables are to be copied from the shared variable pool, or, if not found there, from the profile pool. SHARED Specifies that the variables are to be copied from the shared variable pool. PROFILE Specifies that the variables are to be copied from the application profile. A shared pool variable with the same name is deleted, even if it is not found in the profile pool. The following return codes are possible: o- Normal completion. 8 - Variable not found. 16 - Translation error or truncation occurred during data movement. 20 - Severe error. Example: In MVS or VMjSP, in a CLIST or EXEC, copy from the shared pool to the function pool, values for variables whose names are listed in variable VARLIST. ISPEXEC VGET (&VARLIST ) SHARED 192 ISPF Dialog Management Services In a PL/I program, VARLIST contains a list of variable names. Copy values for these variables, from the shared pool to the function pool. ISPLINK('VGET' VARLIST 'SHARED I); Chapter 6. Description of Services 193 VPUT - Update Variables in a Pool or Profile The VPUT service copies values from dialog variables in the function pool to the shared pool or to the application profile. If a variable of the same name already exists in the shared pool or the profile, it is updated. If it does not exist, it is created and then it is updated. ISPEXEC CALL VPUT name-list [ASIS I SHARED I PROFILE] ISPLINK ('VPUT', name-list [, 'ASIS' I 'SHARED' I 'PROFILE'] ); name-list Specifies the names of one or more dialog variables whose values are to be copied from the function pool to the shared or profile pool. See "Invocation of Services" for specification of name lists. ASIS Specifies that the variables are to be copied to the pool that they already exist in or that they are to be copied to the shared pool, if they are new. If the variables exist in both the shared and profile pools, they are copied to the shared pool only. SHARED Specifies that the variables are to be copied to the shared variable pool. PROFILE Specifies that the variables are to be copied to the application profile. Any shared pool variable(s) of the same name(s) are deleted. The following return codes are possible: o- Normal completion. 8 - Variable not found. 16 Truncation has occurred while copying variables to the application profile. 20 - Severe error. 194 ISPF Dialog Management Services Example: In HVS orVH/SP, in a CLIST or EXEC, write variables, the names of which are listed in the variable VPUTLIST, from the function variable pool to the shared variable . . . p~~_:.._. '. e1 blvv)'\<' ISPEXEC VPUT (&VPUTLIST~ SHARED------ rot>,A!'( In a PL/I program, write variables, the names of which are listed in program variable VPUTLIST, from the function variable pool to the shared variable pool. ISPLINK ('VPUT' VPUTLIST 'SHARED I); Chapter 6. Description of Services 195 VREPLACE - Replace a Variable The VREPLACE service is used only with call invocations. The VREPLACE service allows a program module to update the contents of a variable in the function pool. The variable names may be specified as single 8-character values, a list enclosed in parentheses, or a name-list structure. An array of lengths must be supplied on input to map the area that contains the data for each of the variables. The variable to be updated can be the function's own defined variable (if it exists) or an implicit variable associated with the function. If the named variable does not exist, it is created as an implicit function variable. ISPEXEC *This service does not apply to command procedures* CALL ISPLINK ('VREPLACE', name-list, lengths, values); name-list Specifies the names of the dialog variables whose values are to to be updated. The standard name-list format is used. lengths Specifies an array of values glvlng, for each corresponding variable in the name-list, the number of bytes of the data to be used in the updating. Each field in the array must be a fullword binary integer. values Specifies (in the buffer mapped by the length array) the update data to be used in the updating. The following return codes are possible: o - Normal completion. 16 - Truncation has occurred during data movement. 20 - Severe error. 196 ISPF Dialog Management Services Example: Copy the value of a field named QROWSDATAZ from this PL/I program module to the function variable named QROWS. Before the copy operation, if no variable with this name is found in the function pool, create one giving it the name QROWS. Program variable L8 contains a value of 8. CALL ISPLINK('VREPLACE', 'QROWS " L8, QROWSDATAZ); \(1 t1,.,) d~( ~ ) Chapter 6. Description of Services 197 VRESET - Reset Function Variables The VRESET service is used only with call invocations. The VRESET service allows a program module to reset its function pool variables. Any defined variables are removed from the function pool (as though VDELETEs had been done); any implicit variables are also deleted. ISPEXEC *This service does not apply to command procedures* CALL ISPLINK ('VRESET'); The following return codes are possible: o- Normal completion. 20 - Severe error. Example: Remove ISPF accessibility to all PL/I program variables. CALL ISPLINK('VRESET'); 198 ISPF Dialog Management Services CHAPTER 7. PANEL AND MESSAGE DEFINITION AND SKELETON FORMATS This chapter describes the syntax for defining panels, messages, and file tailoring skeletons. If ISPF/PDF is installed, consider using its modeling facilities to assist in entering panel definitions (see ISPF/PDF Reference). PANEL DEFINITIONS ISPF panel definitions are stored in a panel library and are displayed by means of the SELECT, DISPLAY, or TBDISPL service. Each panel definition is referenced by its name, which is the same as the member name in the library. Panel definitions are created or changed by editing directly into the panel library; no compile or preprocessing step is required. Each panel definition consists of up to five sections: 1. Attribute section (optional) - defines the special characters that are used in the body of the panel definition to represent attribute (start of field) bytes. Default attribute characters are provided, but may be overridden. 2. Body (required) - defines the format of the panel as seen by the user, and defines the name of each variable field on the panel. 3. Model section (table display panels only) - defines the format of each line of scrollable data. This section is required for table display panels, and is invalid for other types of panels. 4. Initialization section (optional) - specifies the initial processing that is to occur prior to displaying the panel. This section is typically used to define how variables are to be initialized. 5. Processing section (optional) - specifies processing that is to occur after the panel has been displayed. This section is typically used to define how variables are to be verified and translated. The panel definition is always ended with an )END statement, regardless of the sections included in the definition. Chapter 7. Panel and Message Definition and Skeleton Formats 199 The sections must appear in the order listed above. delineated by the following statements: )ATTR )BODY )MODEL )INIT )PROC )END - Th~ sections are start of attribute section start of body section start of model section (applies to table display panels only) start of initialization section start of processing section end of panel definition The discussion of panels is arranged as follows: • The formatting guidelines, which indicate the placement of panel elements. • A discussion of each section of the panel, in the order in which they appear on the panel. (The model section is described with table display panels, since it is unique to that type of panel.) • A discussion of how panel processing is done. • The rules and restrictions regarding the syntax of statements, variable names, and keywords. • A discussion of special panel types: menus, help/tutorials, and table displays. Formatting Guidelines This section presents general guidelines for panel design. Generally, in any panel definition, the first three displayable lines include system-defined (default) areas for the display of messages, a command/option field, and a scroll field. Location of the message areas and command field may be overridden, see "Panel Body Section." Following are suggestions for formatting the first three lines of a panel body: line 1 Title line 2 Command/Option Short Message I IScroll I line 3 Long Message Line 1 should contain a title indicating the function being performed or, where appropriate, should display information critical to that function. The right-hand 24 characters of line 1 should not contain 200 ISPF Dialog Management Services critical information if short messages are to be used in the default short message area. If short messages are used, they should provide a brief indication of: • Successful completion of a processing function, or • Error conditions (accompanied by audible alarm). Short messages temporarily overlay whatever information is currently displayed in the right-hand end of the first line, and are removed from display on the next interaction. (The original information is redisplayed when the message is removed.) Short messages should be used either consistently throughout the application, or not at all. For table display, the short message area contains an indication of current row/column positions, except when overlaid by a function-requested message. The row/column indication is automatically generated by the TBDISPL service, and replaces whatever was in the panel definition in that area. Line 2 generally contains the command field. This same field should be used for option entry on menus. The command field, when the first input field on the panel or when identified by using keyword CMD in the panel body section, may be named using any valid variable name. However, the name ZCMD is generally used. (Cursor placement while viewing a panel differs between use of the name ZCMD and other names. When ZCMD is used and cursor placement is not explicitly specified, ISPF will skip over the command field - when blank - to place the cursor on a following input field. When a name other than ZCMD is used, a blank command field is not skipped over when placing the cursor during display.) For table display, edit, and browse panels, the scroll field should be at the right-hand end of line 2, following the command/option area. The scroll field must be the second input field in the panel definition, and must be four characters in length. A scroll field is not meaningful for other types of panels, and should be omitted from them. Line 3 should generally be left blank, so that long messages do not overlay any significant information. An exception to this rule might be made in the case of table display panels, to allow as much scrollable data as possible to fit on the screen. Refer to "Panel Body Section" for a discussion of how to specify the information in the first three lines of the panel. Note: The command input field should not be located on line 3, the line on which long messages display, because when display of a long messag~ is superimposed on the command line, results are unpredictable. Chapter 7. Panel and Message Definition and Skeleton Formats 201 Following are additional suggestions for designing panels: • Avoid overly cluttered panels. Split up "busy" panels into two or more simple panels that have less information and are easier to read. • Do not use the last available line in a panel body. For example, if the dialog may be used on 24-line terminals, limit the body to 23 lines or less. The reason for this is that in split screen mode the maximum length of a logical screen is one less than the length of the physical screen. • Place important input fields near the top of the panel and less important fields (especially optional input fields) further down, for two reasons: It is easier to move the cursor down than up, and in split screen mode the bottom of the panel may not be visible unless the user repositions the split line. Note: Place the command line near the top of the panel. If the command line is near the bottom, and the end user enters split screen mode, the command line may not be visible on the screen and, therefore, the user may not be able to continue processing the dialog. • Where practical, align fields vertically on a panel, especially input fields. Group related input fields under a common heading. Minimize use of multiple input fields on the same line, so that the NEW LINE key may be used to skip from one input field to the next. • Use visual signals to indicate particular types of fields, such as arrows to indicate input fields, and colons to indicate variable information that is protected. As examples: FILE NAME ===> (arrow signals an input field) EMPLOYEE SERIAL: 123456 (colon signals a protected field) In any case, be consistent. Arrows, colons, and other visual signals are very confusing if used inconsistently. • Use highlighting sparingly. Too many intensified fields result in visual confusion. Again, be consistent. Highlight the same type of information on all panels. Syntax Rules and Restrictions This section describes the syntax to be used in panel definition statements. 202 ISPF Dialog Management Services General Rules The following general syntax rules apply: • All statements, variable names,and keywords must be coded in uppercase. Values that are interpreted by the DISPLAY service, such as INTENS(LOW) , must also be in uppercase. Values assigned to dialog variables and text in the panel body need not be in uppercase. • Input and output fields defined in the body section may not exceed 255 bytes in length. • All header statements, such as ) ATTR , )BODY, etc., must be coded exactly as shown, starting in column 1. Statements following the header need not begin in column 1. • If a section is omitted, the corresponding header statement is also omitted. The )BODY header may be omitted if the entire attribute section is omitted and there is no need to override the default attribute bytes by using a keyword on the )BODY statement. • An )END statement is required as the last line of each panel definition. Blanks and Comments The following rules apply to the use of blanks and comment statements: • In the attribute section, the attribute character and all keywords that follow must be separated by one or more blanks. At least one keyword must follow the attribute character on the same line. Keywords may be continued on succeeding lines. • In the initialization and processing sections, mUltiple statements may occur on the same line, separated by one or more blanks. Statements may not be split between lines, except that listed items within parentheses may be continued on succeeding lines (see below). • One or more blanks may optionally occur on either side of an equal sign (=) or a not-equal operator (,=). Embedded blanks may not occur in the not-equal operator: ", =" is invalid. • One or more blanks may optionally occur on either side of parentheses (except that a blank may not follow the right parenthesis that begins a header statement). The following are all equivalent: INTENS(LOW) INTENS (LOW) INTENS ( LOW ) Chapter 7. Panel and Message Definition and Skeleton Formats 203 One or more blanks must follow the closing parenthesis to separate it from the next statement or keyword. • Comments may be coded in the attribute, initialization, and processing sections. Comments must be enclosed with the comment delimiters, /* and */. The comment must be the last item on the line (i.e., additional keywords or statements may not follow the comment on the same line). A comment may not be continued on the next line. For multi-line comments, the comment delimiters must be used on each line. • In NVS and VH/SP, blank lines may occur anywhere within the attribute, initialization, and processing sections. • In NVS, VN/SP, and VSE/AF 2.1, you can use blank lines in a panel definition. In VSE/AF 1.3.5, however, blank lines cannot be used in a panel definition. For VSE/AF 1.3.5, you can cause a blank line to appear in a panel display by providing, in the panel definition, a line that is blank except for a field delimiter character, such as "+", in the first position. Lists The following rules apply to items in lists: • Listed items within parentheses may be separated by commas or one or more blanks. This includes paired values within a TRANS statement. For example, the following are equivalent: TRANS (&XYZ 1,A 2,B 3,C NSG=xxxx) TRANS (&XYZ 1 A 2 B 3 C tZCND % %ENPLOYEE SERIAL: &EMPSER + + ~YPE OF CHANGE%===> TYPECHG + (NEW, UPDATE, OR DELETE) + + ENPLOYEE NAME: + LAST ~~===> LNAME + + FIRST ~~===> FNAME + + INITIAL%===> 1+ + + HOME ADDRESS: + LINE 1 ~~===> ADDRI + LINE 2 %===> ADDR2 + + + LINE 3 %===> ADDR3 + + LINE 4 %===> ADDR4 + + + HOME PHONE: + AREA CODE %===>_PHA+ + LOCAL NUMBER%===>_PHNUM + + )END Figure 24. 212 Sample Panel Definition ISPF Dialog Management Services + ---------------------------CO~mAND ===> ENPLOYEE RECORDS ------------------------------ EMPLOYEE SERIAL: 123456 TYPE OF CHANGE ===> (NEW, UPDATE, OR DELETE) EMPLOYEE NAME: LAST ===> FIRST =::.:=> INITIAL ===> ADDRE SS : LINE 1 ===> LINE 2 ===> LINE 3 ===> LINE 4 ===> HO~IE HOME PHONE: AREA CODE LOCAL NUMBER Figure 25. ===> ===> Sample Panel - When Displayed Model Section The model section is used only with table display panels and defines how each table row is to be formatted. Because the model section is unique to table display panels, it is discussed in "Table Display Panels." I nitialization and Processing Sections The initialization and processing sections are discussed together because the same statements may be used in both, although typically certain statements are used only in the initialization section while others appear only in the processing section. The initialization section specifies the initial processing that is to occur prior to displaying the panel. It begins with the )INIT header statement and ends with either the )PROC or )END header statement. Chapter 7. Panel and Message Definition and Skeleton Formats 213 The variables that are displayed in the panel body reflect the contents of the corresponding dialog variables after the )INIT section has been processed, just prior to display of the panel. The input fields are automatically stored into the corresponding dialog variables immediately following display and prior to processing the )PROC section. The processing section specifies additional processing that is to occur after the panel has been displayed. It begins with the )PROC header statement and ends with the )END statement. Statement Formats The same statements may be used in the initialization and processing sections, although certain statements are typically used only in the initialization section and others only in the processing section. There are four types of statements that may be used in these sections: assignment, IF, VER (verify), and VPUT. Two built-in functions may also be used: TRUNC (truncate) and TRANS (translate). These functions may appear on the right-hand side of an assignment statement. The following types of data references may appear within these statements: • Dialog variable - a name preceded by an ampersand (&). • Control variable - a name preceded by a period (.) -- see the section entitled "Control Variables." • Literal value - a character string or period. A literal value may be must be enclosed in apostrophes if or a period, or if it contains any characters: Blank < ( + I ) ; ~ - > : not beginning with an ampersand enclosed in apostrophes ('). It it begins with a single ampersand of the following special = A literal may contain substitutable variables, consisting of a dialog variable name preceded by an ampersand (&). The name and ampersand are replaced with the value of the variable prior to processing the statement. A double ampersand may be used to specify a literal character string starting with (or containing) an ampersand. See "Syntax Rules and Restrictions." In the description of statements and built-in functions that f~llows, a "variable" may be either a dialog variable or a control variable. A "value" may be either type of variable or a literal value. variable = value This is an assignment statement. Assignment statements may be used in the )INIT section to set the contents of dialog variables prior to the automatic initialization of variables in the panel body. Assignment 214 ISPF Dialog Management Services statements may also be used in the )PROC section, typically to set the contents of dialog variables that do not correspond to fields in the panel body. For example: &A = ' , &COUNT = 5 = "'SYS1.MACLIB'" &DSN &BB = &C The first example sets variable A to blanks. The second example sets variable COUNT to a literal character string (the number 5). The third eXdmple sets variable "DSN to a character string that begins and ends with an apostrophe (see "Syntax Rules and Restrictions"). The fourth example sets variable BB to the contents of anothe variable, C. The literal ' , represents a single blank. To define a null, you must use the &Z literal. TRUNC (variable, value) 1 4:)~ r ;' 2 0 ';) This built-in function may occur on the right side of an assignment statement to cause truncation. The first parameter inside the parentheses specifies the variable to be truncated. The value may be a numeric quantity indicating the length of the truncated result, or any special character indicating truncation at the first occurrence of that character. For example: &A = TRUNC (&XYZ,3) &INTEG = TRUNC (&NUMB,'. ') In the first example, the contents of variable XYZ are truncated to a length of three characters and stored in variable A. (Variable XYZ remains unchanged.) In the second example, the contents of variable NUMB are truncated at the first occurrence of a period and stored in variable INTEG. (Variable NUMB remains unchanged.) If NUMB contains "3.2.4", INTEG contains "3". The control variable .TRAIL contains the "remainder" following a TRUNC operation. When the contents of a variable are truncated to a specified length, all remaining characters are stored in .TRAIL. If the contents of a variable are truncated at the first occurrence of a special character, the remaining characters following the special character are stored in .TRAIL. The special character, itself, is not stored nor is it retained in ZCMD, the command field. For example: )PROC &AAA = TRUNC (&ZCMD, '. ') &BBB = .TRAIL If variable ZCMD contains "9.4.6", variable AAA contains "9" and the .TRAIL control variable and the variable BBB contains "4.6". TRANS (variable value, value ... [MSG=value] ) Chapter 7. Panel and Message Definition and Skeleton Formats 215 .."......-'-1-.1 ..::-' l<"~ ""..Y., .... ""'~>\~M"'«"""''''''''" ~"'h" """ ~ ...'''. ."~., ""~"'." ....,., "" , . ",.,,""'P '''-", / /./1//" f 'I / I i' ( This built-in function may occur on"he right side of an assignment statement to cause trans lation. The(r-rrst pararne~~ ins ide the parentheses specifies th:"X,~~£lJ~~,,_.t.Q:!I!:::!!l1'i'rS"t·a:t·ea. This is followed by paired values. The("first value in each pa'"1:) indicates a possible ;~! U:x~!p ~:~ variab Ie, 7t,secc;na(~nifrcates the trans Iated result. &REPL = TRANS (&NOD Y, YES N, NO) ~r,~'--~--~'" )\ ~~ ~~) value of variable rnTIr is translated, and the result is stored in variable REPL. (Variable NOD remains unchanged.) The translation is as follows: If the current value of NOD is "Y", it is translated to "YES". If the current value is "N", it is translated to "NO". If the current value is anything else (neither "y" nor "N"), it is translated to blank. ----~~~ffrrent The anything-else condition may be specified by using an asterisk in the last set of paired values. For example: &REPL = TRANS (&NOD &REPL = TRANS (&NOD ~'. , , ? ' ) In the first example, if the current value of MOD does not match any of the listed values, a question mark is stored in variable REPL. In the second example, if the current value of MOD does not match any of the listed values, the value of MOD is stored untranslated into REPL. Another option for the anything-else condition is to cause a message to be displayed to the user, by specifying MSG=value, where "value" is a message-id. Typically, this technique is used in the processing section of the panel description. For example: &DISP = TRANS (&D 1,SHR 2,NEW 3,MOD MSG=ISPG001) The contents of variable D are translated as follows: "1" is translated to "SHR", "2" is translated to "NEW", and "3" is translated to "MOD". If none of the listed values is encountered, message ISPG001 is displayed. Message ISPG001 may be an error message indicating that the user has entered an invalid option. For both the TRANS and TRUNC built-in functions, the source and destination variables may be the same. Figure 26 shows an example in which it is assumed that variable TYPECHG was originally set (in the dialog function) to a single character "N", "U", or "D". In the )INIT section, TYPECHG is translated to "NEW", "UPDATE", or "DELETE" and stored into itself prior to display of the panel. In the )PROC section, TYPCHG is truncated back to a single character. Use of this technique allows the end user to change the valid options for TYPECHG by simply overtyping the first character. 216 ISPF Dialog Management Services Finally, the TRANS and TRUNC built-in functions may be nested. example: For &XYZ = TRUNC( TRANS(&A ---),1 ) &ZSEL = TRANS( TRUNC(&ZCHD,'. ') --- ) In the first example, the current value of variable A is translated. The translated value is then truncated to a length of one, and the result is stored in variable XYZ. In the second example, the contents of variable ZCHD are truncated at the first period, the truncated value is then translated, and the result is stored in variable ZSEL. )BODY %---------------------------~~Co~mAND===> ZCMD EMPLOYEE RECORDS ------------------------------ + + %EHPLOYEE SERIAL: &EHPSER + + TYPE OF CHANGE~~===> TYPECHG + (NEW, UPDATE, OR DELETE) + + EHPLOYEE NAME: + LAST %===> LNAME + + FIRST %===> FNAME + + INITIAL%===> I+ + + HOHE ADDRESS: + LINE 1 %===> ADDR1 + + LINE 2 %===> ADDR2 + + LINE 3 %===> ADDR3 + + LINE 4 %===> ADDR4 + + + HOHE PHONE: + AREA CODE ~~===> PHA+ + LOCAL NU~1BER PHNUt-l + + )INIT &TYPECHG = TRANS (&TYPECHG N,NEW U,UPDATE D,DELETE) )PROC &TYPECHG = TRUNC (&TYPECHG,1) )END Figure 26. Sample Panel with TRANS and TRUNC Chapter 7. Panel and Message Definition and Skeleton Formats 217 IF (variable operator value [,value ... ] ) The IF statement may be used to test the current value of a variable. The parentheses contain a conditional expression, in which the operator may be either equal (=) or not equal (~=). One or more values may be specified. For example: IF IF IF IF (&DSN = ' ') (&OPT = 1,2,5) (&A ~= &B) (&A ~= AAA,BBB) The first example is true if variable DSN is null or contains blanks. The second is true if variable OPT contains any of the literal values 1, 2, or 5. The third is true if the value of variable A is not equal to the value of variable B. The fourth is true if variable A is not equal to either of the literal values AAA or BBB, which is the same as saying that variable A is not equal to AAA and not equal to BBB. The IF statement is indentation sensitive. If the conditional expression is true, then processing continues with the next statement. Otherwise all following statements are skipped up to the next statement that begins in the same column as the IF or in a column to the left of the IF. Example: IF (&XYZ = ' ') &A = &B &B = &PQR IF (&B = YES) &C = NO &D = &ZZZ In this example, processing skips to statement &D = &ZZZ from either IF statement if the stated condition is false. Figure 27 shows a sample panel with an IF statement. The current value of variable PHA is tested for blank. If it is blank, PHA is initialized to the literal value 301. 218 ISPF Dialog Management Services )BODY %---------------------------- ENPLOYEE RECORDS ------------------------------ %COHHAND===> ZCND + + %EMPLOYEE SERIAL: &ENPSER + + TYPE OF CHANGE%===> TYPECHG + (NEW, UPDATE, OR DELETE) + + + + + EHPLOYEE NANE: LAST ~~===> LNA~lE FIRST %===> FNANE INITIAL~o===> 1+ + + + + + + + + HOME ADDRESS: LINE 1 %===> LINE 2 ~~===> LINE 3 ~~===> LINE 4 ~~===> ADDR1 ADDR2 ADDR3 ADDR4 + + + + + + + + + HONE PHONE: AREA CODE %===> PHA+ LOCAL NUMBER%===> PHNUM )INIT IF (&PHA = ' ') &PHA = 301 &TYPECHG = TRANS (&TYPECHG )PROC &TYPECHG = TRUNC + N,NEW U,UPDATE D,DELETE) (&TYPECHG,l) )END Figure 27. Sample Panel with IF Statement VER (variable [, NON BLANK], keyword [, value ... ] [MSG=value] ) The verify statement, VER, may be used to check that the current value of a variable meets some criteria. Typically, it is used in the processing section to verify the contents of input fields entered by the user. The first parameter inside the parentheses specifies the variable to be checked. The second parameter is NONBLANK, a keyword specifying that the variable is to contain a value and not a blank. The number and meaning of the values that follow the keyword are dependent upon the type of verification. Chapter 7. Panel and Message Definition and Skeleton Formats 219 If the variable does not meet the verification criteria, a message is displayed. The message may be specified in the NSG=value parameter, where "value" is a message-id. If no message is specified, an ISPF-supplied message is displayed, based on the type of verification. Even if a VER fails, processing of the panel INIT and PROG sections is performed. ISPF provides several types of verification, as described below. In these descriptions, "xxx" is used to represent the variable name. The values that must follow the verification keyword, if any, are also indicated. • VER (xxx,NONBLANK) - The variable is required and must not be blank. NONBLANK (or the abbreviated form, NB) may be specified with another type verification (ALPHA, NUH, HEX, etc.) by specifying the NONBLANK keyword first (after the variable name but before the other keyword). Example: VER (&A,NB,PIGT,NNN-NNNN) is equivalent to: VER (&A,NONBLANK) VER (&A,PIGT,NNN-NNNN) • VER (xxx,ALPHA) - The variable must contain all alphabetic characters (A-Z, #, $, or @). • VER (xxx,NUM) - The variable must contain all numeric characters (0-9). • VER (xxx,HEX) - The variable must contain all hexadecimal characters (0-9, A-F). • VER (xxx,BIT) - The variable must contain all 'O's and 'l's. • VER (xxx,FILEID) - The variable must contain a valid fileid (in CMS syntax), which is any value that is valid with a LISTFILE command. The file name and file type (if given) must be one to eight alphameric characters (A-Z, 0-9, #, $, @, the filemode must be a single letter (A-Z), optionally followed by a single digit (0-9). In addition, one or more fields of the file identifier may be an asterisk (*) or may be a string of characters followed by an asterisk (e.g., tr*). • VER (xxx,PIGT,string) - The variable must contain characters that match the corresponding type of character in the picture string. The "string" parameter may be composed of the following characters: C A N 9 220 - any any any any character alphabetic character (A-Z, #, $, or @) numeric character (0-9) numeric character (same as "N") ISPF Dialog Management Services x - any hexadecimal character (0-9, A-F) In addition, the string may contain any special character (except # Example: $, or @), which represents itself. VER (xxx,PICT, 'A/NNN') The value must start with an alphabetic character, followed by a slash, followed by three numeric characters. Note: The length of the variable value and the picture string must be the same. Trailing blanks are not included. • VER (xxx,NAHE) - The variable must contain a valid name, following the rules of member names (up to eight alphameric characters of which the first must be alphabetic). • VER (xxx,DSNAME) - The name. A data set name character, @, #, $, or either alphameric or a variable must contain a valid TSO data set qualifier must begin with an alphabetic a period. The remaining characters must be hyphen (-). Note: ISPF Dialog Hanager does not take the length of the actual TSO prefix into account when the panel user specifies a data set name without quotes. It checks that the length of the variable is no greater than 42 characters. • VER (xxx,RANGE,lower,upper) - The variable must be numeric, and its value must fall (inclusively) within the specified lower and upper limits. Note: The length of the specified variable is limited to 16 digits. Further, the lower and upper parameters may consist of no more than 16 digits each. • VER (xxx,LIST,value1,value2, ... ) - The variable must contain one of the listed values. For all tests except NONBLANK, a blank value is acceptable. the user enters a value (or leaves a non-blank initial value it must conform to the specified condition. But if the user input field blank, the field will pass any verification test NONBLANK. That is, if unchanged) , leaves an except Figure 28 shows a sample panel with VER statements to verify that information entered by the user meets the following criteria: • The truncated value of TYPECHG is "N", "U", or "D". • The three name variables (LNAME, FNAME, and I) contain all alphabetic characters. • The PHA (area code) field contains all numeric characters. Chapter 7. Panel and Message Definition and Skeleton Formats 221 • The PHNUM (local number) field contains three numeric characters, followed by a hyphen, followed by four numeric characters. For the TYPECHG test, a message-id has been specified in the event that the test fails. In all the other cases, an ISPF-provided message will be displayed if the variable fails the verification test. )BODY %---------------------------- EMPLOYEE RECORDS -----------------------------%COHHAND===> ZCMD + + %EMPLOYEE SERIAL: &EMPSER + + TYPE OF CHANGE%===>_TYPECHG + (NEW, UPDATE, OR DELETE) + + EMPLOYEE NAME: + LAST %===> LNAME + + FIRST %===> FNAME + + INITIAL%===> I+ + + HOME ADDRESS: + LINE 1 %===> ADDR1 + + LINE 2 %===> ADDR2 + + LINE 3 %===> ADDR3 + + LINE 4 %===> ADDR4 + + + HOME PHONE: + AREA CODE %===> PHA+ + LOCAL NUl'1BER~~===> _ PHNUM + + )INIT IF (&PHA = ' ') &PHA = 301 &TYPECHG = TRANS (&TYPECHG N,NEW U,UPDATE D,DELETE) )PROC &TYPECHG = TRUNC (&TYPECHG,l) VER (&TYPECHG,LIST,N,U,D,MSG=EMPX210) VER (&LNAME,ALPHA) VER (&FNAME,ALPHA) VER (&I,ALPHA) VER (&PHA,NUM) VER (&PHNUM,PICT, 'NNN-NNNN') )END Figure 28. 222 Sample Panel with Verification ISPF Dialog Management Services VPUT name-list [AS I S I SHARED I PROF I LE] While variables entered from a panel are automatically stored in the function variable pool, variables can be stored in the shared and profile variable pools by VPUT statements used in the )INIT or )PROC sections of the panel definition. For example~ )PROC VPUT (XYZ ABC) PROFILE This coding causes current values for variables XYZ and ABC to be stored in the profile pool by a VPUT operation. The syntax for the VPUT statement is the same as that for the VPUT service when it is invoked from a CLIST or EXEC 2 except that the ISPEXEC command verb is omitted. (Refer \0 Chapter 6, "Description of Services" for a description of the VPUT parameters). Control Variables Control variables are used to control and test certain conditions pertaining to the display of a panel. The control variables are described below: .CURSOR Nay be set in the initialization section to control the / 7., 1,.,(p initial placement of the cursor. Its value must be a character string that matches a field name in the panel body. For example: .CURSOR = DSN causes the cursor to be placed at the beginning of field DSN. This variable is automatically set to the field last referenced whenever .NSG is set explicitly or indirectly by TRANS or VER statements . . HELP May be set in the initialization section to establish a tutorial (help) panel to be displayed if the user enters the HELP command. For example: .HELP = ISPTE causes tutorial page ISPTE to be displayed when the user enters the HELP command . . MSG May be set to a message-id, typically in the processing section, to cause a message to be displayed. For example: .NSG = ISPE016 This variable is automatically set by use of the MSG=value keyword on a TRANS (if there is no match with the listed values) or a VER statement (if the verification fails). Chapter 7. Panel and Message Definition and Skeleton Formats 223 .RESP Indicates "normal" or "exception" response on the part of the user. It is always set to "ENTER" (normal response) unless the user enters an END or RETURN command, in which case it is set to "END". It may be tested in the processing section to determine the user's response. For example: IF (.RESP = END) This variable may be set in the initialization section to simulate a user response. In this case, the panel is not displayed but is processed as though the user had pressed ENTER or entered an END command without entering any data. This variable may be set in a panel processing section to force an END or ENTER response. This may be particularly useful if a verification has failed (or .MSG set) and it is desired that the panel be redisplayed with the message even if the user entered END or RETURN. .TRAIL Contains the "remainder" following a truncate (TRUNC) operation. If the contents of a variable are truncated to a specified length, all remaining characters are stored in .TRAIL. If the contents of a variable are truncated at the first occurrence of a special character, the remaining characters following the special character are stored in .TRAIL . . ZVARS May be set in the initialization section to a list of variable names that correspond to "z" placeholders in the body and/or model lines. See "z Variables as Field Name Placeholders." The control variables are automatically reset (set to blank) when the panel display service first receives control. If .MSG and .CURSOR are still blank after processing of the initialization section, they are set to the values passed by the calling sequence (if any) for an initial message or cursor position. Under certain conditions, processing of the initialization section is bypassed. See "Processing Considerations." Once . CURSOR, .MSG, and .RESP have been set non-blank, they retain their initial values until the panel is displayed (or redisplayed), at which time they are again reset. Figure 29 shows an example in which both .HELP and .CURSOR have been set in the )INIT section of the panel definition . • A~ AR0 ~ r f ~~} f :At-'r/~ 224 ISPF Dialog Management Services )BODY %---------------------------- EMPLOYEE RECORDS -----------------------------%CO~I~lAND===> ZC~1D + + %EMPLOYEE SERIAL: &EMPSER + + TYPE OF CHANGE~~===> TYPECHG + (NEW, UPDATE, OR DELETE) + + EMPLOYEE NAME: + LAST ~~===> LNAME + + FIRST %==> FNA~IE + + INITIAL~~==> 1+ + + HO~lE ADDRESS: + LINE 1 %===> ADDR1 + + LINE 2 ~~===> ADDR2 + + LINE 3 %===> ADDR3 + + LINE 4 %==> ADDR4 + + + HOME PHONE: + AREA CODE %===> PHA+ + LOCAL NUMBER%===>_PHNUM + + )INIT .HELP = PERS032 .CURSOR = TYPECHG IF (&PHA = ' ') &PHA = 301 &TYPECHG = TRANS (&TYPECHG N,NEW U,UPDATE D,DELETE) )PROC &TYPECHG = TRUNC (&TYPECHG,l) VER (&TYPECHG,LIST,N,U,D,MSG=EMPX210) VER (&LNAME,ALPHA) VER (&FNAME,ALPHA) VER (&I,ALPHA) VER (&PHA,NUM) VER (&PHNUM,PICT, 'NNN-NNNN') )END Figure 29. Sample Panel with Control Variables Chapter 7. Panel and Message Definition and Skeleton Formats 225 Default Cursor Positioning If the control variable .CURSOR is not explicitly initialized (or if it is set to blank), the initial position of the cursor is determined as follows: • The panel body is scanned from top to bottom, and the cursor is placed at the beginning of the first input field that meets the following criteria: It must be the first or only input field on a line. It must not have an initial value (i.e., the corresponding dialog variable must be null or blank). It must not have a field name of ZCMD. • If no fields meet the above criteria, the cursor is placed on the first input field in the panel body (normally the command field). • If the panel has no input fields, the cursor is placed at row 1, column 1. Whenever a message is displayed because of a verification failure, a MSG=value condition in a TRANS, or an explicit setting of .MSG, the cursor is automatically positioned at the beginning of the field that was last referenced in any panel definition statement. For example: &XYZ = TRANS (&A ... MSG=xxxxx) &A = TRANS (&XYZ ... MSG=xxxxx) VER (&XYZ,NONBLANK) VER (&B,ALPHA) Assume that field XYZ exists in the panel body, but there are no fields corresponding to variables A or B. In all the above examples, the cursor would be placed on field XYZ if a message is displayed. "z" Variables as Field Name Placeholders In the body section of a panel definition and in the model lines for a table display panel, the name of an input or output field may be represented by the single character "Z". This serves as a placeholder; the actual name of the field is defined in the initialization section of the panel definition. Use of placeholders allows the definition of short fields for which the lengths of the variable names exceed the lengths of the fields. The actual names of these fields are assigned in the initialization section of the panel definition using a name list (enclosed in parentheses if more than one name is specified) assigned to the control variable .ZVARS. The first name in the list corresponds to the first "z" placeholder that appears in the body or model lines. The second 226 ISPF Dialog Management Services name in the list corresponds to the second "Z", etc. shown in Figure 30. )BODY ---------------------------%CONHAND===> ZCMD + + + TYPE %===> Z+ LENGTH%===> Z + OFFSET~~===> Z + TITLE LINE An example is ------------------------------------ + (A for alpha, N for numeric) (0 to 99) (0 to 99) )INIT .ZVARS = '(TYPFLD LNGFLD OFFSET)' Figure 30. Example of "z" Variable Placeholders In this example, the input field labeled "type" is one character long and the next two input fields are each two characters long. The names of these three fields are TYPFLD, LNGFLD, and OFFSET, respectively. The name list assigned to .ZVARS must be enclosed in apostrophes.because the list contains special characters (parentheses) and blanks. As with other name lists, either commas or blanks may be used to separate the names in the list. The length of the entire list, including the parentheses, is limited to 255 characters. Panel Processing Considerations When the DISPLAY service is invoked from a dialog function, the panel name, message-id, and cursor field parameters may be specified. If the panel name or message-id is specified, the following processing occurs: 1. If a panel name has been specified, and a message-id has not been specified, the panel is displayed without a message. 2. If both a panel name and a message-id have been specified, the panel is displayed with an initial message (typically, a prompt or confirmation message). Chapter 7. Panel and Nessage Definition and Skeleton Formats' 227 3. If a message-id has been specified, but a panel name has not been specified, the previously displayed panel is redisplayed with the message (typically, an error message). 4. If neither a panel name nor a message-id has been specified, the previously displayed panel is redisplayed. In the first two situations, processing of the panel definition proceeds normally, through the )INIT section, prior to display of the panel. If .tlSG or .CURSOR is set in the )INIT section, that setting overrides an initial message or cursor position passed by the calling sequence parameters. In the third and fourth situations, processing of the )INIT section is bypassed, and there is no automatic initialization of variables in the panel body (nor in the attribute section). As a result, all variables in the panel body appear as last displayed, and input fields contain whatever the user last entered. If an initial message or cursor position is passed in the calling sequence parameters, that setting is used since the )INIT section is bypassed. After the panel has been displayed, the user may enter information and press the ENTER key. All input fields are automatically stored into dialog variables of the same name, and the )PROC section of the panel definition is then processed. If any condition occurs that causes a message to be displayed (verification failure, MSG=value condition in a TRANS, or explicit setting of .MSG), processing continues to the )END statement. The panel is then redisplayed with the first (or only) message that was encountered. When the user again presses ENTER, all input fields are stored and the )PROC section is again processed. This sequence continues until the entire )PROC section has been processed without any message conditions encountered. The panel display service then returns to the dialog function that invoked it with a return code of O. Whenever a panel is displayed or redisplayed, the user may enter an _End or RETURN command. In this case, all input fields are stored and the )PROC section is processed but no message is displayed (even if a MSG condition is encountered). The panel display service then returns to the dialog function with a return code of 8. Special Panel Requirements Special requirements exist for defining the following types of panel: 228 • Menus • Help tutorials • Table displays ISPF Dialog Management Services Menus A menu (also called a selection panel) is a special type of panel. It is processed by the SELECT service. A menu must have an input field to be used or entry of selection options by the user of the application. Generally, this field (called the command field) is the first input field on line 2 of the panel. Name this field ZCMD to be consistent with the name used in this publication. (OPT is the name of this field used in SPF, the ISPF predecessor product). It must also have a processing section in which variable ZCMD is truncated at the first period and then translated to a character string. The results must be stored in a variablt named ZSEL or SEL. (SEL is provided only for compatibility with SPF; use of ZSEL is recommended.) Besides ZCMD, a menu may have input fields to set up dialog variables needed by the particular application. Any variables other than ZCMD and ZSEL (or OPT and SEL) that are set from a menu are automatically stored in the shared variable pool. Variables from .the shared pool (including system variables) may also be displayed on a menu to provide information to the end user. The general format of the processing section of a menu is: )PROC &ZSEL = TRANS( TRUNC(&ZCMD,'. ') value, 'string' value, 'str ing' I\' Ther"Z'clin variable is truncated prior to translation to allow the end ._,._.... ,.~."'."'·'""··. ·,.··user to bypass one or more intermediate menus. For example, "1.2" means primary option 1, suboption 2. (This is generally called a "nested option.") When the SELECT service discovers that variable ZCMD (which was automatically stored, untranslated, as the user entered it) contains a period, it causes the next lower-level menu to be selected with an initial option of everything following the first period. As long as the initial option is non-blank, the lower-level menu is processed in the normal fashion but not displayed to the end user. Each "value" is one of the options that may be entered on the menu. Each "string" contains selection keywords indicating the action to occur. The selection keywords are: Chapter 7. Panel and Message Definition and Skeleton Formats 229 'PANEL(panel-name) [NEWAPPL(application-id)INEWPOOL], , C~1D ( command) [NEWAPPL(application-id)INEWPOOL] 'PGM(program-name) [PARM(parameters)] [LANG(PLIIPLI [,storage-area])] [LANG(COBOL) ] [NEWAPPL(application-id)INEWPOOL] [NOCHECK] , [NOCHECK] , EXIT Except for EXIT, each string of keywords must be enclosed in apostrophes, since it contains parentheses (and sometimes blanks). The following selection keywords are the same as those that may be specified for the SELECT service (for a description of these keywords see "SELECT" in Chapter 6): PANEL(panel-name) CMD(command) PGM(program-name) PARM(parameters) [LANG(PLIIPLI [,storage-area])] [LANG(COBOL)] NEWAPPL(application-id)INEWPOOL The PANEL keyword, for example, is used to specify the name of a lower-level menu to be displayed. The CMD and PGM keywords are used to invoke a dialog function coded in a.command procedure or programming language, respectively. Note that OPT(option), which is valid for the SELECT service, is not valid on the definition of a menu. NOCHECK and EXIT are described below. Normally, nested options are allowed only when each component of the option (up to, but not including the last component) specifies a lower-level menu. For example, given the following ZSEL keywords on a selection panel definition &ZSEL = TRANS (TRUNC(&ZCMD,'. ') I, 'PANEL(DEF)' 8, 'PGM(ABC)' 9, 'PGM(XYZ)' A user may enter "l.x" as his selection. This selection would be accepted by ISPF. However, if the developer wants to allow a user to enter a nested option that selects a dialog function (in this case "8.x" or "9.x ff ) , the developer specifies the NOCHECK keyword as in the following example: 230 ISPF Dialog Management Services &ZSEL = TRANS (TRUNC(&ZCMD,'. ') 1, 'PANEL(DEF)' 8, 'PGM(ABC) NOCHECK' 9, 'PGM(XYZ) NOCHECK' The NOCHECK keyword specifies that normal checking for validity is suspended. It is the responsibility of the dialog function to interpret the meaning of the lower-level options. To allow this, the remaining options (those to the right of the first period) are normally passed to the dialog function through any appropriate variable that has been set equal to the .TRAIL panel control variable in the menu definition. Example: &ZSEL = TRANS (TRUNC (&ZCMD, I . ' ) 1, 'PANEL(DEF)' 8, 'PGM(ABC) NOCHECK' 9, 'PGM(XYZ) NOCHECK' &NEXTOPT = .TRAIL In this example, variable NEXTOPT contains the remainder of the TRUNC operation. If the user enters "8.5.2", program ABC is invoked and NEXTOPT is set to "5.2". If the user enters "9.7", program XYZ is invoked and NEXTOPT is set to "7". Since variable NEXTOPT is unknown to the SELECT service, it is automatically stored in the shared variable pool, where it can be accessed by the dialog function. When the NOCHECK keyword is specified, a return code of 20 from the dialog function indicates that the remaining options are invalid. If return code 20 is passed back from the function, an "invalid option" message is displayed by the dialog manager. The EXIT keyword, if used, applies only to a primary option menu. terminates ISPF using defaults for list/log file processing. It If no option is entered (ZCMD variable is blank), a blank is returned as the translated string. This causes the SELECT service to redisplay the menu. For primary option menus, the menu is redisplayed without a message. For lower-level menus, an "enter option" message is displayed if the option field was left blank. If an invalid option is entered (indicated by an asterisk, meaning none of the above), a question mark (?) is returned as the translated string. This causes the SELECT service to redisplay the menu with an "invalid option" message. Chapter 7. Panel and Message Definition and Skeleton Formats 231 Primary Option Menus A primary option menu is a selection panel that has special significance in terms of the way the RETURN command operates, and in terms of the way a "jump function" (an option number preceded by an equal sign) works. One type of primary option menu is the master application menu. It is described in "Examples of Menus" below. The first menu displayed when the dialog manager is invoked is normally treated as a primary option menu. That is, if the dialog manager is invoked with: ISPSTART PANEL(XYZTOP) then panel XYZTOP is treated as a primary option menu. Similarly, if the dialog manager is invoked with: ISPSTART CMD(XYZ) or ISPSTART PGM(XYZ) and dialog XYZ subsequently issues: SELECT PANEL(XYZTOP) then panel XYZTOP is treated as a primary option menu because it is the first invoked menu. It is possible to write a dialog with no primary option menu by setting the variable ZPRIM to "NO" on the first selection panel (panel XYZTOP in this example): )INIT &ZPRIM = NO In general, this is not recommended since the RETURN command then causes an immediate exit from the dialog, which may be confusing to the end user. A dialog may have lower-level (nested) primary option menus. This is achieved by setting variable ZPRIM to "YES" on a lower-level selection panel: )INIT &ZPRIM = YES Nested primary option menus should be used sparingly, since they can confuse the end user. It is recommended that there be only one primary option menu per major application. 232 ISPF Dialog Management Services Set Next Menu ISPF allows the display of menus that are arranged in a hierarchy. The path through the hierarchy is automatically preserved as the user selects options from the various menus. As the user moves back up through the hierarchy, the menus are redisplayed in reverse sequence from which they were selected. While this is the standard mode of operation, it may be overridden. A developer may specify an alternative mode of menu processing called explicit chain mode. In this mode, the "parent" menu is specified explicitly in a system variable named ZPARENT. This variable may be set in a panel definition or in a dialog function. It has the following effect: • From a menu, ZPARENT specifies the name of the next menu to be displayed when the user enters the END command. A menu that specifies itself as the parent is interpreted as a primary option menu; the RETURN command "stops" at that menu. • From a function, ZPARENT specifies the name of the next menu to be displayed when the function completes execution. If a function is invoked from another function (by the SELECT service), the lower-level function may set ZPARENT. Upon completion of the lower-level function, the higher-level function resumes execution. The setting of ZPARENT does not take effect until the higher-level function (i.e., the one originally invoked from a menu) completes execution. Notes: 1. A value may be stored in ZPARENT in a function or in the )INIT, )PROC, or )BODY section of a panel. 2. The value in ZPARENT takes effect only after display of a selection panel when the user enters the END command. 3. When the ZPARENT variable is set from a dialog function, it must be explicitly copied to the shared pool (using VPUT) to ensure that ISPF still has access to it after the function completes. 4. Once the ZPARENT variable is set: The hierarchy of menus traversed by the user is not preserved by ISPF. The NEWAPPL and NEWPOOL selection keywords are inoperable (ignored) while the dialog is in explicit chain mode. S. The ZPARENT variable is automatically reset to blank by the dialog manager each time it is used. If the dialog does not continue to set ZPARENT, the dialog manager resumes normal mode. The hierarchy of menus (if any) up to the point at which explicit chain mode was started is then restored. Chapter 7. Panel and Message Definition and Skeleton Formats 233 6. Generally, a dialog should use either explicit chain mode or hierarchical chaining (the standard mode); chaining should not be mixed. If they are mixed, a function that sets ZPARENT should do so only after completion of any hierarchical dialog that it invokes (i.e., the setting of ZPARENT should be the last thing the function does before returning control). Otherwise, results are unpredictable. 7. The ZPRIM variable is not applicable to (and is ignored) when operating in explicit chain mode. Examples of Menus Typical menus are described below. MASTER APPLICATION MENU: A master application menu, shown in Figure 31, and named ISP@MSTR, is distributed with ISPF as part of the panel library. This menu may be used, if desired, to allow selection of the various applications available at an installation. 234 ISPF Dialog Management Services %-----------------------%OPTION ISPF MASTER APPLICATION MENU ===> ZCMD ----------------------+ % % % % 1 +SAMPLE1 2 +. 3 +. 4 +. 5 +. X +EXIT - Sample application 1 (Description for option 2) (Description for option 3) - (Description for option 4) (Description for option 5) - Terminate ISPF using list/log defaults - % % % % % +Enter%END+command to terminate ISPF. +USERID +TIME +TERMINAL +PF KEYS - &ZUSER &ZTIME &ZTERM &ZKEYS % )INIT . HELP = ISP00005 /* Help for this master menu &ZPRIM = YES / . .,: This is a primary option menu )PROC &ZSEL = TRANS( TRUNC (&ZCMD,'. ') 1, 'PANEL(ISP@PRIM)' /* Sample primary option menu /* Following shows how to code an invocation of the / . .,: ISPF Program Development Facility, where "n" is /* the desired selection number: /* /* /* / n, 'PANEL(ISR@PRIM) NEWAPPL(ISR), */ . .,: / */ */ . .,: / */ */ */ */ 4~.,;"#~?':4'C"';'r";'c#'r";,,#':#':#':#':#':#~#'ri~#':";':#':i'r·l~.,':i':;':i':#'ri'r#':i':#,(·l:#':;':i':;~-;':i':#"(i':,";':f':";'r#':,";':#':#':i':#': -;':-;':-;':,,;,(-;'r-;': / , ,, , , X, 'EXIT' . .,: , ' ?' ) )END Figure 31. Master Application Menu If used, the master menu should be the first menu displayed when the user logs on. It may be displayed automatically by including the following command in the user's TSO LOGON procedure or CMS PROFILE EXEC: ISPSTART [PANEL(ISP@MSTR)] When no keywords are specified on the ISPSTART command, PANEL (ISP@MSTR) is assumed. To add a new application to the master menu, a line should be added to the panel body, indicating the selection code and the nature of the application. A corresponding addition must then be made the the )PROC section, to specify the selection keywords for the option. Chapter 7. Panel and Message Definition and Skeleton Formats 235 PRIHARY OPTION ~1ENU: Figure 32 shows a primary option menu definition. This is the sample primary option menu definition (ISP@PRIH) distributed with ISPF. The required input field, ZCND, appears in the second line of the panel body. It is followed by a description of the various options available to the user. This menu also has four variables within text fields at the upper right-hand of the screen. These reference system variables (from the shared variable pool) to display user id, timi, terminal type, and number of PF keys. The Initialization section sets the control variable .HELP to the name of a tutorial page to be displayed if the user enters the HELP command from this menu. It also initializes two system variables that specify the tutorial table of contents and first index page. See the discussion under "Help/Tutorial Panels." Note: &ZPRIM=YES specifies that this panel is a primary option menu. The processing entered by the level menu) is displayed; and section specifies the action to be taken for each option user. If option 0 is selected, panel ISPOPTA (a lower displayed. If option 1 is selected, panel ISPUCHA is so on. Note that for the tutorial, program ISPTUTOR is invoked and passed a parameter (ISPOOOOO), which ISPTUTOR interprets as the name of the first panel to be displayed. Panel ISPOOOOO is the first panel in the tutorial for ISPF. Other applications should pass the name of the first tutorial page for that application. 236 ISPF Dialog Hanagement Services SA~lPLE PRI~lARY OPTION HENU ------------------------%OPTION ===> ZCHD + % +USERID - &ZUSER % +ISPF PARHS 0 Specify terminal and user parameters +TINE % - &ZTIME - Create/change command table % 1 +COtltlANDS +TERMINAL - &ZTERM (Description for option 2) +PF KEYS - &ZKEYS % 2 +. +. 3 (Description for option 3) % 4 +. - (Description for option 4) 5 +. (Description for option 5) /0 T +TUTORIAL - Display information about this application - Terminate ISPF using list/log defaults % X +EXIT %------------------------ - 01 10 01 01 10 % +Enter%END+command to terminate application. % )INIT .HELP = ISP00003 ~"~P.R.Lt! = YE S //&ZHTOP"~:::'" ISP00003 l'.__~ZHINDE2<;)= ISP9l000 II I) PR·OC·-.. ·····_·-" I 'if 'Il. */ j"k This is a pr imary opt ion menu "'~ / Tutorial table of contents for this appl"""/ /* Tutorial index - 1st page for this appl */ I""~: &ZSEL = TRANS( TRUNC (&2.CMD,'. ') 0, 'PANEL(ISPOPTA) , 1, 'PANEL(ISPUCMA) , ! J.i /* Help for this panel /*******************************************************/ i It I""~: /* Add other applications here. I""~: /*******************************************************/ , T, , , ,'PGM(ISPTUTOR) , PARM(ISPOOOOO)' X, 'EXIT' ";~ , , ?' ) )END Figure 32. ISPF Primary Option Henu LOWER-LEVEL MENUS: Lower-level menus follow the same rules as a master or primary option menu. An example of a lower-level menu is shown in Figure 33. This menu is used in the HVS version of ISPF/PDF. The panel is ISRUTIL, which is displayed if option 3 is selected from the ISPF/PDF primary option menu. For option 1, it specifies that program ISRUDA is to receive control, and that ISRUDA is to be passed a parameter (UDAl) which ISRUDA interprets as the name of a panel to be displayed. An exit option is not included on this menu, since it is never displayed as a primary option menu. Chapter 7. Panel and Message Definition and Skeleton Formats 237 Note: In this menu, variable ZCMD need not have been truncated prior to translation, since there is no lower-level selection panel that can be displayed from this menu. %------------------------- UTILITY SELECTION MENU ~~OPTION % % ===> ZCMD 1 +LIBRARY ---------------------------+ - Library utility: Print index listing or entire data set + Print, rename, delete, or browse members + Compress data set + 2 +DATASET - Data set utility: % Display data set information + Allocate, rename, or delete entire data set + Catalog or uncatalog data set + 3 +MOVE/COPY - Move or copy members or datasets 4 +CATALOG - Catalog management: % Display or print catalog entries + Initialize or delete user catalog alias + - Reset statistics for members of ISPF library % 5 +RESET % 6 +HARDCOPY - Initiate hardcopy output - Display or print VTOC entries for a DASD volume % 7 +VTOC - Display, delete, or print held job output % 8 +OUTLIST % 9 +COMMANDS - Create/change an application command table % 10 +CONVERT - Convert old format menus/messages to new format )INIT .HELP = ISR30000 )PROC &ZSEL = TRANS( TRUNC (&ZCMD,'. ') 1, 'PGM (ISRUDA) PARM (UDAl) , 2,'PGM(ISRUDA) PARM(UDA2), 3, 'PGM(ISRUMC) , 4, 'PGt-l (ISRUCA) , 5 , I PGM ( I SRURS ) , 6 , 'PGM ( I SRUHC) , 7 , 'PGM (ISRUVT) , 8, 'PGM (ISRUOL) , 9, 'PANEL(ISPUCHA) , lO,'PGM(ISRQCM) PARM(ISRQCMP), , , , , 0' 10 , ..,: , , ?' ) )END Figure 33. 238 Lower-Level Menu ISPF Dialog Management Services Help/Tutorial Panels A help or tutorial panel is a special type of panel that is processed by the ISPF tutorial program, which invokes the panel display service to display the panel. The tutorial program may be invoked either from a menu, or through the HELP command. Tutorial panels are arranged in a hierarchy. Generally, this hierarchy is a table of contents, each succeeding level of which contains a succeedingly more detailed list of topics. When the tutorial is entered from a menu, the first panel to be displayed is normally the top of the hierarchy. The name of the first panel is passed as a parameter to the ISPTUTOR program. When the tutorial is entered by use of the HELP command, the first panel to be displayed is a panel within the hierarchy, appropriate to what the user was doing when help was requested. In this situation, the name of the panel is specified by the .HELP control variable in a panel or message definition. When viewing the tutorial, the user may select topics by entering a selection code, or simply pressing the ENTER key to view the next topic. On any panel, the user may also enter the following commands: BACK or B - to return to the previously viewed panel SKIP or S - to advance to the next topic UP or U - to display a higher-level list of topics TOP or T - to display the table of contents INDEX or I - to display the tutorial index The name of the top panel must be specified by dialog variable ZHTOP, and the name of the first index panel must be specified by ZHINDEX. It is recommended that these two dialog variables be initialized at the beginning of the application to ensure that the end user can always display the tutorial top or index, regardless of how the tutorial was entered. One way to initialize these variables is to set them from the primary option menu, as shown in Figure 32. The index is optional and is a collection of panels in which topics are arranged in alphabetic order. A user may jump to the index from any point by the use of the INDEX command. The index need not be connected to the main tutorial hierarchy; it may be a selectable topic from the main table of contents or other panels. Chapter 7. Panel and Message Definition and Skeleton Formats 239 Each tutorial panel must have a "next selection" input field. Generally, you should use the name ZCMD for this field. A tutorial panel should also have a processing section in which the following variables are set: ZSEL or SEL Specifies the name of the next panel to be displayed based on the t~£ic selected by the user (by translating ZCMD to...--a p'aller--n~ The pane 1 name may, be preceded by an ast"erisk ~.. to indicate a topic that can be explicitly selected by the user, but which is bypassed if the user presses the ENTER key to view the next topic. If a panel does not have any selectable topics, ZSEL should be omitted. ZUP or UP Specifies the name of the parent panel, from which this panel was selected. Generally, ZUP may be omitted since the tutorial program remembers the sequence of selections that lead to the display of this panel. ZUP is used only if this panel is the first to be displayed (by a user entering the HELP command) or is selected from the tutorial index, and the user then enters the UP command. ZCONT or CONT Specifies the name of the next continuation panel. If there is no continuation panel, ZCONT should be omitted. ZIND When set to a value of YES, specifies that a page in the tutorial is an index page. For example: )PROC &ZIND = YES The ZIND variable is used only on index pages; it should not be set on other tutorial panels. Note: Variables SEL, UP, and CONT are provided for compatibility with the previous SPF product. Use of variable names ZSEL, ZUP, and ZCONT is recommended. Refer to Appendix H, "HVS and VH/SP: Summary of Changes From SPF." A panel cannot have both a continuation panel and selectable topics. However, the last panel in a sequence of continuation panels may have selectable topics. Help/Tutorial panels may contain variables so that dialog information (including information entered by the user) may be displayed on the help panel. Function variables, as well as shared and profile variables, may be displayed. 240 ISPF Dialog Hanagement Services Figure 34 shows a sample hierarchy of tutorial panels. Panels A and B each have three selectable topics. Panels C and D2 each have two selectable topics. The other panels have no selectable topics. Panel Dl has a continuation page (D2), and panel Fl has two continuation pages (F2 and F3). In Figure 34, assuming that panel A is the highest-level table of contents, the viewer can get to A from any point by issuing TOP. A viewer currently on panel F1, F2, or F3 may return to panel B by issuing BACK. Then, from B, the SKIP command would take the viewer to panel C. A I B D1 f---, I D21 C 1 L---,..--.J I I I E F1 f---, II F2 f---, I F31 I Figure 34. G H I J K II Sample Tutorial Hierarchy Two sample tutorial panels are shown in Figure 35 and Figure 36. These are assumed to be panels Band F2, respectively, in the hierarchy in Figure 34. Panel B has three selectable topics. In the processing section, ZCMD is translated to a panel name (E, F1, or G) corresponding to the selected option, and the result is stored in ZSEL. If none of the valid options is selected, a question mark (?) is returned as the translated string, which causes the tutorial program to display an "invalid option" message. Note that option 3 is translated to "~"'G". This indicates that panel G is displayed if the user selects option 3, but is bypassed if the user repeatedly presses the ENTER key to view each topic. (The order in Chapter 7. Panel and Message Definition and Skeleton Formats 241 which topics are presented when the ENTER key is pressed is the same as the order in which they appear in the TRANS function.) In panel B, the name of the parent panel (A) is stored in variable ZUP. Panel F2 (Figure 36) has no selectable topics, but does have a continuation page. The name of the continuation panel (F3) is stored in variable ZCONT. The name of the parent panel (B) could have been stored in ZUP, but this was omitted assuming that F2 cannot be directly entered by use of the HELP command or from the tutorial index. %TUTORIAL ------------------ 3270 DISPLAY TERHINAL --------------------TUTORIAL %NEXT SELECTION ===> ZCMD + % General Information 3270 Key Usage + The IBM 3270 display terminal has several keys which will assist you in entering information. These are hardware defined keys; they do not cause a program interruption. The following topics are presented in sequence, or may be selected by number: %1+ Insert and Delete Keys %2+ Erase EOF (to End-of-Field) Key The following topic will be presented only if explicitly selected by number: %3+ New Line and TAB Keys )PROC &ZSEL = TRANS(&ZCMD 1,E 2,F1 3,*G *, I?') &ZUP = A )END Figure 35. 242 Sample Tutorial Panel (B) ISPF Dialog Management Services %TUTORIAL -------------------- ERASE EOF KEY ------------------- TUTORIAL %NEXT SELECTION ===> ZCMD + + When the erase EOF (erase to end-of-field) key is used, it will appear to blank out the field. Actually, null characters are used in erasing to the next attribute byte, thus making it easy to use the insert mode (which requires null characters). + If the erase EOF key is pressed when the cursor is not within an input field, the keyboard will lock. Press the RESET key to unlock the keyboard. + You can tryout the erase EOF key by entering data on line 2, then moving the cursor back over part or all of the data and pressing the key. + (Continued on next page) + )PROC &ZCONT = F3 )END Figure 36. Sample Tutorial Panel (F2) Table Display Panels A table display panel is a special panel that is processed by the TBDISPL service. The panel definition contains non-scrollable text, including column headings, followed by one or more model lines. These lines describe how each table row is to be formatted within the scrollable data area. Attribute characters in the model lines indicate whether each field is protected or user-modifiable. If a single model line is specified in the panel definition, each row from the table is mapped to the format of that line. This results in scrollable data that is in tabular format. For many applications, it may be useful to define the left-most column in each line as an input field where the application user may enter a code to be used by the dialog function to determine the particular processing for that row. If mUltiple model lines are specified in the panel definition, each row from the table is mapped to mUltiple lines on the screen. (If desired, a separator line - consisting of blanks or dashes, for example - may be specified as the first or last model line.) This format may be useful for address lists or other repetitive data in which each unit will not fit on a single line. Chapter 7. Panel and Message Definition and Skeleton Formats 243 PANEL DEFINITION REQUIREMENTS: Specific requirements for each section of the panel definition are described in the following paragraphs. Attribute Section (typically reguired) Attribute characters may be defined for use in the panel body and the model lines. For the model lines, only the attributes TYPE, INTENS, and PAD are meaningful; all fields in the model line assume CAPS(OFF) and JUST(ASIS).: An attribute section is required if the model line contains output fields. There is no default attribute character for output fields. Body (required) The panel body contains the non-scrollable text. must also contain two, and only two, input fields: 1. It Command field - must be the first input field, and must be at least eight characters long. The command field may have any desired name. The command field is used (the same as on other types of panels) to enter ISPF commands and application-defined commands (if any). Any commands entered in this field that are not recognized by ISPF are automatically stored into the corresponding dialog variable. Upon return from TBDISPL, the dialog function may interpret this field and take appropriate action. 2. Scroll amount field - must be the second input field, and must be four characters long. The field may have any desired name. Its initial value may be set in the )INIT section of the panel definition to any valid scroll amount. If additional input fields are specified in the panel body, they are ignored (may not be used to enter data). Model Section (reguired): The panel body must be followed by a model section. This section begins with a )MODEL header statement and is immediately followed by one or more model lines. The )MODEL header statement must begin in column 1. optional keywords may be specified on this header: • CLEAR(var-name,var-name ... ) • ROWS (ALL I SCAN) The following The CLEAR keyword identifies the dialog variable names, from the model lines, that are to be cleared (initialized to blank) before each row in the table is read. Thus, if the variable is an "extension" variable in the table, which may not exist in all rows, previous values are erased and are thereby not repeated in other lines for which they do not apply. The ROWS keyword indicates whether all rows from the table are to be displayed, or whether the table is to be scanned for selected rows to be displayed. The default is ROWS(ALL) which causes all rows to be displayed. If ROWS(SCAN) is specified, the dialog must invoke the TBSARG service prior to invoking TBDISPL. The search' argument set up by 244 ISPF Dialog Management Services the TBSARG service is used to scan the table; only rows that match the search argument are displayed. One or more model lines must appear following the )MODEL header statement. A model line may contain input and output fields. Each field consists of an attribute character followed by a variable name. This name may be the name of a variable in the table row, or may be the null system variable, "Z", which serves as a placeholder. "z" variable name replacement is resolved within the )INIT section, as described below. Typically, the first field within the model lines specifies the dialog variable into which a selection code (entered by the user) will be stored, and all remaining names correspond to columns in the table. However, this arrangement is not required; any name mayor may not correspond to a column in the table and a selection code field need not be specified. Text fields may be specified in the model line. A text attribute character may appear by itself to terminate the preceding input or output field. Any characters that appear within a text field in the model line are repeated in each line of the scrollable data. (This includes the letter Z; it is not treated as a variable name if it occurs in a text field.) Variables within text fields (e.g., "&XYZ") are not allowed in the model lines; the results are unpredictable. A maximum of eight model lines is allowed. Initialization Section (may be required): If "z" variables occur as name placeholders within the model lines, an )INIT section is needed. The real names of these fields are defined by assigning a name list (enclosed in parentheses, if more than one name is given) to the control variable, .ZVARS. (See "Control Variables" for a description of the use of .ZVARS.) For example: )INIT .ZVARS = I (NAME1,NAME2,NAME3) I where NAME1, NAME 2 , and NAME3 are the actual variable names corresponding to the first, second, and third "z" variables in the model lines. Chapter 7. Panel and Message Definition and Skeleton Formats 245 Note: For compatibility with SPF, liZ" variables in the model lines of a table display panel may be assigned to the VARS variable, rather than to the control variable, .ZVARS. For example: )INIT &VARS = '(NAMEl,NAME2,NAME3)' It is recommended, however, that existing table display panels be converted to use the new .ZVARS control variable. They must be converted if the new CLEAR keyword is added to the )MODEL header statement or explicit cursor positioning is used for table display. The initialization section may contain any statement that is valid in an )INIT section of a panel definition. However, only the .CURSOR, .HELP, and .ZVARS control variables may be set. Processing Section (omit):: A table display panel should not contain a processing section; if it does, the results are unpredictable. TBDISPL PROCESSING: When a panel is displayed by the TBDISPL service, the model lines in the )MODEL section are duplicated to the end of the logical screen. When the scrollable portion of the screen is being formatted, only full units or duplications of these model lines are displayed. Each input or output field that has a corresponding column in the table is initialized with data from succeeding rows from the table. The first row displayed is the row pointed to by the CRP when TBDISPL was issued. Input or output fields in a model line that do not correspond to columns in the table are initialized with the current contents of the corresponding dialog variables (in all rows). If·these fields are to be blank, the corresponding variables must be set to blanks or null prior to each invocation of TBDISPL, or the CLEAR keyword may be used to specify that they are to be blanked. The user may scroll the data up and down. Scroll commands (e.g., "DOWN 5") apply to the number of table entries to scroll up or down. Example: If three model lines are specified, "DOWN 5" would scroll by 5 table entries, which corresponds to 15 lines on the display. The user may enter information in the command field and in any of the input fields within the rows. Processing of input is described in the TBDISPL service description in Chapter 6, "Description of Services." Figure 37 shows a sample panel definition for table display. Assuming that the current contents of the table are as shown in Figure 38, the resulting display is shown in Figure 39. 246 ISPF Dialog Management Services )A'ITR @ TYPE(OUTPUT) INTENS(LOW) )BODY %---------------------------%CO~mAND INPUT ===> EHPLOYEE LIST ZC~1D + +SELECT ------ EHPLOYEE NAHE ------+ CODE LAST FIRST HI )HODEL Z+ @LNAHE @FNAME @I )INIT .ZVARS = '(SELECT)' &AHT = PAGE .HELP = PERS123 )END Figure 37. EMPSER --------------------------------%SCROLL ===> AHT + -- PHONE AREA NUHBER @PHA @PHNUH EHPLOYEE SERIAL @EMPSER Table Display Panel Definition LNAME FNAHE I PHA PHNUH ---------------------------------------------------598304 172397 813058 395733 502774 Figure 38. Roberston Smith Russell Adams Caruso Richard Susan Charles John Vincent P A L Q J 301 301 202 202 914 840-1224 547-8465 338-9557 477-1776 294-1168 Current Contents of Table Chapter 7. Panel and Message Definition and Skeleton Formats 247 ---------------------------COt-1MAND INPUT ==> SELECT CODE ------ EMPLOYEE LIST NAME ------LAST FIRST MI Roberston Richard P Smith Susan A Russell Charles L Adams John Q Caruso Vincent J ******************************* END OF DATA Figure 39. E~1PLOYEE --------- LINE 000001 COL 001 080 SCROLL ===> PAGE -- - PHONE AREA 301 301 202 202 914 NUt-1BER 840-1224 547-8465 338-9557 477-1776 294-1168 EMPLOYEE SERIAL 598304 172397 813058 395733 502774 -;'\i";':#'\;':;'\";':;'\i'\;':"l\i'\·l:i':i'\;':i':i'\i':i~i~·l~i':;'(i':i':;':;':·l:·l\i':i"i':i': Table as Displayed In this example, the select field (left-most column) does not correspond to a column in the table; it is used to return a selection code, entered by the user in a variable named SELECT. The other variables in the model line correspond to variables in the table. The example also illustrates the initialization of the scroll amount field to PAGE, and the specification of a corresponding help panel. The same table might be displayed using mUltiple model lines with the panel definition shown in Figure 40. The resulting display is shown in Figure 41. An entry separator, consisting of a dashed line, is also included as the last model line. In this example, the SELECT field has been increased to 4 characters, with underscores used as pad characters. 248 ISPF Dialog Management Services )ATTR @ TYPE(OUTPUT) INTENS(LOW) if TYPE(INPUT) PADe' _') )BODY %---------------------------- EHPLOYEE LIST %COHMAND INPUT ===> ZCMD + +ENTER CHANGES ON THE LINES BELOW. + )HODEL #Z + SERIAL: @EMPSER + PHONE: @PHA@PHNUM + --------------------------------%SCROLL ===> AMT + LAST NAME: @LNAME FIRST NAHE: @FNAME INITIAL: @I+ + + )INIT .ZVARS = '(SELECT)' &AMT = PAGE .HELP = PERS123 )END Figure 40. Table Display Panel Definition with Multiple Model Lines Chapter 7. Panel and Message Definition and Skeleton Formats 249 ---------------------------COMNAND INPUT ===> ENPLOYEE LIST --------- LINE 000001 COL 001 080 SCROLL ===> PAGE ENTER CHANGES ON THE LINES BELOW. SERIAL: PHONE: 598304 301 840-1224 LAST NAME: FIRST NAME: INITIAL: Robertson Richard P SERIAL: PHONE: 172397 301 547-8465 LAST NAME: FIRST NAttE: INITIAL: Smith Susan A SERIAL: PHONE: 813058 202 338-9557 LAST NAHE: FIRST NAME: INITIAL: Russell Charles L SERIAL: PHONE: 395733 202 477-1776 LAST NAME: FIRST NAttE: INITIAL: Adams John LAST NAttE: FIRST NAME: INITIAL: Caruso Vincent SERIAL: PHONE: 502774 914 294-1168 Q J ******************************* END OF DATA ********************************** Figure 41. 250 Table as Displayed with Multiple Model Lines ISPF Dialog Management Services MESSAGE DEFINITIONS ISPF message definitions are stored in a message library and displayed by means of the DISPLAY, TBDISPL, or SETMSG service, or written to the ISPF log file by the LOG service. Messages are created or changed by editing directly into the message library. The messages are interpreted during ISPF processing; no compile or preprocessing step is required. Message ID Each message is referenced by message-id. A message id may be four to eight characters long, and is defined as follows: • Prefix: one to five alphabetic characters (A-Z, #, $, or @) • Number: three numeric characters (0-9) • Suffix (optional): one alphabetic character If the prefix is five characters long, the suffix must be omitted so that the total length does not exceed eight characters. Message Library Several messages may be contained within each member of the message library. When using ISPF/PDF EDIT to create a message file, NUMBER OFF should be specified. The member name is determined by truncating the message-id after the second digit of the number. For example: Message id G015 ISPE241 XYZ123A ABCDE965 Hember name G01 ISPE24 XYZ12 ABCDE96 All messages that have ids beginning with the characters "G01", for example, must be in member G01. Figure 42 shows an example of a member in the message library. This member contains all message-ids that begin with "EMPX21". Within the member, messages generally should appear in collating sequence by message-id. The optional message id suffix should be used if more than 10 messages are to be included in one member. Each message in the library consists of two lines, as follows: msgid [' short message'] [.HELP = panell2] [.ALARM = YES I NO] 'long message' Chapter 7. Panel and Hessage Definition and Skeleton Formats 251 EHPX210 'INVALID TYPE OF CHANGE' .HELP=PERS033 'TYPE OF CHANGE }1UST BE NEW, UPDATE, OR DELETE. ' .ALARM=YES EHPX213, ENTER FIRST NA}IE' . HELP=PERS034 . ALARM=YES 'E}IPLOYEE NAHE MUST BE ENTERED FOR TYPE OF CHANGE = NEW OR UPDATE. ' EHPX214 'ENTER LAST NAHE' .HELP=PERS034 .ALARM=YES 'ENPLOYEE NAHE }1UST BE ENTERED FOR TYPE OF CHANGE = NEW OR UPDATE.' EHPX215 'ENTER HOHE ADDRESS' .HELP=PERS035 .ALARM=YES 'HOHE ADDRESS NUST BE ENTERED FOR TYPE OF CHANGE = NEW OR UPDATE. ' EHPX216 'AREA CODE INVALID' 'AREA CODE &PHA IS NOT DEFINED. . ALAR}I=YES PLEASE CHECK THE PHONE BOOK.' EMPX217 '&EMPSER ADDED' 'ENPLOYEE &LNAHE, &FNANE &1 ADDED TO FILE. ' EHPX218 '&ENPSER UPDATED' 'RECORDS FOR &LNANE, &FNAME &1 UPDATED.' ENPX219 '&E}IPSER DELETED' 'RECORDS FOR &LNAHE, &FNAME &1 DELETED.' Figure 42. Sample Member in Nessage Library The short message is optional. If a short message is specified on an ISPF panel, it is displayed first. Short messages are right-justified and displayed at the right end of the first line on the screen. If the user enters the HELP command, the long message is displayed on the third line of the screen. If the user enters the HELP command again, tutorial mode is entered. The long message is required. If a short message is not specified, the long message is displayed first, on the third line of the screen. If the user then enters the HELP command, tutorial mode is entered. The location of the short and long messages in a user-designed panel is specified by the SNSG and L}ISG keywords. These keywords are defined in "Panel Body Section." If tutorial mode is entered by the user, the panel name specified by .HELP is the first tutorial page displayed. If .HELP=·\, is specified, the first tutorial page is whatever was specified in the panel definition (i.e., the panel on which this message is being displayed). The default is ".1." 252 ISPF Dialog Management Services If .ALARH=YES is specified, the audible alarm is sounded whenever the message is displayed. If .ALARM=NO is specified, the alarm is not sounded. The default is NO. When messages are written to the ISPF log file, both the short message (if any) and the long message are written in the same output line. The short message comes first, followed by the long message. Substitutable parameters, consisting of a dialog variable name preceded by an ampersand (&), may appear anywhere within the short and long message text. For example: 'VOLUME &VOL NOT NOUNTED' Substitutable parameters may also be used to specify the value of .HELP or . ALARM, as follows: 'VOLUHE &VOL NOT HOUNTED' . HELP = &H . ALARtvl = &A where variable H must contain a panel name or single asterisk, and variable A must contain YES or NO. Substitutable parameters in messages are replaced with values immediately before display or, if the message is specified for display using the SETMSG service, substitutable parameters are replaced during SETMSG processing. After substitution of the variables, the short message is truncated to 24 characters and the long message is truncated to 78 characters. Syntax Rules The following rules apply to the syntax of messages as they appear in the message library. 1. The message-id must begin in column 1 of the first line, and the long message must begin in column 1 of the second line. For readability, one or more blank lines may separate the two-line message specifications within the member. 2. In the first line, the message-id, short message, .HELP, and .ALARM fields must be separated by at least one blank. One or more blanks may optionally occur on either side of an equal sign (=). 3. The short message (if specified) and the long message must each be enclosed in apostrophes ('). 4. Within the short or long message text, any non-alphameric character may terminate a variable name; for example: 'ENTER &X, &Y, OR &Z' where a comma terminates the variable names X and Y. The name Z is delimited by the apostrophe that marks the end of the message. Chapter 7. Panel and Message Definition and Skeleton Formats 253 5. A period C.) at the end of a variable' name has a special meaning. It causes concatenation with the character string following the variable. For example, if the value of variable V is ABC then: '&V.DEF' yields 'ABCDEF' 6. A single ampersand followed by a blank is interpreted as a literal ampersand character (not the beginning of a substitutable variable). An ampersand followed by a non-blank is interpreted as the beginning of a substitutable variable. 7. A double ampersand may be used to produce a character string starting with an ampersand. The double character rule also applies to apostrophes (within the delimiting apostrophes required for the short and long message text), and to a period if it immediately follows a variable name; for example: && ,, yields yields yields & within delimiting apostrophes immediately following a variable name. SKELETON DEFINITIONS ISPF skeleton definitions are stored in a skeleton library and accessed by means of the ISPF file tailoring services. Skeletons are created or changed by editing directly into the skeleton library. The skeletons are interpreted during ISPF execution; no compile or preprocessing step is required. Note: The ISPF-distributed skeleton library also contains old format Structured Programming Facility "proc" members. (The Structured Programming Facility is a predecessor program product to SPF, which, in turn, is the predecessor of ISPF.) The following description of skeleton formats applies only to new format skeletons used with ISPF file tailoring services. There are two types of records that may appear in the skeleton file: 1. Data Records - a continuous stream of intermixed text, variables, and control characters that are processed to create an output record. 2. Control Statements - to control the file tailoring process. Control statements start with a right parenthesis ")" in column 1. Records containing a ")" in column 1, and a blank in column 2, are interpreted as data records. Records containing a ")" in column 1 and a non-blank character in column 2, are interpreted as control statements. Note: A )DEFAULT control statement can be used for assigning different special characters for syntactical purposes. 254 ISPF Dialog Management Services Data Records Columns 1-71 of each data record are scanned and processed as described below. If the result of variable substitution is an output record larger than 80 characters, file tailoring is terminated and a message is displayed. If more than one input record maps to a single output record, continuation is specified by a question mark (7) in column 72 of each input record that is to be continued. If any character other than a question mark appears in column 72 of an input record, it is copied to column 72 of the output record. In this situation, column 72 of the output record must not contain generated data (i.e., it must be blank) for the continuation character to be copied. Otherwise, a severe error results. Any blank data records are deleted from file tailoring output. The following control characters have special meanings: • An exclamation point (!) is used as a tab character. It tabs the output record to the next tab stop and fills with blanks. The next character following exclamation point in the input record is put at the tab stop location in the output record. Tab stops are specified by use of the )TB control statement. • A less-than «), vertical bar (I), and greater-than (» symbol, respectively, specify the beginning, middle, and end of a conditional substitution string: where "string1" must contain at least one variable name. can be null. "string2" If the first variable in "string1" is not null, "stringl" is substituted in the output record. If the first variable in "string1" is null, "string2" is substituted in the output record. Chapter 7. Panel and Message Definition and Skeleton Formats 255 Control Statements The general format of a control statement, which must begin in column 1, is: )control-word tokenl token2 token31 where each token represents a name, value, operator, or keyword. The tokens must be separated by one or more blanks, and may not contain embedded blanks. A token may be coded as: • A character string • A dialog variable name, preceded by an ampersand • A concatenation of variable names and character strings The the the are current value of each variable is substituted prior to evaluation of control statement. The rules for delimiting a variable name and for use of ampersands, periods, double ampersands, and double periods the same as for data records; see "Data Records," above. Specific control statements are described below. )DEFAULT abcdefg The seven characters, represented by "abcdefg" override the use of the ")", "&", "?", "!", "<", "I", and u>" characters, respectively. Exactly seven characters must be specified, and they must be special (non-alphameric) characters. The )DEFAULT statement takes effect immediately, when it is encountered. It remains in effect until the end of FTINCL processing, or until another )DEFAULT statement is encountered. )TB value1 value8 Up to eight tab stops can be specified. A tab stop specifies a tab position in the output record, and must be in the range 1-80. The default is one tab stop at location 80. )IM skel-name ~ [OPT] The specified skeleton is imbedded at the point where the )IM statement is encountered. Up to three levels of imbedding are permitted. The optional NT parameter indicates that no tailoring is to be performed on the imbedded skeleton. The optional OPT parameter indicates that the skeleton may not be present. If OPT is coded and the skeleton is not present, no error 256 ISPF Dialog Management Services indication is given, and the ~ecord is ignored. If OPT is not coded, and the skeleton is not present, a severe error occurs. )SEL relational-expression )ENDSEL The relational expression is evaluated for a true or false condition. If the condition is true, the skeleton input records between the )SEL and the corresponding )ENDSEL are processed. If the condition is false, these records are skipped. Up to eight levels of nesting are permitted.: The relational expression consists of a simple comparison of the form: valuel operator value2 or a combination of up to eight simple comparisons joined by connectors. The system variable Z may be used to represent a null or blank value. The allowable operators are: EQ NE GT LT or or or or LE GE NG NL = ~= > < The allowable connectors are or or or or <= >= ~> ~< I (OR) and && (AND). Examples: &COND = YES &TESTl ~= &Z &TESTI ~= &Z )SEL )SEL )SEL )DOT I &ABC && &ABC = 5 =5 table-name )ENDDOT The skeleton input records between the )DOT and the corresponding )ENDDOT are iteratively processed, once for each row in the named table, beginning with the first row. At the start of each iteration, the contents of the current table row are retrieved (stored into the corresponding dialog variables). Those values can then be used as parameters in control statements or substituted into data records. Up to four levels of nesting are permitted. The same table cannot be processed recursively. If the table was already open, it remains open after file tailoring with the CRP positioned at TOP. If it was not open, it is opened automatically and then closed upon completion of file tailoring. Chapter 7. Panel and Message Definition and Skeleton Formats 257 For an example showing use of )DOT and )ENDDOT, see "File Tailoring" in Chapter 2. )SET variable = expression )SET allows a value to be assigned to a dialog variable. The variable name should not be preceded by an ampersand, unless the variable name is itself stored as a variable. The expression can be specified as either: valuel or: valuel operator value2 operator value15 where "operator" can be a plus sign (+) or a minus sign (-). 2.,glL comment The statement is treated as a comment. No tailoring is performed, and the record is not placed in the output file. Note: The)N comment statement of PDF edit models is not a valid control statement for file tailoring. It causes file tailoring termination. Sample Skeleton File A sample skeleton file is shown in Figure 43. The sample skeleton references several dialog variables (ASMPARMS, ASMIN, MEMBER, etc.). It also illustrates use of select statements ")SEL" and ")ENDSEL If to conditionally include records. The first part of the example has nested selects to include concatenated macro libraries if the library names have been specified by the user (i.e., if variables ASMMACl and ASMMAC2 are not equal to the null variable Z). In the second part of the example, select statements are used to conditionally execute a load-go step. An imbed statement, If)IM", is used to bring in a separate skeleton for the load-go step. 258 ISPF Dialog Management Services EXEC PGM=IFOXOO,REGION=128K, IIASM PARM=(&ASMPARMS) II IISYSIN DD DSN=&ASMIN(&MEMBER),DISP=SHR IISYSLIB DD DSN=SYS1.MACLIB,DISP=SHR )SEL &ASMMAC1 -.= &Z II DD DSN=&ASMMAC1,DISP=SHR )SEL &ASMMAC2 -.= &Z II DD DSN=&ASMMAC2,DISP=SHR )ENDSEL )ENDSEL IISYSUT1 DD UNIT=SYSDA,SPACE=(CYL,(5,2)) IISYSUT2 DD UNIT=SYSDA,SPACE=(CYL,(2,1)) IISYSUT3 DD UNIT=SYSDA,SPACE=(CYL,(2,1)) IISYSPRINT DD SYSOUT=(&ASMPRT) )C~1 IF USER SPECIFIED "GO", WRITE OUTPUT IN TE~lP DATA SET ) CH THEN HfBED "LINK AND GO" SKELETON )SEL &GOSTEP = YES IISYSGO DD DSN=&&&&OBJSET,UNIT=SYSDA,SPACE=(CYL,(2,1)), II DISP=(HOD,PASS) )IM LINKGO )ENDSEL )CM ELSE (NOGO), WRITE OUTPUT TO USER DATA SET )SEL &GOSTEP = NO IISYSGO DD DSN=&ASMOUT(&MEMBER),DISP=OLD )ENDSEL I I"'~ Figure 43. Sample Skeleton File Chapter 7. Panel and Message Definition and Skeleton Formats 259 260 ISPF Dialog Management Services APPENDIX A. USING THE DISPLAY SERVICE This appendix describes the use of the DISPLAY, TBGET, and TBADD services in a dialog function that allows a user to add data to a table. Sections of this publication, containing information needed to understand this appendix, are listed in the Reading List on the next page. During function processing, the DISPLAY service is used to control displays requesting the user to enter data for new employees. The data consists of employee serial number (which is entered on panel SER) and name and phone number (which are entered on panel DATA). After the data is entered by the application user, it is added to the table, as a row, through use of the TBADD service. If the application user enters an employee serial number for which an employee record already exists in the table, the message DUPLICATE NUt-iBER is displayed on line one of the panel, SER. If the user enters the HELP command or presses the HELP PF key 1, the message EMPLOYEE RECORD ALREADY EXISTS FOR THIS NUt-iBER. ENTER ANOTHER is displayed on line three of the panel. When the user successfully enters data for an employee, the message NEW RECORD INSERTED is displayed on line one of panel SER. Then the user may enter the serial number of the next employee for which data is to be added to the table. The user ends function processing by entering the END or RETURN command (or by pressing the END or RETURN PF key), on any panel that the function displays. Logic that updates or deletes existing rows in the table is not included. Also, logic is not included to process any function commands originated by the user. (Logic that updates table rows and processes function commands is illustrated in Appendix C, "Using the TBDISPL Service" on page 289). (The function may be initiated by a user from a terminal by means of the ISPSTART command. If the user has already started ISPF, the function may be initiated, at the terminal, from a menu (on which the function is to be invoked by one of the provided selections) or from any display containing a command line, by means of SELECT action in a command table. Or, the function may be initiated from another function by use of the SELECT service.) Steps in dialog function processing are listed on a following page. Each step has a step identifier (la, 1b, 2a, etc.). This identifier refers to a descriptioh, on a following page, of the processing performed by the step. Appendix A. Using the DISPLAY Service 261 READING LIST Selected topics in this publication are listed below. They contain descriptions of the ISPF facilities illustrated by this appendix. The purpose is to allow a reader to gain, with a minimum of study, information to understand the example given on the following page. Sections to be Read Chapter 1, in its entirety (7 pages) Chapter 2, selected topics (15 pages): Dialog Organization Dialog Services Overview Display Services Panel Definitions Message Definitions Table Services Table Residency Accessing Data Example Variable Services Variable Access - Order of Search Relationship of Function Pools to Dialog Functions The Function Pool for Command Procedures The Function Pool for Programs (first paragraph only) Chapter 3, selected topic (1 page): END and RETURN Commands (first two paragraphs only) Chapter 6, selected topics (12 pages): Invocation of Services Command Invocation Return Codes from Services DISPLAY - Display Panels and Messages TBADD - Add a Row to a Table TBCLOSE - Close and Save a Table TBGET - Retrieve a Row from a Table TBOPEN - Open a Table Chapter 7, selected topics (10 pages) Panel Definitions Panel Body Section Sample Body Section Initialization and Processing Sections Statement Formats IF Statement VER Statement Message Definitions Message ID Message Library 262 ISPF Dialog Management Services STEPS IN FUNCTION PROCESSING This section lists the steps in the function. Dialog service requests (CONTROL, TBOPEN, DISPLAY, etc.) issued in the steps, are in the command procedure format. Note: Program format dialog service requests are illustrated with each service description in Chapter 6. Additional examples of services requests in both the command procedure (CLIST, EXEC) and program (COBOL, FORTRAN, PL/I) format may be found in ISPF Dialog Management Services Examples. Additional comments about function processing follow in "Description of Steps in Function Processing." Step Id Function Processing Comment la. lb. CONTROL ERRORS CANCEL TBOPEN TAB1 WRITE Terminate if 12 or higher return code. Open table TAB1. 2a. DISPLAY PANEL(SER) Display panel SER requesting serial number. - User enters employee serial number. Go retrieve any existing employee record. END or RETURN entered. 2b. 2c. if return code = 0, go to 3a if return code = 8, go to 8a 3a. 3b. 3c. TBGET TAB1 if return code = 0, go to 4a if return code = 8, go to Sa Attempt retrieval of employee record. = record exists. 8 = no record exists. 4a. DISPLAY PANEL(SER) MSG(EMPX210) Display DUPLICATE NUMBER message. - User enters another number. Go retrieve any existing employee record. END or RETURN entered. 4b. 4c. if return code = 0, go to 3a if return code = 8, go to 8a Sa. Sb. Set dialog variables to blanks DISPLAY PANEL(DATA) Sc. Sd. if return code = 0, go to 6a if return code = 8, go to 8a 6a. 6b. TBADD TAB1 if return code = 0, go to 7a 7a. DISPLAY PANEL(SER) 7b. 7c. 8a. 8b. ~lSG(EMPX211) if return code = 0, go to 3a if return code = 8, go to 8a TBCLOSE TABl End the function ° Blank variables LNA~1E, FNAME, I, PA, PHNUM. bisplay panel DATA requests employee data. - User enters employee name and phone no. Go write data to the table. END or RETURN entered. Write new record to the table. Display NEW RECORD INSERTED message. - User enters next number to be added. Go retrieve any existing employee record. END or RETURN entered. Write the table to permanent storage. End the function. Appendix A. Using the DISPLAY Service 263 DESCRIPTION OF STEPS IN FUNCTION PROCESSING The description below is related, by step id, to "Steps in Function Processing" above. Referenced figures are collected at the end of the description. Step Id Description la This ISPF service request specifies that the function is to be terminated for a return code of 12 or higher from an ISPF service request. lb Open the table: read table TAB1 (contents of which are shown in Figure 44) into virtual storage. 2a This DISPLAY operation uses panel definition SER (shown in Figure 45) to control the format and content of the display (shown in Figure 46). The display requests the user to enter a serial number for an employee. After the user enters the serial number (in the field labled EMPLOYEE SERIAL NUMBER), the DISPLAY service verifies it after storing it in function pool variable EMPSER. The verification is specified in aVER statement in the )PROC section of the panel definition, as shown in Figure 45: VER (&EMPSER,NONBLANK,PICT,NNNNNN) This statement specifies ~hat EMPSER must be nonblank and must consist of six digits, each in the range of 0 - 9. When the input passes the verification, the DISPLAY service returns control to the function. If the input fails the verification, the panel is automatically displayed again, but with an appropriate ISPF-supplied message displayed, right justified, on line 1. For example, if the user fails to enter the required employee serial number, an ISPF-provided message, ENTER REQUIRED FIELD, is displayed (shown in Figure 47). After reentry by the user, the information is stored again in function pool variable EMPSER and, again, it is verified. The process is repeated until the verification tests are passed. (Another example of verification processing is given in the step 5b description). 2b 264 If the return code is 0, the display operation is successfully completed. Go to step 3a to verify that no record exists for this employee number. ISPF Dialog Management Services 2c If the return code is 8, the END or RETURN command was entered on the display by the user. Go to step 8a to end processing. 3a This TBGET uses the employee serial number, stored in EMPSER in step 2a or 7a, to attempt retrieval of an employee record from the TABl table. The table is a keyed table and was created by the TBCREATE service, in another dialog, by the following request: TBCREATE TABl KEYS(EMPSER) NAMES(LNAME FNAME I PHA PHNUM) 3b If the return cude is 0, the record is found, which means that a record already exists for the employee serial number entered by the user. Go to step 4a to display the DUPLICATE NUMBER message. 3c If the return code is 8, no record is found. request the user to enter employee data. 4a This DISPLAY operation uses panel definition SER (shown in Figure 45) and message EMPX2l0 (shown in Figure 48) to control the format and content of the display. Go to step 5a to Note: The following DISPLAY request, omitting the PANEL(SER) parameter, could have been used in this step: DISPLAY MSG(EMPX210) When the PANEL parameter is omitted, the specified message is superimposed on the panel currently being displayed, which, in this case, is the panel SER. The short form of the message EMPX210, DUPLICATE NUMBER, is superimposed - right justified, on line 1 of the panel display (shown in Figure 49). While viewing this message, the user may enter the HELP command by pressing PF key 1. This causes the long form of the message to appear, superimposed - left justified, on line 3 of the display, as follows: EMPLOYEE RECORD ALREADY EXISTS FOR THIS NUMBER. ENTER ANOTHER. (See Figure 50). After the user enters the requested serial number, the DISPLAY service stores it in function pool variable EMPSER and verifies it as described for step 2a. After the input passes verification, the DISPLAY service returns control to the function. 4b If the return code is 0, the display operation is successfully completed. Go to step 3a to verify that no record already exists for this employee number. 4c If the return code is 8, the END or RETURN command was entered on the display by the user. Go to step 8a to end processing. Appendix A. Using the DISPLAY Service 265 5a These function pool variables are blanked to prepare to receive data for a new employee record. 5b The DISPLAY operation uses panel definition DATA (shown in Figure 51) to control the format and content of the display (shown in Figure 52). The variables blanked in step 5a are displayed along with the new employee serial number, which was entered in step 2a or 7a. The user is asked to enter, in the blanked fields displayed on the screen, the name and phone number for the employee. After the user enters these fields, the DISPLAY service stores the input in function pool variables LNAME, FNAME, I, PHA, and PHNUM. Then, verification of the input is performed as specified in VER statements in the )PROC section of the panel definition (shown in Figure 51). The input fields may pass the verification tests. If they do, the DISPLAY service returns control to the function. The input fields may fail the verification tests. If they do, a short form message is displayed superimposed on line 1 of the display. The message may be provided by ISPF (as described for step 2a) or the number of the message displayed may have been specified in the VER statement that defined the verification test (see VER statements containing message-ids EMPX212, EMPX213, and E~1PX214 in Figure 51). Where a message-id is specifi.ed, this message is displayed instead of an ISPF-provided message. In either case, if the user enters the HELP command, the long form of the message is displayed, left justified, on line 3. The text of the messages request reentry of information. When reentered, this information is stored again in function pool variables and, again, it is verified. The process is repeated until the verification tests are passed. 266 5c If the return code is 0, the display operation is successfully completed. Go to step 6a to add the record to the table. 5d If the return code is 8, the END or RETURN command was entered on the display by the user. Go to step 8a to end processing. Sa This TBADD adds a row to table TAB1 by copying values from function pool variables to the table row. The values copied are employee serial number (stored in the function pool variable EMPSER by step 2a or 7a) and employee name and phone number (stored in function pool variables LNAME, FNAME, I, PHA, and PHNUM by step 5b). ISPF Dialog Management Services Note: Function pool variables must have the same names as the table variables to which they are to be copied by the TBADD operation. Therefore, the names used in the TBCREATE that establishes the table (see the names EMPSER, LNAME, FNAME, I, PHA, and PHNUM in the TBCREATE illustrated in the step 3a description) are the same as the names used in the panel definitions (shown in Figure 45 and Figure 51) that establish function pool variables in which user-entered information is stored by the DISPLAY service. 6b If the return code is 0, the TBADD operation is successfully completed. Go to step 7a to display the NEW RECORD INSERTED message. 7a This DISPLAY operation uses panel definition SER (shown in Figure 45) and message EMPX211 (shown in Figure 48) to control the format and content of the display. The short form of message EMPX211, NEW RECORD INSERTED, is superimposed - right justified, on line 1 of the display. If the user enters the HELP command while this message is being displayed, the long form of the message (also shown in Figure 48), ENTER SERIAL NUMBER FOR NEXT EMPLOYEE RECORD TO BE INSERTED, is superimposed - left justified, on line 3 of the display. The user enters another serial number. The DISPLAY service verifies it as described for step 2a. When the serial number passes the verification tests, the DISPLAY service returns control to the function. 7b If the return code is 0, the display operation is successfully completed. Go to step 3a to verify that no record already exists for this employee number. 7c If the return code is 8, the END or RETURN command was entered on the display by the user. Go to step 8a to end processing. 8a Close the table TAB1: write it from virtual storage to permanent storage. 8b End the function. Appendix A. Using the DISPLAY Service 267 EMPSER LNAME FNAME ------ ------------ --------- 598304 172397 813058 395733 502774 Figure 44. ROBERS TON Sr-lITH RUSSELL ADAMS CARUSO RICHARD SUSAN CHARLES JOHN VINCENT I PHA PHNUM P A L 301 301 202 202 914 840-1224 547-8465 338-9557 477-1776 294-1168 -------- Q J Five Rows in Table Library Member TAB1 (TAB 1 is Referenced by Steps 1b, 3a, 6a, and 8a) )BODY %-------------------------- EMPLOYEE SERIAL -----------------------------------%COMMAND ===> ZCMD + %ENTER ENPLOYEE SERIAL BELOW: + + + EMPLOYEE SERIAL~~===> EMPSER+ + (MUST BE 6 NUMERIC DIGITS) + + +PRESS%ENTER+TO DISPLAY NEXT SCREEN FOR ENTRY OF EMPLOYEE DATA. + +PRESS%END KEY+(PF 3) TO END THIS SESSION. )PROC VER (&EMPSER,NONBLANK,PICT,NNNNNN) )END Figure 45. 268 Panel Library Member, Panel Definition SER (Used in Steps 2a, 4a, and 7a) ISPF Dialog Management Services -------------------------- EMPLOYEE SERIAL -----------------------------------COMMAND ===> ENTER EMPLOYEE SERIAL BELOW: EMPLOYEE SERIAL ===> (MUST BE 6 NUMERIC DIGITS) PRESS ENTER TO DISPLAY NEXT SCREEN FOR ENTRY OF E~lPLOYEE DATA. PRESS END KEY (PF 3) TO END THIS SESSION. Figure 46. Panel Display SER (Displayed by Steps 2a, 4a, and 7a) Appendix A. Using the DISPLAY Service 269 -------------------------- EMPLOYEE SERIAL --------------- ENTER REQUIRED FIELD COMMAND ===> ENTER EMPLOYEE SERIAL BELOW: EMPLOYEE SERIAL ===> (MUST BE 6 NUMERIC DIGITS) PRESS ENTER TO DISPLAY NEXT SCREEN FOR ENTRY OF EMPLOYEE DATA. PRESS END KEY (PF 3) TO END THIS SESSION. Figure 47. Panel Display SER With an ISPF-provided Message Superimposed on Line 1 (Displayable During Steps 2a and 7a) EMPX210 'DUPLICATE NUMBER' . ALARM=YES 'EMPLOYEE RECORD ALREADY EXI STS FOR THI S NU~1BER. ENTER ANOTHER. ' EMPX211 'NEW RECORD INSERTED' 'ENTER SERIAL NUMBER FOR NEXT EMPLOYEE RECORD TO BE INSERTED.' EMPX212 'ENTER PHONE NUMBER' 'IF THE E~lPLOYEE HAS NO PHONE, ENTER 000-0000.' EMPX213 'ENTER FIRST NAME' 'A FIRST NAME OR FIRST INITIAL IS REQUIRED.' EMPX214 'ENTER LAST NAME' 'A LAST NAME IS REQUIRED.' Figure 48. 270 Message Library Member EMPX21 (Used by Steps 4a, 5b, and 7a) ISPF Dialog Management Services - - - - - - - - - - - - --- - - - - - --- - -- EHPLOYEE SERIAL - - - -- - - - - - - - - - - - - DUPLICATE NUMBER COMMAND ===> ENTER EMPLOYEE SERIAL BELOW: EMPLOYEE SERIAL ===> 598304 (MUST BE 6 NUMERIC DIGITS) PRESS ENTER TO DISPLAY NEXT SCREEN FOR ENTRY OF EMPLOYEE DATA. PRESS END KEY (PF 3) TO END THIS SESSION. Figure 49. Panel Display SER With the Short Form of Message EMPX210 Superimposed on Line 1 (Displayed by Step 4a) Appendix A. Using the DISPLAY Service 271 -- - - - - - -- -- - - - - -- - - -- - - -- - ENPLOYEE SERIAL -- - - - -- - - - - - - - - - - - - DUPLICATE NUMBER CONNAND ===> EMPLOYEE RECORD ALREADY EXISTS FOR THIS NUMBER. ENTER ANOTHER. ENTER EHPLOYEE SERIAL BELOW: ENPLOYEE SERIAL ===> 598304 (HUST BE 6 NUMERIC DIGITS) PRESS ENTER TO DISPLAY NEXT SCREEN FOR ENTRY OF E~lPLOYEE DATA. PRESS END KEY (PF 3) TO END THIS SESSION. Figure 50. 272 Panel Display SER With the Long Form of Hessage EHPX210 Superimposed on Line 3 (Displayable During Step 4a) ISPF Dialog Management Services )BODY %------------------------------------ EMPLOYEE RECORDS %COMHAND ===> ZCHD + % E~lPLOYEE SERIAL: &EMPSER + + E~lPLOYEE NAME: LAST ~~===> LNAME + + FIRST ~~===> - FNAME + INITIAL~6===> 1+ + + HOHE PHONE: + AREA CODE ~~===> PHA+ + LOCAL NUMBER%===>- PHNUH + ----------------------- + + + + +PRESS~~ENTER+TO STORE EMPLOYEE DATA AS ENTERED ABOVE. + +PRESS%END KEY+(PF 3) TO END THIS SESSION. )INIT .CURSOR = LNAME IF (&PHA = ' ') &PHA = 914 )PROC VER VER VER VER VER VER VER VER ALPHA) (&FNAME,ALPHA) (&I,ALPHA) (&PHA,NONBLANK,PICT,NNN) (&PHNUM,PICT,'NNN-NNNN') (&LNAME, NONBLANK, ~ISG=EMPX214) (&FNAME,NONBLANK,MSG=EMPX213) (&PHNUM,NONBLANK,MSG=EMPX212) (&LNA~lE, )END Figure 51. Panel Library Member, Panel Definition DATA (Used in Step 5b) Appendix A. Using the DISPLAY Service 273 -----------------------------------COMl'fAND =---=> EMPLOYEE RECORDS EMPLOYEE SERIAL: 106085 EMPLOYEE NAME: LAST ===> FIRST ===> INITIAL ===> HOl'tE PHONE: AREA CODE LOCAL NUMBER ===> ===> PRESS ENTER TO STORE EMPLOYEE DATA AS ENTERED ABOVE. PRESS END KEY (PF 3) TO END THIS SESSION. Figure 52. 274 Panel Display DATA (Displayed by Step 5b) ISPF Dialog Management Services ----------------------- APPENDIX B. USING THE ISPF PARMS OPTION The Parms option allows a user to display and change a variety of ISPF parameters at any time during the ISPF session. Changes remain in effect until the user changes the parameter again, and are saved from session to session. The parameter options menu is shown in Figure 53. ------------------------OPTION ===> 1 2 3 TERNINAL LOG/LIST PF KEYS Figure 53. ISPF PARAHETER OPTIONS ---------------------------- - Specify terminal characteristics - Specify ISPF log and list defaults - Specify PF keys for 3277 terminal with 12 PF keys Parameter Options Menu SPECIFY TERMINAL CHARACTERISTICS (OPTION 0.1) When a user selects this option, a panel is displayed that allows him to specify the terminal type, number of program function (PF) keys, the default pad character for panel input fields, the mode of operation for a 3278 Hodel 5, and the command stacking delimiter. For MVS and VH/SP, the initial defaults are shown in Figure 54. Appendix B. Using the ISPF PARMS Option 275 For VSE, the initial defaults are shown in Figure 55. The allowable alternatives for these defaults are indicated on the display. After review and any changes are made to these parameters, enter the END command to return to the previous menu. ----------------------COHHAND ===> TERNINAL CHARACTERISTICS TERHINAL TYPE ===> 3277 (3277 (3277A (3278 (3278A (3278T NUHBER OF PF KEYS ===> 12 (12 or 24) INPUT FIELD PAD ===> N (N - Nulls) (B - Blanks) SCREEN FORHAT ===> DATA (3278 Model 5 only) COHHAND DELIHITER Figure 54. 276 ===> - ---------------------------- 3275/3277 terminal) 3275/3277 with APL keyboard) 3276/3278/3279 terminal) 3276/3278/3279 with APL keyboard) 3276/3278/3279 with TEXT keyboard) (DATA - Format based on data width) (STD - Always format 24 lines by 80 chars) (MAX - Always format 27 lines by 132 chars) (Special character for command stacking) Terminal Characteristics Panel (MVS and VM/SP) ISPF Dialog Management Services ----------------------COMHAND ==> TERHINAL CHARACTERISTICS ---------------------------- TERHINAL TYPE => 3277 (3277 (3277A (3278 (3278A (3278T NUMBER OF PF KEYS ===> 12 (12 or 24) INPUT FIELD PAD ===> N (N - Nulls) (B - Blanks) OPTIMIZE DISPLAY ==> N (Y - Optimize display data) (N - No optimization of display data) cm-mAND DELIMITER ==> Figure 55. - 3275/3277 terminal) 3275/3277 with APL keyboard) 3276/3278/3279 terminal) 3276/3278/3279 with APL keyboard) 3276/3278/3279 with TEXT keyboard) (Special character for command stacking) Terminal Characteristics Panel (VSE) Specification of terminal type allows ISPF to recognize valid (displayable) characters. A 3278 terminal can display six more characters than a 3277. If you have a 3279 terminal, specify 3278 as the terminal type, since a 3279 terminal has the same character set as a 3278. Note: One or more of following installation-dependent options for terminal type may also be included on this panel: 3277KN - for 3277 Katakana terminals 3278CF - for 3278 Canadian French terminals 3278KN - for 3278 Katakana terminals Specification of the number of PF keys controls the particular set of PF key definitions currently in use, and also affects the panel displayed by option 0.3. Appendix B. Using the ISPF PARMS Option 277 In the following cases, ISPF automatically senses the terminal type and number of PF keys: • If the screen size is greater than 24 lines (determined when the user logs on), ISPF sets the terminal type to 3278. • If the user presses a PF key higher than 12, ISPF sets the terminal type to 3278 and the number of PF keys to 24. ISPF cannot sense the terminal type or number of PF keys in the following cases: • If the user switched between a 3277 and 3278 Model 2 (both 24-line terminals). • If the user switched from a terminal with 24 PF keys to a terminal with 12 PF keys. In these cases, the user must inform ISPF of the terminal type and number of PF keys using option 0.1 or 0.3. Otherwise, incorrect character set and PF key definitions will be used (see option 0.3). ISPF automatically determines the terminal type during ISPF initialization, and sets it to the appropriate value. ISPF automatically sets (or changes) the number of PF keys in the following cases: • If the terminal type is 3277, ISPF initializes the number of keys to 12. • If the terminal type is 3278, ISPF initializes the number of keys to whatever was "remembered" from the user's last ISPF session (for a new user, the number of keys is initialized to 12). • If the user presses a PF key higher than 12, ISPF sets the number of keys to 24. ISPF cannot sense the number of PF keys if a user has switched from a 3278 with 24 PF keys to a 3278 with 12 PF keys. In this case, the user must inform ISPF of the number of PF keys through option 0.1 (Terminal Characteristics). Otherwise, the incorrect set of "remembered" key definitions will be used (see option 0.3). Specification of a pad character controls the initial padding of panel input fields (including selection panels) but not the data portion of an edit display. Within edit, null or blank padding is controlled with edit commands. Specification of display optimization controls the amount of data written to the terminal during each display operation. Specify N to have the complete screen image written to the terminal for each display request. This option is appropriate for terminals that are locally attached to the processor. Specify Y to have only changes to the screen 278 ISPF Dialog Management Services image written to the terminal. This option is appropriate for terminals remotely attached to the processor. Users can stack commands on the command line by separating them with a delimiter. The default delimiter, the semicolon, may be changed using this option. Stacking allows the user to enter, for example: ===> FIND DEPT;HEX ON which finds the characters DEPT and then displays the file at that point in hex mode. MVS: SPECIFY LOG AND LIST DEFAULTS (OPTION 0.2) When an MVS user selects this option, a panel (Figure 56) is displayed that allows him to specify default processing for log and list files, lines per page, and allocation parameters, to be used when he terminates ISPF using primary option X. ------------------------COMMAND ===> LOG AND LIST DEFAULTS LOG DATA SET DEFAULT OPTIONS ----------------------------- Process option SYSOUT class Local printer ID Lines per page Primary pages Secondary pages ==> ===> ===> ===> ===> ===> J A 60 10 10 ----------------------------- LIST DATA SET DEFAULT OPTIONS ----------------------------Process option SYSOUT class Local printer ID Lines per page Primary pages Secondary pages VALID PROCESS OPTIONS: J - Submit job to print (and delete) L - Route to local printer (and delete) ===> ==> ===> ===> ===> ==> J A 60 100 100 K - Keep data set (do not print) D - Delete data set (do not print) JOB STATEMENT INFORMATION: (If option "J" selected) ===> //HOSTETLA JOB (U602,B043), 'HOSTETLER RS' ,NOTIFY=HOSTETL ===> ===> ===> Figure 56. Log and List Defaults Panel (MVS) Appendix B. Using the ISPF PARMS Option 279 The initial defaults are: Log File SYSOUT Class Lines per Page Primary Pages Secondary Pages ===> ===> ===> ===> A 60 10 10 List File ===> ===> ===> ===> A 60 100 200 No defaults are supplied for the other parameters on this panel. Normal values for lines per page are: 60 80 - - for printing 6 lines per inch for printing 8 lines per inch Primary/secondary allocation parameters are specified in terms of anticipated number of pages of printout. These values are automatically converted by ISPF to the appropriate number of blocks prior to allocating space for the log and list files. If the user modifies the primary/secondary allocation parameters after the files have been allocated, the new values take effect the next time you enter ISPF. (The list file is allocated the first time the user requests a print function. The log file is allocated the first time a user performs some action that results in a log message, such as saving edited data or submitting a batch job.) For the log file, the user may specify a primary allocation of 0 (zero) to prevent allocation and generation of the log. Users can avoid allocating the list file by simply not requesting any print functions. If a user requests default processing options for the log and list files, the following rules apply: • If printing as a batch job is specified, SYSOUT class and job statement information must also be specified. (If option J for both log and list is specified, different SYSOUT classes may be specified but only one job is submitted for printing both files.) • If routing to a local printer is specified, a printer id must also be specified. If these rules are not observed, or if no default processing options are specified, primary option X or the RETURN command causes the termination menu to be displayed. After reviewing or changing the parameters on this panel, enter the END command to return to the previous menu. 280 ISPF Dialog Management Services VM/SP: SPECIFY CONSOLE, LOG, AND LIST DEFAULTS (OPTION 0.2) When a VN/SP user selects this option, a panel (Figure 57) is displayed that allows him to specify default processing for the virtual console and for the log and list files, to be used when he terminates ISPF using primary option X. If the user has not specified default processing options, primary option X will cause the ISPF termination menu to be displayed. ------------------COHHAND ===> CONSOLE, LOG, AND LIST CONSOLE PROCESS OPTION LOG PROCESS OPTION LIST PROCESS OPTION VALID P K D N - ===> ===> ===> ~EFAULTS (K or D) (P, K, D, or N) (P, K or D) LINES PER PAGE: LOG ===> 80 LIST ===> 80 PROCESS OPTIONS: Print file (and delete) Keep file - do not print Delete (purge) file - do not print Do not generate log file LOG/LIST SPOOL OPTIONS: NUHBER OF COPIES ===> 1 BIN NUHBER ===> 3800 KEYWORDS ===> SPOOL CLASS ===> A 'FOR' USER ===> FOR SPOOLING LOG/LIST TO ANOTHER PERSON OR USER/HACHINE ID ===> NODE/LINK ID ===> TAG TEXT ===> Figure 57. ~1ACHINE: Console, Log, and List Defaults Panel (VH/SP) Users may also specify the number of lines per page and spool parameters for printing the log and list files. The initial defaults are: Lines per page Number of copies Spool class ===> ===> ===> 80 (for both log and list) 1 A No ISPF-supplied defaults are provided for the other parameters on this panel. Appendix B. Using the ISPF PARHS Option 281 Normal values for lines per page are: 60 - for printing 6 lines per inch 80 - for printing 8 lines per inch The virtual console is automatically started the first time ISPF invokes a CHS command (typically, a LINK or ACCESS executed automatically) Upon termination of ISPF, the console may be kept (in "start" status) or deleted (purged and set to "stop" status). An appropriate processing option for the console would be: K - for users who normally run with a virtual console. D - for users who normally run without a virtual console. The ISPF log file is created the first time the user performs some action which results in a log message, such as saving edited data or submitting a job to the batch machine. The ISPF list file is created the first time a user requests a print function. For the log file, users may specify a process option of N to prevent generation of the log. Users may avoid generation of the list file by simply not requesting any print functions. See Chapter 5, "Invocation and Termination" for a discussion of spool parameters that may be specified for the log and list files. After reviewing or changing the parameters on this panel, enter the END command to return to the previous menu. VSE: SPECIFY LOG AND LIST DEFAULTS (OPTION 0.2) When a VSE user selects this option, a panel (Figure 58) is displayed that allows him to specify default processing for the log and list files, lines per page, and POWER JECL statements to be used when he terminates ISPF using primary option X. The initial defaults are: Lines per Page Log File List File ===> 60 ===> 60 Normal values for lines per page are: 60 - for printing 6 lines per inch 80 - for printing 8 lines per inch If a user requests default processing option J (print via a batch job), the POWER JECL statement information must be specified. 282 ISPF Dialog Management Services -------------------------COMMAND ===> LOG AND LIST DEFAULTS LOG DATA SET DEFAULT OPTIONS Process option Lines per page ===> ===> 60 VALID PROCESS OPTIONS FOR J - Submit job to print P - Write to ICCF print display on terminal ---------------------------- LIST DATA SET DEFAULT OPTIONS Process option Lines per page ===> ===> 60 LOG AND LIST DATA SETS: (and delete) K - Keep data set (do not print) area and D - Delete data set (do not print) (and delete) POWER JECL STATEHENTS: (If option "J" selected) ===> ..~ $ $ JOB JNH=ZLWGA ===> ..'~ ===> ..'~ ===> ..~ Figure 58. Log and List Defaults Panel (VSE) Note: reused. Option D means that the data in the data set is not The physical data set is not deleted. If option K is requested, ISPF attempts to extend the log or list data set in the next session, unless the data set was defined with a/FILE statement specifying DISP=D. Note: Extending the data set is accomplished by saving the next available record location for the log and list data sets in the system profile table ISPSPROF. This information is used, in the next session, to position to the next available record in the log or list data set. Thus, there is a relationship between the system profile table ISPSPROF and the physical location of the log and list data sets. Should the log or list data set starting location not match the information in the profile table or should the next available record address not be within the current log or list data set, that data set will be written from the beginning, just as though DISP=K had not been specified in the previous session. Appendix B. Using the ISPF PARHS Option 283 Sharing the same log or list data set between different users is not permitted because this could lead to conflicting or erroneous information being placed in the system profile table. If option P is selected, ISPF prints the data set using system logical unit SYSLST. This causes ICCF to display the data on the terminal and to write the data to the ICCF $$PRINT area. If default processing options are not specified, primary option X or the RETURN command causes the termination menu to be displayed. After reviewing or changing the parameters on this panel, enter the END command to return to the previous menu. SPECIFY PROGRAM FUNCTION KEYS (OPTION 0.3) The PF key definition panel allows users to assign PF keys to ISPF commands. A user may assign PF keys to system commands (such as HELP or END), to commands that are meaningful within a particular function or environment (such as the edit FIND and CHANGE commands), and to line commands (such as edit or dialog test I or D commands). When entering the KEYS command or select option 3 from the ISPF Parms option menu, the panel shown in Figure 59 is displayed. The PF key definitions shown in the figure are the default definitions distributed with ISPF. Before changing PF key assignments, verify the terminal type and the number of PF keys (12 or 24). The terminal type must be one of the following: 3277, 3277A, 3277KN, 3278, 3278A, 3278CF, 3278KN, 3278T The panel shown in Figure 59 is the panel that is displayed for terminals with 12 PF keys. For terminals with 24 PF keys, the first panel displayed by the KEYS command or by option 0.3 shows the "primary" keys (PF13-PF24). When the ENTER key is pressed, a panel is displayed showing the "alternate" keys (PF1-PF12). Flip-flop between the two panels by continuing to press ENTER. See Figure 60. Users can define or change a PF key function simply by equating the key to a command. Example: PF9 ===> CHANGE ALL ABC XYZ PF12 ===> PRINT In the example, PF9 has been equated to an edit command, and PF12 has been equated to the system-defined PRINT command. 284 ISPF Dialog Management Services ---------------------------COHHAND ===> NUHBER OF PF KEYS PF1 PF2 PF3 PF4 PF5 PF6 PF7 PF8 PF9 PF10 PF11 PF12 ===> ==> ===> ===> ===> ===> ===> ===> ===> ===> ===> ===> ===> 12 PF KEY DEFINITION TER~I I NAL --------------------------TYPE ===> 3278 HELP SPLIT END RETURN RFIND RCHANGE UP DOWN SWAP LEFT RIGHT CURSOR INSTRUCTIONS: Verify number of PF keys and terminal type before proceeding. Press ENTER key to process changes. Enter END command to process changes and exit. Figure 59. PF Key Definition Panel (12 PF Keys) If a blank is entered for any PF key definition, the key is restored to its ISPF default. The defaults are discussed under "Program Function Keys." When a PF key definition begins with a colon, it indicates a line command. The colon is stripped off and the command to which the key is equated is inserted in the first input field in the line at which the cursor is currently positioned. When a PF key definition begins with a greater-than sign, the command is passed through to the dialog via the command field. The command table is not searched. This is provided for compatibility with the previous SPF product. Appendix B. Using the ISPF PARMS Option 285 -------------------- PF KEY DEFINITION - PRIMARY KEYS ------------------------COMHAND ===> NUHBER OF PF KEYS PF13 PF14 PF15 PF16 PF17 PF18 PF19 PF20 PF21 PF22 PF23 PF24 ===> ===> ===> ===> ===> ===> ===> ==> ===> ===> ===> ===> ===> 24 TER~lINAL TYPE ===> 3278 HELP SPLIT END RETURN RFIND RCHANGE UP DOWN SWAP LEFT RIGHT PRINT INSTRUCTIONS: Verify number of PF keys and terminal type before proceeding. Press ENTER key to process changes and display alternate keys. Enter END command to process changes and exit. Figure 60 (Part 1 of 2). 286 PF Key Definition Panels (24 PF Keys) ISPF Dialog Hanagement Services ------------------ PF KEY DEFINITION - ALTERNATE KEYS ------------------------COHHAND ===> NOTE: The definitions below apply only to terminals with 24 PF keys. PFl PF2 PF3 PF4 PF5 PF6 PF7 PF8 PF9 PF10 PFll PF12 ===> ===> ===> ===> ===> ===> ===> ===> ==> ===> ===> ===> HELP SPLIT END RETURN RFIND RCHANGE UP DOWN SWAP LEFT RIGHT CURSOR INSTRUCTIONS: Press ENTER key to process changes and display primary keys. Enter END command to process changes and exit. Figure 60 (Part 2 of 2). PF Key Definition Panels (24 PF Keys) Appendix B. Using the ISPF PARt-1S Option 287 288 ISPF Dialog Management Services APPENDIX C. USING THE TBDISPL SERVICE This appendix describes the use of the TBDISPL and TBPUT services in a dialog function that displays rows of a table for possible modification by a user. During function processing, the TBDISPL service is used to control displays of a table, TAB1. Changes the user desires to make in TAB1, are entered on the display directly in fields of displayed lines. Each field corresponds to a table variable. Each line corresponds to a row of the table. After the user enters changes to a line or lines of the display, the function, by using TBDISPL, locates each line changed by the user and positions the table current row pointer (CRP) at the row in the table that corresponds to the line. TBDISPL operation then stores the contents of this row and values from the changed line of the display in function pool variables. Finally, the function uses the TBPUT service to write the updated function pool variables to the table row. A user may originate a function command while viewing the displayed panel. Logic is included that checks for this eventuality. The user ends function processing by entering the END or RETURN command (or by pressing the END or RETURN PF key) on the panel displayed by the function. Logic that deletes or inserts rows in the table is not included .in the function. Also, not illustrated is the capability to perform verification of user-enter information, in conjunction with panel display, through specifications on the panel definition. That is illustrated in Appendix A, "Using the DISPLAY Service"; see processing description step Sb. (The function may be initiated by a user at a terminal by means of the ISPSTART command. If the user has already started ISPF, the function may be initiated, at the terminal, from a menu (on which the function is invoked by one of the provided selections) or from a display, containing a command line, by means of SELECT action in a command table. Or, the function may be initiated by another function using the SELECT service.) Steps in dialog function processing are listed on the next page. Each step has a step identifier (la, 2a, 2b, etc.). This identifier refers to a description, on the page following, of the processing performed by the step. Appendix C. Using the TBDISPL Service 289 STEPS IN FUNCTION PROCESSING This section lists the steps in the function. Additional comments about function processing follow in "Description of Steps in Function Processing." Note: Dialog service requests in the steps (TBOPEN, TBDISPL, etc.), are in the command procedure format. Program format dialog service requests are illustrated with each service description in Chapter 6. Additional examples of services requests in both the command procedure (CLIST, EXEC) and program (COBOL, FORTRAN, PL/I) format may be found in ISPF Dialog Management Services Examples. Step Id Function Processing Comment 1a. TBOPEN TAB1 WRITE Open table TAB1. 2a. 2b. 2c. TBDISPL TAB1 PANEL(T1PANEL) if return code = 0, go to 3a if return code = 4, go to 4a 2d. if return code = 8, go to Sa Display table TAB1. = one line modified and/or command entered. 4 = two or more lines modified. A command may have been entered, as well. 8 = END or RETURN entered. ° 3a. 3b. 3c. 3d. 3e. TBQUERY TAB1 POSITION(CHECKCRP) if CHECKCRP = 0, go to 7a TBPUT TAB1 if ZCMD is not null, go to 7a if ZCMD is null, go to 2a If CRP=O, scrollable line was not changed, but command field (ZCMD) was changed. Process final line on this screen. If not null, a value is in the command field. If null, redisplay the table. 4a. 4b. 4c. 4d. TBPUT TAB1 TBDISPL TAB1 if return code = 0, go to 3a if return code = 4, go to 4a Process one of two or more lines remaining. Sa. 5b. 5c. 5d. 5e. TBQUERY TAB1 POSITION(CHECKCRP) if CHECKCRP = 0, go to 6a TBPUT TAB1 TBDISPL TAB1 go to Sa User entered END or RETURN command on the screen just displayed. Process any lines changed on this screen and then end the function. 6a. 6b. TBCLOSE TAB1 End the function End the function. 7a. 7b. process function command CONTROL DISPLAY SAVE 7c. CONTROL DISPLAY RESTORE Function command processing - Save screen contents and status. - Process the function command, including any displays. - Restore screen contents and status that were stored in step 7b. Redisplay the table. 7d. 290 go to 2a ISPF Dialog Management Services °4 == one line and/or a two or more lines command remain. remain to be processed. DESCRIPTION OF STEPS IN FUNCTION PROCESSING The description below is related, by step id, to "Steps in Function Processing" above. Referenced figures are collected at the end of the description. Step Id Description la Open the table: read table TABl (contents of which are shown in Figure 61) into virtual storage for update. 2a Display table TABl (beginning with the row at which the CRP is positioned). The display, as it appears at the terminal, is shown in Figure 62. Format of the display is controlled by a panel definition named TlPANEL (shown in Figure 63). TBDISPL, in addition to displaying the table, allows the user to scroll up and down the scrollable data in the display. The user may continue, indefinitely, to scroll through the displayed table. Control will be returned to the function when the user does one of the following: • enters the END or RETURN command without entering data on the panel. • enters a change in one or more lines of scrollable data and/or enters data in the command field (which is variable ZCMD, shown in Figure 63) and presses the ENTER key, enters a SCROLL command, or enters the END or RETURN command. When a line in the scollable part of the display has been changed, TBDISPL retrieves - from the table - the row corresponding to that line (i.e., the row values are stored in the function pool). The table CRP is positioned at this row when the row is retrieved. Next, values from the changed line are stored in the function pool. If no lines are changed, the CRP is set to zero. Any value entered in the command field is stored in variable ZCMD. 2b If the return code is 0, a single line was changed by the user; or an entry made in the command field (ZCMD) by the user, was passed through to this function; then the user pressed the ENTER key or entered a SCROLL command. Go to step 3a to process the line and/or the value in the command field. 2c If the return code is 4, more than one line was changed and the ENTER key was pressed or a SCROLL command was entered by the user. Go to step 4a to update the table. Appendix C. Using the TBDISPL Service 291 2d If the return code is 8, the END or RETURN command was entered by the user, go to step 5a to determine if any lines were changed. 3a Use TBQUERY to obtain the position of the CRP in a variable named CHECKCRP. 3b If the CRP is 0, no scrollable lines were changed by the user, but the command field (ZCMD) contains data that was originated by the user while viewing the display. 3c This TBPUT writes values stored in the function pool to the table row. A single line was changed by the user or several lines were changed and the line currently being processed is the final one to be processed. 3d When ZCMD is not null, it contains data that was originated by the user while viewing ths display. 3e Go to step 2a to redisplay the table, positioning the most recently changed line at the top of the display. 4a This TBPUT writes values stored in the function pool to the table row. More than one line was changed by the user. 4b A TBDISPL request issued with no panel name and message-id specified, positions the CRP to the row corresponding to the next line of the screen in which the application user made a change. That row is retrieved (i.e., stored in the function pool). Next, values from the line are stored in the function pool. 4c Go to step 3a if a single line remains to be processed. 4d Go to step 4a if more than one line remains to be processed. 5a The END or RETURN command was entered by the application user. Save the position of the CRP in a variable named CHECKCRP. 5b If the CRP is 0, no changed lines remain to be processed for the just displayed screen, or the END or RETURN command was issued by the user without having changed any lines. (The processing logic ignores any function command originated by the application user in conjunction with the END or RETURN command. The function developer, however, may choose to accept for processing function commands entered with END or RETURN. Function command processing is described by steps 3d and 7a through 7c.) 292 ISPF Dialog Management Services 5c If the CRP is nonzero, update the row of the table at which the CRP is positioned. 5d A TBDISPL request issued with no panel name and message-id specified, positions the CRP to the row corresponding to the next line of the screen in which the application user made a change. That row is retrieved (i.e., stored in the function pool). Next, values from the line are stored in the function pool. (Because the END or RETURN command has been entered by the user, a return code of 8 is returned each time for this TBDISPL request.) 5e Go to Sa to test the CRP for O. If 0, no more lines containing changes remain to be processed. 6a Close the table: write table TAB1, as revised, from virtual storage to permanent storage. 6b End the function. 7a Process the data, in ZCMD - the command field, originated by the user. (This data is either a bona fide function command i.e., data anticipated by function processing - or invalid data entered by the user). 7b If function command processing is to include any BROWSE, EDIT, DISPLAY, or TBDISPL operations, use CONTROL DISPLAY SAVE to save the contents and status of the currently displayed screen. 7c CONTROL DISPLAY RESTORE restores the screen previously saved by CONTROL DISPLAY SAVE so that processing can be resumed. If non-ISPF displays are processed, instead of using CONTROL DISPLAY SAVE and RESTORE, use CONTROL DISPLAY REFRESH either before or after the non-ISPF display is done. 7d Go to 2a to resume processing by redisplaying the table. Appendix C. Using the TBDISPL Service 293 ENPSER LNAME I FNAME PHA ------ ------------ --------598304 172397 813058 395733 502774 Figure 61. Roberston Smith Russell Adams Caruso Richard Susan Charles John Vincent PHNUH -------P A L Q J 301 301 202 202 914 840-1224 547-8465 338-9557 477-1776 294-1168 Table TAB 1 Contents ---------------------------COMMAND INPUT ===> EMPLOYEE LIST --------- LINE 000001 COL 001 080 SCROLL ===> PAGE ENTER NECESSARY REVISIONS (OTHER THAN CHANGES TO EMPLOYEE SERIAL): ------ E~1PLOYEE NA~1E ------- LAST FIRST MI Roberston Smith Russell Adams Caruso Richard Susan Charles John Vincent P A L Figure 62. 294 Q J Table TAB1 as Displayed ISPF Dialog Management Services --- PHONE --AREA NUMBER 301 301 202 202 914 840-1224 547-8465 338-9557 477-1776 294-1168 EMPLOYEE SERIAL 598304 172397 813058 395733 502774 )ATTR _ TYPE(INPUT) INTENS(LOW) @ TYPE(OUTPUT) INTENS(LOW) )BODY %---------------------------- EMPLOYEE LIST %COMMAND INPUT ===> ZCMD --------------------------------~~SCROLL ===> AMT + % +ENTER NECESSARY REVISIONS (OTHER THAN CHANGES TO EMPLOYEE SERIAL): + +------ E~IPLOYEE NAME --------- PHONE --EMPLOYEE +LAST FIRST AREA NUHBER SERIAL MI + )~IODEL LNAME )INIT &A~1T FNA~1E = I PHA PHNUM EMPSER+ PAGE )END Figure 63. Table Display Panel Definition TIPANEL Appendix C. Using the TBDISPL Service 295 296 ISPF Dialog Management Services APPENDIX D. COMMAND TABLE UTILITY The command table utility is a component of ISPF. It may be invoked as option 1 from the sample primary option menu (ISP@PRIM) distributed with ISPF. It may also be invoked as a utility from the PDF primary option menu (option 3.9) if PDF is installed. Use of this utility allows command tables to be generated or modified. The first panel displayed by this utility prompts the user for an application ide See Figure 64. The name of the command table is derived by appending "C~1DS" to the application ide If the table exists in the table input library, it is displayed and may be modified. If the table does not exist in the table input library, a new table is generated. Note: This utility cannot be used to modify a command table that is currently in use. Command table ISPCMDS (the system command table) is always in use by ISPF. To modify this table, the user must make a copy of the table, rename the copy, modify the copy, and replace the original with the copy outside the ISPF environment. Appendix D. Command Table Utility 297 --------------------COMNAND ===> COMMAND TABLE UTILITY --------------------------- ENTER/VERIFY APPLICATION ID BELOW: APPLICATION ID ===> The name of the command table to be processed is formed by prefixing the application id to the string 'C~1DS'. For example: APPLICATION ID ===> TST results in a command table name of 'TSTCNDS'. Figure 64. Command Table Utility Panel The second panel displayed by the command table utility is shown in Figure 65. For each row of the table, it shows the command verb, the truncation amount (T), the action, and the description. The description is displayed on a separate line, offset under the action. For a new table, this panel initially contains a full screen of dummy entries in which all fields are displayed with underscores. The underscores are pad characters, and need not be blanked out. The entries in entries may be following line overtyping the 298 this display may be scrolled up and down, and one or more modified simply by overtyping. In addition, the commands may be entered at the left of any entry by four quote marks: • I or In - insert one or "n" lines. The inserted line(s) will contain underscores (pad characters) in all field positions. • R or Rn - repeat one or "n" lines. The repeated line(s) will contain underscores (pad characters) in the verb and truncation fields, but the action and description fields will be replicated from the line on which the "R" or "Rn" was entered. ISPF Dialog Management Services • D or Dn - delete one or "n" lines. In addition to the two scroll commands (UP and DOWN), the following primary commands are supported: • END - causes the table to be saved in the table output library, and terminates the utility. • CANCEL "CAN". - terminates without saving the table. Nay be abbreviated Notes: 1. Nultiple line commands or modifications may be entered in a single interaction. The lines are processed in the order in which they appear on the screen. 2. Any line commands or modifications that are entered concurrently with the END command are processed before the table is saved. 3. Any null entries (in which at least the verb contains all underscores) are automatically deleted when the table is saved. CONNAND TABLE - TSTCNDS ------------------------------- LINE 000001 COL 001 080 CONNAND ===> SCROLL ===> PAGE INSERT, DELETE, AND CHANGE CONNAND ENTRIES. UNDERSCORES NEED NOT BE BLANKED. ENTER END CONNAND TO SAVE CHANGES OR CANCEL TO END WITHOUT SAVING. VERB T ACTION DESCRIPTION " " SORT 0 " " PREPARE 4 " " QUIT 2 EXPLAIN 4 UP 0 DOWN 0 t, , , ,,,, " " Figure 65. SELECT PGN(PQRSORT) PARN(&ZPARM) SORT ENTRIES BY ASCENDING ORDER SELECT CMD(XPREP &ZPARM) NEWPOOL PREPARE FILE FOR FORMATTING ALIAS END QUIT COMMAND - SAME FUNCTION AS END ALIAS HELP EXPLAIN CONNAND - SANE FUNCTION AS HELP &SCRVERT SCROLL UP CONNAND &SCRVERT SCROLL DOWN COMNAND Command Table Editing Panel Appendix D. Command Table Utility 299 300 ISPF Dialog Management Services APPENDIX E. SUMMARY OF ISPF SYNTAX This appendix contains a quick reference of syntax for invoking an ISPF application, message definitions, skeleton control statements, panel definitions, and dialog service requests. INVOKING AN ISPF APPLICATION (See page 88) ISPSTART PANEL(panel-name) [OPT(option)] C~1D ( command) PG~1(program-name) [PARN(parameters)] [LANG(PLI\PL1) [,storage-area]] [LANG(COBOL) ] [NEWAPPL[(application-id)]] [TEST\TESTX\TRACE\TRACEX] [NOABEXIT] MESSAGE DEFINITIONS (See page 251) msgid [ 'short message'] [. HELP 'long message' = panel-name \~] [. ALARM = YES \ NO] SKELETON CONTROL STATEMENTS (See page 256) )DEFAULT abcdefg )TB value1 ... value8 )IM skel-name [NT] [OPT] )SEL relational-expression )ENDSEL )DOT table-name )ENDDOT Appendix E. Summary of ISPF Syntax 301 )SET variable = expression )CM comment PANEL DEFINITIONS Panel' Header Statements All parameters on header statements are optional. panel header statement, use only one line. When preparing a Attribute Section (Optional section, see page 206) )ATTR [DEFAULT (abc I %+_)] Body Section (Required section, see page 210) )BODY Model Section [CMD(field-name)] [SMSG(field-name)] [LMSG(field-name)] [DEFAULT(abc [KANA] I %+_)] --G-'IV- 1)\ (Optional section, see page 244) )MODEL [CLEAR(var-name,var-name ... )] Initialization Section (Optional section, see pag~ 213) )INIT Processing Section (Optional section, see page 213) )PROC 302 ISPF Dialog Management Services [ROWS (ALL I SCAN)] Statement Specifying the End of a Panel Definition (Required statement, see page 199) )END Panel Statements and Built-in Functions Attribute Section One or more parameters are required with each attribute character specified. These parameters are (see page 207): CAPS(ONIOFF) PAD (NULLS I char) ATTN (ON IOFF) TYPE(TEXTIINPUTIOUTPUT) INTENS(HIGHILOWINON) JUST(LEFTIRIGHTIASIS) SKIP(ONIOFF) Initialization and Processing Sections (See page 214) variable = value TRUNC (variable, value) TRANS (variable value,value ... [MSG=message-id}) IF (variable operator value[,value ... ]) VPUT name-list [ASIS I SHAREDI PROFILE] VER (variable[ ,NONBLANK] ,keyword [ ,value ... ] [,HSG=message-id] Panel Control Variables (See page 223) . CURSOR = field-name .RESP = ENTER I END . HELP = panel-name .TRAIL = variable ,\\('i Appendix E. Summary of ISPF Syntax 303 .MSG = message-id .ZVARS = '(name-list)' DIALOG SERVICES The command invocation syntax (for CLIST and EXEC 2) for all services is shown first, followed by the call invocation syntax for PL/I. For other language syntax, refer to "Call Invocation" in Chapter 6. The services are described in Chapter 6 in alphabetic sequence. Command I nvocation Syntax Refer to Chapter 6 for complete description of the services, where they appear in alphabetic sequence. Display Services ISPEXEC DISPLAY [PANEL(panel-name)) [MSG(message-id)] [CURSOR(field-name)] ISPEXEC TBDISPL table-name ISPEXEC SETMSG ~1SG(message-id) [PANEL(panel-name)) [MSG(message-id)] [CURSOR(field-name)] [CSRROW(table-row-number)) Table Services - General 304 ISPEXEC TBCREATE table-name [KEYS(key-name-list)) [NAMES(name-list)] [WRITE INOWRITE] [REPLACE] ISPEXEC TBOPEN table-name [WRITE INOWRITE] ISPEXEC TBQUERY table-name [KEYS(key-name)] [NAMES(var-name)] [ROWNUM(rownum-name)] [KEYNUM(keynum-name)) [NAMENUM(namenum-name)] [POSITION(crp-name)] ISPEXEC TBSAVE table-name [LIBRARY(library-name)] [NEWCOPYIREPLCOPY] [NAME(alt-name)] [PAD(percentage)] ISPF Dialog Management Services ISPEXEC TBCLOSE table-name [LIBRARY(library-name)] [NEWCOPYIREPLCOPY] [NAHE(alt-name)] [PAD(percentage)] ISPEXEC TBEND table-name ISPEXEC TBERASE table-name [LIBRARY(library-name)] [SAVE(name-list)] Table Services - Row Operations ISPEXEC TBADD table-name ISPEXEC TBDELETE table-name ISPEXEC TBGET table-name [SAVENAHE(var-name)] ISPEXEC TBPUT table-name [SAVE(name-list)] ISPEXEC TBMOD table-name [SAVE(name-list)] ISPEXEC TBEXIST table-name ISPEXEC TBSCAN table-name [ARGLIST(name-list)] [SAVENAME(var-name)] ISPEXEC TBSARG table-name [ARGLIST(name-list)] ISPEXEC TBTOP table-name ISPEXEC TBBOTTOM table-name [SAVENAME(var-name)] ISPEXEC TBSKIP table-name [NUMBER(number)] [SAVENAME(var-name)] ISPEXEC TBVCLEAR table-name File Tailoring Services ISPEXEC FTOPEN [TEMP] ISPEXEC FTINCL skel-name ISPEXEC FTCLOSE [NAME(member-name)] [LIBRARY(library-name)] [NOREPL] ISPEXEC FTERASE member-name [NOFT] [LIBRARY(library-name)] Appendix E. Summary of ISPF Syntax 305 Variable Services ISPEXEC VGET name-list [ASISISHAREDIPROFILE] ISPEXEC VPUT name-list [ASIS ISHARED IPROFILE] Other Services 306 ISPEXEC SELECT {PANEL(panel-name) [OPT(option)] l) CHD(command) PGM(program-name) [PARM(parameters)] [NEWAPPL[(application-id)] INEWPOOL] ISPEXEC CONTROL ISPEXEC BROWSE DATASET (dsname) [VOLUME(serial)] [PASSWORD(pswd-value)] ISPEXEC BROWSE FILE(fileid) [MEMBER(member-name)] ISPEXEC EDIT DATASET(dsname) [VOLU~1E (s er ial) ] [PASSWORD(pswd-value)] ISPEXEC EDIT FILE(fileid) [MEMBER(member-name)] ISPEXEC LOG ~ISG(message- DISPLAY { LOCK LINE [START(line-number)] SM [START(line-number)] REFRESH SAVE IRESTORE NONDISPL [ENTERIEND] ERRORS [CANCEL IRETURN] SPLIT {ENABLE } DISABLE ISPF Dialog Management Services id) J Call I nvocation Syntax Refer to Chapter 6 for complete description of the services, where they appear in alphabetic sequence. DisElay Services CALL ISPLINK ('DISPLAY' [ , panel-name] [ ,message-id] [,field-name] ) ; CALL ISPLINK ('TBDISPL', table-name CALL ISPLINK ('SETMSG', message-id); Table Services [ , pane I-name] [ ,message-id] [,field-name] [,table-raw-number] ) ; - General CALL ISPLINK ( 'TBCREATE ' , table-name [,key-name-list] [ , name -1 is t ] [, 'WRITE' I 'NOWRITE' ] [ , 'REPLACE' ] ) ; CALL ISPLINK ('TBOPEN' , table-name [, 'WRITE' I 'NOWRITE'] ) ; CALL ISPLINK ( 'TBQUERY' , table-name [ , key -name] [, var-name] [,rownum-name] [ , keynum-name] [ , namenum -name] [ , crp -name] ) ; CALL ISPLINK ('TBSAVE', table-name [, 'NEWCOPY' I 'REPLCOPY'] [ , al t -name] [ , percentage] [,library-name]); CALL ISPLINK ('TBCLOSE', CALL ISPLINK ('TBEND' , table-name); CALL ISPLINK ( , TBERASE ' , table-name table-name [, 'NEWCOPY' I 'REPLCOPY'] [, al t-name] [ , percentage] [,library-name]); [,library-name] ) ; Appendix E. Summary of ISPF Syntax 307 Table Services - Row 0Eerations table-name [ ,name-list] CALL ISPLINK ('TBADD' , CALL ISPLINK (' TBDELETE' , table-name) ; CALL ISPLINK (' TBGET' , table-name [ ,var-name] CALL ISPLINK ('TBPUT' , table-name [ ,name -1 is t ] ); CALL ISPLINK ('TBNOD' , table-name [ ,name-l ist] ); CALL ISPLINK (' TBEXIST' , table-name) ; CALL ISPLINK ('TBSCAN' , table-name [ ,name-list] [ ,var-name] ) ; CALL ISPLINK ('TBSARG' , table-name [ ,n am e - 1 is t ] CALL ISPLINK ('TBTOP' , table-name); CALL ISPLINK ( , TBBOTTOM' , table-name [ , var-name] CALL ISPLINK (' TBSKIP' , CALL table-name [ ,number] [ , var-name] ); ) ; ); ); ); ISPLINK ('TBVCLEAR', table-name); File Tailoring Services 308 CALL ISPLINK ( 'FTOPEN' [ , 'TEMP' ] CALL ISPLINK (' FTINCL' , skel-name [ , 'NOFT' J CALL ISPLINK ('FTCLOSE' [ ,member-name] [,library-name] [ , 'NOREPL' ] ) ; CALL ISPLINK ('FTERASE', member-name ISPF Dialog Management Services ); ) ; ,[library-name]); Variable Services CALL ISPLINK ('VGET' , name-list [, 'ASIS' I 'SHARED' I 'PROFILE'] ) ; CALL ISPLINK ('VPUT' , name-list [,'ASIS' I 'SHARED' I 'PROFILE'] ) ; CALL ISPLINK ( 'VDEFINE ' , name-list, variable, format, length [ , options -list] [, user-data] ) ; CALL ISPLINK ( 'VDELETE' , name-list); CALL ISPLINK (' VCOpy' , name-list, array-l, array-2 [ , 'LOCATE' I 'NOVE' ] ) ; CALL ISPLINK (' VREPLACE' , name-list, lengths, values); CALL ISPLINK ('VRESET') ; Other Services CALL ISPLINK ('SELECT', buf-length, buffer); Note: parameters which may appear in buffer are: PANEL(panel-name) [OPT(option)] CND(command) PGM(program-name) [PARM(parameters)] [LANG(PLIIPLl [,storage-area])] [LANG(COBOL)] [NEWAPPL [(application-id)] INEWPOOL] CALL ISPLINK ('CONTROL', type [,mode] [,line-number] ); CALL ISPLINK ('BROWSE', dsname [ ,serial] [ ,pswd-value] CALL ISPLINK ('BROWSE', fileid [ , member -name] CALL ISPLINK ('BROWSE', dsname [, recfm] [,lrecl] [ ,blks ize] [,sysno [,volser] ) ; CALL ISPLINK ('EDIT', dsname [,serial] [ ,pswd-value] CALL ISPLINK ('EDIT', fileid [ , member -name] ); ) ; ); ); Appendix E. Summary of ISPF Syntax 309 310 CALL ISPLINK ('EDIT', dsname ['profile] [ , recfm] [,lrecl] [ ,blksize] [ , sysno [,volser] ) ; CALL ISPLINK (' LOG' , message-id); ISPF Dialog Management Services APPENDIX F. VDEFINE EXIT ROUTINE The dialog writer may specify an exit routine to define dialog variables when program variables are nonstandard (other than CHAR, FIXED, BIT, or HEX). Then, when a variable is accessed by any ISPF service, the exit routine is invoked to perform any conversion necessary between the program variable's format and the character string format required for a dialog variable. This type of exit is specified with the format of USER. A data area must be supplied that contains the address of the exit subroutine along with any other user data. If the defined variable name is '*', all unresolved dialog variable accesses result in invocation of the exit routine. (Unresolved dialog variables are those which were not implicitly entered or defined in the function pool.) The exit routine is invoked by a call (BALR 14,15) and standard as linkage conventions must be followed. When a variable read is being performed a return code of 8 by the user exit indicates that the variable was not found. All other nonzero return codes for either read or write requests are considered severe errors. The parameters are a request flag, data length, data address, defined storage length, defined storage address, and the user data area. The exit is invoked with: CALL XRTN( UDATA, SRVCODE, NAMESTR, DEFLEN, DEFAREA, SPFDLEN, SPFDATAP) ; /"': invoke exit and pass user area ,,': / /* request code */ /* name length and name chars */ /* defined area length */ /* defined area */ /* ISPF data length */ /* ISPF data address */ /* to ISPF data on read request */ UDATA An area that follows the exit routine address parameter, specified on the VDEFINE statement. This area may contain any additional information the user desires. Its format is CHAR(*). SRVCODE Service request-type code, as a fullword fixed value. The allowable values are 0 for a read and 1 for a write. Other values should be accepted without error, in order to allow further extensions. (Codes of 2 and 3 are used by the dialog test facility variable query function. Code 2 is a request for the number of variables to be returned in the SPFDLEN field. Code 3 is a request for the names of the variables to be returned in the buffer pointed to by SPFDATAP. The names are entered as contiguous 8-byte tokens.) Appendix F. VDEFINE Exit Routine 311 NAMESTR Name of the dialog variable being requested, preceded by the one-byte name length. DEFLEN The length of the area specified to the VDEFINE service. format is a fullword fixed value. Its DEFAREA The area specified to the VDEFINE service. Its format is CHAR(*); SPFDLEN For a write request, the length of the SPFDATA area is supplied. For a read request, the length of the data is returned to ISPF. It, must be supplied by the exit routine. Its format is a fullword fixed value. SPFDATAP For a write request, the address of the data to be stored is supplied. For a read request, the address of the data is returned to ISPF. Its format is a fullword pointer. The following return codes are possible and should be set in the exit routine: o - Successful operation 8 - Variable not found on read request Others - Severe error 312 ISPF Dialog Management Services APPENDIX G. CHARACTER TRANSLATIONS FOR APL, TEXT, AND KATAKANA ISPF permits use of APL keyboards for all models text keyboards for 3278 and 3279 terminals. The codes for APL and text characters are translated codes for internal storage as shown in Figure 66 of 3270 terminals, and 2-byte transmission by ISPF into I-byte and Figure 67. ISPF also permits use of 3277 and 3278 Japanese Katakana terminals. The character codes are documented in IBM 3270 hardware manuals. Many of the Katakana codes overlay the lowercase EBCDIC codes. In a panel definition, it is assumed that lowercase EBCDIC characters are to be displayed for these codes, unless the )BODY header statement includes the keyword KANA. Example: )BODY KANA The keyword, KANA, is used on a )BODY header statement when Katakana characters are included within the panel. When KANA is specified, rules for display of text fields are as follows (input and output fields and model line fields are not affected by use of the KANA keyword): • If the terminal type is Katakana, and the KANA keyword is present, text characters are left as is. the KANA keyword is not present, any lowercase text characters are translated to uppercase and uppercase text characters are left as is. • If the terminal type is not Katakana, and the KANA keyword is present, any lowercase text characters are treated as being non-displayable and are translated to a period. Any uppercase text characters are left as is. the KANA keyword is not present, lowercase and uppercase text characters are left as is. Appendix G. Character Translations for APL, TEXT, and Katakana 313 0 3 4 5 6 7 A 9 8 C B D E F 00 OF 10 1F 20 2F 30 3F sp 40 & 50 - 60 g 8 § .4 .IS. 1. / ~ I .. 1\ 70 5 E § M N Q 11 Y Y:1. Q t! ! E Q B. ~ Y. V < ¢ ... I ,.. I.... ~ I ... \ ... : $ ... * , % # ( ) , I 4F ..01 5F -, ..01 - , @ ..01 + ..01 r > ? = " L -+ 8F -+- 9F 6F 7F ..01 80 "v a b c d e f g h i t + 90 0 j k I m n 0 p q r :J C s t u v w x y z n u .1 [ ~ 0 AF x \ V !:. T ] 1= I BF ~ CF [!] A DF e m qi EF • c.P - AO 'V ... BO ex s I P w CO { ... } A B C D E F G H I A J K L M N 0 P Q R I S T U V W X Y Z ~ 2 3 4 5 6 7 8 9 ,.. DO ,.. ... EO \ FO 0 ... D D Figure 66. 314 2 1 1 $; 0 f'"'o,J 4> v ! ~ '" 'iJ "• -6 FF 3278 only; invalid character on 3277. National use character. Graphics shown are for U.S. keyboards; graphics differ in other countries. Internal Character Representations for APL Keyboards ISPF Dialog Management Services 0 2 1 3 4 5 6 7 8 9 A B C D E F 00 OF 10 1F 20 2F 30 3F 40 sp 50 & 1 60 - / 70 n 2 + $ ... * ) , , % : # .... @ t { 5 } tI • L I I I , .... 80 0 - AO ( ! -} 3 0 90 < ¢ ... .... .... > ? 6F = 7F + " + 8F ± • 9F [ ~ • AF I ] ;t - BF -- -\- CF ~ --* DF ;\ EF - , .... ( a b c d e f g h i j k I m n 0 p q r S t u v w x y z 1 2 3 4 5 6 7 8 9 Ij -.l A B C D E F G H I 6 .1 T V 'V ..01IIII ) BO 0 CO { DO } ... J K L M N 0 P Q R m 6 § ~ EO \ \ S T U V W X Y Z 'V I- ~ . '+' FO 0 1 2 3 4 5 6 7 8 9 I L 1/SP 98 VSE 100 batch execution 95 TSO error processing 96 TSO sample job 96 VM/SP error processing 98 VM/SP sample job 98 VSE error processing 101 VSE sample job 100 beginning ISPF 87 BIT parameter on VDEFINE 189 on VER statement 220 blksize parameter on BROWSE VSE 116 326 ISPF Dialog Management Services on EDIT VSE 129 body section of panel definition 199, 210 BROWSE and EDIT service 42 BROWSE service description MVS and VM/SP 113 VSE 116 example MVS and VM/SP 115 VSE 119 browse services panel definition scroll field, location of 201 bypassing display See jump function r--l I C I L-.J calculation of DTCB size 28 calculation of table size 28 call invocation 105 general format 106 positional parameters 106 CANCEL mode effect on error processing 109 CANCEL parameter on CONTROL 120 CAPS keyword in panel )ATTR section 207, 208 change row in table TBMOD 167 TBPUT 171 changes, differences between ISPF and SPF 317 changing number of lines to be scrolled See scrolling amount CHAR parameter on VDEFINE 189 with PAD keyword 209 character translations for APL, TEXT and Katakana keyboards 313 check variable content 219 checking the content of panel input fields (use of the VER statement) 219 clear table variables to nulls (TBVCLEAR) 185 CLIST libraries MVS 67 CLIST variables used in commands 104 close and save table (TBCLOSE) 150 close table without saving (TBEND) 162 CM file tailoring control statement See )CM CMD parameter on panel body section 211 CMD(command) parameter in )PROC section 230 on ISPSTART 89 on SELECT 140 CMS system command 49 COBOL return codes from services MVS and VM/SP 110 VSE 111 COBOL, compiler used with ISPF 1 column display position table display operations 201 column of a table, defining 22 command entry concatenated with PF key restriction 47 command field key-in of command entries 45 naming via the CMD parameter 211 panel body section 211 position in panel definition 201 command field, naming of 201 command invocation 103 general format 103 positional parameters 104 command parameter in panel )PROC section 230 command procedure function pool 35 command processing restriction split screen mode 48 with HELP command 46 command stacking restriction with HELP command 46 command table utility 297 command tables 53 action commands 54 dynamically specified command actions 58 format of 53 modification of 297 used for assigning command aliases 56 used for overriding system commands 56 used for passing commands to a dialog function 57 commands entry of 45 interception by ISPF 45 levels of 45 processing of by ISPF 46 stacking for execution 46 system See system commands comment statements 204 communication between functions and panels via shared pool 38 compare variable content 219 compilers used with ISPF 1 concatenation of PF key entered value with command entry restriction 47 console default for VM/SP See also specifying options using parms setting using parms 281 CaNT system variable on tutorial panels 240 control facilities 12 control of scrolling See CSR CONTROL service description 43, 120 error disposition when CANCEL specified 109 when RETURN specified 109 example 123, 263, 290 control statements skeleton definition 254 control variables 223 example see figure on page 225 initialization 224 list of 223 when reset 224 copy a variable (VCOPY) 186 COpy parameter on VDEFINE 190 copy variables to shared pool or profile (VPUT) 194 CP system command 49 create a new table (TBCREATE) 153 creating a table example 26 creating dialog components 3 creation of application profile pools 38 creation of shared pools 38 CRP (current row pointer) 24 crp-name parameter on TBQUERY 173 CRP, movement of Index 327 See TBBOTTOM See TBSCAN See TBSKIP See TBTOP CSRROW(table-row-number) parameter on TBDISPL 157 CUR scrolling amount 52 current-row-pointer See CRP CURSOR (.CURSOR) control variable See .CURSOR cursor control of scrolling See CUR cursor positioning default 226 example 226 cursor select 63 processing of selected fields 63 cursor select key selection of attention field 47 CURSOR system command 48 CURSOR(field-name) parameter on DISPLAY 124 r-t I D I L---.J data communications within ISPF 7 data records in skeleton definition 254 data table control block (DTCB) calculation of size 28 DATASET(dsname) parameter on BROWSE MVS and VM/SP 113 VSE 116 on EDIT MVS and VM/SP 126 VSE 129 defaultPF Key assignments 59 DEFAULT skeleton control statement See )DEFAULT define a table search argument (TBSARG) 175 define function variable VDEFINE 188 defined variables 36 defining display images 3 defining primary option menus 232 delete (set to nulls) table values (TBVCLEAR) 185 328 ISPF Dialog Management Services delete a table (TBERASE) 163 delete row from table (TBDELETE) 155 determine if row exists in table (TBEXIST) 164 determining table size 28 DEVADDR(sysno) parameter on EDIT VSE 129 dialog beginning with menu or function 5, 9 control concepts 9 cross-system use 1 definition of 1 development of 3 MVS and VM/SP 72 VSE/AF 1.3.5 78 VSE/AF 2.1 85 example 261, 289 initiation of 12, 93 invocation of using application master menu 6 organization concepts 9 processing concepts 9 recursive entry into 56 running of 5 services overview 17 termination of 93 typical organization 9 dialog abend intercept VSE 95 dialog components creation of· 3, 8 test of 3 MVS and VM/SP 72 VSE/AF 1.3.5 78 VSE/AF 2.1 85 dialog development libraries MVS and VM/sp 72 VSE/AF 1.3.5 78 VSE/AF 2.1 85 dialog function languages used for coding 1 dialog variable See variables differences between ISPF and SPF 317 DISABLE parameter on CONTROL 120 display bypassing See jump function display data set MVS and VM/SP (BROWSE) 113 VSE (BROWSE) 116 display file MVS and VM/SP(BROWSE) 113 VSE(BROWSE) 116 display menu (SELECT) 140 DISPLAY parameter on CONTROL 120 DISPLAY service description 17, 124 example 27, 125, 261, 263 display services 17 syntax summary - calls 307 syntax summary - commands 304 display table data (TBDISPL) 156 display, set the next message to (SETNSG) 145 display, specification of 3 DOT file tailoring control statement See )DOT DOWN scroll command 52 DOWN system command 47 dsname parameter on BROWSE NVS and Vi'1jSP 113 VSE 116 on 'EDIT MVS and Vi'1jSP 126 VSE 129 on VER statement 221 DTCB calculation of size 28 dynamically specified command actions 58 r--l I E I L--.l EDIT and BROWSE service 42 EDIT service description i'1VS and VMjSP 126 VSE 129 example MVS and Vi'1jSP 128 VSE 132 edit services panel definition scroll field, location of 201 editing the content of panel input fields (use of the VER statement) ENABLE parameter on CONTROL 120 end file tailoring (FTCLOSE) 133 END parameter 219 on CONTROL 120 END statement 199 END system command 47 See also RETURN system command distinguishing from RETURN 51 processing 50 ENDDOT file tailoring control statement See )ENDDOT ending display See END system command ending function or dialog See END system command See RETURN system command ending ISPF 93 ENDSEL file tailoring control statement See )ENDSEL ENQ issued by TBOPEN 169 enqueuing for table write operations 25 ENTER parameter on CONTROL 120 entry of commands See commands ENTRY statement required when link editing VSE programs 112 environment 1 erase (set to nulls) table variables (TBVCLEAR) 185 erase a table (TBERASE) 163 erase member of file tailoring output library (FTERASE) 135 error modes CANCEL and RETURN 109 error processing TSO batch execution 96 VMjSP batch execution 98 when put into effect 93 ERRORS parameter on CONTROL 120 examples of menus 234 EXEC variables used in commands 104 EXEC 2 libraries, VM SP 71 EXIT parameter in )PROC section 230, 231 exit routine VDEFINE service 311 explicit chain mode 233 extended return See jump function extension variables table 24 Index 329 r--l I F I L-----1 field select~on via cursor position 63 field selection via light pen 63 field type specification in panel )ATTR section 208 field-name parameter on DISPLAY 124 on TBDISPL 157 file tailoring end (FTCLOSE) 133 file tailoring libraries NVS 66 VH/SP 69 VSE 78, 84 file tailoring services description 28 example 31 output 28 processing 28 in conjunction with table processing 29 skeleton example 29 syntax summary - calls 308 syntax summary - commands 305 FILE(fileid) parameter on BROWSE MVS and VM/SP 113 VSE 116 on EDIT: HVS and EDIT 126 fileid parameter on BROWSE MVS and VH/SP 113 on EDIT MVS and VH/SP 126 on VER statement 220 find table variable TBSARG 175 TBSCAN 180 FIXED parameter on VDEFINE 189 format command invocation 103 format of skeleton control statements 256 format of skeleton definition 254 format parameter on VDEFINE 188 formula for table size calculation 28 330 ISPF Dialog Management Services FORTRAN return codes from services MVS and VM/SP 110 VSE 111 FORTRAN, compiler used with ISPF 1 FTCLOSE service description 133 example 31, 134 FTERASE service description 135 example 135 FTINCL service description 136 example 31, 136 FTOPEN service description 137 example 31, 138 function dialog example 261, 289 function pool creation of 35 definition of 33 description of 35 for command procedures 35 for programs 36 life of 35 relationship to dialog functions 35 function variables, define in function pool (VDEFINE) 188 function, dialog creation of 3 description of 7 languages used for coding 1 r--l I G I L--J general table services 26 generic search argument specification of TBSCAN 180 generic search argument, specification of TBSARG 175 get a copy of variable (VCOPY) 186 get row from table (TBGET) 165 get variable from shared pool or profile (VGET) 192 r--l I H I L-J HALF scrolling amount 52 HELP (.HELP) control variable See .HELP HELP command entry to tutorial 16 stacking restriction 46 HELP system command 47, 239 help tutorial special definition requirements HEX parameter on VDEFINE 189 HIGH parameter with INTENS keyword 208 228 invoking services 103 ISPF differences with SPF 317 ISPFILE ddname 66, 69 ISPLINK 106 ISPLINK routine, invoking services from programs 2 ISPLLIB ddname 67 ISPLNK 106 ISPLNK routine, invoking services from FORTRAN programs 2 ISPMLIB ddname 65, 68 ISPPLIB ddname 65, 68 ISPPROF ddname 65, 68 ISPSLIB ddname 65, 68 ISPSTART description 87 example 5 ISPSTART syntax 88 ISPTABL ddname 66, 69 ISPTLIB ddname 65, 66, 68, 69 r--l I I I L-J r--l I ICCF system command 48 identical variable names 37 IF statement in panel )INIT section 218 in panel )PROC section 218 1M file tailoring control statement See )IM implicit variables 36 include file tailoring skeleton (FTINCL) 136 INCLUDE statements required when link editing VSE programs 112 INDEX tutorial command 16, 239 initialization of control variables 224 initialization section of panel definition 199, 213 initiating a dialog 93 input protecting table 25 INPUT parameter with TYPE keyword 208 INTENS keyword in panel )ATTR section 207, 208 interception of commands by ISPF 45 introduction 1 invocation of ISPF 87 invoking a dialog (SELECT) 140 invoking an ISPF application 5 from master application menu 6 invoking SELECT service 93 J I L-J JCL allocating libraries for MVS 66 job for batch execution TSO 96 VM/SP 98 VSE 100 jump function 51 JUST keyword in panel )ATTR section 207, 208 r--l I K I L-..J Katakana keyboards character translations 313 key-name parameter on TBQUERY 173 Key-name-list parameter on TBCREATE 153 KEYNUM(keynum-name) parameter on TBQUERY 173 KEYS system command 48 used for defining PF key functions 60 KEYS(key-name) parameter on TBQUERY 173 Index 331 KEYS(key-name-list) parameter on TBCREATE 153 keyword parameter coding in requests for services 108 r---l I L I L-..J LANG(COBOL) parameter in panel )PROC section Z30 on ISPSTART 89 on SELECT 140 LANG(PLI) parameter in panel )PROC section 230 on ISPSTART 89 on SELECT 140 languages used for coding functions 1 LEFT parameter with JUST keyword 208 LEFT scroll command 52 LEFT system command 48 length parameter on VDEFINE 190 length-array parameter on VCOPY 186 lengths parameter on VREPLACE 196 levels of ISPF commands 45 library setup HVS 65 VM/SP 68 VSE/AF 1.3.5 73 VSE/AF 2.1 79 LIBRARY(library-name) parameter on FTCLOSE 133 on FTERASE 135 on TBCLOSE 150 on TBERASE 163 on TBSAVE 177 light pen 63 processing of selected fields 63 sample panel 64 selection of attention field 47 line mode automatic and non-automatic entry into line mode 121, 141 LINE parameter on CONTROL 120 lines number to be scrolled See scrolling amount link editing VSE programs 332 ISPF Dialog Management Services ENTRY statement required 112 INCLUDE statements required 112 linking requirement for split screen mode 68 list file defaults specifying using parms option 275 LIST parameter on VER statement 221 LMSG parameter on panel body section 211 LOCATE parameter on VCOPY 186 LOCK parameter on CONTROL 120 locks for table write operations 25 log file defaults specifying, using parms option 279, 281, 282 LOG service description 43, 139 example 139 logging a message See LOG service logical screens See split screen mode long message 20 LOW parameter with INTENS keyword 208 lower-level menu example of 237 lrecl parameter on BROWSE VSE 116 on EDIT VSE 129 r--l I M I L-J master application menu 6, 234 example of 234 MAX scrolling amount 52 MEMBER(member-name) parameter on BROWSE MVS and VM/SP 113 VSE 116 on EDIT MVS and VM/SP 126 member-name parameter on FTCLOSE 133 on FTERASE 135 menu definition of primary option 232 entry to tutorial 16 example of primary option 236 lower-level example of 237 master application example 234 special definition requirements 228, 229 use of ZPARENT to set next display 233 message description of 7 set the display of next (SETMSG) 145 message definition 199 creation of 20 in message library 21 long example 22, 252 message-id 251 parts of 20 processing 251 short example 22, 252 syntax 251 message fields panel body section 211 message library 251 example 22, 252 message logging See LOG service message-id parameter on DISPLAY 124 on LOG 139 on SETMSG 145 on TBDISPL 157 minidisk, shared support 323 model section of panel definition 199 modes of operation set by use of CONTROL service CANCEL 109 RETURN 109 test 91 trace 93 modify command tables 297 modify row in table TBMOD 167 TBPUT 171 modifying displayed tables using TBDISPL 289 modifying tables example 261 MOVE parameter on VCOPY 186 move row pointer (CRP) See TBBOTTOM See TBSCAN See TBSKIP See TBTOP MS commands referencing ISPF files can cause unpredictable results 141 MSG (.MSG) control variable See .MSG MSG(message-id) parameter on DISPLAY 124 on LOG 139 on SETMSG 145 on TBDISPL 157 MSG=value parameter on assignment statement 215 MVS allocating libraries 66 batch environment 95 invocation of ISPF 87 invoking an ISPF application 5 library setup 65 PA keys definition of 62 specifying options using parms 279 starting a dialog 12 TSO PCF 67 use of libraries 72 r-I I N I L---1 name of variable too long for panel definition 226 NAME parameter on VER statement 221 NAME(a1t-name) parameter on TBCLOSE 150 on TBSAVE 177 NAME(member-name) parameter on FTCLOSE 133 name-list parameter how to code on requests for services 108 on TBADD 147 on TBCREATE 153 on TBMOD 167 on TBPUT 171 on TBSARG 176 on TBSCAN 180 Index 333 on VCOPY 186 on VDEFINE 188 on VGET 192 on VPUT 194 on VREPLACE 196 NAMENUM(namenum-name) parameter on TBQUERY 173 NAMES(name-list) parameter on TBCREATE 153 NAMES(var-name) parameter on TBQUERY 173 naming the command field via CMD parameter 211 NB parameter on VER statement 220 nested dialogs 51 NEWAPPL(application-id) parameter in )PROC section 230 on ISPSTART 89 on SELECT 140 NEWCOPY parameter on TBCLOSE 150 on TBSAVE 177 NEWPOOL parameter in )PROC section 230 on SELECT 140 next message, set the display of (SETMSG) 145 NOBSCAN parameter on VDEFINE 190 NOCHECK parameter in )PROC section 230 example 231 NOFT parameter on FTINCL 136 NON parameter with INTENS keyword 208 non-ISPF displays, using REFRESH after 50 NONBLANK parameter on VER statement 220 NONDISPL parameter on CONTROL 120 nonreusable program used when split screen mode use anticipated 68 NOP action specified via ZCTACT 54 NOREPL parameter on FTCLOSE 133 NOWRITE parameter on TBCREATE 153 on TBOPEN 169 NULLS parameter with PAD keyword 209 334 ISPF Dialog Management Services NUM parameter on VER statement 220 number of lines to scroll See scrolling amount number parameter on TBSKIP 182 NUMBER(number) parameter on TBSKIP 182 numeric value parameter how to code on requests for services 108 r---l I 0 I L-..J obtain a copy of variable (VCOPY) 186 obtain copy of variable from shared pool or profile (VGET) 192 obtain table information (TBQUERY) 173 OFF parameter with ATTN keyword 210 with CAPS keyword 208 with SKIP keyword 210 ON parameter with ATTN keyword 210 with CAPS keyword 208 with SKIP keyword 210 online tutorial 16 open a table (TBOPEN) 169 open skeleton files (FTOPEN) 137 open table, create and (TBCREATE) 153 operating system passing commands to 46 operation in test mode 91 operation in trace mode 93 OPT system variable 229 on tutorial panels 240 OPT(option) parameter on ISPSTART 89 on SELECT 140 optional libraries MVS 66 VM/SP 69 options-list parameter on VDEFINE 190 order of panel definition sections 200 order of search variable pools 33 output protecting table '25 OUTPUT parameter with TYPE keyword 208 overriding system commands by use of command tables 56 r--l I P I L---.I PA keys definition, VSE 63 PA keys/definition HVS and VH/SP 62 PAD keyword in panel )ATTR section 207, 209 PAD (percentage) parameter on TBCLOSE 150 on TBSAVE 177 PAGE scrolling amount 52 panel body section 210 panel definition 199 attribute section 199 default characters 206 statement format 207 body section 199, 210 sample 211 statement format 210 command field 211 specification 211 creation of 3, 19 description of 3, 18 design suggestions 202 example of 19 for help and tutorial panels 239 format 200 formatting guidelines 200 initialization section 199, 213 statement formats 214 line 1 content 201 line 2 content 201 line 3 content 201 location of command field 200 message field 200 panel title 200 scroll amount 200 message field specification 211 model section 199 order of sections 200 position of command field 201 position of long message 201 processing 20, 227 processing section statement formats 214 sections of 199 short message for TBDISPL operations 201 special requirements 228 specifying field type 208 syntax rules 202 tutorial and help panels 239 used by TBDISPL 18 panel display description of 7 specification of 3 panel processing considerations 227 PANEL(panel-name) parameter in )PROC section 230 on DISPLAY 124 on ISPSTART 89 on SELECT 140 on TBDISPL 157 PANELID system command 48 parameters for service requests coding rules for iv, 108 parameters specified as variables 107 PARM(parameters) parameter in )PROC section 230 on ISPSTART 89 on SELECT 140 parms option See also specifying options using parms description of 17 instructions for use of 275 terminal characteristics panel 276, 277 used for specifying ISPF parameter options 275 parms option use MVS 279 VH/SP 281 VSE 282 partitioning display screen See split screen mode parts of a dialog dialog components 7 passing commands See command tables passing commands to a dialog function 57 passing control from program-coded to command-coded function 9 using the SELECT service 33 Index 335 PASSTHRU action specified via ZCTACT 54 PASSWORD(pswd-value) parameter on BROWSE HVS and VHjSP 113 VSE 116 on EDIT HVS and VHjSP 126 PAl key HVS and VHjSP 62 PAl key, VSE 63 PA2 key HVS and VH/SP 62 PA2 key, VSE 63 PCF TSO Programming Control Facility 67 percent (%) sign beginning a command with 121, 141 percentage parameter on TBCLOSE 150 on TBSAVE 177 permanent table 23 PF key-entered value concatenated with PF key restriction 47 PF keys 59 definition of functions for 60 definition panel 60 providing default settings 62 saving function definitions for 62 specifying using parms option 275, 284 used for command entry 45, 46 PGH(program-name) parameter in )PROC section 230 on ISPSTART 89 on SELECT 140 PICT parameter on VER statement 220 PL/I return codes from services MVS and VMjSP 110 VSE 111 PL/I, compiler used with ISPF 1 PLIRETV/PLI built-in function HVS and VHjSP 110 pointer, move current row See TBBOTTOH See TBSCAN See TBSKIP See TBTOP POSITION(crp-name) parameter 336 ISPF Dialog Management Services on TBQUERY 173 positional parameters call invocation 106 command invocation 104 PRESUHE statement 103, 105 primary option menus 232 PRINT system command 49 PRINT-HI system command 49 processing file tailoring services 28 light pen and cursor selected fields 63 table services 23 processing a dialog 5 processing file tailoring skeletons example 31 processing prior to panel display 213 processing tables example use of table services 26 processing, panel 227 profile See also application profile pool definition of 33 PROFILE parameter on VGET 192 on VPUT 194 on VPUT statement in panel )INIT and )PROC sections 223 program access (PA) keys HVS and VH/SP 62 VSE 63 program function keys 59 program function pool 36 program libraries HVS 67 VH/SP 71 program linkage VSE 3 program linking requirement for split screen mode 68 program-name parameter in panel )PROC section 230 on ISPSTART 87 on SELECT 140 program, copy a variable to (VCOPY) 186 pswd-value parameter on BROWSE HVS and VH/SP 113 on EDIT MVS and VM/SP 126 put variables in shared pool or profile (VPUT) 194 r--l I R I L-J RANGE parameter on VER statement 221 RCHANGE system command 47 read a table into virtual storage (TBOPEN) 169 read row from table TBBOTTOH 149 TBGET 165 TBSCAN 180 TBSKIP 182 read variable from shared pool or profile (VGET) 192 recfm parameter on BRO\{SE VSE 116 on EDIT VSE 129 recursive entry into dialog functions 56 redisplaying contents of a screen using PA Key HVS and VH/SP 62 VSE 63 reentrant program used when split screen mode use anticipated 68 reference of dialog variables by a program function (VDEFINE) 188 referencing data in dialogs See variable services description REFRESH parameter on CONTROL 120 relationship of function pools to dialog functions 35 remove definition of variables from function pool VDELETE 191 VRESET 198 REPLACE parameter on TBCREATE 153 replace variable in function pool (VREPLACE) 196 REPLCOPY parameter on TBCLOSE 150 on TBSAVE 177 representation of dialog variables 39 required libraries HVS 65 VH/SP 68 VSE 73 VSE/AF 2.1 79 requirements special for panel definition 228 reset of control variables 224 reset table variables to nulls (TBVCLEAR) 185 reset variables (VRESET) 198 reshow key (PA2) HVS and VM/SP 62 VSE 63 residency of tables 23 resource protection table services 25 RESP (.RESP) control variable See .RESP RESTORE parameter on CONTROL 120 restriction on use of ISPF services 6 retrieve row from table TBBOTTON 149 TBGET 165 TBSCAN 180 TBSKIP 182 retrieve variables from shared pool or profile (VGET) 192 return codes from services 109 MVS and VN/SP 110 VSE 111 RETURN mode effect on error processing 109 RETURN parameter on CONTROl?(c"i20 RETURN system command 47 distinguishing from END 51 processing 50 RETURN-CODE COBOL built-in variable HVS and VH/SP 110 RFIND system command 47 RIGHT parameter with JUST keyword 208 RIGHT scroll command 52 RIGHT system command 48 row deletion (TBDELETE) 155 row display position table display operations 201 row pointer, move See TBBOTTOH See TBSCAN See TBSKIP See TBTOP row table services 26 row, determine existence (TBEXIST) 164 rownum-name parameter Index 337 on TBQUERY 173 rows of a table content of 22 defining 23 rules coding parameters for service requests iv, 108 running a dialog 5 r-J I S I L...:....J save and close table (TBCLOSE) 150 SAVE parameter on CONTROL 120 save table (TBSAVE) 177 SAVE(name-list) parameter on TBADD 147 on TBNOD 167 on TBPUT 171 SAVENAME(var-name) parameter on TBBOTTOM 149 on TBGET 165 on TBSCAN 180 on TBSKIP 182 saving PF key definitions, system variables for 62 scrolling commands to control 52 scroll amount 52 tutorial panels 52 search order of for variable pools 33 search a table (TBSCAN) 180 search argument, specification of TBSARG 175 TBSCAN 180 SEL file tailoring control statement See )SEL SEL system variable 229 See also ZSEL system variable on tutorial panels 240 SELECT action specified via ZCTACT 54 SELECT action command 55 SELECT Service 14 creation of shared pools 38 description 14, 140 example 144 invocation 93 panel processing 229 338 ISPF Dialog Nanagement Services used to pass control within a dialog 33 selecting an attention field 47 selection panel See menu serial parameter on BROWSE VSE 116 on EDIT HVS and VN/SP 126 VSE 129 serial/parameter on BROWSE HVS and VN/SP 113 service interface routine, ISPLINK and ISPLNK 2 service name parameter coding in requests for services 108 services invocation 2 overview 17 to dialogs 1 to interactive applications 1 services description BROWSE 42 CONTROL 43 display .17 EDIT 42 file tailoring 28 LOG 43 SELECT 14 syntax for command and call statements iv, 103, 105, 112 table 22 variable 32 SET file tailoring control statement See )SET set next menu (ZPARENT) 233 set processing modes (CONTROL) 120 set row pointer See TBBOTTOM See TBSCAN See TBSKIP See TBTOP SETMSG service description 18, 145 example 146 SETVERB action specified via ZCTACT 54 shared minidisks, using, in VM 323 SHARED parameter on VGET 192 on VPUT 194 on VPUT statement in panel )INIT and )PROC sections 223 shared pool creation of 38 definition of 33 description of 38 life of 38 used for communication between functions and panels 38 shared pool variables as affected by menu processing 35 short mesEage 20 single name parameter how to code on requests for services 108 skel-name parameter on FTINCL 136 skeleton description of 8 skeleton definition assigning a value to a variable 258 comment statement 258 description of 254 example 30, 259 format of 254 imbedding of 256 specifying table processing 257 types of records in 254 skeleton formats 199 SKIP keyword in )ATTR section 210 in panel )ATTR section 207 SKIP tutorial command 16, 239 skipping display See jump function SM parameter on CONTROL 120 SMSG parameter on panel body section 211 specify a table search argument TBSARG 175 TBSCAN 180 specify PF keys alternate 287 primary 286 specifying a table 23 specifying ISPF parameter options using parms option 275 specifying log and list file defaults using parms option 275 specifying options using parms MVS log and list defaults 279 PF keys 284 terminal characteristics (option 0.1) 275 VMjSP console, log, and list defaults 281 VSE log and list defaults 282 specifying terminal characteristics using parms option 275 SPF changes from 317 SPLIT command 17 SPLIT ENABLE,DISABLE parameters on CONTROL 120 split screen mode 16 command processing restriction 48 entering 17 program linking requir~ment 68 terminating 17 VSE restriction 93 SPLIT system command 47 stacking commands for execution 46 HELP restriction 46 START(line-number) parameter on CONTROL 120 starting a dialog 12 starting ISPF 87 steps in dialog development HVS and VHjSP 72 VSEj AF 1. 3.5 78 VSEjAF 2.1 85 STOPAT system command 48 storage-area parameter in panel )PROC section 230 on ISPSTART 89 on SELECT 140 storing variables from a panel in shared and profile pools (VPUT) 223 subpools used by EDIT and BROWSE 42 summary of changes from SPF 317 summary of services syntax 301 SWAP system command 47 syntax rules message definition 251, 253 panel definition 202 services requests (parameters) 108 services requests (service names and operands) iv services summary 304 skeleton definitions 254 sysno parameter on BROWSE VSE 116 on EDIT VSE 129 Index 33'9 system commands 47 description 45 list of 47 overriding by use of command tables 56 PF key defaults 47 system profile pool See also application profile pool accessible by 39 description of 39 order of search 39 system variables 40 for saving PF key definitions 62 in shared pool 40 list of 41 used for communication between dialogs and ISPF 41 system-defined default areas, panel 200 r---l I T I L--J table avoiding concurrent update of 25 columns 22, 23 definition 22 description 7 example 23 input and output protection 25 input library when same as output l~brary 23 library access 23 permanent 23 processing 23 in conjunction with file tailoring processing 29 number of table limit 28 residency 23 rows 22, 23 size calculation 28 temporary 23 types 23 updates 23 when created or updated 8 table display (TBDISPL) 156 table display output example 248, 250 table display panel definition 243 attribute section 244 body section 244 example 247 example of mUltiple model lines 249 340 ISPF Dialog Management Services initialization section 245 message, location of 201 model line 243 model section 244 scroll field, location of 201 special requirements 228 table display panel defintion short message area content 201 table input and output protection 25 table libraries MVS 66 VMjSP 69 VSE 78, 84 table save (TBSAVE) 177 table search (TBSCAN) 180 table services description 21, 22 example 26 general services 24 resource protection 25 row services 26 syntax summary - calls 307 syntax summary - commands 304 used to modify displayed tables 289 table update avoiding concurrent 25 table-name parameter on TBADD 147 on TBBOTTOH 149 on TBCLOSE 150 on TBCREATE 153 on TBDELETE 155 on TBDISPL 157 on TBEND 162 on TBERASE 163 on TBEXIST 164 on TBGET 165 on TBMOD 167 on TBOPEN 169 on TBPUT 171 on TBQUERY 173 on TBSARG 176 on TBSAVE 177 on TBSCAN 180 on TBSKIP 182 on TBTOP 184 on TBVCLEAR 185 table-row-number parameter on TBDISPL 157 TB file tailoring control statement See )TB TBADD service description 147 example 27, 148, 263 TBADD services used to modify displayed tables TBBOTTOH service description 149 example 149 TBCLOSE service description 150 example 28, 152, 263, 290 TBCREATE seTvice description 153 example 26, 154, 265 TBDELETE service description 155 example 155 TBDISPL service description 18, 156, 246 example 161, 289 TBDISPL services used to modify displayed tables TBEND service description 162 example 162 TBERASE service description 163 example 163 TBEXIST service description 164 example 164 TBGET service description 165 example 166, 263 TBNOD service description 167 example 168 TBOPEN service description 169 example 170, 263, 290 TBPUT service description 171 example 290 examples 172 TBQUERY service description 173 example 174, 290 TBSARG service description 175 example 176 TBSAVE service description 177 example 179 TBSCAN service description 180 example 181 261 289 TBSKIP service description 182 example 183 TBTOP service description 184 example 184 TBVCLEAR service description 185 example 185 TENP parameter on FTOPEN 137 temporary table 23 terminal characteristics specifying using parms option 275 terminal display, specification of 3 terminal keys 59 terminating a dialog 93 terminating display See END system command terminating function or dialog See END system command See RETURN system command terminating ISPF 87, 93 terminating TSO commands of CLIST using PA Key 62 TEST and TEXTX parameters on ISPSTART 89 test mode operation 91 test value of variable during panel processing 218 testing dialog components 3 TEXT keyboards character translations 313 TEXT parameter with TYPE keyword 208 TOP tutorial command 16, 239 TRACE and TRACEX parameters on ISPSTART 89 trace mode operation 93 TRAIL (.TRAIL) control variable See .TRAIL TRANS parameter on assignment statement 215 example 216, 217, 226, 230 example, nested 217 translation of defined variable 40 TRUNe parameter on assignment statement 215 example 215, 217, 230 truncation of defined variable 40 TSO batch environment 95 TSO batch execution job 96 Index 341 TSO Programming Control Facility 67 TSO system command 48 tutorial commands 16, 239 ending of 16 entry to 16 invocation of 239 sample hierarchy of panels 241 sample panel 242 use of 16, 239 TYPE keyword in panel )ATTR section 207, 208 r--l I U I L-.--1 UP scroll command 52 UP system command 47 UP system variable on tutorial panels 240 UP tutorial command 16, 239 update of tables avoiding concurrent 25 update row in table TB}lOD 167 TBPUT 171 update variables in shared pool or profile (VPUT) 194 updating tables 23 example use of table services 26 use of commands, program keys, and light pen 45 use of libraries NVS and VNjSP 72 VSEjAF 1.3.5 78 VSEjAF 2.1 85 use of subpools by EDIT and BROWSE 42 USER parameter on VDEFINE 189 user-data parameter on VDEFINE 190 using ISPF services 2 restricted to ISPF environment 6 using shared minidisks 323 using the DISPLAY service 261 using the parms option 275 See also specifying options using parms using the TBDISPL service 289 342 ISPF Dialog Management Services r---l I V I L--.l validity checking user entered data on panel displays (use of the VER statement) 219 value test of variable value during panel processing 218 value-array parameter on VCOPY 186 values parameter on VREPLACE 196 var-name parameter on TBGET 165 on TBQUERY 173 on TBSCAN 180 on TBSKIP 182 variable parameter in panel definition )INIT section 214 )PROC section 214 variable parameter on assignment statement 215, 216 on VDEFINE 188 variable pools order of search 33 variable services description 32 summary 42 syntax summary - calls 309 syntax summary - commands 306 variables access by functions written in a command procedure 35 access by functions written in a programming language 36 copy (VCOPY) 186 creation of 35 define in function pool (VDEFINE) 188 defined type 36, 40 definition of 32 format of 39 identical names 37 implicit type 37 in message definition 253 maximum length of 32 names of passed as parameter to services 104 names too long for panel definition '226 naming of 32 on panels, restricted size 203 order of accessing pools of 32 pools of order of search 33 processing on menus 35 remove definition of from function pool (VDELETE) 191 from function pool (VRESET) 198 replace in function pool (VREPLACE) 196 reset 198 retrieve from shared pool or profile (VGET) 192 services description , See variable services description storing from a panel in shared and profile pools (VPUT) 223 table extension 24 update in shared pool or profile (VPUT) 194 value test during panel processing 218 variables, table clearing to nulls using TBVCLEAR 185 KEY type 23 non-key type 23 VCOpy service description 186 example 187 used to access system variables 40 VDEFINE service description 188 example 190 exit routine 188, 311 use of 36 VDELETE service description 191 example 191 VER statement in panel )INIT section 219 example 220, 221, 226 in panel )PROC section 219 VER statement example 264 verify variable content 219 verlay phase structures n t permitted in VSE 112 VGET service description 192 example 192 used to access application profile pool 39 shared pool 33 system variables 40 virtual machine communciation facility (VMCF), use of 44 VL keyword assembler language 106 VM shared minidisk support 323 VM/SP &PRESUME statement 105 allocating libraries 69 batch environment 98 batch execution job 98 invocation of ISPF 87 invoking and ISPF application 5 library setup 68 PA keys definition of 62 PRESUME statement 103 restrictions on use of module files 72 specifying options using parms 281 starting a dialog 12 use of libraries 72 use of the virtual machine communication facility (VMCF) 44 VMCF, virtual machine communciation facility, use of 44 VOLUME (serial) parameter on EDIT VSE 129 VOLUME(serial) parameter on BROWSE HVS and VM/SP 113 VSE 116 on EDIT MVS and VM/SP 126 VPUT service description 194 example 195 used to access application profile pool 39 shared pool 33 VPUT statement example 223 in panel )INIT section 223 in panel )PROC section 223 VREPLACE service description 196 example 197 VRESET service description 198 example 198 VSE AF 1.3.5 library setup 73 batch environment 100 Index 343 batch execution job 100 dialog abend intercept 95 ENTRY statement required when link editing programs 112 INCLUDE statements required when link editing programs 112 invocation of ISPF 87 invoking an ISPF application 5 PA keys definition of 63 program linkage 3 specify log and list defaults (Option 0.2) 282 specifying options using parms 282 split screen mode restriction 93 starting a dialog 12 VSEjAF 1.3.5 use of libraries 78 VSEjAF 2.1 79 use of libraries 85 r--I I wI ~ write message to log file (LOG) WRITE parameter on TBCREATE 153 on TBOPEN 169 writing dialogs, steps in MVS and VMjSP 72 VSEjAF 1.3.5 78 VSEjAF 2.1 85 139 r--I I Z I ~ Z system variable 41 Z variables used for field name placeholders 226 ZAPPLID system variable 41 ZCMD system variable 41 example 230 on tutorial panels 240 processing 229 blank 231 invalid option 231 ZCMD, use of, versus other names for command field 201 ZCONT system variable 41 on tutorial panels 240 344 ISPF Dialog Management Services ZCTACT system variable 53 actions specified with 54 ZCTDESC system variable 53 ZCTTRUNC system variable 53 ZCTVERB system variable 53 ZDATE system variable 41 ZDAY system variable 41 ZERRHM system variable 41 ZERRLM system variable 41 ZERRMSG system variable 41 ZERRSM system variable 41 ZHINDEX system variable 41, 239 example see figure on page 237 ZHTOP system variable 41 example see figure on page 237 ZHTOP variable 239 ZIND system variable 41 on tutorial panels 240 ZJDATE system variable 41 ZKEYS system variable 41 ZLOGON system variable 41 ZMONTH system variable 41 ZPARENT system variable 41, 233 processing 233 ZPFOl-24 system variables 41 ZPF01, ZPF02, ... , ZPF24 system variables 62 ZPREFIX system variable 41 ZPRIM system variable 41, 232 example see figure on page 237 ZSCBR system variable 41, 53 ZSCED system variable 41, 53 ZSCML system variable 41, 53 ZSEL system variable 41 contains result of truncating ZCMD 229 example 230 on menus 229 on tutorial panels 240 parameters and keywords used with 230 ZTDTOP system variable 41, 159 ZTEMPF system variable 41, 137 ZTERM system variable 41 ZTIME system variable 41 ZUP system variable 41 on tutorial panels 240 ZUSER system variable 41 ZVARS (.ZVARS) control variable See .ZVARS ZVERB system variable 41 ZYEAR system variable 41 Index 345 346 ISPF Dialog Management Services Interactive System Productivity Facility Dialog Management Services READER'S COMMENT FORM SC34-2088-2 This manual is part of a library that serves as a reference source for systems analysts, programmers, and operators of IBM systems. This form may be used to communicate your views about this publication. It will be sent to the author's department for whatever review and action, if any, is deemed appropriate. Comments may be written in your own language; use of English is not required. , mM may use or distribute any of the information you supply in any way it believes appropriate without incurring any obligation whatever. You may, of course, continue to use the information you supply. Note: Copies of IBM publications are not stocked at the location to which this form is addressed. Please direct any requests for copies of publications, or for assistance in using your IBM system, to your IBM representative or to the IBM branch office serving your locality. Possible topics for comments are: Clarity Accuracy Completeness Organization Coding Retrieval Legibility If you wish a reply, give your name and mailing address: What is your occupation? _______________________________ Number of latest Technical Newsletter (if any) concerning this publication: _____________ Thank you for your cooperation. No postage stamp necessary if mailed in the U.S.A. (Elsewhere, an mM office or representative will be happy to forward your comments.) SC34-2088-2 Reader's Comment Form Please Do Not Staple Fold and tape Fold and tape "I BUSINESS FIRST CLASS REPLY PERMIT NO. 40 NO POSTAGE NECESSARY IF MAILED INTHE UNITED STATES MAIL ARMONK, NY POSTAGE WILL BE PAID BY ADDRESSEE International Business Machines Corporation Department T 46 P.O. Box 60000 Cary, North Carolina 27511 ••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••• Fold and tape -- ---.--... - -- -- ------ ==..~.=® -~-,- Please Do Not Staple •• ',' •••••••• Fold and tape II ....... . ------------ --- --- --_.-®
Source Exif Data:
File Type : PDF File Type Extension : pdf MIME Type : application/pdf PDF Version : 1.3 Linearized : No XMP Toolkit : Adobe XMP Core 4.2.1-c043 52.372728, 2009/01/18-15:56:37 Create Date : 2012:06:06 20:30:45-08:00 Modify Date : 2012:06:07 08:22:08-07:00 Metadata Date : 2012:06:07 08:22:08-07:00 Producer : Adobe Acrobat 9.51 Paper Capture Plug-in Format : application/pdf Document ID : uuid:a2cec97f-f391-42a0-80b1-941c57d046e7 Instance ID : uuid:cebac589-0352-4788-bad0-876811856a93 Page Layout : SinglePage Page Mode : UseNone Page Count : 362EXIF Metadata provided by EXIF.tools