Dialog Reference ZOS 13
Dialog Reference ZOS 13
Dialog Reference ZOS 13
SC34-4821-01
Interactive System Productivity Facility (ISPF)
SC34-4821-01
Note
Before using this document, read the general information under “Notices” on page 367.
Contents v
Notices . . . . . . . . . . . . . . 367 Index . . . . . . . . . . . . . . . 371
Programming Interface Information . . . . . . 368
Trademarks . . . . . . . . . . . . . . 368
This book is intended to help you learn about and use the ISPF product.
Chapter 2. Controlling ISPF Sessions, describes how to start and stop an ISPF
session and how to use many of the ISPF facilities. In previous releases of the
product, the information in this chapter was contained in ISPF Dialog Management
Guide and Reference
Chapter 7. ISPF Help and Tutorial Panels, describes online help and tutorial panels
that a developer can include to provide online information for an application user.
In previous releases of the product, the information in this chapter was contained
in ISPF Dialog Management Guide and Reference
Chapter 8. Defining Messages, describes how to create and change ISPF messages
using an existing message definition or the MSG and MSGMBR tags of the DTL. In
previous releases of the product, the information in this chapter was contained in
ISPF Dialog Management Guide and Reference
Chapter 10. Extended Code Page Support, describes how extended code page
support allows panels, messages, and variable application data to be displayed
correctly on terminals using any of the supported code pages. In previous releases
of the product, the information in this chapter was contained in ISPF Dialog
Management Guide and Reference
Appendix A. Character Translations for APL, TEXT, and Katakana, contains the
character translation tables for APL, TEXT, and Katakana. In previous releases of
the product, the information in this appendix was contained in ISPF Dialog
Management Guide and Reference
Appendix D. Dialog Variables, describes the ISPF dialog function pool variables
that are both read from and written to by several of the PDF library access
services. In previous releases of the product, the information in this appendix was
contained in ISPF Dialog Management Guide and Reference
Notation Conventions
This book uses the following notation conventions:
v Uppercase commands and their uppercase parameters to show required entry
v Lowercase characters to show parameters that can be specified by the user
v Brackets [] to show optional parameters (required parameters do not have
brackets)
v An OR (|) symbol to show two or more parameters you must select from
v Stacked parameters to show two or more parameters you can select from
Note: You can choose one or none. If you choose none, ISPF uses the
underscored parameter.
v Braces {} with stacked parameters to show that you must select one. For
example:
{KEYWORD1(variable) [OPTPAR1(variable)]}
{KEYWORD2(variable)}
{KEYWORD3(variable) [OPTPAR2(variable)]}
{KEYWORD4(variable) [OPTPAR3(variable)]}
Preface xi
xii z/OS V1R2.0 ISPF Dialog Developer’s Guide and Reference
Using LookAt to look up message explanations
LookAt is an online facility that allows you to look up explanations for z/OS
messages. You can also use LookAt to look up explanations of system abends.
LookAt can be accessed from the Internet or from a TSO command line.
To use LookAt as a TSO command, LookAt must be installed on your host system.
You can obtain the LookAt code for TSO from the LookAt Web site by clicking on
the News and Help link or from the z/OS Collection, SK3T-4269.
To find a message explanation from a TSO command line, simply enter: lookat
message-id as in the following:
lookat iec192i
This results in direct access to the message explanation for message IEC192I.
To find a message explanation from the LookAt Web site, simply enter the message
ID and select the release you are working with.
Note: Some messages have information in more than one book. For such
messages, LookAt prompts you to choose which book to open.
Licensed books are available only to customers with a z/OS Version 1 Release 2.0
license. Access to these books requires an IBM Resource Link Web userid and
password, and a key code. With your z/OS Version 1 Release 2.0 order you
received a memo that includes this key code.
To obtain your IBM Resource Link Web userid and password log on to:
http://www.ibm.com/servers/resourcelink
Note: You cannot access the z/OS licensed books unless you have registered for
access to them and received an e-mail confirmation informing you that your
request has been processed.
| The ZISPFOS system variable contains the level of ISPF code that is running as
| part of the operating system release on your system. This might or might not
| match ZOS390RL. For this release, the variable contains ISPF for z/OS 01.02.00.
| ISPDTLC enhancements:
| ISPDTLC changes include new invocation options, new tags, and new tag.
| attributes as ISPF extensions to the Dialog Tag Language
| General improvements:
| v New invocation options:
| – no new invocation options in this release
| v New tags:
| – DLDIV, DTDIV, DTHDIV for dividers within the DL tag
| – PLDIV, PTDIV for dividers within the PARML tag
| v Replication added to predefined entities. For example, >SYM(5); will create
| the string ’>>>>>’ in the substituted text.
| v National language text strings are now accessible as entities. For example,
| &command; will create the string ’Command’ or its translated equivalent in the
| substituted text.
| v New ENTITY keywords COPIES, X2C and ATTR.
| v New macro tag default initialization processing syntax.
| <?dummy ?var=value>
| v New Predefined ENTITY keywords cmdpmt (&cmdpmt;) and rptr (&rptr;).
When migrating from one version of ISPF to another, you must be sure to
reassemble and re-link the SCLM project definition.
Note: If you are migrating to z/OS V1R2.0 from OS/390 V2R10.0, there are no
migration actions necessary. If you are migrating to z/OS V1R2.0 from a
prior release of OS/390, follow the migration actions for OS/390 V2R10.0.
ISPF Profiles
Major changes were made to the ISPF profiles for ISPF Version 4.2 and OS/390
Version 1 Release 1.0 ISPF. The profiles for ISPF Version 3 and the profiles for
OS/390 ISPF are not compatible. If you are moving back and forth between an
ISPF Version 3 system and OS/390 V1R1.0 or higher system, you must run with
separate profiles. Profiles for OS/390 V1R1.0 and higher are compatible with each
other.
What might need to change? Some minor changes to your existing ISPF dialogs
might be necessary, especially in ISPF dialogs that use the Library Access Services
to manipulate ISPF member statistics.
v For those services that accept both 4-character year dates and 2-character year
dates, you can specify one or the other. If you specify both, the 2-character year
date is used to avoid affecting existing dialogs. When the 2-character year date is
used, the configuration table field mentioned above is used to determine
whether the date should be interpreted as 19xx or 20xx.
v ISPF will not necessarily show 4-character dates in all circumstances but it will
process them correctly. For example, a member list might only display
2-character year dates but will sort those dates in the proper order.
v SCLM stores dates past the year 1999 in a new internal format. If an accounting
file contains dates in this new format, it cannot be processed by a system
without year 2000 support. Accounting files without dates past 1999 can be
processed with or without the year 2000 support.
| v LMF has been removed from the ISPF product. For information about how to
| convert from LMF to SCLM refer to the ISPF Planning and Customizing
| manual.
The panels look different than in Version 3: all screens are in mixed case, and most
have action bars at the top. These action bars give you a new way to move around
in the product as well as access to command nesting. Command nesting allows
you to suspend an activity while you perform a new one rather than having to end
a function to perform another function.
This chapter primarily explains the action bar-driven interface and the use of
ISPF’s graphical user interface (GUI).
action bar. The area at the top of an ISPF panel that contains choices that give you access to actions available on
that panel. When you select an action bar choice, ISPF displays a pull-down menu.
pull-down menu. A list of numbered choices extending from the selection you made on the action bar. The action
bar selection is highlighted; for example, Utilities in Figure 1 on page xxix appears highlighted on your screen. You
can select an action either by typing in its number and pressing Enter or by selecting the action with your cursor.
ISPF displays the requested panel. If your choice contains an ellipsis (...), ISPF displays a pop-up window. When you
exit this panel or pop-up, ISPF closes the pull-down and returns you to the panel from which you made the initial
action bar selection.
ellipsis. Three dots that follow a pull-down choice. When you select a choice that contains an ellipsis, ISPF displays
a pop-up window.
pop-up window. A bordered temporary window that displays over another panel.
modal pop-up window. A type of window that requires you to interact with the panel in the pop-up before
continuing. This includes cancelling the window or supplying information requested.
modeless pop-up window. A type of window that allows you to interact with the dialog that produced the pop-up
before interacting with the pop-up itself.
point-and-shoot text. Text on a screen that is cursor-sensitive. See “Point-and-Shoot Text Fields” on page xxxii for
more information.
push button. A rectangle with text inside. Push buttons are used in windows for actions that occur immediately
when the push button is selected (available only when you are running in GUI mode).
function key. In previous releases of ISPF, a programmed function (PF) key. This is a change in terminology only.
select. In conjunction with point-and-shoot text fields and action bar choices, this means moving the cursor to a
field and simulating Enter.
mnemonics. Action bar choices can be defined with a underscored letter in the action bar choice text. In host mode
you can access the action bar choice with the ACTIONS command and parameter ’x’, where ’x’ is the underscored
letter in the action bar choice text. In GUI mode you can use a hot key to access a choice on the action bar; that is,
you can press the ALT key in combination with the letter that is underscored in the action bar choice text.
Action Bars
Action bars give you another way to move through ISPF. If the cursor is located
somewhere on the panel, there are several ways to move it to the action bar:
v Use the cursor movement keys to manually place the cursor on an action bar
choice.
v Type ACTIONS on the command line and press Enter to move the cursor to the
first action bar choice.
v Press F10 (Actions) or the Home key to move the cursor to the first action bar
choice.
If mnemonics are defined for action bar choices, you can:
– In 3270 mode, on the command line, type ACTIONS and the mnemonic letter
that corresponds to an underscored letter in the action bar choice text. This
results in the display of the pull-down menu for that action bar choice.
– In 3270 mode, on the command line enter the mnemonic letter that
corresponds to an underscored letter in the action bar choice text, and press
the function key assigned to the ACTIONS command. This results in the
display of the pull-down menu for that action bar choice.
– In GUI mode, you can use a hot key to access a choice on an action bar or on
a pull-down menu; that is, you can press the ALT key in combination with
the mnemonic letter that is underscored in the choice text to activate the text.
Use the tab key to move the cursor among the action bar choices. If you are
running in GUI mode, use the right and left cursor keys.
Notes:
1. ISPF does not provide a mouse emulator program. This book uses select in
conjunction with point-and-shoot text fields and action bar choices to mean
moving the cursor to a field and simulating Enter.
To select a choice from the Utilities pull-down menu, type its number in the entry
field (underlined) and press Enter or select the choice. To cancel a pull-down menu
without making a selection, press F12 (Cancel). For example, if you select choice
9, ISPF displays the Command Table Utility pop-up, as shown in Figure 2 on
page xxx.
Note: If you entered a command on the command line prior to selecting an action
bar choice, the command is processed, and the pull-down menu is never
displayed. The CANCEL, END, and RETURN commands are exceptions.
These three commands are not processed and the cursor is repositioned to
the first input field in the panel body. If there is no input field, the cursor is
repositioned under the action bar area. If you are running in GUI mode and
select an action bar choice, any existing command on the command line is
ignored.
1 Action bar. You can select any of the action bar choices and display a pull-down.
2 Options. The fields in this column are point-and-shoot text fields.
3 Dynamic status area. You can specify what you want to be displayed in this area.
Note: If a choice displays in blue (the default) with an asterisk as the first digit of
the selection number (if you are running in GUI mode, the choice will be
grayed), the choice is unavailable for one of the following reasons:
v Recursive entry is not permitted here
v The choice is the current state; for example, RefMode is currently set to
Retrieve in Figure 4.
Note: If you have entered a command on the command line, this command is
processed before any point-and-shoot command unless you are running in
GUI mode.
The cursor-sensitive portion of a field often extends past the field name. Until you
are familiar with this new feature of ISPF, you might want to display these fields
in reverse video (use the PSCOLOR command to set Highlight to REVERSE).
Note: You can use the Tab key to position the cursor to point-and-shoot fields by
selecting the Tab to point-and-shoot fields option on the ISPF Settings panel
(Option 0).
Function Keys
ISPF uses CUA-compliant definitions for function keys F1–F12 (except inside the
Edit function). F13–F24 are the same as in ISPF Version 3. By default you see the
CUA definitions because your Primary range field is set to 1 (Lower - 1 to 12).
To use non-CUA-compliant keys, select the Tailor function key display choice
from the Function keys pull-down on the ISPF Settings (option 0) panel action bar.
On the Tailor Function Key Definition Display panel, specify 2 (Upper - 13 to 24)
in the Primary range field.
Note: If you are running in GUI mode, each logical screen displays in a
separate window.
F3 Exit (from a pull-down). Exits the panel underneath a pull-down.
F3 End. Ends the current function.
Selection Fields
z/OS V1R2.0 ISPF uses the following CUA-compliant conventions for selection
fields:
A single period (.)
Member lists that use a single period in the selection field recognize only a
single selection. For example, within the Edit function you see this on your
screen:
│EDIT USER1.PRIVATE.TEST ROW 00001 of 00002 │
│ Name VV MM Created Changed Size Init Mod ID │
│ . MEM1 01.00 94/05/12 94/07/22 40 0 0 USER1 │
│ . MEM2 01.00 94/05/12 94/07/22 30 0 0 KEENE │
Note: If you are running in GUI mode, this type of selection field displays
as a check box; that is, a square box with associated text that
represents a choice. When you select a choice, a check mark (in
OS/2) or an X (in Windows) appears in the check box to indicate
that the choice is in effect. You can clear the check box by selecting
the choice again.
An underscored field (____)
Member lists or text fields that use underscores in the selection field
recognize multiple selections. For example, from the Display Data Set List
Option panel, you may select multiple members for print, rename, delete,
edit, browse, or view processing.
Command Nesting
Command nesting allows you to suspend an activity while you perform a new one
rather than having to end a function to perform another function. For example, in
previous versions of ISPF, if you are editing a data set and want to allocate another
data set, you type =3.2 on the command line and press Enter. ISPF ends your edit
session before taking you to the Data Set Utility panel. When you have allocated
the data set and want to return to your edit session, you type =2 and press Enter;
ISPF returns you to the Edit Entry Panel. With z/OS V1R2.0 ISPF, from your edit
session, select the Data set choice from the Utilities pull-down on the Edit panel
action bar. ISPF suspends your edit session and displays the Data Set Utility panel.
When you have allocated the new data set and end the function, z/OS V1R2.0
ISPF returns you directly to your edit session rather than to the Edit Entry Panel.
What Is ISPF?
Consider the Interactive System Productivity Facility (ISPF) program product an
extension of the MVS Time Sharing Option (TSO) host system on which it runs.
ISPF services complement those of the host system to provide interactive
processing. ISPF is similar to a control program or access method in that it
provides services to dialogs (applications) during their execution. The types of
services provided by ISPF are:
v Display services
v File-tailoring services
v Variable services
v Table services
v Miscellaneous services
v Dialog test facility, including:
– Setting breakpoints
– Tracing usage of dialog services and dialog variables
– Browsing trace output in the ISPF log data set
– Examining and updating ISPF tables
– Interactively invoking most dialog services.
A dialog receives requests and data from a user at a terminal. The dialog responds
by using ISPF services to obtain information from, or enter information into, a
computer system.
What Is a Dialog?
To understand the dialog interface, you must first understand what a dialog is. A
dialog is the interaction between a person and a computer. It helps a person who is
using an interactive display terminal to exchange information with a computer.
The user starts an interactive application through an interface that the system
provides. The dialog with the user begins with the computer displaying a panel
and asking for user interaction. It ends when the task for which the interactions
were initiated is completed.
A dialog developer creates the parts of a dialog, called dialog elements. Each
dialog application is made up of a command procedure or program, together with
dialog elements that allow an orderly interaction between the computer and the
application user.
Functions
A function is a command procedure or a program that performs processing
requested by the user. It can invoke ISPF dialog services to display panels and
messages, build and maintain tables, generate output data sets, and control
operational modes.
You can use more than one language in a dialog application. For example, within a
single application containing three functions, each function could be written using
a different language, such as PL/I, COBOL, or FORTRAN. One or more of the
functions can be written using a command procedure language instead of a
programming language.
Variables
ISPF services use variables to communicate information among the various
elements of a dialog application. ISPF provides a group of services for variable
management. Variables can vary in length from zero to 32K bytes and are stored in
variable pools according to how they are to be used. A set of variables whose
names begin with the character Z are system variables. Z variables are reserved for
ISPF system-related uses.
Command Tables
A system command table (ISPCMDS) is distributed with ISPF in the table input
library. An application can provide an application command table by including a
table named xxxxCMDS in its table input library, where xxxx is a 1- to 4-character
application ID. In addition, you can specify two other command tables, the User
command table and the Site command table. The application IDs of both are
specified in the ISPF Configuration table. You can also specify if the Site command
table is searched before or after the system command table.
You can define an application command table either by using the Dialog Tag
Language (DTL) and ISPF conversion utility, or by using ISPF option 3.9.
| Note: You can use the TSO ISPCMDTB command to convert existing command
| tables to DTL. To use ISPCMDTB, ensure the command table is in your table
| concatenation (ISPTLIB), then type TSO ISPCMDTB applid (where applid is
| the application id of the command table). This will begin an edit session
| containing the DTL version of the command table. Use the editor CREATE
| or REPLACE command to save the table to your DTL source data set.
Panel Definitions
A panel definition is a programmed description of the panel. It defines both the
content and format of a panel.
Most panels prompt the user for input. The user’s response can identify which
path is to be taken through the dialog, as on a selection panel. The response can be
interpreted as data, as on a data-entry panel.
Message Definitions
Message definitions specify the format and text of messages to users. A message
can confirm that a user-requested action is in progress or completed, or it can
report an error in the user’s input. Messages can be superimposed on the display
to which they apply, directed to a hardcopy log, or both.
File-tailoring Skeletons
A file-tailoring skeleton, or simply a skeleton, is a generalized representation of
sequential data. It can be customized during dialog execution to produce an output
data set. After a skeleton is processed, the output data set can be used to drive
other processes. File skeletons are frequently used to produce job data sets for
batch execution.
Tables
Tables are two-dimensional arrays that contain data and are created by dialog
processing. They can be created as a temporary data repository, or they can be
retained across sessions. A retained table can also be shared among several
applications. The type and amount of data stored in a table depends on the nature
of the application.
Tables are generated and updated during dialog execution. The organization of
each table is specified to ISPF using ISPF table services.
Developing a Dialog
A developer, using an editor such as the PDF editor in Option 2 of ISPF, develops
a dialog by creating its various elements at a terminal and storing them in
libraries. You can use any available editor when creating dialog elements.
Figure 5 on page 5 shows a developer using ISPF to create and test dialog
elements. As shown in the figure, panel definitions, message definitions, and
file-tailoring skeletons are created prior to running the dialog. These dialog
elements are saved in libraries. The developer stores the program (after
compilation) or command procedure in an appropriate system program library.
During dialog testing, tables of data, log entries, and file-tailoring output data sets
can be created by dialog processing. ISPF creates the log data set the first time the
user performs some action that results in a log message, such as saving edited data
or submitting a job to the batch machine. ISPF creates the list data set the first time
a user requests a print function or executes a dialog that issues a LIST service
request.
When the developer completes the functions, panel definitions, and any other
dialog elements required by the application being developed, the dialog is ready to
be processed under ISPF.
ISPF
Panel Message
Library Library
PDF File
Table Tailoring
Library Skeleton
Library
Operating System
Program or
Command
Procedure
Data Set
*In addition to being an output data set, the log data set can be browsed
and is an input data set when Dialog Test option 7.5 is in effect.
Eventually, a function receives control. The function can use any of the dialog
services provided by ISPF. Typically, the function can continue the interaction with
the user by means of the DISPLAY service. The function might also display
data-entry panels to prompt the user for information. When the function ends, the
menu from which it was invoked is redisplayed.
Primary
Option Menu
Dialog
Function
Data-Entry
Dialog
Function
Data-Entry
Panels
Menu
Dialog Dialog
Menu
Function Function
To relate your application design to CUA design models and principles, refer to the
IBM Common User Access Guidelines It is recommended you use DTL to design
CUA-based panels. Refer to the ISPF Dialog Tag Language Guide for more
information.
Dialog Variables
ISPF uses dialog variables to communicate data between the dialog management
services and the dialog elements. A dialog variable’s value is a character string that
can vary in length from 0 to 32K bytes. Some services restrict the length of dialog
variable data.
Dialog variables can be used with panels, messages, and skeleton definitions, as
well as within dialog functions. For example, a dialog variable name can be
defined in a panel definition, and then referred to in a function of the same dialog.
Or, the variable can be defined in a function, then used in a panel definition to
initialize information on a display panel, then later used to store data entered by
the user on the display panel.
For functions coded in a programming language other than APL2, the internal
program variables that are to be used as dialog variables can be identified to ISPF
and accessed using the ISPF variable services. The use of STEM or COMPOUND
variables within a REXX procedure is not supported by ISPF. For a function coded
Panel
Library
Display
Services
ISPF
Initialization
Message
Library
Select Skeleton
Services Library
File
Tailoring
Services
Output
Dialog Data Sets
Function
Variable
Services Profile
Pool
Table
Services Data
Control Flow Tables
Data Flow
Processing a Dialog
Figure 9 on page 10 shows a dialog being processed under ISPF. The figure shows
that ISPF dialog services are available only to command procedures or programs
running under ISPF. During dialog processing, the dialog requests specific ISPF
services and identifies the panel and message definitions, skeletons, and tables to
use. The figure also shows that entries in the log and list data sets, as well as the
file-tailoring output data sets, can be generated during dialog processing.
ISPF
Panel Message
Library Library
File
Application
Table Tailoring
Dialog
Library Skeleton
Library
Operating System
Program or
Command
Procedure
Data Sets
Dialog processing begins either with the display of a selection panel or with a
function. In either case, you can invoke a dialog from a terminal running under
control of TSO.
Starting a Dialog
You can use the ISPF, PDF, or ISPSTART command, with the CMD, PGM, or
PANEL keyword, to invoke ISPF or other dialogs. These commands provide
compatibility with the SPF licensed program. ISPF is a command procedure that
runs under TSO. For example, it can be invoked by a:
v Terminal running under TSO
v Command procedure (CLIST or REXX).
Before starting a dialog, data sets referred to by the dialog must be defined to ISPF.
where:
panel-name
Specifies the name of the first menu (that is, the primary option menu) to be
displayed.
option
Specifies an initial option, which should be a valid option on the first menu.
This causes direct entry to that option without displaying the primary option
menu. (The primary option menu is processed in nondisplay mode, as though
the user had entered the option.) If you specify an option that is not valid, the
primary option menu displays an appropriate error message.
ADDPOP
Specifies that the panel displayed from a SELECT service appears in a pop-up
window. An explicit REMPOP is performed when the SELECT PANEL has
ended.
command
Specifies a command procedure (CLIST or REXX), an APL2 command, or a
TSO command processor that is to be invoked as the first dialog function. For
more information on invoking APL2 dialogs, see ISPF Services Guide
CLIST or REXX command parameters can be included within the parentheses.
For example, the call format would be:
ISPSTART CMD(MYCLIST parm1 parm2 ...)
You can type a percent sign (%) preceding the CLIST or REXX procedure name
to:
v Improve performance
v Prevent ISPF from entering line-display mode when the procedure is started.
Note: The variable ZGUI will be set to the workstation address (in character
format) if ISPSTART is issued with the GUI parameter; ZGUI will be set
to blank if ISPSTART is issued without the GUI parameter.
FI: Specifies that you want to search a file allocated to DD ISPDTPRF for the
user’s network protocol and workstation address to be used when initiating a
workstation connection or GUI display. Refer to the ISPF User’s Guide for more
information.
NOGUIDSP
Specifies that you want to make a connection to the workstation, but DO NOT
want ISPF to display in GUI mode.
Note: This parameter is only valid if you have specified an LU, IP, or
FIparameter. In other words, you can have any of the following
situations:
v you specify LU:address:tpname, IP:address:port, or FI: without the
NOGUIDSP parameter
v or you specify LU:address:tpname, NOGUIDSP
v or you specify IP:address:port, NOGUIDSP
v or you specify FI:, NOGUIDSP
TITLE(title)
Specifies the text displayed in the title bar unless a dialog has assigned a
non-blank value to ZWINTTL or ZAPPTTL. The default value for the title bar
is the user ID. This value has a maximum length of 255 characters and will be
truncated without notice to the user at display time if it does not fit on the
panel.
GUISCRW(screen-width)
Allows you to specify a screen width different than that of the emulator or real
device from which you enter the ISPSTART command. If you do not specify
GUISCRD, the depth will be that of the emulator or real device.
If GUISCRW is different than the emulator or real device, and GUI
initialization fails, ISPF will not initialize. Dialogs started with dimensions
other than those of the emulator or real device that use the GRINIT service
will not display GDDM* screens.
Note: This parameter is usually only used with the GUI parameter, but you
can specify it without using the GUI parameter. When you do this and
use a valid value for this parameter, ISPF does nothing with the value.
However, if you specify a value that is not valid for this parameter, ISPF
might return an error condition.
GUISCRD(screen-depth)
Allows you to specify a screen depth different than that of the emulator or real
device from which you enter the ISPSTART command. If you do not specify
GUISCRW, the width will be that of the emulator or real device.
Note: This parameter is usually only used with the GUI parameter, but you
can specify it without using the GUI parameter. When you do this and
use a valid value for this parameter, ISPF does nothing with the value.
However, if you specify a value that is not valid for this parameter, ISPF
might return an error condition.
CODEPAGE(codepage) CHARSET(character_set)
When running in GUI mode or connecting to the workstation, these values are
used as the host codepage and character set in translating data from the host
to the workstation, regardless of the values returned from the terminal query
response.
When running in 3270 mode, if your terminal or emulator does not support
codepages, these values are used as the host codepage and character set.
Otherwise, these values are ignored.
FRAME(STD|FIX|DLG)
Specifies that the first window frame displayed will be a standard (STD), fixed
(FIX), or dialog (DLG) window frame, where:
Standard
A GUI window frame that can be resized and has max/min buttons.
This is the default value.
Fixed A GUI window frame that has max/min buttons but cannot be resized.
Dialog
A GUI window frame that cannot be resized and does not have
max/min buttons.
Note: This parameter is usually only used with the GUI parameter, but you
can specify it without using the GUI parameter. When you do this and
use a valid value for this parameter, ISPF does nothing with the value.
However, if you specify a value that is not valid for this parameter, ISPF
might return an error condition.
BKGRND(STD|DLG)
Specifies that the first window frame displayed will be a standard (STD) or
dialog (DLG) background color. The colors are defined by the workstation. In
OS/2 2.1, the colors are white for STD and gray for DLG. The default is DLG.
Note: This parameter is usually only used with the GUI parameter, but you
can specify it without using the GUI parameter. When you do this and
use a valid value for this parameter, ISPF does nothing with the value.
However, if you specify a value that is not valid for this parameter, ISPF
might return an error condition.
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 to the
command table associated with the application, as follows:
invokes ISPF and specifies that dialog processing is to begin with display of a
selection panel named ABC. Panel ABC is stored in the panel library.
Another example:
ISPSTART CMD(%DEF)
invokes ISPF and specifies that dialog processing is to begin with a CLIST
command procedure function named DEF.
invokes ISPF and specifies that dialog processing is to begin with a program
function named GHI.
You usually invoke the master menu by using the ISPSTART command with no
operands. ISPSTART can be issued automatically as part of a user’s logon
procedure or from a CLIST or REXX command procedure.
SELECT is both a control facility and a dialog service. ISPF uses SELECT during its
initialization to invoke the function or selection panel that begins a dialog. During
dialog processing, SELECT displays selection panels and invokes program
functions or command procedure functions.
See ISPF Services Guide for a full description of the SELECT service syntax.
The panel-name parameter specifies the name of the next selection panel to be
displayed. You must use the ISPF panel definition statements (described in
“Chapter 5. Panel Definition Statement Guide” on page 99) to define the panel.
Subtasks attached by the SELECT service do not share subpools. ISPF specifies
SZERO=NO when issuing the ATTACH macro to assure that at SELECT
termination the storage that was acquired by ISPF is released.
I S P S T AR T
B eg i n
I SP F
D i s p l a y Men u
S E L EC T
S e r v i ce
S e l e c t L owe r -
L e v e l Me n u I n vok e D I S P L AY
F unc t i on S e r v i ce
D i s p l ay
S e l e c t L owe r - Da t a - E n t r y
L e v e l Me n u o r T BD I S P L
o r F unc t i on D i a l og P an e l
F unc t i on
Dialog functions written as programs can invoke another function only through
using the SELECT service. Thus, when a program-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 function by ISPF.
Terminating a Dialog
The action taken at dialog termination is as follows:
v If a dialog function invoked the SELECT service, control returns to that function
and the function continues execution.
v If a menu invoked the SELECT service, that menu is redisplayed, including
execution of the INIT section in the panel definition.
v If you are terminating split-screen mode, the original dialog ends on that logical
screen, and the other logical screen expands to the full size of the viewing area.
v If you are terminating ISPF, which can be done only in single-screen mode,
either the ISPF termination panel is displayed or the ISPF SETTINGS defaults for
list/log processing are used.
At termination, ISPF copies the value from ZISPFRC and passes it to the invoking
application (or Terminal Monitor Program) in register 15. If the value in ZISPFRC
is not within the valid range or is otherwise not valid, such as a value that is not
numeric, ISPF issues an appropriate line message and passes a return code of 908.
If the dialog has not set ZISPFRC to a value, ISPF returns a value of 0.
Notes:
1. CLIST procedures that invoke ISPSTART can check the CLIST variable LASTCC
for the ISPF return code. In REXX, check the variable rc after an ISPF function.
2. Even though ISPF restricts the return code value to the range 0 to 16777215,
other products or subsystems, such as JES when processing JCL condition
codes, can be more restrictive on return code values. See documentation for the
affected product for more information.
3. ZISPFRC should not be confused with the normal dialog return code set by the
function; it has no effect on ISPF log/list termination processing.
ISPF checks for the existence of ZISPFRC only at ISPF termination. If ZISPFRC is
set by any dialog other than the one invoked by the ISPSTART command, ISPF
ignores the value.
ISPF issues a line message that indicates which of these errors caused the
998 return code.
999 ISPF environment not valid. A 999 error code can result from:
v TSO/MVS environment not valid
v Unsupported screen size
ISPF issues a line message that indicates which of these errors caused the
999 return code.
//************************************************
//* *
//* INVOKE ISPF TO EXECUTE DIALOG “DIALOG1”. *
//* DIALOG1 PASSES BACK A RETURN CODE OF *
//* 20 IF IT DID NOT PROCESS SUCCESSFULLY. *
//* *
//************************************************
//ISPFSTEP EXEC PGM=IKJEFT01,DYNAMNBR=30,REGION=2048K
//*
//* ALLOCATE DIALOG AND ISPF PRODUCT LIBRARIES, *
//* ISPF LOG DATA SET, AND TSO OUTPUT DATA SET. *
//* *
//ISPPROF
. DD DSN=USER1.ISPF.TABLES,DISP=SHR
.
.
The portion of the invoked dialog, DIALOG1, that establishes the value in system
variable ZISPFRC is shown in Figure 14 on page 24.
You can specify any one of four mutually exclusive keyword parameters on the
ISPSTART command to control the operational mode when testing a dialog:
TEST Test mode
TESTX
Extended test mode; logged messages are displayed
TRACE
Trace mode; ISPF service calls are logged
TRACEX
Extended trace mode; ISPF service calls are logged and displayed
Test Modes
In TEST mode, ISPF operates differently from normal mode in that:
v Panel and message definitions are fetched again from the panel and message
files when 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. If you have modified the panel or message file, use of TEST mode
ensures that the latest version of each panel or message is accessed during a test
run.
Using an editor to modify a panel, message, or skeleton can result in an
additional DASD extent being required for the associated data set. DASD rarely
(if ever) gains new extents as the result of the execution of software (with the
possible exception of DASD formatting software). It can also be caused by link
editing a module. When a new extent is allocated, you can access the
modification only by first terminating and then invoking ISPF again.
v Tutorial panels are displayed with current panel name, previous panel name,
and previous message ID on the bottom line of the display screen. This assists
you in identifying the position of the panel in the tutorial hierarchy.
v Screen printouts, obtained through use of the PRINT or PRINT-HI commands,
include line numbers, current panel name, and message ID.
v In PDF, the index listing (option 3.1) for a partitioned data set includes TTR data
for each member of the data set.
v 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
ISPF can ABEND.
The ISPF controller task attaches one ISPF subtask for each logical screen. Any
additional logical screens are created by the SPLIT command and there can be up
to four screens on a 3290 terminal.
If an ISPF subtask ABENDs, pressing Enter after the ABEND message appears
generates a dump, provided that a SYSUDUMP, SYSMDUMP, or SYSABEND data
set has been allocated.
Dialogs invoked with the SELECT CMD(XXX) cause an attach of a new subtask
under the ISPF subtask. If an ABEND occurs under the new subtask, an immediate
dump is taken.
In TESTX mode, ISPF operates the same as it does in TEST mode, except that all
messages written to the ISPF log file are also displayed at the terminal.
ISPF provides the ENVIRON command, which allows you to cause a dump
following an ABEND condition, even if ISPF is not running in TEST mode. See
“Using the ENVIRON System Command” on page 332 for a description of using
the ENVIRON command.
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. If the length of the message text
exceeds the width of the terminal screen, the message will be truncated.
You can invoke authorized TSO commands by using the SELECT service, a
selection panel, or a command table. Authorized commands are attached under the
TSO TMP (Terminal Monitor Program) and, therefore, should not reside in the
ISPLLIB library. Authorized commands cannot issue dialog service requests.
You can execute most TSO commands under ISPF. The following commands are
not allowed:
v LOGON
v LOGOFF
v SPF
v ISPF
v PDF
v ISPSTART
v TEST
v Commands that are restricted by TSO or PCF (Program Control Facility).
Note: The LOGON, LOGOFF, and TEST commands can be executed within ISPF if
the TSOEXEC interface is used, for example, TSO TSOEXEC LOGOFF. In
that case, the LOGON and LOGOFF commands are processed upon ISPF
termination, instead of returning to TSO READY. When the TEST command
is being executed, TSO TEST is entered immediately. However, because
TSOEXEC executes commands in a parallel TMP structure, ISPF dialogs
cannot be run under TSO TEST in this situation.
The SELECT service and ISPSTART command contains a new value, CREX, for the
LANG parameter on the CMD keyword. The specification of LANG(CREX) when
using the CMD keyword indicates that it is a Compiled REXX load module and
that a REXX function pool is to be used for variable manipulation.
The CPPL stub takes the parameters that are passed by the SELECT CMD service,
or the ISPSTART invocation, and converts them into arguments for the REXX
program. For complete details on how to create a REXX load module, see IBM
Compiler and Library for REXX/370 User’s Guide and Reference.
Compiled REXX programs, compiled with the CEXEC option, should be executed
using the CMD option of the SELECT service or ISPSTART command and should
NOT use the LANG(CREX) parameter.
CLIST Requirements
A CLIST cannot invoke any of the restricted TSO commands. TERMIN command
procedure statements can cause unpredictable results.
When a CLIST command procedure is executing under ISPF, the ATTN statement
in the procedure defines how attention interrupts are to be handled. You can find
information about using attention exits in TSO/E Version 2 CLISTs and TSO/E
Version 2 Programming Services
To use attention exits in a CLIST ISPF dialog, your system must be MVS SP2.2.0 or
later.
Using APL2
ISPF permits the use of APL2, as follows:
v ISPF dialogs can be written in an APL2 workspace.
v APL2 can be selected as a command, initializing an ISPF-APL2 environment.
v APL2 functions can be selected as options (from a selection panel), as ISPF
commands (from an application command table), or from another dialog
function, once the ISPF-APL2 environment has been established.
v All dialog manager services available to the command language dialog writer
are executable from the APL2 workspace after the ISPF-APL2 environment has
been established.
v ISPF views the APL2 workspace variables as the dialog function pool whenever
an ISPF dialog service is executing.
v ISPF supports APL on a DBCS device with an APL keyboard.
The ISPF/GDDM* interface is not available to an APL2 dialog. However, the APL2
dialog can interface directly with GDDM and interleave the ISPF and GDDM
services.
Invoking APL2
You can invoke APL2 by specifying the APL2 command and its appropriate
keywords as the value of the CMD keyword of the SELECT service. In addition,
you must code the SELECT keyword and value “LANG(APL)” on the SELECT
You can code any of the APL2 command keywords. However, the following can be
of special interest:
APNAMES
ISPF and APL2 communicate through an APL2 Auxiliary Processor (AP),
ISPAPAUX, which is released with the ISPF product. This AP, number 317,
must be made available to APL2 when APL2 is invoked, as follows:
v The dialog writer can specify ISPAPAUX in the APNAMES list of
auxiliary processors to be dynamically loaded.
When APL2 is invoked, ISPAPAUX must exist as a load module in a
system library, or in a private library named by the LOADLIB keyword.
LOADLIB
Keep in mind that if this keyword is used, the dialog must be changed or
accept this keyword’s value dynamically (for example, through a variable),
if the name of the private library containing the AP is changed.
TERMCODE (code)
The user is prompted to enter an appropriate character if this keyword is
not coded. This allows APL2 to identify the terminal type that is currently
being used.
Typically, a dialog ensures that the user does not have to perform this extra
step by identifying the terminal type through the TERMCODE keyword.
ISPF system variable ZTERM contains this information. However, ISPF
terminal types are different from those of APL2. For those dialog writers
who wish to make use of currently available ISPF information, program
dialog ISPAPTT can be selected before the call of APL2. ISPAPTT expects
one parameter, which is the ISPF variable name into which the
corresponding APL2 terminal type is returned. The variable is created in
the shared variable pool.
For a CLIST, the use of ISPAPTT can look as follows:
.
.
.
ISPEXEC SELECT PGM(ISPAPTT) PARM(APLTT)
ISPEXEC VGET APLTT
ISPEXEC SELECT CMD(APL2.....TERMCODE(&APLTT)) LANG(APL)
.
.
.
If ZTERM contains a value other than those listed above, the specified
variable is set to a value of 3277 in the shared variable pool.
FREESIZE, WSSIZE
Some combination of these keywords should be coded to accommodate the
user’s storage requirements; however, remember that ISPF and the
ISPF-APL2 AP require storage (beyond that currently allocated) to execute,
especially if ISPF split-screen facilities are to be used.
INPUT
A user dialog can specify the INPUT keyword to load a given workspace,
start an APL2 dialog function, and terminate APL2. This allows a user to
enter APL2, use APL2 dialog capabilities, and leave APL2 without needing
special APL2 expertise.
For example, to start a dialog named EMPLOY in workspace MYWS:
......INPUT(')LOAD MYWS' 'EMPLOY' ')OFF HOLD')......
Note that a dialog function can also be started through the latent function
definition in the workspace. In addition, the Alternate Input Auxiliary
Processor, AP101, can be used to stack commands for execution.
If INPUT is coded and QUIET and PROFILE are not coded (see below), the
first ISPF panel can be refreshed before the keyboard is unlocked.
QUIET
A dialog can specify the QUIET keyword to suppress the APL2 entry and
exit information, so that the user does not see non-dialog APL2 messages.
PROFILE
A dialog can specify the PROFILE keyword with a value of null to
suppress any entry and exit APL2 session manager screens, so that the user
does not see any non-dialog panels.
The return code for the selected function is passed back as a fullword of 0 (zero) if
no terminating (to a quad-EA) APL2 errors have occurred. Otherwise, a fullword
consisting of the quad-ET values in the two halfwords is returned.
A workspace containing the ISPEXEC function is provided with ISPF. All dialog
writers must use this ISPEXEC function, as it contains the interface to ISPF and
handles the implementation of commands (through the APL2 “EXECUTE”
function); otherwise, results are unpredictable.
For example:
In addition, ISPF allows a task to detach its subtask at any time, even if an ISPF
service invoked by that subtask is processing. The SUBTASK keyword of the
CONTROL service, described in ISPF Services Guide , provides additional
information. Multiple dialog services issued from multiple tasks executing
asynchronously are not supported, and results will be unpredictable.
ESTAE Restrictions
Programs that code their own ESTAE routines should not issue ISPF services
within the MVS ESTAE routine. Unpredictable results can occur. For more
information on using MVS macros, refer to MVS/XA Supervisor Services and Macros
To invoke ISPF, place the ISPSTART command in the SYSTSIN input stream with
the PANEL, CMD, or PGM keywords that name the dialog to be invoked.
Note: When running on MVS with TSO/E Version 2 Release 1, ISPF does not read
and execute the CLIST statements that follow the ISPSTART command. With
ISPF running in batch (background) mode in the MVS environment with
TSO/E Version 2 Release 1, you can select a CLIST procedure.
Although the user ID defaults to BATCH, the prefix used by ISPF when
dynamically allocating a data set has no default. Therefore, a prefix should always
The contents of positions 17–24 in system variable ZENVIR indicate whether ISPF
is running interactively (TSO followed by five blanks) or background (BATCH
followed by three blanks).
* * * Top of File * * *
//ISPPLIB DD DSN=ISP.SISPPENU,DISP=SHR
//ISPMLIB DD DSN=ISP.SISPMENU,DISP=SHR
//ISPSLIB DD DSN=ISP.SISPSENU,DISP=SHR
// DD DSN=ISP.SISPSLIB,DISP=SHR
.
.
.
//ISPTLIB DD DSN=ISP.SISPTENU,DISP=SHR
// DD DSN=ISP.SISPTLIB,DISP=SHR
.
.
.
//SYSPROC DD DSN=ISP.SISPEXEC,DISP=SHR
// DD DSN=ISP.SISPCLIB,DISP=SHR
.
.
.
//USERAA JOB (AA04,BIN1,000000),'I. M. USERAA',
// CLASS=L,MSGCLASS=A,NOTIFY=USERAA,MSGLEVEL=(1,1)
//*-------------------------------------------------------*/
//* EXECUTE ISPF COMMAND IN THE BACKGROUND */
//*-------------------------------------------------------*/
//ISPFBACK EXEC PGM=IKJEFT01,DYNAMNBR=25,REGION=1024K
//*
//*- - - ALLOCATE PROFILE, PANELS, MSGS, PROCS, AND LOG - -
//ISPPROF DD DSN=USERAA.ISPF.PROFILE,DISP=OLD
//ISPPLIB DD DSN=ISP.SISPPENU,DISP=SHR
//ISPMLIB DD DSN=ISP.SISPMENU,DISP=SHR
//ISPSLIB DD DSN=ISP.SISPSENU,DISP=SHR
// DD DSN=ISP.SISPSLIB,DISP=SHR
//ISPLOG DD DSN=USERAA.ISPF.LOG,DISP=SHR
//*
Processing Errors
ISPF terminates with an error message if a required library is not available. The
ISPSTART command must also be invoked naming either a CLIST, PGM function,
or selection panel. If no dialog is specified, a message is issued. These messages
are directed to the data set defined by the SYSTSPRT DD statement.
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.
Batch execution has traditionally not allowed the use of services that require user
interaction. Any full-screen write operation would result in an error condition.
The Batch Display Facility overcomes these limitations. Although there is no user
interaction during execution; the Batch Display Facility does allow background
execution of interactive services. These services include:
v DISPLAY
v TBDISPL
v SELECT PANEL
v SETMSG
v PQUERY.
All ISPF commands except SPLIT and SPLITV can be executed in dialogs running
in batch mode.
Installations can easily convert current interactive applications that use these
services so they run in a batch environment. When you are running in a batch
environment, you cannot direct your display to a workstation; that is, the GUI
parameter on the ISPSTART command is not supported in a batch environment.
A dialog can override the ENTER condition and establish an END condition by
doing one of the following:
v Using the .RESP control variable
v Setting the panel command field to END
v Issuing a CONTROL NONDISPL END prior to the display operation.
In addition to the display services, use of the PQUERY service requires that the
screen width and depth values be supplied to ISPF, either through default values
or as defined on the ISPSTART command.
When running in batch mode, you can include the BDBCS keyword on the
ISPSTART command. ISPF then processes the dialog as though it were running on
a DBCS terminal.
How ISPF Handles Log and List Data Sets in the Batch
Environment
If ISPF allocates a log or list data set in the batch environment, it is always kept at
termination, regardless of the disposition specified on SETTINGS Option 0.
The KEYS command can cause a loop condition because its processing termination
depends on an END or RETURN command. An ENTER condition, which ISPF
assumes in absence of an END or RETURN being forced, results only in another
panel display, which leads to a loop condition.
To help deal with possible looping situations, the BDISPMAX keyword on the
ISPSTART command is available for specifying the maximum number of panel
displays that can occur during a session. The default value is 100. If the number
specified in BDISPMAX is exceeded, a severe error condition (return code 20)
results and an error message, stating that the maximum number of displays has
been exceeded, is written to the SYSTSPRT data set.
This function also enables you to capture REXX trace output (in SYSTSPRT), and to
invoke ISPF without a 3270 terminal, such as through an icon on the workstation
through APPC or TCP/IP, or through a Telnet linemode session.
Restrictions
When using the batch mode capabilities of the C/S, be sure to consider these
restrictions:
v The number of initiators on the batch machine. Because the JCL remains resident
for the duration of the session, you should be aware that you have reduced the
number of available initiators for other uses.
v The limitation of the C/S Server to 30 sessions.
v Each batch session must have a unique profile (just like each user ID).
v The PA1 key is not available within the GUI environment.
v Full-screen TPUT function is not supported.
v Because you are in batch mode, and therefore you are not using a TSO emulator,
GDDM is disabled and TSO line-mode output is not available.
v Other TSO batch limitations. Some commands might not be supported in GUI
Batch mode because of the inability to provide terminal input to them (such as
RECEIVE). Refer to the TSO User’s GUIDE for more information about running
TSO in batch mode.
Example JCL
The JCL job that follows can be run from your MVS session to invoke ISPF
running the Client/Server in batch mode. Before submitting this JCL job, you must
update it with this information:
v The jobcard information in line 1 must be furnished, and a unique jobname must
be used.
v Update ″userid.PRIVATE″ with your private libraries, if needed. If you do not
use private libraries, remove those data sets from the concatenation.
For more detailed information on using these services, refer to the ISPF Services
Guide
************************************************************
* )Attr *
* @ Type(output) Intens(low) Just(asis) Caps(off) *
* )Body *
* -------------------- Population Change ----------------- * ---┐
* +Command ==>Cmdfld +Scroll ==>_samt+ * |
* + * |
* This table shows selected metropolitan areas which had a * |---> (A,Figure 17)
* * |
* large relative increase in population from 1970 to 1980. * |
* * |
* +Metro area State Change * |
* + (Percent) * ---┘
* )Model *
* @City @State @popchg+ * -------> (B,Figure 17)
* *
* )Init *
* &samt=page *
* )Proc *
* )End *
************************************************************
There can be up to eight model lines. Panel PAN1 has only one. The scrollable
portion of the display is formed by replicating the model lines to fill the screen.
Each of these replications, as well as the original, is known as a model set. Each
model set corresponds to a table row. Table rows are then read to fill in the
appropriate fields in the model set replications.
PAN1 displays only three (city, state, and popchg) of the five columns of table
TAB1. The model lines can include any number of the KEYS, NAMES, and
extension variables of the table. They can also include fields that are not variables
in the table. Figure 17 shows the effect of displaying information from TAB1 on
panel PAN1.
+- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -+
+- - - - - - - | - - - - - - - - - - - - - - - - - - - P o p u l a t i o n Ch a n g e - - - - - - ROW 4 OF 1 0 |
| | Comma n d = = > S c r o l l = = > P age |
| | |
| | |
- - (A)| | T h i s t ab l e s h ow s s e l e c t e d me t r o p o l i t a n a r ea s wh i c h h ad a |
| | l a r g e r e l a t i v e i n c r e a s e i n p o p u l a t i o n f r om 1 9 7 0 t o 1 9 8 0 . |
| | |
| | Me t r o a r e a S tate Ch a n g e |
- - - -- -- - | ( P e r cen t ) |
+- - r4- - | F o r t Co l l i n s co +66 . 0 |
| r5-- | We s t P a l m B ea c h f l +64 . 3 |
| r6-- | F o r t L a u d e r da l e f l +63 . 6 |
- - (B )| r7-- | B r y an tx +61 . 5 |
| r8-- | R eno nv +60 . 0 |
| r9-- | P r ovo ut +58 . 4 |
| r 10 - | McA l l e n tx +56 . 1 |
+- - - - - - - | * * * * * * * * * * * * * * * * * * * * * * B O T T OM OF DA T A * * * * * * * * * * * * * * * * * * |
+- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -+
When the TBDISPL service is invoked with the panel name specified, the scrollable
portion begins with the current row. That is, the current row is the top row
displayed. In this example, the current row pointer (CRP) for table TAB1 has been
set to row 4. Table rows are read starting with row 4 to fill in the appropriate fields
in the model set replications. If there were any non-table variables in the model
line, they would be filled in with their current values. Because there aren’t enough
rows in the table to fill the screen, the bottom-of-data marker is placed in the
display after the last row. The “empty” model sets beyond this marker are not
displayed.
In Table 1 on page 42, the symbols r1 through r10 label the 10 rows in the table
TAB1. The highlighted rows, r4 through r10, indicate that these rows provide the
information for the scrollable portion of the display (marked as area B in Figure 17
).
Figure 17 is the result of using the TBDISPL service with panel definition PAN1 (
Figure 16 on page 42 ) and ISPF table TAB1 ( Table 1 on page 42 ). Portion A is the
fixed portion defined by the )BODY section of PAN1. Portion B is the scrollable
portion defined by the )MODEL section of PAN1. The table information in the
display is the specified columns from row 4 to row 10.
When the CRP is positioned at a selected row, the row is retrieved, meaning the
values from that row are stored in the appropriate dialog variables. Then, all input
fields in the selected model set on the display are stored in the corresponding
dialog variables.
The dialog function can then process the row in any manner it chooses. For
example, the function can invoke the TBPUT service to update the row, or it can
invoke the BROWSE service to examine a file specified in that row.
A call of the TBDISPL service is required to position the CRP to each pending
selected row. For these calls, neither the PANEL nor MSG parameter should be
specified.
The system variable ZTDSELS contains the number of selected rows. It can be
tested by the dialog function or in the )PROC section of the table display panel to
determine if any rows were selected. For example:
)PROC
. . . /* Process fixed portion fields */
IF (&ZTDSELS ¬= 0000) /* Any selected rows? */
. . . /* Process scrollable portion flds*/
)END
As TBDISPL is reinvoked without the PANEL and MSG parameters (to process any
pending selected rows), ZTDSELS is decremented by one. An example is shown in
Table 2 on page 45.
You can define variables ZTDAMT, ZTDSCRP, ZTDSRID, ZTDSIZE, ZTDLTOP, and
ZTDLROWS as fullword fixed binary in a program function. If you do not, the
default for each of these variables is character with lengths as specified in the
system variable charts in the “Appendix E. System Variables” on page 357.
Dynamic Table Building: To put the dynamic table building concept into
practice, a function first builds a basic table structure. The initial size of this table
is determined by balancing the minimum amount of table data that would satisfy
most anticipated user needs against the overhead of including a large amount of
table data to cover more contingencies. As more table rows are needed to satisfy
scroll requests, ISPF returns control to the function so that it can add those rows.
When a user issues a scroll request, there might be input fields in a panel that
have been typed into (selected for processing). In that case, the dialog first
processes all selected rows and then issues a TBDISPL request, without panel
name, to cause the panel to redisplay. If no table rows are needed to fill the scroll
request, ISPF completes the scroll and redisplays the panel. If more table rows are
needed to fill the scroll request, ISPF returns control to the function to add table
rows. Keep in mind that each time control returns to the function, the )PROC
section of the panel from which the table display was requested is executed. After
adding the table rows, the function issues a TBDISPL without a panel name to
complete the scroll and redisplay. Remember, specifying a panel name on a
TBDISPL request nullifies any pending selected rows or request for scrolling.
The values of a set of system variables in the function pool are the parameters
used in the interchange between ISPF and a function when dynamically increasing
the table size.
The value in ZTDRET must be left-justified (no leading blanks). ISPF evaluates the
value of ZTDRET only when the function issues a TBDISPL request with a panel
name specified. This is true, even though in the interim, the function might change
the value of ZTDRET and issue TBDISPL requests without a panel name specified.
A TBDISPL request with a panel name specified also nullifies processing of any
pending selected table rows and any pending scroll request.
ISPF normally returns control to the function for reasons other than to add table
rows. In those cases, ISPF sets the value of ZTDADD to NO. For example, the
function might need to interact with table rows that have been selected for
processing during a table display.
For some scroll requests, such as UP MAX or DOWN MAX, ISPF cannot determine
the number of rows to be added to the table. In those cases, ISPF returns a value of
0 to the function in ZTDAMT.
When the user requests an UP MAX or DOWN MAX, ISPF does not require the
ZTDSCRP value to position the table when it is redisplayed following the scroll. It
simply positions the table in the scrollable display area relative to the top table row
(UP MAX) or the bottom-of-data marker (DOWN MAX).
For other scroll requests that require that rows be added to the table, ISPF may not
be able to determine what the value of ZTDSCRP should be. In other words, one
but there are only eight table rows above the top one currently displayed. ISPF
returns control to the function with variable ZTDAMT having a value of 2,
indicating that two lines must be added to the table to satisfy the current scroll
request. ISPF has set variable ZTDSCRP to 0 because the new top displayed row
did not exist in the table when the scroll was requested. Assume that, instead of
adding only the two required table rows at the top of the table to satisfy this scroll
request, the function adds 20 rows as a cushion against additional scrolling.
Therefore, the function must set ZTDSCRP to 19 so that ISPF will redisplay the
panel with the table positioned as the user wants it.
In addition to the row pointer in variable ZTDSCRP, ISPF returns to the function in
variable ZTDSRID the identification (rowid) of the row that is to be displayed at
the top of the scrollable area. As just described for ZTDSCRP, if ISPF cannot
determine which is to be the top row displayed, it returns a value of 0 in
ZTDSRID.
Because the dimensions of only the physical table are available, ISPF has no way of
assuring what the x and y values for the top-row-displayed indicator should be.
Therefore, it is the application’s responsibility to pass to ISPF the logical table
positioning in variables ZTDLTOP and ZTDLROWS, respectively, any time control
returns to the function to add table rows. If the function does not set these
variables to a value, ISPF calculates the x and y values according to the size and
position of the table being displayed.
In the example just described, assume that the user initially scrolled up 10 rows
instead of down 10 rows. Because the top row displayed was the top table row,
control returns to the application function to add rows to the top of the table so
the scroll request can be completed. As mentioned above, it is the application’s
responsibility to change the values of ZTDLTOP and ZTDLROWS as needed to
provide ISPF an accurate base for generating the top-row-displayed indicator.
Therefore, after adding rows to the top of the table, the function sets variable
ZTDLTOP to 490 before issuing the TBDISPL request to redisplay the table. The
text of the top-row-displayed indicator on the displayed panel is now ’ROW 490
OF 1000’.
Assume that you are given the task of creating an ISPF dialog that allows a user to
browse through a list of invoices for a given year. The list is maintained in a
sequential file, and it contains information (invoice number, transaction date, part
number, quantity, and customer name) for each transaction made during the year.
The file is fixed-block with a logical record length of 80 and a block size of 6160.
The first record in the file contains the year and the number of invoices that follow
in the file.
As you can see, the file is in no form to be browsed as it is. One way to implement
the dialog is to transfer the invoice file to a temporary ISPF table, and then display
the table with the TBDISPL service. However, since the number of invoices can be
relatively high (in this example, there are 10 000 invoices), the initial overhead of
reading every record and adding it to the table is unacceptable. As an alternative,
the dialog uses dynamic table expansion instead. Using this method, it adds only
the first 60 invoices to the table initially. Other invoices are added on an as-needed
basis as the user scrolls through the table. The user sees no evidence that only a
portion of the invoices are in the table.
Figure 18 shows the definition for panel INVPANEL, which the dialog uses to
display table rows.
)Attr
@ Type(Output) Intens(Low)
)Body Expand(//)
+-/-/-%&year TRANSACTIONS+-/-/-
%Command ====>_cmd %Scroll ===>_amt +
+
+
%Invoice Transaction Part
%Number Date Number Quantity Customer
%------- ----------- ------ -------- --------
)Model
@inv @date @part @qty @cust +
)Init
&amt = PAGE
)End
The PL/I dialog function, INVOICE (shown in Figure 19 on page 51), requires that
the invoice file be allocated to ddname INVFILE prior to execution of the dialog.
The intent of this example is to illustrate the dynamic expansion function. Normal
error checking and error processing is not shown, but should be included in all
dialogs.
Now, assume that a user is running the invoice dialog on a terminal with 24 lines.
The initial display of the table is shown in Figure 20.
Notice that even though the table actually contains only 60 rows, the top row
displayed indicator shows “ROW 1 OF 10000”. This was accomplished by setting
the ZTDLROWS variable in the function pool to a value of 10 000. TBDISPL will
pick up this value and use it when ZTDRET has been properly set.
Assume that the user enters the command “DOWN 50” on the command line. This
should result in rows 51–67 being displayed. Remember though that only rows
1–60 are currently in the table. Because there are not enough rows in the table to
fill the screen, control will return to function INVOICE. Upon return from
TBDISPL, the system variables used by the dialog have the following values:
ZSCROLLA 0050
ZTDADD YES
ZTDSCRP 51
ZTDAMT contains the number of rows that must be added to satisfy the scroll
request and fill a full screen. ZTDSCRP has the CRP of the row that will be at the
top of the screen after the scroll. Because it is non-zero, function INVOICE does
not need to set it. In fact, all that the function has to do is skip to the table bottom,
read and add the next 7 invoices to the table, and then issue a TBDISPL service
request to redisplay the table. When the table is displayed again, it appears as
shown in Figure 21.
This should result in rows 5051–5067 being displayed. As before, there are not
enough rows in the table to handle the scroll request, so control returns to function
INVOICE with the following information in the system variables:
ZSCROLLA 5000
ZTDADD YES
ZTDSCRP 0
ZTDAMT 5000
ZTDSIZE 17
Notice that this time ZTDSCRP has a value of 0. This indicates that the new top
row, as requested by the user scroll, is not in the physical table. After adding the
5000 rows indicated by the ZTDAMT system variable, function INVOICE must set
ZTDSCRP to the CRP of the row that should be displayed at the top after the scroll
(row 5051). This is accomplished in the dialog by adding ZTDAMT to the number
of rows in the current table, and then subtracting out the size of the scrollable area
A scroll of 5000 would display rows 10051–10067, if there were that many invoices
in the file. However, because there are only 10 000 invoices, function INVOICE can
add only rows 5068–10000 to the table and then redisplay the table. On return from
TBDISPL, the system variables again contain the following information.
ZSCROLLA 5000
ZTDADD YES
ZTDSCRP 0
ZTDAMT 5000
ZTDSIZE 17
After adding all of the invoices to the table (end of file is reached), the dialog must
set system variable ZTDSCRP. Because the scroll amount has caused the user to
scroll past the end of data, the dialog sets ZTDSCRP to a value that will cause only
the bottom of data marker to be displayed. That is, ZTDSCRP is set to a value
greater than the number of rows in the table. When the table is redisplayed it
appears as shown in Figure 23 on page 60.
One case not illustrated above is that of the user issuing a DOWN MAX scroll
request. In this case ZTDAMT and ZTDSCRP would each have a value of 0 when
control returns to the dialog. ZSCROLLA would have a value of MAX. The dialog
would add all remaining invoices to the table and then redisplay the table. It is not
necessary in a MAX scroll case to set ZTDSCRP before redisplaying the table
because ISPF automatically positions the table so that a full screen plus the bottom
of data marker are displayed.
In this example the program has been written so that control continues to return to
the dialog after all of the invoice file records have been added to the table. To
further improve performance, it may be desirable for the dialog to disable the
return after the end of file has been reached. This can be done by setting the
ZTDRET function pool variable to some value other than DOWN, UP, or
VERTICAL, and then issuing a TBDISPL service request with the panel name
specified. Be aware that when a panel name is specified, ISPF clears any pending
scroll requests. So it is up to the dialog to position the table CRP to the appropriate
row to simulate the scroll. For example, assume that a DOWN MAX scroll request
has been issued and the dialog has added all remaining invoices to the table. The
dialog then sets ZTDRET to blank and prepares to issue the TBDISPL service
request, with a panel name, to display the table. To simulate the user scroll the
dialog issues a TBSKIP service request to position the CRP to the row that will
cause a full screen plus the bottom of data marker to be displayed. When the
TBDISPL request is subsequently issued, ISPF will position the table based on the
CRP, thereby simulating the scroll.
A pool can be thought of as a list of variable names that enables ISPF to access the
associated values. When a DM 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
listed below:
Function pool
Contains variables accessible only by that function. A variable that resides
in the function pool of the function currently in control is called a function
variable.
Shared pool
Contains variables accessible only by dialogs belonging to the same
application. A variable that resides in the shared pool of the current
application is called a shared variable.
Profile pool
Contains variables that are automatically retained for the user from one
session to another. A variable that resides in the profile pool is called an
application profile variable or profile variable. Profile variables are
automatically available when an application begins and are automatically
saved when it ends.
The number of shared, function, and profile variables that can exist at any one
time depends on the amount of storage available.
Figure 24 on page 62 also shows how the SELECT service controls access to dialog
variable pools from both functions and menus.
When you define a variable as an input variable on a selection panel, the following
actions occur during processing of the menu:
v If the variable does not exist in either the shared pool or the profile pool, it is
created in the shared pool.
Menu A
Var iable Data Flow
Menu B
Var iable
Data Flow Function
FUNCTION X Pool
for X
Application
Shar ed Pr ofile
VPUT
Pool Pool
SELECT PGM (Y)
VGET
Var iable
Data Flow Function
FUNCTION Y Pool
for Y
Menu C
Var iable Data Flow
Menu D
Dialog variables associated with one function can have the same names as dialog
variables associated with another function, but they reside in different function
pools, and therefore, are not the same variables.
When a new function begins, ISPF creates a function pool for it. Variables can 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.
Any CLIST or REXX variable such as SYSDATE and SYSTIME, which are
dynamically evaluated when referred to, can be used in a CLIST or REXX exec
running under ISPF; however, it cannot be used in panels, messages, skeletons, or
tables. For SYSDATE and SYSTIME, use ISPF system variables ZDATE and ZTIME,
respectively, which contain similar information.
ISPF makes available two other system variables, ZDATEF and ZDATEFD, to
support date representation in various national languages. ZDATEF contains the
date represented by the characters YY, MM, and DD plus delimiters. These
characters are never translated; however, they can be in any order. For example,
the date could be expressed MM/DD/YY, YY/MM/DD, and so on, depending on
how a date is expressed in a given national language. ZDATEFD contains the same
date format, translated into the session national language.
TSO global variables, in effect when ISPF is started, are not available to CLISTs
running under ISPF. These global variables are restored when ISPF terminates. Any
global variables put into effect from within ISPF are lost when ISPF terminates.
The following CLIST command procedure example illustrates that ISPF treats
command procedure variables as dialog variables.
Assume that the definition for panel XYZ contains two dialog variable input fields,
AAA and BBB. In the panel definition, they might appear as follows:
+ INITIAL VALUE %===>_AAA +
+ INCREMENT %===>_BBB +
where the underscore indicates the start of an input field, followed by the name of
the variable.
is executed, variable AAA is set to the value 1. The procedure then invokes the
DISPLAY service to display panel XYZ. The value of AAA is 1 on the displayed
panel. ISPF creates the variable BBB in the function pool and displays it as a blank.
Now, in response to the panel display, you type 100 in the first field (AAA) and 20
in the second field (BBB). When you press Enter, 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. When the next statement
executes, it creates variable CCC and sets it to 120, the sum of AAA and BBB.
When the function in control is a program, the associated function pool is not
shared with ISPF. This is because a program is compiled, not interpreted as
ISPF makes two types of entries in the program function pool, defined and
implicit.
The following program coded in PL/I specifies that field PA of the program can be
accessed by ISPF by using a dialog variable named FA. Then, the DISPLAY service
is called to display panel XYZ.
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 ');
PA is declared as a program variable (character string, length 8). The program calls
the VDEFINE service to make PA accessible to ISPF through dialog variable FA. If
dialog variable FA is specified as an input field on panel XYZ, then “OLD DATA”
displays in field FA, and ISPF stores any data entered in that field into the
program variable PA.
Let’s illustrate how ISPF creates an implicit variable. Assume that panel XYZ, in
the preceding example, allows the user to enter a second value and that this value
is to be stored in dialog variable IA. This is the first reference to IA; therefore, it
does not yet exist in the function pool. Because variable IA does not exist when it
is referred to, ISPF creates it in the function pool. ISPF then stores into IA the value
entered on the panel. Thus, IA is an implicit dialog variable.
When you are using APL2, variables in the current APL2 workspace that follow
APL2 and ISPF naming rules become function pool variables. ISPF treats these as
implicit variables. The VDEFINE service is not used with APL2 dialogs.
You can define a given dialog variable name many times within a given function.
Each definition can associate a different program variable with the dialog variable
name. This is referred to as stacking. Only the most recent definition of that dialog
variable is accessible. A previous definition of that variable can be made accessible
by using the VDELETE service to delete the more recent definitions of that name.
For example, the main routine 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
&DMacro services invoked after the second VDEFINE would have access to only
the subroutine’s program variable. The subroutine would use the VDELETE service
to delete that dialog variable before returning, thereby uncovering the earlier
definition set up in the main routine. To avoid a possible program error, each
VDEFINE processed within a function for a given dialog variable name should
have a VDELETE using the same name or an asterisk (*) as the operand. When an
asterisk is used as the operand, the VDELETE service removes all dialog variable
names previously defined by the program module from the function pool.
The VRESET service allows a program to remove its function pool variables as
though VDELETEs had been done. Any implicit variables are also deleted.
The SELECT service creates shared pools when it processes the ISPSTART or ISPF
command, and when you specify the NEWAPPL or NEWPOOL keywords with the
SELECT service. When SELECT returns, it deletes the shared pool and reinstates
any previous shared pool.
A function can copy dialog variables from its function pool to the shared pool by
using the VPUT service. In addition, another function can directly copy these
variables to its function pool by means of the VGET service. Because 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
pool.
If ISPF cannot find the profile, it searches the table input file. The application
developer can provide a profile pool with the table files. A profile pool contains
variable names and values initialized for the application.
If ISPF cannot find the member in either the user’s profile pool or table input
library, it initializes the application profile pool with the contents of the default
profile pool, ISPPROF, which is read from the table input library. If the dialog
manager application ID “ISP” is active, the currently active copy of ISPPROF is
used as the default, rather than reading ISPPROF from ISPTLIB. ISPPROF is
distributed with ISPF. It contains a set of default Function key values. An
installation can modify this table to change these settings or to include other
variables that will be copied to initialize new profile pools.
Upon completion of the application, ISPF saves the contents of the application
profile pool, under the name xxxxPROF, in the user’s profile library. ISPF deletes
the profile pool from storage when the last call of the application terminates.
You must use the VPUT service to enter variables in the profile pool. Functions can
copy variables from the profile pool into function pools by using the VGET
variable services. Selection panels automatically update existing profile variables.
might be used to remove variable values for age, address, and social security
number from the profile pool.
For detailed information about VERASE and other services, refer to the ISPF
Services Guide
When a new application that uses the NEWAPPL keyword on the SELECT service
is specified, ISPF interrogates variable ZPROFAPP in the new application’s profile
pool. If the variable value is not null, it is assumed to be the name of the profile
extension table. ISPF searches the table input files for a table with the name
specified by ZPROFAPP. The set of variables in this table becomes the read-only
extension for the profile pool of the application just selected.
Although variable services are not effective for updating the read-only extension,
you can create or update the table used as the extension by using DM table
services. Updating the extension may be done only when the application is not
active, because the table is open in nowrite mode while the application is active.
If a variable name is referred to and exists in both the profile pool and the
read-only extension table, ISPF uses the variable from the user’s profile pool. In
other words, the search order is: first the profile pool, and then the read-only
extension.
If a VPUT PROFILE is issued for a variable in the read-only extension, the update
for that variable is made to the user area of the profile pool, not to the read-only
extension. Only the profile pool variable update is saved and accessed, not the
extension variable value.
Variable Formats
Information entered on a panel is in character string format. All dialog variables
remain in character string format when stored:
v As implicit variables in a function pool
v In the shared pool
v In the profile pool
v In ISPF tables.
The VMASK service is used to validate input into a VDEFINEd dialog variable.
Refer to the ISPF Services Guide for more information.
The types of system variables are input, output, non-modifiable, and input-output.
Their type depends on their usage.
To access and update system variables, use variable services according to which
pool the variables are in. System variables in the function pool can be accessed and
updated directly from a command procedure. Those in the shared or profile pools
can be accessed by using the VGET service, and updated by using the VPUT
service.
The system variables in the shared or profile pools can be accessed by using the
VCOPY service. They can be updated by first updating the variable in the function
pool by using the VDEFINE or VREPLACE service and then moving that value to
the shared or profile pool by using the VPUT service.
Variables used in a program function are not automatically put into that function’s
variable pool. Therefore, those variables are not initially available to ISPF for
processing function requests. A function can use the VDEFINE service to make
function variable names available to ISPF through the function pool.
The VDELETE and VRESET services are used to cancel the effect of using
VDEFINE service requests. VDELETE can be used to delete access by ISPF to
selected defined variables by removing them from the function pool. VRESET
removes all defined and implicit variables from the function pool.
A program function can obtain a copy of dialog variables by using the VCOPY
service. The service request can specify that either the variable data address or the
data itself be returned.
The VMASK service is used to validate the data of a variable defined with the
VDEFINE service. VMASK associates a specified user or predefined mask with a
variable previously defined with VDEFINE. The VEDIT statement must be used to
indicate VMASKed variables on a panel.
Each function has its own function variable pool. The variables in a given
function’s pool are not available to other functions, and vice versa. To overcome
this, a function can use the VGET service to copy into its function pool variables
from the shared or profile pools. The function can make variables in its function
You can use the VERASE service to remove variable names and values from the
shared and/or profile pool. The VDELETE and VRESET services are available for
removing function pool variables.
All Functions
VERASE Remove variables from shared pool and/or profile pool
VGET Retrieve variables from shared pool or profile pool
VPUT Update variables in shared pool or profile pool
Contents for a table are shown in Table 3 on page 75. In that example, the variables
that define the columns are as follows:
EMPSER Employee Serial Number
LNAME Last Name
FNAME First Name
I Middle Initial
PHA Home Phone: Area Code
PHNUM Home Phone: Local Number
Permanent tables are maintained in one or more table libraries. A permanent table,
while created in virtual storage, can be saved on direct access storage. It can 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 is complete.
In the MVS/XA environment, some table services data areas reside above the
16-megabyte line when that storage is available, and TSO/E Version 2 Release 1 (or
later) is installed.
When a permanent table is opened for processing, it is read from a table input
library. A table to be saved can be written to a table output library that is 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.
Accessing Data
You specify the variable names that define table columns when the table is created.
Specify each variable as either a KEY field or a NAME (non-key) field. You can
specify one or more columns (variable names) as keys for accessing the table. For
the table shown in Table 3 on page 75, 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 can also be accessed by one or more “argument”
variables that need not be key variables. You can define the variables that
constitute the search argument dynamically by using the TBSARG and TBSCAN
services.
In addition, a table can be accessed by use of the current row pointer (CRP). The
table can be scanned by moving the CRP forward or backward. A row can be
retrieved each time the CRP is moved. When a table is opened, the CRP is
automatically positioned at TOP, ahead of the first row. Table services, such as
TBTOP, TBBOTTOM, and TBSKIP are available for positioning the CRP.
When a row is retrieved from a table, the contents of the row are stored in the
corresponding dialog variables. When a row is updated or added, the contents of
the dialog variables are saved in that row.
ISPF Table Services treat blank data and NULL (zero-length) data as equal. For
example, the following VDEFINES are executed:
"ISPLINK('VDEFINE ','(V1)',VAL1,'CHAR ',L8,' NOBSCAN ')"
"ISPLINK('VDEFINE ','(V2)',VAL2,'CHAR ',L8)"
If the same VDEFINES are done with VAL1 = ’ ’ and VAL2 = ’ ’, V1 will have a
length of 8 and a value of ’ ’ (8 blanks), and V2 will have a length of 0 (NULL
value). To ISPF, V1 is EQUAL to V2, since ISPF will pad V2 with 8 blanks before
doing the compare to V1.
Temporary tables are created by the TBCREATE service (NOWRITE mode) and
deleted by either the TBEND or TBCLOSE service. A new permanent table is
created in virtual storage by the TBCREATE service (write mode). The table does
not become permanent until it is stored on direct access storage by either the
TBSAVE or TBCLOSE service.
An existing permanent table is opened and read into virtual storage by the
TBOPEN service. If the table is to be updated (WRITE mode), the new copy is
saved by either the TBSAVE or TBCLOSE service. If it is not to be updated
(NOWRITE mode), the virtual storage copy is deleted by either the TBEND or
TBCLOSE service.
| The table output library represented by the ISPTABL definition or specified library
| name is protected from concurrent output operations from any ISPF function
| through a separate mechanism not specific to table services.
|
| ┌──────────────┬───────────┬────────────────┐
| │ AA │ BB │ CC │
| │ │ │ │
| ┤──────────────┼───────────┼─────────────────├
| │ Pauly John │ W590 │ Jones Beach │
| │ Clark Joan │ Y200 │ Bar Harbour │
| │ │ │ │
| └──────────────┴───────────┴─────────────────┘
|
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
TBADD service, table service scans the table to determine if the KEY field of
the new row to be added duplicates the KEY field of an existing row. If it does,
the TBADD is not performed.
2. Save table DALPHA for later use by writing it to the table output library.
ISPEXEC TBCLOSE DALPHA
The table DALPHA is written from virtual storage to the file specified by
ISPTABL.
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
where:
d = total number of columns in the table, not including extension variables
where:
e = number of sort fields
The number of tables that can be processed at one time is limited only by the
amount of available virtual storage.
During function processing, the DISPLAY service controls displays requesting the
user to enter data about new employees. The data consists of:
v Employee serial number, entered on panel SER
v Name and phone number, entered on panel DATA.
Entered information is added to the table, as a row, through use of the TBADD
service.
If the user enters an employee serial number for which an employee record already
exists in the table, a DUPLICATE NUMBER short message displays on line 1 of
panel SER. If the user enters the HELP command or presses the HELP Function
key to get further explanation of this short message, the long message:
EMPLOYEE RECORD ALREADY EXISTS FOR THIS NUMBER. ENTER ANOTHER
When the user successfully enters data for an employee, the short message NEW
RECORD INSERTED is displayed on line 1 of panel SER. Then the user can enter
the serial number of the next employee for which table data is to be added.
The user ends function processing by entering the END or RETURN command on
any displayed panel or by pressing the END Function key or RETURN Function
key.
3. DISPLAY PANEL(SER)
This DISPLAY operation uses the panel definition SER, shown in Figure 26 on
page 76 , to control the format and content of the panel display, shown in
Figure 27 on page 76.
)PROC
VER (&EMPSER,NONBLANK,PICT,NNNNNN)
)END
Both the panel definition and the display are referred to in Steps 3, 9, and 18.
The display requests that a serial number be entered for an employee. The
user enters the serial number in the field labeled EMPLOYEE SERIAL
NUMBER. The DISPLAY service then stores it in function pool variable
EMPSER, and verifies it as specified on the panel definition. The verification is
specified in a VER statement in the )PROC section of the panel definition, as
shown in Figure 26:
VER (&EMPSER,NONBLANK,PICT,NNNNNN)
This statement specifies that EMPSER must be nonblank and must consist of
six digits, each in the range of 0–9.
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, the ENTER REQUIRED FIELD message is displayed, as shown in
Figure 28, and referred to in Steps 3 and 18.
Figure 28. Panel Display SER with an ISPF-provided Message Superimposed on Line 1
After the user re-enters the information, it is stored again in function pool
variable EMPSER and reverified. The process is repeated until the information
passes the verification tests.
4. if return code = 0, go to 6
If the return code is 0, the display operation is successfully completed. Go to
step 6 to verify that no record exists for this employee number.
5. if return code = 8, go to 21
If the return code is 8, the END or RETURN command was entered on the
display by the user. Go to step 21 to end processing.
6. TBGET TAB1
This TBGET uses the employee serial number, stored in EMPSER in step 3 or
18, to attempt retrieval of an employee record from the TAB1 table. The table
is a keyed table and has been created in another dialog by the service request:
TBCREATE TAB1 KEYS(EMPSER) NAMES(LNAME FNAME I PHA PHNUM)
7. if return code = 0, go to 9
A return code of 0 means that the record is found. Therefore, a record already
exists for the employee serial number entered by the user. Go to step 9 to
display the DUPLICATE NUMBER message.
8. if return code = 8, go to 12
A return code of 8 means that no record is found. Go to step 12 to request the
user to enter employee data.
DISPLAY MSG(EMPX210)
Figure 30. Panel Display SER—Short Form of Message EMPX210 Superimpose Line 1
Figure 31. Panel Display SER—Long Form of Message EMPX210 Superimposed on Line 3
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 3.
After the input passes verification, the DISPLAY service returns control to the
function.
10. if return code = 0, go to 6
If the return code is 0, the display operation is successfully completed. Go to
step 6 to verify that no record already exists for this employee number.
11. if return code = 8, go to 21
If the return code is 8, the END or RETURN command was entered on the
display by the user. Go to step 21 to end processing.
12. Set dialog variables to blanks
These function pool variables are set to blank to prepare to receive data for a
new employee record.
13. DISPLAY PANEL(DATA)
The DISPLAY operation uses panel definition DATA, shown in Figure 32 on
page 80, to control the format and content of the display shown in Figure 33
on page 81.
)INIT
.CURSOR = LNAME
IF (&PHA = ' ')
&PHA = 914
)PROC
VER (&LNAME,ALPHA)
VER (&FNAME,ALPHA)
VER (&I,ALPHA)
VER (&PHA,NONBLANK,PICT,NNN)
VER (&PHNUM,PICT,'NNN-NNNN')
VER (&LNAME,NONBLANK,MSG=EMPX214)
VER (&FNAME,NONBLANK,MSG=EMPX213)
VER (&PHNUM,NONBLANK,MSG=EMPX212)
)END
EMPLOYEE NAME:
LAST ===> __
FIRST ===>
INITIAL ===>
HOME PHONE:
AREA CODE ===>
LOCAL NUMBER ===>
The variables set to blank in step 12 are displayed, along with the new
employee serial number entered in step 3 or 18. The user is asked to enter, in
the blank 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 ( Figure 32 on page 80).
If the input fields pass the verification tests, the DISPLAY service returns
control to the function.
If the input fields fail the verification tests, a short-form message is displayed
on line 1.
is displayed on line 3.
The user enters another serial number. The DISPLAY service verifies it as
described in step 3. When the serial number passes the verification tests, the
DISPLAY service returns control to the function.
19. if return code = 0, go to 6
If the return code is 0, the display operation is successfully completed. Go to
step 6 to verify that no record already exists for this employee number.
20. if return code = 8, go to 21
If the return code is 8, the END or RETURN command was entered on the
display by the user. Go to step 21 to end processing.
21. TBCLOSE TAB1
Close the table TAB1. Write it from virtual storage to permanent storage.
22. End the function.
File-tailoring services read skeleton files and write tailored output that can be used
to drive other functions. Frequently, file tailoring is used to generate job files for
batch execution.
The file-tailoring output can be directed to a file specified by the function, or it can
be directed to a temporary sequential file provided by ISPF. The filename of the
temporary file is available in system variable ZTEMPF. In MVS, ZTEMPF contains
a data set name. The ddname of the temporary file is available in system variable
ZTEMPN.
Skeleton Files
Each skeleton file is read record-by-record. Each record is scanned to find any
dialog variable names, which are names preceded by an ampersand. When a
variable name is found, its current value is substituted from a variable pool.
Skeleton file records can also contain statements that control processing. These
statements provide the ability to:
v Set dialog variables
v Imbed other skeleton files
v Conditionally include records
v 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.
Problems can occur when using file-tailoring services in conjunction with other
services (EDIT, COPY, ...) that result in modifying the data set members in the
ISPSLIB concatenation. ISPSLIB is the input skeleton library, and it is assumed to
be a static library. FTINCL obtains existing DCB/DEB information based on the
last OPEN done against ISPSLIB by ISPF. It is recommended that applications that
use file tailoring and modify members of ISPSLIB, use the LIBDEF service for
ISPSLIB to point to the application’s skeleton library.
Additionally, the application should check for any changes to the data set
information DCB/DEB prior to invoking file-tailoring services. If there has been a
change, then the application should issue a NULL LIBDEF for ISPSLIB and then
reissue the original LIBDEF for ISPSLIB. This will force a close and re-open of the
ISPSLIB library.
In the second part of the example, select statements are used to conditionally
execute a load-and-go step. An imbed statement, “)IM”, is used to bring in a
separate skeleton for the load-and-go step.
┌─────────────────────────┐
│ │
│ )DOT DALPHA │
│ NAME: &AA │
│ APARTMENT: &BB │
│ CITY: &CC │
│ YEAR: &ZYEAR │
│ )ENDOT │
│ │
└─────────────────────────┘
┌──────────────┬───────────┬─────────────────┐
│ AA │ BB │ CC │
│ │ │ │
┤──────────────┼───────────┼─────────────────├
│ Pauly John │ W590 │ Jones Beach │
│ Clark Joan │ Y200 │ Bar Harbour │
│ │ │ │
└──────────────┴───────────┴─────────────────┘
This example creates a name and address list. The file-tailoring service requests
are:
v ISPEXEC FTOPEN
ISPEXEC FTINCL LABLSKEL
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.
FTOPEN opens both the file-tailoring skeleton and file-tailoring output files.
These files must be defined to ISPF before starting the ISPF session.
FTINCL performs the file-tailoring process by using the file-tailoring skeleton
named LABLSKEL. LABLSKEL contains the file-tailoring controls, )DOT and
)ENDDOT, which specify the use of table DALPHA.
You can issue multiple FTINCL commands to pull in more than one skeleton.
v ISPEXEC FTCLOSE NAME (LABLOUT)
Write the resulting file-tailoring output to a member named LABLOUT
SKELETON.
┌─────────────────────────────┐
│ │
│ NAME: Pauly John │
│ APARTMENT: W590 │
│ CITY: Jones Beach │
│ YEAR: 84 │
│ NAME: Clark Joan │
│ APARTMENT: Y200 │
│ CITY: Bar Harbour │
│ YEAR: 84 │
│ │
└─────────────────────────────┘
The EDREC service, which you usually invoke before calling EDIT, helps you
recover work that would otherwise be lost if ISPF ended abnormally, such as after
a power loss.
Refer to the ISPF Services Guide for complete descriptions, including examples, of
the BROWSE, EDIT, and EDREC services.
Use of the BRIF and EDIF services allows the type of data and data access
methods being employed by a dialog to be transparent to Browse and Edit. The
Edit Interface Recovery (EDIREC) service performs edit recovery for EDIF.
The library access services can also interact with certain LMF options that allow a
dialog with proper authority to activate library controls, promote members to a
controlled library, and query information about library controls.
You can use the library access services with four types of libraries or data sets:
v An ISPF library known by project, group, and type
v A concatenated set of up to four ISPF libraries
v A single existing TSO or MVS partitioned or sequential data set
v A concatenated set of up to four MVS partitioned data sets.
Refer to the ISPF Services Guide for complete descriptions, including examples, of
the library access services.
Another way you can maintain different levels or versions of a library member is
to use the software configuration and library manager (SCLM) utilities. SCLM is a
software tool that helps you develop complex software applications. Throughout
the development cycle, SCLM automatically controls, maintains, and tracks all of
the software components of the application. And, you can lock the version being
edited in a private library and then promote it to another group within the library
for further development or testing. Refer to ISPF Software Configuration and Library
Manager (SCLM) Developer’s and Project Manager’s Guide for more information about
SCLM.
Note: Some library access services perform LMF functions. LMCOPY (with LOCK
option), LMPROM, and LMMFIND (with LOCK option) will fail if one of
the specified libraries is SCLM-controlled: LMF uses the following rule to
determine whether a library is SCLM-controlled. If there is a data set with a
name of the form ‘<project>.PROJDEFS.LOAD’ such that <project> is the
high-level qualifier (or project) of the library in question, then the library is
SCLM-controlled; otherwise, the library is not SCLM-controlled. Note also
that this means that LMF may treat a library as if it were SCLM-controlled
even though it may not be SCLM-controlled.
GDDM Services
The graphics initialization (GRINIT) service initializes the ISPF/GDDM interface
and optionally requests that ISPF define a panel’s graphic area as a GDDM
graphics field. The graphics termination (GRTERM) service terminates a
previously-established GDDM interface. The graphics error block (GRERROR)
service provides access to the address of the GDDM error record and the address
of the GDDM call format descriptor module.
LIBDEF Service
The LIBDEF service provides applications with a method of dynamically defining
application data element files while in an active ISPF session.
LIST Service
The LIST service allows a dialog to write data lines directly (without using print
commands or utilities) to the ISPF list data set. You specify the name of the dialog
variable containing the data to be written on the LIST service request.
LOG Service
The LOG service allows a function to write a message to the ISPF log file. The user
can specify whether the log is to be printed, kept, or deleted when ISPF is
terminated.
PQUERY Service
The PQUERY service returns information for a specific area on a specific panel.
The type, size, and position characteristics associated with the area are returned in
variables.
The CUA 89 guidelines define a user interface in terms of common elements, such
as the way information appears on a screen, and interaction techniques, such as the
way users respond to what appears on a screen. Refer to the SAA CUA Basic
Interface Design Guide ISPF supports the CUA guidelines in the following ways. You
can:
v Define a list of function keys to be associated with each panel.
v Define an action bar and pull-downs on a panel.
v Define and display pop-up windows.
v Define and display help panels for field-level help, extended help, and keys
help. See “Chapter 7. ISPF Help and Tutorial Panels” on page 279 for more
information on CUA help panels.
With ISPF, the panel ID is displayed according to CUA defaults and the PANELID
command acts as a toggle.
ISPF also lets you indicate, for an application session, if you want to use CUA
defaults. If selected, the Panel display CUA mode option on the ISPF Settings
panel controls:
v The location of the function keys on the panel in relation to the command and
message lines.
v The appearance and display format of the keys.
The DTL defines the source information for the dialog elements, and the ISPF
dialog tag language conversion utility converts the source file to a format ISPF
understands. The ISPF Dialog Tag Language Guide and Reference explains in detail
how to create the various elements using the DTL and ISPF conversion utility.
Keylists
The key assignments active for an application panel are defined and stored within
keylists. These key assignments allow the user to request commands and other
actions through the use of function keys. Key assignments for your application are
displayed in the function key area of application panels. Keylists can be shared
across all users by defining them using DTL. This creates an xxxxKEYS table that is
placed in the ISPTLIB concatenation. Users can modify keylists using the KEYS
and KEYLIST commands. Both commands invoke the Keylist utility. Modifications
to keylists are stored in the user’s application profile, thus they are called private.
For complete details on coding action bars and pull-downs, refer to the ISPF Dialog
Tag Language Guide and Reference or the “Defining the Action Bar Choice Section”
on page 157.
Pop-Up Windows
Pop-up windows display information that extends the user’s interaction with the
underlying panel. When a pop-up is displayed, the user must finish interacting
with that pop-up window before continuing with the dialog in the underlying
panel.
The ADDPOP service allows your application to use pop-up windows. After you
issue the ADDPOP service, subsequent DISPLAY, TBDISPL, or SELECT service
calls display panels in that pop-up window until your application issues a
corresponding REMPOP service or issues another ADDPOP service.
You specify the location of the pop-up window using the ADDPOP service call.
Note: When you are running in GUI mode, this pop-up window location
specification is ignored. Default positioning is used.
You can specify the size of the window (width and depth) on the panel definition
BODY statement or use the WIDTH and DEPTH attributes on the DTL PANEL tag.
If you do not specify the size, the Dialog Manager displays the pop-up window in
a 76 X 22 window with a border.
Each pop-up window created as a result of a successful ADDPOP service call can
also have a window title. The title is imbedded in the top of the window frame
border and can be only one line in length. If the title is longer than the window
frame, the dialog manager truncates it. To define the window title, set system
variable ZWINTTL to the desired window title text.
Note: If you are running in GUI mode, the value in ZWINTTL has a maximum
length of 255 characters and will be truncated without notice to the user at
display time if it does not fit on the panel.
The REMPOP service removes the current pop-up window. After you call the
REMPOP service, a subsequent DISPLAY service will either display a panel in the
full panel area of the screen or in a lower-level pop-up window, if it is active.
Refer to ISPF Services Guide for a complete description of the ADDPOP and
REMPOP services.
Moveable Pop-Ups
ISPF provides two distinct mechanisms for you to move the currently active
pop-up window: the WINDOW command or manual movement using two
terminal interactions and no specific ISPF command. You can also move the
window with any other method you normally use to move windows on your
workstation.
Note: The WINDOW command is disabled if you are running in GUI mode.
If the WINDOW command is typed in the command line, the cursor should be
moved to the desired window position prior to pressing Enter.
If the WINDOW command is included in the keylist associated with the currently
active application panel, the user can move the cursor to any position on the
screen, press the function key assigned to the WINDOW command, and the
pop-up is repositioned to the user’s cursor position. The WINDOW command can
be included in the keylist by the application developer, or the user can use the
KEYLIST utility to add it to the keylist.
For panels that do not include the KEYLIST keyword in the )PANEL statement, the
application can assign the WINDOW command to a ZPFnn system variable. The
user can also associate WINDOW with a function key by using the ZKEYS
command to access the function key assignment utility.
If the split screen is used, the pop-up cannot be moved to a different logical screen.
The new pop-up window location must be in the same logical screen in which the
pop-up was originally located. A pop-up is not displayed over the split line. The
split line cuts off the pop-up at the split line location; the pop-up is not
automatically repositioned to fit above the split line.
Note: Pull Down Choice (PDC), Action Bar is also a pop-up window, so the split
screen line cuts off the Action Bar location, too. The pop-up is not
automatically repositioned to fit above the split line.
If the WINDOW command is requested when pop-up windows are not active, a
message is displayed to the user. A pop-up window containing an Action Bar
panel cannot be moved while a pull-down is actively displayed. A message is
displayed to the user if the WINDOW command is requested during this
condition.
Manual Movement
The second method for moving pop-up windows involves two terminal
interactions but does not require a unique ISPF command. A user can request
Place the cursor where you want the upper-left corner of the window frame placed
and press Enter a second time. The window is moved to the new location just as
though the WINDOW command had been issued. The rules for cursor placement
inside the window, and window placement on the physical display, are the same as
those described for the WINDOW command.
Only the active pop-up window can be moved. If a modal or modeless message
pop-up is displayed over a dialog pop-up window, only the message pop-up
window can be moved. The underlying dialog pop-up window cannot be moved
while a message pop-up window is displayed over it.
Input fields that are partially or totally covered by a pop-up window become
protected fields (data cannot be entered into the field). If a field becomes totally
uncovered as a result of moving the pop-up window, the field is restored to an
unprotected field (data can be entered into the field).
Field-Level Help
Field-level help provides help panels for fields defined on an application panel.
When the cursor is on a field and the user requests HELP, ISPF displays the help
panel defined for that field. See “Defining the HELP Section” on page 214.
Extended Help
Extended help provides general information about the contents of a panel. The
information in extended help can be an overall explanation of items on the panel,
an explanation of the panel’s purpose in the application, or instructions for the
user to interact with the panel. The user invokes extended help by issuing the
command EXHELP. EXHELP requests ISPF to display help text for the entire panel.
For more information on help, see “.HELP” on page 274 and “Chapter 7. ISPF Help
and Tutorial Panels” on page 279.
Keys Help
Keys help provides the user with a brief description of each key defined for a
panel. You define the contents of this help panel. The user invokes keys help by
issuing the command KEYSHELP.
KEYSHELP requests ISPF to display the help panel for the current keylist. The help
panel name can be provided as part of the keylist definition. If the keys help panel
is not identified in the keylist definition, it can be supplied in the ZKEYHELP
system variable. Use separate ZKEYHELP variable values for each keys help panel
to be displayed.
When a panel with reference phrases is displayed for the first time, the cursor is
positioned in the upper-left corner. After a reference phrase is selected and control
is returned to the original panel, the panel scrolls automatically to put the cursor
on the reference phrase from which the reference phrase help was invoked. The
exact scroll position might not be the same as when the reference phrase help was
invoked. ISPF positions the reference phrase at the top of the display is scrolling is
necessary to display the reference phrase help field. The reference phrase is an
input-capable field that allows tabbing. Therefore, the reference phrase text is
refreshed whenever the panel is redisplayed.
Reference phrase help panels themselves can also contain reference phrases. When
a reference phrase help panel is cancelled, the panel from which reference phrase
help was requested is redisplayed. All other help facilities are available from a
reference phrase help panel.
The TYPE(RP) attribute in the panel attribute section is used to identify a reference
phrase in a panel. See “Defining the Attribute Section” on page 171. An entry is
then placed in the )HELP section of the panel for each reference phrase attribute
coded in the )BODY or optional )AREA panel sections. The following example is a
)HELP section reference phrase definition:
)HELP
FIELD(ZRPxxyyy) PANEL(panel-name)
xx 00 for a reference phrase defined in )BODY section and 01 to 99 for the
number of the scrollable area in which the reference phrase is defined.
Each scrollable area is assigned a sequential number based on its relative
position within the panel body. The scrollable area closest to the upper-left
corner of the panel body is assigned number 01 with each additional
scrollable area, scanning left to right, top to bottom, assigned the next
sequential number. A maximum of 99 scrollable areas in any given panel
may contain reference phrases.
yyy 001 to 999 for the relative number of the reference phrase within the panel
body or within a particular scrollable area.
panel-name
Name of the help panel to be displayed when HELP for this reference
phrase is requested.
A reference phrase can wrap around multiple terminal lines in panels that are not
displayed in a window. A reference phrase that logically wraps in a pop-up
window requires the beginning of each wrapped line to contain a RP field
attribute, and there must be an entry in the )HELP section for each wrapped line.
This is also true for panels containing the WINDOW() keyword that are not
displayed in a pop-up window. The additional )HELP section entries would
normally be pointing to the same panel.
The example in Figure 36 on page 97 illustrates both single and multiple line
reference phrases.
START Service
You can use the START service to start a dialog in a new logical screen. This
function is similar to the function nesting made available with action bars except
that the “nesting” occurs in a new logical screen.
You can invoke the START service in any of the following ways:
v From any command line, you can enter the command
START some_dialog
For example,
&ZSEL = TRANS(&XX
0,'PGM(ISPSTRT) PARM(PGM(MYPGM0))'
1,'PGM(ISPSTRT) PARM(PGM(MYPGM1) PARM(MYPARM1))'
2,'PGM(ISPSTRT) PARM(MYCMD1 MYPARM2)'
3,'PGM(ISPSTRT) PARM(PANEL(MYPANEL1))'
v From a dialog, you can invoke,
ISPEXEC SELECT PGM(ISPSTRT) PARM(some_dialog)
Note: The some_dialog should not exceed 249 characters. It will be truncated at
249 without warning. You should not use either WSCMD or WSCMDV in
your specification of some_dialog.
Note: For ISPF functions that have service interfaces, such as EDIT and BROWSE,
you should use the service invocations. Using ISPSTRT passing the selection
strings from panel ISR@PRIM does not work in all situations and is not
supported.
If the maximum number of logical screens do not exist when the START command
is invoked and:
v some_dialog is a command from the command table, the new screen is invoked
with the default initial command (in non-display mode) and the command is
run. When the user ends the dialog this new screen still exists.
v if some_dialog is specified as PGM(xxx), CMD(xxx), or PANEL(xxx), the new
screen is invoked with PGM(xxx), CMD(xxx), or PANEL(xxx) as the initial
command, program, or panel. The result is that when you end the xxx dialog,
this new screen is terminated.
If the maximum number of logical screens has already been reached when the
START command is invoked, the specified some_dialog will be executed on top of
the currently displayed screen. The result is that when you end the dialog, ISPF
returns to the previously-displayed screen.
On 3270 displays, if ISPF is not in split screen mode the START command and
ISPSTRT program split the screen at extreme top or bottom of the display. If ISPF
is already in split screen mode, ISPF starts the new screen in the opposite screen,
using the existing split line location.
To create panels with DTL or to learn how to capture the panel definition source
file, refer to the ISPF Dialog Tag Language Guide and Reference
This chapter explains how to create panels using the panel definition statements.
(This information applies to the second and third options described above.) Both
general overview information on panel definition and specific information on each
panel section is included. The topics are arranged as follows:
v An introduction to the panel definition sections
v General tips and guidelines for formatting panels
v Syntax rules and restrictions for panel definition
v A discussion of each panel section
v Using Z variables as field name placeholders
v Panel processing considerations
v Support for panel user exit routines
v Special requirements for defining menus, table display panels, and panels with
dynamic or graphic areas.
Figure 38 on page 105 shows an example panel definition which uses CUA
panel-element attributes. See Figure 65 on page 212 for an example panel definition
that does not use CUA panel-element attributes.
Note: When not in TEST mode, the most recently accessed panel definitions are
retained in virtual storage for performance reasons. If you have modified a
panel, using TEST mode will ensure that the updated version of the panel
will be picked up by ISPF services. See “ISPF Test and Trace Modes” on
page 24 for more information.
When using Edit to create a panel definition, specify NUMBER OFF to prevent
numbers from appearing in the file. Numbers cause a panel syntax error when you
attempt to process the panel definition.
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 referred to by
its name, which is the same as the member name in the library.
You can create or change panel definitions by editing directly into the panel library.
No compile or preprocessing step is required. Use the name of this panel library
member as the panel-name parameter when requesting dialog services, such as
DISPLAY and SELECT.
As shown in Figure 37, the first three displayable lines below the action bar, if
present, in a panel definition include:
v Panel ID and title area
v System-defined (default) areas for message display
v A command/option field
v A scroll field, if applicable.
You can override the location of the long message area and command field from
the ISPF Settings panel.
┌───────────────────────────────────────────────────┐
│ Action Bar Line or Lines │
│ Separator Line │
├───────────────────────────────────┬───────────────┤
│ Panel ID Title │ Short Message │
├───────────────────────────────────┴──────┬────────┤
│ Command/Option │ Scroll │
├──────────────────────────────────────────┴────────┤
│ Long Message │
└───────────────────────────────────────────────────┘
The value of ZPLACE is stored in the application profile pool. To change the value,
use the VPUT statement in a panel definition, the VPUT service in a dialog
function, or the ISPF Settings panel options. None of these settings takes priority
over the others. For example, an ISPF Settings panel selection can change what a
dialog set, and vice versa.
If the panel specifies ASIS on the )BODY statement for a panel, the command and
message lines are not repositioned, even if you specify placement at the BOTTOM.
The command line moves only if all of the following are true.
v For primary windows:
1. If the WINDOW(w,d) keyword is specified on the header statement where w
is less than the screen width, then:
a. The keyword ASIS must not be specified on the )BODY header statement.
b. The first character of the command line must be an attribute character.
2. If the WINDOW(w,d) keyword is specified on the header statement where w
is equal to the screen width or the WINDOW keyword is not specified, then:
a. The keyword ASIS must not be specified on the )BODY header statement.
b. The first and last character of the command line must be an attribute
character, and one of the following is true:
1) There is an attribute byte in the first column of the line following the
command line.
2) There is an attribute byte in the last column of the line preceding the
command line.
3. For pop-up windows, the keyword ASIS is not specified on the )BODY
header statement.
Command lines that move in panels designed for primary windows will continue
to move if these panels are displayed in pop-up windows. In addition, command
lines in panels created using the DTL and converted using the ISPF conversion
utility will move in both primary and pop-up windows.
If requirement 2b1 is false, but 2b2 is true, ISPF changes the attribute byte in the
last column of the line preceding the command line to match the attribute byte in
the last column of the command line. This gives the same result as 2b1.
For the long message line to be moved, the panel must be designed so that the
system default is used to position the long message. That is, an alternate long
message field cannot be specified by the panel designer using the keyword ’LMSG’
on the )BODY header statement.
The long message line is not moved unless the command line is moved, but the
command line is moved regardless of whether the long message field is moved.
To conform to the CUA guidelines, use leader dots and an ending colon for all
protected fields, use leader dots for all input fields, and use ===> for all
command areas. For example:
EMPLOYEE NUMBER . : 015723
ADDRESS . . . . . . 6510 Main Street
CITY, STATE . . . . Imperial, PA
Command ===>
In any case, be consistent. Arrows, colons, and other visual signals are very
confusing if used inconsistently.
v Use highlighting sparingly. Too many intensified fields result in visual
confusion. Again, be consistent. Highlight the same type of information on all
panels.
v It is recommended that DTL be used to design CUA-based panels. The
conversion process can be stopped at the ISPF panel definition source level in
order to add any additional processing.
)PANEL KEYLIST(ISPSAB,ISP)
)ATTR FORMAT(MIX)
! TYPE(AB)
@ TYPE(ABSL)
# TYPE(PT)
$ TYPE(CH)
< TYPE(FP)
¬ TYPE(NT)
_ TYPE(NEF) PADC(_)
? TYPE(NEF) PADC(_) CAPS(ON)
| TYPE(LEF) PADC(_)
% TYPE(LI)
˜ TYPE(LI) CAPS(ON)
)ABC
DESC('Options')
PDC DESC('Create ')
PDC DESC('Change ')
PDC DESC('Delete ')
PDC DESC('Browse ')
PDC DESC('Exit Keylist Utility ')
)ABCINIT
.ZVARS=ZPDC
&ZPDC=' '
IF (&COPTIONS=CREATE)
&ZPDC=1
IF (&COPTIONS=CHANGE)
&ZPDC=2
IF (&COPTIONS=DELETE)
&ZPDC=3
IF (&COPTIONS=BROWSE)
&ZPDC=4
IF (&COPTIONS=EXIT)
&ZPDC=5
)ABCPROC
VER (&ZPDC,LIST,1,2,3,4,5)
IF (&ZPDC=1)
&COPTIONS=CREATE
IF (&ZPDC=2)
&COPTIONS=CHANGE
IF (&ZPDC=3)
&COPTIONS=DELETE
IF (&ZPDC=4)
&COPTIONS=BROWSE
IF (&ZPDC=5)
&COPTIONS=EXIT
This panel definition will display the keylist utility panel, SAMPAN, shown in
Figure 39 on page 107.
Two shared pool system variables, ZSCRMAXD and ZSCRMAXW, contain physical
terminal screen depth and width. These variables cannot be modified. When using
terminals for which an alternate size is available, these variables reflect the
configuration that produces the largest screen buffer.
For example, in the case of a 3278-5 (or 3290 set up as a 3278-5), the available
screen sizes are 24 x 80 and 27 x 132. Therefore, the values in ZSCRMAXD and
ZSCRMAXW are 27 and 132, respectively. For the 3290, these variables contain the
sizes of the hardware partition in which ISPF is operating.
When running in GUI mode, if the panel exceeds the width and/or depth of the
physical display, scroll bars are automatically added to allow viewing of the
hidden portion of the screen.
One or more blanks must follow the closing parenthesis to separate it from the
next statement or keyword.
v Comments can be coded in the action bar choice, attribute, initialization,
reinitialization, processing, ccsid, panel, point-and-shoot, list, and help sections.
Comments must be enclosed with the comment delimiters, /* and */. The
comment must be the last item on the line. Additional keywords or statements
that follow the comment on the same line are ignored. A comment cannot be
continued on the next line. For multi-line comments, the comment delimiters
must be used on each line.
v Blank lines can occur anywhere within the action bar choice, attribute,
initialization, reinitialization, processing, and help sections.
Literal values within a list can be split between lines by coding a plus sign (+) as
the last character on each line that is to be continued. That is, the plus sign is
used as a continuation character. For example:
TRANS (&CASE 1,‘ THIS IS THE VALUE +
FOR CASE 1’ 2,‘THIS IS THE +
VALUE FOR CASE 2’)
Note: To add another layer of quotes, you must double the number of quotes
used in the previous layer. For example:
‘one o‘‘ne‘ yields one o‘ne
‘two t‘‘‘‘wo‘ yields two t‘‘wo
v When variable substitution occurs within a text field in the panel body, left or
right shifting extends to the end of the field, defined by the occurrence of the
next attribute byte. For left shifting, the right-most character in the field is
replicated (shifted in), provided it is a special (non-alphanumeric) character. For
example:
%DATA SET NAME: &DSNAME ----------------------%
Assuming that the value of variable DSNAME is greater than 7 characters, the
dashes are pushed to the right, up to the next start of field (the next % in this
Defining Menus
A menu, also called a selection panel ( Figure 40 on page 112), is a special type of
panel.
The sections that can be used in a menu definition are the same as those that can
be used in other panel definitions. However, a menu requires a processing section
in addition to the body section. The processing section must be in a special format.
Menu definitions are processed by the SELECT service. A menu must have an
input field to allow users to enter selection options. Generally, this is the command
field, and is the first input field on the panel. This field should be named ZCMD to
be consistent with the field name used in this manual.
Besides ZCMD, a menu can have input fields to set up dialog variables needed by
that 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, can also be displayed
on a menu to provide information to users.
The required processing section must provide for the variable ZCMD to be
truncated at the first period and then translated to a character string. The results
must be stored in a variable named ZSEL or SEL. SEL is provided only for
compatibility with the System Productivity Facility (SPF). Use of ZSEL is
recommended.
The ZCMD variable is truncated prior to translation to allow users to bypass one
or more intermediate menus. For example, 1.2 means primary option 1, suboption
2. This is generally called a nested option. ZCMD is automatically stored,
untranslated, as entered. When the SELECT service discovers that variable ZCMD
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
nonblank, the lower-level menu is processed in the normal fashion but is not
displayed to the user.
Each value is one of the options that can be entered on the menu. Each string
contains selection keywords indicating the action to occur. The selection keywords
are:
‘PANEL(pnl-name) [NEWAPPL [(appl-id)]
[PASSLIB]]|[NEWPOOL] [ADDPOP] [SUSPEND] [SCRNAME]’
‘CMD(command) [NEWAPPL [(appl-id)] [PASSLIB]]|[NEWPOOL] [SUSPEND]
[NOCHECK] [LANG(APL|CREX)]
[MODE(LINE|FSCR)]
[BARRIER]
[NEST]
[SCRNAME]’
‘PGM(prog-name) [PARM(parameters)]
[NEWAPPL [(appl-id)] [PASSLIB]]|[NEWPOOL] [SUSPEND]
[NOCHECK]
[MODE(LINE|FSCR)]
[SCRNAME]’
‘WSCMD(workstation-command)
[MODAL|MODELESS]
[WSDIR(DIR)]
[MAX|MIN]
[VIS|INVIS]’
‘WSCMDV(var_name)
[MODAL|MODELESS]
[WSDIR(DIR)]
[MAX|MIN]
[VIS|INVIS]’
EXIT
Except for EXIT, each string of keywords must be enclosed in single quotes
because it contains parentheses, and sometimes blanks.
The following selection keywords are the same as those that can be specified for
the SELECT service.
PANEL(panel-name)
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.
NOCHECK, MODE, and EXIT are described following.
NOCHECK Keyword
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,‘.’)
1, ‘PANEL(DEF)’
.
.
8, ‘PGM(ABC)’
9, ‘PGM(XYZ)’
A user can enter 1.x as a 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, the developer specifies the
NOCHECK keyword as in the following example:
&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 usually 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, ‘.’)
1, ‘PANEL(DEF)’
8, ‘PGM(ABC) NOCHECK’
9, ‘PGM(XYZ) NOCHECK’
&NEXTOPT = .TRAIL
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 ISPF.
MODE Keyword
You can use the MODE keyword, with either the LINE or the FSCR option, on a
SELECT service request to control whether ISPF enters line mode or full-screen
EXIT Keyword
The EXIT keyword, if used, applies only to a primary option menu. It terminates
ISPF, using defaults for list/log data set processing. EXIT need not be enclosed in
single quotes.
If you use an asterisk (*) for the value, indicating an invalid option was entered,
use a question mark (?) as the string. This causes the SELECT service to redisplay
the menu with an invalid option message.
The first menu displayed when ISPF is invoked is usually treated as a primary
option menu. For example, if ISPF is invoked with:
ISPSTART PANEL(XYZTOP)
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
A dialog can have lower-level (nested) primary option menus. This technique is
implemented 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
user. It is recommended that there be only one primary option menu per major
application.
If used, the master menu should be the first menu displayed when the user logs
on. It can be displayed automatically by including the following command in the
user’s TSO LOGON procedure:
The master application menu is generated from a DTL source file ( Figure 42 on
page 118). The menu selections are enabled for point-and-shoot selection.
The master application menu )INIT, )PROC, and )PNTS sections are included in
Figure 41 to illustrate some of the special menu statement formats discussed above.
)INIT
·ZVARS = '(ZCMD ZUSER ZTIME ZTERM ZKEYS ZSCREEN ZLANG ZAPPLID ZENVIR)'
·HELP = ISP00005
&ZPRIM = YES
&ZPRIM = YES /* This is a primary option menu */
IF (&ZLOGO = 'YES') /* @L5A*/
IF (&ZSPLIT = 'NO') /* Not in split screen @L5A*/
IF (&ZCMD = &Z) /* No command pending @L5A*/
IF (&ZLOGOPAN |= 'DONE') /* No logo displayed yet @L5A*/
.MSG = ISPLO999 /* Set logo information @L5A*/
.RESP = ENTER /* Simulate enter @L5A*/
&ZLOGOPAN = 'DONE' /* @L5A*/
&ZCLEAN = 'NO' /* @L5A*/
IF (&ZCMD |= &Z) /* Command pending @L5A*/
&ZLOGOPAN = 'DONE' /* @L5A*/
VPUT (ZLOGOPAN) SHARED /* @L5A*/
IF (&ZSPLIT = 'YES') /* In split screen @V5A*/
&ZLOGOPAN = 'DONE'
)PROC
/* This in a GML based panel generated by ISPDTLC. */
/* */
/* Make changes by updating the GML source file */
/* and reconverting ISP@MSTR. */
&ZSEL = TRANS (TRUNC (&ZCMD,'.')
1,'PANEL(ISP@PRIM) SCRNAME(PRIM)'
X,EXIT
' ',' '
*,'?' )
&ZTRAIL=;TRAIL
)PNTS
FIELD(ZPS01001) VAR(ZCMD) VAL(1)
FIELD(ZPS01002) VAR(ZCMD) VAL(2)
FIELD(ZPS01003) VAR(ZCMD) VAL(3)
FIELD(ZPS01004) VAR(ZCMD) VAL(4)
FIELD(ZPS01005) VAR(ZCMD) VAL(5)
FIELD(ZPS01006) VAR(ZCMD) VAL(X)
FIELD(ZPS00001) VAR(ZCMD) VAL(END)
)END
/* 5655-042 (C) COPYRIGHT IBM CORP 1982, 1996 */
The following figure shows the DTL source for panel ISP@MSTR. All of the
translatable text is defined with ENTITY tags and is placed at the beginning of the
file. Special comments bordered by a DTL comment line:
<!-- ############################################ -->
identify the places where the source file can be modified and provide an
explanation for including additional options.
<!-- panel instruction text line - maximum text length = 78 bytes -->
<!-- panel instruction entities will be concatenated -->
<!ENTITY panel_instruct_1
"Enter <ps var=zcmd value=END csrgrp=99>END</ps> ">
<!ENTITY panel_instruct_2
"command to terminate application">
<varlist>
<vardcl name=zcmd varclass=vcc>
<vardcl name=zuser varclass=vco>
<vardcl name=ztime varclass=vco>
</varlist>
<copyr>5655-042 (C) COPYRIGHT IBM CORP 1982, 1996
<panel name=isp@mstr help=isp00005 padc=user keylist=isrnsab applid=isr
width=80 depth=24 menu prime window=no>&panel_title;
<cmdarea noinit>
<area depth=8 extend=force width=59 dir=horiz>
To add a new application to the master menu, copy the ISP@MSTR DTL source file
from the GML library to a private data set. Locate the sections of code within the
DTL comment lines:
<!-- ############################################################## -->
Refer to the ISPF Dialog Tag Language Guide and Reference for a description of the
Dialog Tag Language syntax and information about compiling DTL panels.
Compile the modified DTL source file using the ISPDTLC command, and review
the generated panel to confirm that your changes have been processed.
The primary option menu )INIT, )PROC, and )PNTS sections are included in
Figure 43 on page 123 to illustrate some of the special menu statement formats
discussed above.
The initialization section sets the control variable .HELP to the name of a tutorial
page to be displayed if a 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.
The processing section specifies the action to be taken for each option entered by
the user. If option 0 is selected, program ISPISM is invoked. If option 1 is selected,
panel ISPUCMA is displayed; and so on.
For the tutorial, program ISPTUTOR is invoked and passed a parameter, ISP00000,
which ISPTUTOR interprets as the name of the first panel to be displayed. Panel
ISP00000 is the first panel in the tutorial for ISPF. Other applications should pass
the name of the first tutorial page for that application.
The following figure shows the DTL source for panel ISP@PRIM. All of the
translatable text is defined with ENTITY tags and is placed at the beginning of the
file. Special comments bordered by a DTL comment line:
<!-- ############################################################## -->
identify the places where the source file can be modified and provide an
explanation for including additional options.
<!'doctype dm system(
<!'ENTITY ispzprim system -- common logic file imbed -->
<!'-- panel instruction text line - maximum text length = 78 bytes -->
<!'-- panel instruction entities will be concatenated -->
<!'ENTITY panel_instruct_1
"Enter <ps var=zcmd value=END csrgrp=99>END</ps> ">
<!'ENTITY panel_instruct_2
"command to terminate application">
<varlist>
<vardcl name=zcmd varclass=vcc>
<vardcl name=zuser varclass=vco>
<vardcl name=ztime varclass=vco>
</varlist>
<cmdarea noinit>
<area depth=11 extend=force width=59 dir=horiz>
To add a new application to the primary option menu, copy the ISP@PRIM DTL
source file from the GML library to a private data set. Locate the sections of code
within the DTL comment lines:
<!-- ############################################################## -->
Refer to the ISPF Dialog Tag Language Guide and Reference for a description of the
Dialog Tag Language syntax and information about compiling DTL panels.
Compile the modified DTL source file using the ISPDTLC command, and review
the generated panel to confirm that your changes have been processed.
The required input field, ZCMD, appears in the second line of the panel body. It is
followed by a description of the various options.
This menu also has eight variables within text fields at the upper-right corner of
the screen. These reference system variables from the shared variable pool that
display user ID, time, terminal type, number of function keys, screen number,
language, application ID, and ISPF release number.
The fixed portion contains the command field and usually the scroll amount field.
It can also include other input fields as well as output fields, action bars, text,
dynamic areas, scrollable areas, and a graphic area.
The scrollable portion is defined by up to eight 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
corresponds 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. The application user can 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 corresponds to multiple lines on the screen. If desired, a separator line,
consisting of blanks or dashes, for example, can 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.
Each definition using the model lines on the display is known as a model set.
Comma n d F i e l d T o p - R ow - D i s p l a y ed I n d i ca t o r
| |
| |
+- - - - - - - - - - - - - -V- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -V- - - - - - - - - - - -+
| - - - - - - - - - - - - - - - - - - - P o p u l a t i o n Ch a n g e - - - - - - ROW 4 OF 1 0 | - - --* Scr o l l
| Comma n d = = > S c r o l l = = > P AGE | < - -- -- Amo u n t
| | | F ield
| T h i s t ab l e s h ow s s e l e c t e d me t r op o l i t a n a r e a s wh i c h h a d a | |
| l a r g e r e l a t i v e i n c r e a s e i n p op u l a t i o n f r om 1 9 7 0 t o 1 9 8 0 . | | F i x ed
| | | Po r t i on
| Me t r o a r e a S tate Ch a n g e | |
| ( P e r cen t ) | - - --*
| F o r t Co l l i n s co +66 . 0 | - - --*
| We s t P a l m B e a c h f l +64 . 3 | | S c r o l l ab l e
| F o r t L au de r da l e f l +63 . 6 | | Po r t i on
| B r y an tx +61 . 5 | |
| R eno nv +60 . 0 | |
| P r ovo ut +58 . 4 | |
| McA l l e n tx +56 . 1 | | B o t t om - o f -
| * * * * * * * * * * * * * * * * * * * * B O T T OM OF DA T A * * * * * * * * * * * * * * * * * * * * - - - - - -- -- Da t a
| | - - --* Ma r k e r
+- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -+
auto-selection
The process by which the row specified in the CSRROW parameter or
If the model section for a table contains more than one line, it is possible
that the entire model section will not fit on the screen. In this case, the last
rows of the table area are left blank. A partial model section is not
displayed. The only way to display a partial model section is if you
request your function keys to appear over your table display, or if you split
your screen over your table display.
When you specify ROWS(SCAN) in your panel model section, ISPF finds
only enough rows to fill the display, thus providing a performance boost.
Therefore, you cannot know the entire number of table rows that meet
your search criteria without scrolling through the complete table.
When a table is being built dynamically to satisfy scroll requests, you can
make the top-row-displayed indicator reflect the positioning in the logical
table instead of the physical table. See the description of ZTDLTOP and
ZTDLROWS in ISPF Services Guide
Input and output fields default to CAPS(ON) and JUST(LEFT), in the )BODY
section, but they default to CAPS(OFF) and JUST(ASIS) in the )MODEL section.
An attribute section is required if the model line contains output fields. There is no
default attribute character for output fields.
The )MODEL header statement must begin in column 1. The following optional
keywords can be specified on this header:
v CLEAR(var-name,var-name ...)
v ROWS(ALL|SCAN).
The CLEAR keyword identifies the dialog variable names, from the model lines,
that are to be cleared to blank before each row in the table is read. Thus, if the
variable is an extension variable in the table, which cannot exist in all rows,
previous values are erased and, thereby, are 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 certain 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 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
maximum of eight model lines is allowed. Any attribute except those associated
with dynamic, graphic, or scrollable areas (AREA, EXTEND, SCROLL, USERMOD,
and DATAMOD) can be used with any fields in the model lines. The following can
appear in the )MODEL section:
v Text
v Variable model lines (see below)
v Input fields
v Output fields.
Typically, the first field within the model lines specifies the dialog variable into
which a selection code, entered by a user, will be stored. All remaining names
Text fields can be specified in the model line. A text attribute character can 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.
Variable model lines can be specified in the panel definition. If a variable, a name
preceded by an ampersand, begins in column 1 of any model line, the value of that
variable defines the model line.
If Z variables occur as name placeholders within the model lines or the fixed
portion, 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. For example:
)INIT
.ZVARS = '(NAME1,NAME2,NAME3)'
where NAME1, NAME2, and NAME3 are the actual variable names corresponding
to the first, second, and third Z variables in the body or model sections. For
example, if one Z variable occurs as a placeholder within the panel body and two
Z variables occur as placeholders within the model lines, then NAME1
corresponds to the field in the body and NAME2 and NAME3 correspond to the
two fields in the model lines. For compatibility with SPF, Z variables in the model
lines of a table display panel can be assigned to the VARS variable, rather than to
the control variable, .ZVARS. For example:
)INIT
&VARS = '(NAME2,NAME3)'
The )INIT section of a TBDISPL panel definition can contain any statement that is
valid in an )INIT section of a DISPLAY panel definition.
The )REINIT section of a TBDISPL panel definition can contain any statement that
is valid in a )REINIT section of a DISPLAY panel definition.
Any control variable except .ZVARS can be set within the )REINIT section. If table
variables that are in the model lines are referenced within the )REINIT section,
then the values for the current row, as specified by the CRP, are used. For example,
if the .ATTR control variable is set for fields that are in the )MODEL section, then
only fields in the model set on the display that corresponds to the current selected
row will have their attributes changed.
The )PROC section of a TBDISPL panel definition can contain any statement that is
valid in a )PROC section of a DISPLAY panel definition.
Any control variable except .AUTOSEL and .ZVARS can be used in the )PROC
section. If table variables that are in the model lines are referenced within the
)PROC section, then the values for the current row, as specified by the CRP, are
used. For example, if the .ATTR control variable is set for fields that are in the
)MODEL section, only fields in the model set on the display that corresponds to
the current selected row will have their attributes changed.
The )PROC section can check the value of ZTDSELS to determine if any rows were
selected. This value and its interpretation are:
0000 No selected rows
0001 One selected row (now the current row)
0002 Two selected rows, consisting of the current row and a pending selected
row
0003 Three selected rows, consisting of the current row and two pending
selected rows
... And so forth.
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, in all rows, with the current contents of the corresponding
dialog variables. If these fields are to be blank, the corresponding variables must
be set to blanks or null prior to each call of TBDISPL. The CLEAR keyword can be
used to specify that they are to be blanked.
A user can scroll the data up and down. Scroll commands, such as DOWN 5, apply
to the number of table entries to scroll up or down. For example, if three model
lines are specified, DOWN 5 would scroll by 5 table entries, which corresponds to 15
lines on the display.
A user can enter information in any of the input fields within the fixed or
scrollable portion of the panel.
Figure 46 on page 140 shows a sample panel definition for table display.
Assuming that the current contents of the table are as shown in Table 6 and that
dialog variable DEPT contains ’27’, the resulting display is shown in Figure 47.
Table 6. Table Display Data
EMPSER LNAME FNAME I PHA PHNUM
598304 Robertson Richard P 301 840-1224
172397 Smith Susan A 301 547-8465
813058 Russell Charles L 202 338-9557
395733 Adams John Q 202 477-1776
502774 Kelvey Ann A 914 555-4156
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 and
placed in a variable named SELECT. The other variables in the model line
correspond to variables in the table. The example also illustrates the use of two Z
variables as placeholders in the body of the panel and in the model line, the
initialization of the scroll amount field to PAGE, and the specification of a
corresponding help panel.
The same table might be displayed by using several model lines with the panel
definition shown in Figure 48.
)ATTR
@ TYPE(OUTPUT) INTENS(LOW)
# TYPE(INPUT) PAD('_')
)BODY
%---------------------------- EMPLOYEE LIST ---------------------------------
%COMMAND INPUT ===>_ZCMD %SCROLL ===>_AMT +
+
%EMPLOYEES IN DEPARTMENT@Z +
+
+ENTER CHANGES ON THE LINES BELOW.
+
)MODEL
#Z + SERIAL: @EMPSER + LAST NAME: @LNAME +
PHONE: @PHA@PHNUM + FIRST NAME: @FNAME +
INITIAL: @I +
---------------------------------------------------------------------
)INIT
.ZVARS = '(DEPT SELECT)'
&AMT = PAGE
.HELP = PERS123
)END
Figure 48. Table Display Panel Definition with Several Model Lines
EMPLOYEES IN DEPARTMENT 27
ENTER CHANGES ON THE LINES BELOW.
When a panel is displayed, the number of lines in a dynamic area can be increased
automatically to accommodate the number of lines available on the terminal being
used for the display.
Similarly, while the panel display service does not perform the scrolling for
dynamic or graphic areas, it does provide an interpretation of the user’s scroll
request.
The value for the SCROLL keyword cannot be specified as a dialog variable.
A panel cannot have more than one scrollable area or more than one extended
area. The scrollable area can be a panel with a scrollable area or a table display.
)ATTR
# AREA(DYNAMIC) SCROLL(ON) EXTEND(ON)
)BODY
%-------------------- TITLE -----------------------
%COMMAND ===>_ZCMD +SCROLL ===>_AMT +
+
+ (Instructions for this panel ...)
+
#SAREA -------------------------------------------#
+
+ (More instructions for this panel ...)
+
These attributes are treated as character attributes only if they are used in the
shadow variable for the dynamic area (see the description of shadow variable
below); otherwise, they are treated as text.
Variables may be substituted for the values of the COLOR, HILITE, and GE
keywords in the same way they are substituted for field attributes.
The .ATTRCHAR control variable may be used to override the COLOR, HILITE,
and GE keywords for character attributes in the same way it is used to override
field attributes. The TYPE keyword cannot be overridden from TYPE(CHAR) to
any other type, nor can a different type value be overridden as TYPE(CHAR). See
“Relationship to Control Variables .ATTR and .ATTRCHAR” on page 205.
Refer to the ISPF Dialog Tag Language Guide and Reference for details in defining
character attributes within dynamic areas in panels created using DTL.
Note: If consecutive characters have the same character attributes (an entire word,
for example), the attribute character must be repeated in the shadow
variable for EACH character affected. For panels to be displayed on DBCS
terminals, a TYPE(CHAR) attribute should only map to the first byte of a
double-byte character.
The shadow variable is associated with the dynamic area by placing the shadow
variable name after the dynamic area name in the panel definition. The two
variable names must be separated by a comma only, and the shadow variable
name must be followed by a blank.
Note: The dynamic area and shadow variables cannot be Z variables in the panel
source.
Refer to the ISPF Dialog Tag Language Guide and Reference for details on specifying a
shadow variable using Dialog Tag Language.
If the terminal does not support the graphic escape order, or if the character
defined by TYPE(CHAR) GE(ON) is not in the range ’40’X through ’FE’X, ISPF
does not place a GE order in the order stream prior to this character and displays
this character as a blank.
v System variable ZGE can be checked by the dialog to determine if the terminal
supports the graphic escape order, and if not, can substitute different characters
in the dynamic area. The characteristics for this variable are as shown in
Figure 51.
┌──────┬──────┬──────┬─────┬──────────────────────────────┐
│ Name │ Pool │ Type │ Len │ Description │
├──────┼──────┼──────┼─────┼──────────────────────────────┤
│ ZGE │ shr │ non │ 3 │ YES - Terminal supports the │
│ │ │ │ │ graphic escape order │
│ │ │ │ │ NO - Terminal does not │
│ │ │ │ │ support the graphic │
│ │ │ │ │ escape order │
└──────┴──────┴──────┴─────┴──────────────────────────────┘
Note: When running in GUI mode, ZGE=OFF and any character defined with
GE(ON) will display as a blank.
Character attributes are associated with a character and not with the character’s
position in the buffer. If a character is moved, for example, because of an insert or
delete operation, the attribute moves with the character.
The screen image recorded in the list data set as a result of the PRINT, PRINT-HI,
PRINTL, or PRINTLHI contains a blank character for all character attributes
defined with the GE(ON) keyword.
Figure 52 shows an example of the panel source for a panel with a dynamic area
containing character attributes.
)ATTR
* AREA(DYNAMIC)
$ TYPE(CHAR) HILITE(REVERSE) COLOR(YELLOW)
ø TYPE(CHAR) COLOR(RED)
# TYPE(CHAR) COLOR(BLUE) HILITE(USCORE)
| TYPE(DATAOUT) INTENS(LOW) COLOR(WHITE)
)BODY
%-------------------CHARACTER ATTRIBUTE PANEL------------------------
%COMMAND ===>_ZCMD
)END
The next example shows how the dynamic area and shadow variables are defined
and initialized in a PL/1 program to display the above panel.
In the panel displayed from the examples above, the F in the word Fox is yellow
and displayed in reverse video, the ox in the word Fox is blue and underscored,
When specifying a graphic area display, the dialog developer issues a request for
the ISPF GRINIT service specifying the name of the panel definition in which the
graphic area is defined. This request establishes the interface to GDDM. Next, calls
to GDDM that request GDDM services specify the picture to appear in that graphic
area. Then the ISPF DISPLAY service is used to display the panel.
The dialog must provide an 8-byte area, called an application anchor block (AAB),
which is on a full-word boundary, to the GRINIT call. This AAB identifies the
ISPF/GDDM instance and must be used in all GDDM calls made by the dialog.
Within the ISPF/GDDM instance, the dialog cannot perform any of the following
GDDM calls:
ASREAD FSSHOR ISFLD MSPCRT MSQMOD PTNSEL WSCRT
FSSHOW ISQFLD MSPQRY MSQPOS PTSCRT WSDEL WSIO
FSENAB FSTERM ISXCTL MSPUT MSREAD PTSDEL WSMOD
FSEXIT GSREAD MSCPOS MSQADS PTNCRT PTSSEL WSSEL
FSINIT ISCTL MSDFLD MSQGRP PTNDEL PTSSPP WSSWP
FSRNIT ISESCA MSGET MSQMAP PTNMOD SPINIT
ISPF GDDM services do not run in the background, and thus, cannot be requested
in a batch environment. See “Defining the Attribute Section” on page 171 for
information using the AREA keyword in the )ATTR section to define a graphic
area.
Preprocessed panel data sets must be defined to ISPF as you would define other
data sets. This can be either by normal allocation prior to invoking ISPF, or
dynamically during an ISPF session by using the LIBDEF service. ISPF provides a
dialog, ISPPREP, for creating preprocessed panels. This dialog can be run either in
batch mode or interactively.
To run ISPPREP by using the SELECT service, issue ISPPREP with no parameters.
For example:
ISPEXEC SELECT PGM(ISPPREP)
causes the selection panel shown in Figure 53 on page 151 to be displayed. Issuing
the ISPPREP command from a command line or invoking ISPPREP from the
Functions choice on the action bar of the ISPF Primary Option Menu also causes
this selection panel to be displayed.
Figure 53. Panel for Specifying Preprocessed Panel Input and Output Files (ISPPREPA)
To run ISPPREP in batch mode, you include the PARM keyword, together with the
panel-input and panel-output identifiers, on the SELECT service request. For
example:
ISPEXEC SELECT PGM(ISPPREP) PARM(INPAN(‘ISPFPROJ.GRE.PANELS(PANA)’),
OUTPAN(‘ISPFPROJ.PXY.PANELS(PANB)’) EXEC)
Note: The previous example must be run from a REXX or CLIST command
procedure.
You can control whether existing members in the output data set having the same
identification as that specified will be replaced. In batch mode, use the
NOREPL|REPLACE parameter with the PARM keyword for specifying whether
members are to be replaced. In interactive mode, use the line provided on the
panel shown in Figure 53 for specifying whether members are to be replaced.
ISPPREP converts panel input data set members to an internal format and writes
them to the specified output panel data set members. A given panel file can
contain a mixture of preprocessed panels and regular panel definitions.
ISPPREP does not destroy the source panels from which it creates preprocessed
panels. However, you should save those panels in case they must be updated in
the future. When the preprocessed panels are ready for use, you can use them to
replace the corresponding source files for the ISPPLIB defaults.
ISPPREP provides an option for generating statistics for preprocessed panels. ISPF
provides the version (always 1), modification counter, creation date last-modified
date, current number of lines, initial number of lines, number of modified lines
(always 0), and user ID for the message or panel. These statistics are visible on
memberlist displays such as ISPF BROWSE and EDIT. The statistics are placed in
the SPF directory.
Preprocessed panel objects should not be copied from a fixed to a variable record
format data set. Blank data could be lost. This can cause the product to abend or
can create a display error when the copied panel object is used by display
processing. Use ISPPREP to transfer preprocessed panel objects to a variable record
format data set or when the receiving data set logical record length or logical
record format is not the same as the source data set.
ISPPREP output data sets must conform to the same LRECL limits as ISPPLIB.
The PARM keyword on the SELECT indicates that ISPPREP is to be run in batch
mode. The absence of the PARM keyword indicates that ISPPREP is to be run as
an interactive dialog and that PDSin, the panel input library, and PDSout, the
panel output library, are to be specified on a data-entry panel. Both the ISPPREP
command and option 2 on the ISP@PRIM primary option panel select ISPPREP in
interactive mode.
The panel input and panel output library identifiers, whether specified on the
SELECT statement when in batch mode or on the data entry panel when in
interactive mode, follow the same guidelines.
PDSin (panel input library)
The name of the library of panel definitions to be converted to their
internal format. PDSin must be in the form:
(‘partitioned data set name[(member)]’)
You cannot specify the same name for the input partitioned data set and
for the output data set, even if you specify REPLACE unless the data sets
exist on different volumes and you specify the appropriate volume serial
numbers by using the INVOL and/or OUTVOL parameters.
When running in batch mode, you are not required to enter a member
name. The absence of the member name is equivalent to coding an asterisk
for the member name. In interactive mode, failure to explicitly state a
member name or an asterisk causes the data-entry panel to be redisplayed
with a message prompting the user for the member name.
PDSout (panel output library)
The name of the library to which the preprocessed panels will be written.
The form of PDSout is the same as that of PDSin. You can specify a blank
or name for the member name. A blank indicates that the member name
specified for PDSin is to be used as the member name for PDSout.
Coding an asterisk for a member name in PDSout is invalid.
INVOL (input PDS volume serial number)
Specifies the serial number of the volume on which PDSin resides. If this
parameter is omitted, the system catalog is searched.
It must be used when the data set exists but is not cataloged. INVOL is
optionally specified in batch mode as well as in interactive mode. In batch
mode the keyword (INVOL) is specified along with the volume serial
number as part of the SELECT statement.
OUTVOL (output PDS volume serial number)
Specifies the serial number of the volume on which PDSout resides. If this
parameter is omitted, the system catalog is searched.
It must be used when the data set exists but is not cataloged. OUTVOL is
optionally specified in batch mode as well as in interactive mode. In batch
mode the keyword (OUTVOL) is specified along with the volume serial
number as part of the SELECT statement.
NOREPL|REPLACE
A keyword that specifies whether existing partitioned data set members
are to be replaced in PDSout. The default is NOREPL in batch mode. In
interactive mode, an option must be specified.
STATS|NOSTATS
User controls whether member statistics are to be saved in the SPF
directory. The default option is STATS.
EXEC Specifies that ISPPREP is being executed from a CLIST or REXX command
procedure. The EXEC parameter causes the return code to be set to 24 if a
space-related abend occurs on the output file.
Any panel specified in the panel input library that is already a preprocessed panel
is copied directly to the panel output library (contingent on the
NOREPL|REPLACE specification).
Panel conversion error conditions apply only to the current panel being converted
and are usually due to an error in the panel definition. If such an error is
ISPPREP logs error and informational messages in ISPLOG. Any error conditions
encountered cause an appropriate message and return code to be written to the
log. This is also true for any conditions that warrant an informational message.
Since ISPPREP can convert a number of panel definitions to their internal format in
one call, a number of conditions may arise that generate a return code other than
‘0’. ISPPREP returns the highest return code generated. However, if invoked in
interactive mode, ISPPREP will return ‘0’ unless an unrecoverable dialog error is
encountered, in which case the code returned is ‘20’. Refer to the log for a more
comprehensive look at ISPPREP’s results.
This section provides reference information for each of the following panel sections
in alphabetical order :
)ABC—page 157
)ABCINIT—page 163
)ABCPROC—page 164
)AREA—page 164
)ATTR—page 171
)BODY—page 207
)CCSID—page 213
)END—page 214
)HELP—page 214
)INIT—page 216
)LIST—page 216
)MODEL—page 217
)PANEL—page 217
)PNTS—page 221
)PROC—page 225
)REINIT—page 225.
)ABC DESC(choice-description-text)[MNEM(number)]
where:
DESC(choice-description-text)
Text displayed in the panel’s action bar area for the action bar choice. The
maximum length of the text is 64 characters.
The action bar choice-description-text must match the choice-description-text
specified in the )BODY section of the panel. ISPF does not translate the value
to uppercase. If choice-description-text contains any special characters or
blanks, you must enclose it in quotes in the )ABC DESC parameter. However,
when it is specified in the )BODY section of the panel, you should not enclose
it in quotes. Each action bar choice should be unique.
)ATTR
# TYPE(AB)
@ TYPE(NT)
? TYPE(PT)
. $ TYPE ABSL
.
.
)ABC
. DESC('Menu') MNEM(1)
.
.
)BODY CMD(ZCMD)
@# Menu# Utilities# Compilers# Options# Status# Help@
$--------------------------------------------------------------------
@
. ?ISPF Primary Option Menu+
.
.
)ATTR
# TYPE(AB)
@ TYPE(NT)
? TYPE(PT)
. $ TYPE ABSL
.
.
)ABC
. DESC('OEDDOOUUBBLLEE0F(M)') MNEM(8)
.
.
)BODY CMD(ZCMD)
@# 0EDDOOUUBBLLEE0F(M)# Utilities# Compilers# Options# Status# Help@
$--------------------------------------------------------------------
@
. ?ISPF Primary Option Menu+
.
.
In 3270 mode you access the action bar choice in one of the following ways,
where ″x″ is the mnemonic letter that is underscored:
1. Enter ″ACTIONS x″ in the command field
2. Enter ″x″ in the command field and press the function key assigned to the
ACTIONS command.
In 3720 mode, panels without a command line will not display mnemonic
characters, because there is no command line on which to enter the ACTIONS
command and parameter. Terminals or emulators that do not support extended
highlighting will not display host mnemonics.
In GUI mode you use a hot key to access an action bar choice; that is, you can
press the ALT key in combination with the letter that is underscored in the
choice. A hot key is also referred to as an accelerator key or shortcut key. If the
character in the ALT character combination is not found to be an underscored
mnemonic letter in the panel, then no action is taken.
Note: If you specify duplicate characters (case insensitive) for the mnemonics
within the action bar, the result of invoking the mnemonics is operating
system dependent.
Note: For each separate action bar choice section, you must define a corresponding
)ABCINIT (action bar choice initialization) section. An )APCPROC (action
bar choice processing) section is optional. You must include these sections in
the panel source definition in the proper order as shown in the following
example:
)ABC
)ABCINIT
)ABCPROC
)ATTR
@ TYPE(AB)
# .TYPE(NT)
.
.
)BODY
@ choice1@ choice2@ choice3#
Notes:
1. A blank must separate the choice-description-text and the AB attribute
character. The attribute byte for the first choice can be in any column except
column 1. A text attribute character to delimit an action bar line should be
coded immediately following the last character of the last choice-description-
text on each action bar line.
2. A separator line should follow the last action bar line.
When the panel is displayed in GUI mode, the separator line (the line
following the last action bar choice) is not displayed.
3. ISPF considers the panel line following the last action bar choice as part of the
action bar area.
)BODY
@ choice1@ choice2@ choice3#
@ choice4@ choice5@ choice6#
PDC DESC(choice-description-text)
[UNAVAIL(unavail_variable_name)]
[MNEM(number)]
[ACC(key1[+key2][+key3])]
[PDSEP(OFF|ON)]
where:
DESC(choice-description-text)
Actual text that is displayed for the pull-down choice it defines. Special
characters or blanks must be enclosed within quotes. The maximum length of
the text is limited to 64 characters. ISPF numbers each choice. Do not include
choice numbers in your text. The pull-down choices defined in each )ABC
section are internally numbered sequentially starting with the number one
(1,2,...,n) and the number is prefixed to the pull-down choice-description-text.
Note: Numbers do not appear with pull-down choices when you are running
in GUI mode.
UNAVAIL(unavail_variable_name)
Name of a variable that contains a value to indicate whether or not the
pull-down choice is available for selection when the panel is displayed. When
the variable contains a value other than 0 (false, therefore available) or 1 (true,
therefore unavailable), the variable is ignored and the choice is available. The
choice is available even if the specified variable cannot be found.
Note: The current setting is shown as an unavailable choice; that is, it displays
in blue (the default) with an asterisk as the first digit of the selection
number. If you are running in GUI mode, the choice is grayed. ISPF
issues an error message if you try to select it. You can change the color,
highlight, and intensity of an unavailable choice by using the CUA
Attribute Utility.
MNEM(number)
Specifies the position of the character that will be the mnemonic for the
pull-down choice text. The letter is designated by an underscore on the GUI
display. Number is the position of the character (not byte position). For
SBCS/DBCS mixed choice-description-text, number cannot be the position of a
double-byte character. Shift-in/shift-out bytes are not considered characters.
After you define your accelerators, remember to keep the following accelerator
search order in mind when you hit a key or combination of keys:
1. Operating system specific definitions. For example, Ctrl+Alt+Delete reboots
your OS/2 machine rather than invoke a pulldown choice that might have
this key combination specified as an accelerator.
2. Pulldown choice accelerator definitions.
3. Accelerator assigned with the panel. For example, a function key.
4. System menu-type definitions. For example, Alt+F4 is defined in the
Communications Manager System Menu as an accelerator for closing the
emulator session.
For example, if F2 is defined as an accelerator key on the ISPF Primary Option
Panel’s Menu pulldown for the EDIT pulldown option, and the F2 function
key is set to the ISPF SPLIT command, when you hit the F2 key, EDIT is
started instead of the screen being split.
You must associate the pull-down choice entry field with a variable name. To do
this, code a .ZVARS statement in the )ABCINIT section.This variable is used as the
pull-down entry field name of each pull-down.
The PDC statement is paired with an optional ACTION statement. When some
action is to be performed for a pull-down choice, an ACTION statement must
immediately follow the PDC statement defining the pull-down choice.
where:
RUN(command-name)
Required keyword. Specifies the name of a command to be executed. The
command name must be 2–8 characters. Coding the keyword ACTION
RUN(x), where x is a 1-character command name, results in an error condition.
ISPF searches for the command in the application, user, site, and system
command tables, if they are defined.
You can use the ISRROUTE command, which is an ISPF command in
ISPCMDS, to invoke the SELECT service. The ACTION RUN statement is as
follows:
ACTION RUN (ISRROUTE) PARM (SELECT 'your-select-command-parms')
You can define only one ACTION statement per PDC statement in the )ABC panel
section. You can specify the RUN() or PARM() keywords in any order on an
ACTION statement. Also, if the RUN() or PARM() keywords are duplicated within
an ACTION statement, ISPF will use the last occurrence of the keyword. Figure 54
on page 163 shows an example of an action bar section definition.
)ABCPROC
VER
. (&PDCHOICE,LIST,1,2,3)
.
.
)ABC DESC(HELP)
PDC DESC(help-choice1) MNEM(6)
ACTION RUN(command-name) PARM(command-parms)
PDC DESC(help-choice2)
ACTION RUN(command-name)
PDC DESC(help-choice3)
ACTION
. RUN(command-name) PARM(command-parms)
.
.
)ABCINIT
.ZVARS = PDCHOICE
&PDCHOICE
. = '
.
.
)ABCPROC
VER
. (&PDCHOICE,LIST,1,2,3)
.
.
)BODY
@ .FILE@ HELP#
.
.
)END
)ABCINIT
The rules that apply to the )ABCINIT section and its contents are the same as those
that apply to the ISPF )INIT panel definition statements. However, the processing
is limited to the action bar choice and its pull-down.
The )ABCINIT section runs when the user selects that action bar choice.
At least one statement must be specified in the )ABCINIT section. The )ABCINIT
section must contain a .ZVARS control variable assignment statement to associate a
field name with the pull-down entry field.
)ABCPROC
The rules that apply to the )ABCPROC section and its contents are the same as
those that apply to the ISPF )PROC panel definition statement. However, the
processing is limited to the action bar choice and its pull-down.
The )ABCPROC section runs when the user completes interaction with the
pull-down choice.
Note: If you are running in GUI mode, the )ABCPROC section runs after the
pull-down has been selected at the workstation.
The )ABCPROC section is not required. ISPF verifies all valid pull-down choices
for you.
When you manually position the cursor in the action bar area with the CANCEL,
END, or RETURN command on the command line, and you press ENTER, or if
you manually position the cursor in the action bar area and you press a function
key to execute the CANCEL, END, or RETURN commands, the cursor is
repositioned to the first input field in the body of the panel. If there is not an input
field, the cursor is repositioned under the action bar area. If the request is to
execute the EXIT command, the action taken is controlled by the application.
When you use the ACTIONS command to position the cursor in the action bar
area and you execute the CANCEL command, the cursor is returned to where it
was before the ACTIONS command was executed. A CANCEL command executed
from a pull-down removes the pull-down.
name
Specifies the name of the scrollable area that is to be matched with the name
specified in the )BODY section. This name cannot be specified as a dialog
variable.
DEPTH(depth)
Optional. Specifies the minimum number of lines in the scrollable area (not
including the scroll indicator line) when EXTEND(ON) has been specified.
DEPTH has no effect when EXTEND(OFF) is used. The top line is always
reserved for the scroll information and is not considered part of the depth
value. DEPTH can be used to insure that a required number of lines are
displayed. The depth value cannot be specified as a dialog variable. It must be
greater than or equal to the number of lines defined for the area in the )BODY
section and less than or equal to the number of lines in the )AREA definition.
A panel )AREA section defines the size and the contents of the information to be
scrolled. The contents of the )AREA section generally follow the same rules as the
)BODY section. See “Panel Definition Considerations” on page 166 for rules
concerning the definition of a scrollable area. Multiple scrollable areas can be
defined. The name specified immediately following an AREA(SCRL) character in
the )BODY section is used to match each scrollable area to its corresponding
)AREA section. If the default EXTEND(OFF) is used, you designate the desired
depth of the scrollable area by repeating the AREA(SCRL) attribute. If
EXTEND(ON) is specified, the minimum depth is the DEPTH specified in the
)AREA section.
The width of the scrollable area includes the special characters that designate the
vertical sides. These delimiter characters do not represent attribute characters.
The scrollable area is identified in the panel source with a new attribute defined in
the )ATTR section. This new attribute designates the borders of the scrollable area.
For example:
)ATTR
# AREA(SCRL) EXTEND(ON)
)BODY
#myarea---------#
# #
# #
# #
A single character, Z, can be used in the )AREA section, just as it can be used in the
)BODY section, as a place-holder for an input or output field. The actual name of
the field is defined in the INIT section with the control variable .ZVARS. The
actual field names are in a name list, with all the actual field names for the )BODY
and )MODEL sections. The actual field names must appear in the name list in the
order they appear in the panel definition, not in the order they will appear when
the panel is displayed. The names must appear in the )BODY section, then
)MODEL section, and then )AREA section order.
If you have defined several )AREA sections, the .ZVARS must be listed in order
from top-to-bottom left-to-right as they appear in the panel definition.
The top line of the scrollable area is reserved for the scroll indicators. Actual
information from the )AREA section is displayed beginning on the second line of
the scrollable area. The scroll indicators are displayed only if more data was
defined in the )AREA section than fits in the panel area.
Forward and backward function keys should be defined in the keylist for any
application panel that has scrollable areas.
The )AREA section can contain any of the items that can be included in the )BODY
section except for the following:
v Action Bar lines
v Graphics Area
v Model Section
v Command Line
v Alternate Message Locations
v Another scrollable area using AREA(SCRL)
v Dynamic Area using EXTEND(ON) or SCROLL(ON).
The )AREA section must fit within the general panel limit of 32K.
It is good practice to frame a scrollable area or to allow enough blank space so that
the definition of the scrollable area is clear. You should consult you own usability
standards to determine the best implementation.
Help Panels
When a help panel is defined with a scrollable area, the Left, Right, and Enter keys
that currently scroll through the tutorial panels also scroll the scrollable area. When
running under tutorial and trying to scroll past the end of the scrollable area, a
message will be displayed indicating that no more information is available in the
scrollable area. If RIGHT or ENTER is pressed again, ISPF will follow the normal
tutorial flow and display the next help panel if one has been defined. The same is
true when scrolling to the TOP of the scrollable AREA; a message indicating that
no more information is available will be displayed, and if LEFT is pressed, the
previous tutorial panel will be displayed if one has been defined.
Cursor positioning usually defines which scrollable area will be scrolled. However,
when in tutorial, if the cursor is not within a scrollable area, the first area defined
in the )BODY section will be scrolled. The LEFT and RIGHT commands should be
included in any keylist specified for a scrollable help panel.
Panel Processing
When a DISPLAY service is issued, the )INIT section is processed before the panel
is displayed on the glass. Each time you scroll and the panel is redisplayed, the
)PROC and )REINIT sections are not processed. The )PROC section is only
processed when the panel is submitted for processing as when the Enter or End
key is pressed.
When panel processing is complete and ISPF returns control to the dialog, it is
possible that required fields were not displayed. Therefore, unless a VER NB was
coded in the panel for a required field, it is possible that the application user never
scrolled the panel to see the field. It is your responsibility to insure that all
required information is obtained.
When fields are displayed on a panel, their characteristics can change without the
user interacting with the fields. For example, when CAPS(ON) is set for a field,
this only affects fields that actually are displayed. If a field is initialized with
lowercase letters and it appears on a portion of the panel that is never displayed,
the data remains in lowercase even if CAPS(ON) was set for the field.
)ATTR
# AREA(SCRL) EXTEND(ON)
$ AREA(SCRL)
)BODY
% New Patient Information
%Command ===>_ZCMD
%
+Name . . . . . . . . . ._pname %
+
#area1 ---------# $area2 --------------$
# # $ $
# # $ $
# # $ $
# # $ $
# # $ $
# # $ $
$ $
$ $
+
+Please fill in all information.
+
)AREA
. AREA1 DEPTH(5)
.
.
)AREA
. AREA2 DEPTH(5)
.
.
)ATTR
# AREA(SCRL) EXTEND(ON)
)BODY
%
%Command ===>_ZCMD
%
+Patient name . . . . ._pname %
+
#myarea -----------------------------------------------------------#
+
+Please fill in all information.
+
)PROC
.
.
.
)HELP
.
.
.
)END
Figure 57 on page 170 shows the initial panel display, which contains a scrollable
area. More: + indicates that you can now scroll forward in the scrollable area.
Command ===>
Figure 58 shows the panel display after one scroll request has been processed.
More: − + indicates that you can now scroll forward or backward in the
scrollable area.
Command ===>
Patient name . . . . . CECILIA COFRANCESCO
More: - +
Home phone . . . . . (407)395-9446
Work phone . . . . . (407)982-6449
Emergency Contact
Name . . . . . . . . PAULO COFRANCESCO
Home phone . . . . . (407)395-9446
Work phone . . . . . (407)982-6449
Insurance Coverage
Insurance Company . . BLUE CROSS BLUE SHIELD
Group number . . . . 22
ID number . . . . . . 45463
Cardholder’s name . . CECILIA COFRANCESCO
Relationship . . . . 1 1. Self
2. Spouse
Figure 59 on page 171 shows the panel display after you have completely scrolled
through the scrollable area. More: − indicates that you can now only scroll
backward in the scrollable area.
Command ===>
Emergency Contact
Name . . . . . . . . PAULO COFRANCESCO
Home phone . . . . . (407)395-9446
Work phone . . . . . (407)982-6449
Insurance Coverage
Insurance Company . . BLUE CROSS BLUE SHIELD
Group number . . . . 22
ID number . . . . . . 45463
Cardholder’s name . . CECILIA COFRANCESCO
Relationship . . . . 1 1. Self
2. Spouse
If specified, the attribute section precedes the panel body. It begins with the )ATTR
header statement.
)ATTR [DEFAULT(def1def2def3)]
[FORMAT(EBCDIC|DBCS|MIX)]
[OUTLINE([L][R][O][U]|BOX|NONE)]
where:
DEFAULT(def1def2def3)
You can use the DEFAULT keyword to specify the characters that define a
high-intensity text field, a low-intensity text field, and a high-intensity input
field, respectively. The value inside the parentheses must consist of exactly
three characters, not enclosed in single quotes and not separated by commas or
blanks.
The DEFAULT keyword can also be specified on the )BODY header statement.
FORMAT(EBCDIC|DBCS|MIX)
The default value for a TYPE(INPUT) and a TYPE(DATAIN) field is
FORMAT(EBCDIC). These two default values can be changed by using the
)ATTR statement or the )BODY statement. These values, in turn, can be
overridden if explicitly specified on a subsequent statement. For example, the
net result of the following two statements is FORMAT(DBCS):
The attribute section ends with the )BODY header statement. The number of lines
allowed in an )ATTR section depends upon the storage size available.
The default values for the JUST (justification) and CAPS (uppercase and lowercase)
keywords vary according to how the field is used. JUST and CAPS are attribute
statement keywords that are described in “Formatting Attribute Section
Statements” on page 173.
You can change the default characters by using a keyword on either the )ATTR or
)BODY header statement. For example:
DEFAULT(abc)
where a, b, and c are the three characters that take the place of %, +, and _,
respectively.
Typically, you use the DEFAULT keyword on the )ATTR header statement if the 3
default characters are to be changed, and additional attribute characters are also to
be defined. For example:
)ATTR DEFAULT($ø_)
¬ TYPE(INPUT) INTENS(NON)
# TYPE(OUTPUT) INTENS(LOW) JUST(RIGHT) PAD(0)
In this example, the default characters for text fields are changed to $ for high
intensity, and ø for low intensity. The default character for high-intensity input
fields is _, the same as the ISPF-supplied default. The example defines two
additional attribute characters: ¬ for nondisplay input fields and # for low-intensity
output fields. The output fields are to be right-justified and padded with zeros.
You could use DEFAULT on the )BODY header statement, with the entire attribute
section omitted, if the only change is to redefine the default characters. For
example:
)BODY DEFAULT($ø_)
You can specify a maximum of 127 attribute characters. This limit includes the 3
default characters, attribute overrides, and TBDISPL dual defaults. For action bar
panels or panels with scrollable areas, you can specify a maximum of 110 attribute
characters. This is because ISPF uses some attribute characters internally.
Variable substitution is done after processing of the )INIT section. The current
value of the dialog variable must be valid for the particular keyword. In the
previous example, the value of dialog variable A must be HIGH, LOW, or NON.
attrchar
[ AREA(DYNAMIC) [EXTEND(ON|OFF)][SCROLL(ON|OFF)]
[USERMOD(usermod-code)]
[DATAMOD(datamod-code)]
[AREA(GRAPHIC) [EXTEND(ON|OFF)]]
[AREA(SCRL) [EXTEND(ON|OFF)]]
[ATTN(ON|OFF)]
[CAPS(ON|OFF|IN|OUT]
[CKBOX(ON|OFF)]
[COLOR(value)]
[CSRGRP(x)]
[COMBO(ON|OFF|name)]
[CUADYN(value)]
[DDLIST(ON|OFF|name)]
[DEPTH(d)]
[FORMAT(EBCDIC|DBCS|MIX)]
[HILITE(value)]
[GE(ON|OFF)]
[INTENS(HIGH|LOW|NON)]
[JUST(LEFT|RIGHT|ASIS)]
[LISTBOX(ON|OFF|name)]
[NOJUMP(ON|OFF)]
[NUMERIC(ON|OFF)]
[OUTLINE([L][R][O] [U]|BOX|NONE)]
[PAD(char|NULLS|USER)]
[PADC(char|NULLS|USER)]
[PAS(ON|OFF)]
[RADIO(ON|OFF)]
[REP(char)]
[SKIP(ON|OFF)]
[TYPE(value)]
[UNAVAIL(ON|OFF)]
[WIDTH(w)]
You can specify more than one dynamic area on a panel. The number of
dynamic areas in a panel definition is limited only by physical space
limitations of the particular terminal being used for the display.
Examples:
)ATTR
# AREA(DYNAMIC) EXTEND(ON) USERMOD(!)
The character ’!’ replaces the attribute byte for each field in the dynamic area
that has been touched, not necessarily changed in value, by the user. All other
attribute bytes remain as they are.
)ATTR
# AREA(DYNAMIC) EXTEND(ON) DATAMOD(01)
The hexadecimal code ’01’ replaces the attribute byte for each field in the
dynamic area that has been touched by the user and has changed in value. All
other attribute bytes remain as they are.
)ATTR
# AREA(DYNAMIC) EXTEND(ON) USERMOD(0C) DATAMOD(03)
A graphic attribute character cannot have any other attribute properties. For
example, it cannot be mixed with attributes such as INTENS, CAPS, JUST, or
PAD.
The graphic attribute character is used to define the boundaries of the graphic
area in the panel body, as follows:
v The graphic area is defined on the panel as a rectangle. The graphic attribute
character is used to define the 4 corners plus the remaining characters of the
vertical sides of this rectangle. You delineate the top and bottom of the
rectangle with the characters you use to complete the area outline on the
screen. For example, in Figure 60 on page 177, the 4 corners and vertical
sides are defined by the asterisk character in the )ATTR section. The top and
bottom of the area have been completed with dashes.
)ATTR
* AREA(GRAPHIC)
)BODY
%------------------- TITLE -------------------
%COMMAND ===>_ZCMD %
%
+ (Text or other fields that are part of the
+ normal panel body ... )
+
+ +*PICT1 ----------------------------*
* *
* *
* *
* *
* *
* *
* ---------------------------------*
)END
)ATTR
* AREA(GRAPHIC)
)BODY
% MY COMPANY OPTION PANEL
% Your selection ==>_ZCMD +
+
+ 1 Our application 1 +*LOGO ----------------*
+ 2 Our application 2 +* *
+ 3 Our application 3 +* *
+ 4 Our application 4 +* *
+ 5 Our application 5 +* *
+ +* *
+ X Exit +* --------------------*
+ T Tutorial <--- Graphic Area --->
)END
)ATTR
| AREA(GRAPHIC)
)BODY
% Panel with Overlapping text field
%
% Here is the data as a graph and with editorial text:
+
+|PIC1 ------------|
| |
| |
| |
| |
_INPUT1 | |
| |
| ----------------|
Figure 62. Definition of Panel Graphic Area with Overlapping Text Field
AREA(SCRL) [EXTEND(ON|OFF)
The value in attrchar specifies the special character or two-position hexadecimal
value that is used to define the borders of the scrollable area in the )BODY
section.
EXTEND(ON|OFF)
Specifies whether or not the depth of an area can be automatically
increased.
ON Specifies that the depth (number of lines) of an area can be
automatically increased, if required, so that the depth of the entire
body of the panel matches the depth of the physical screen on
which it is being displayed. Accordingly, an extendable area can be
designated in the panel definition by a single line unless text or
other fields are to appear along the graphic area. Only one
extendable area can be specified in a panel definition.
The CKBOX keyword is ignored if the input field is greater than one character,
or if the next field following the check box field is not a protected field. An
error message is issued if the CKBOX keyword is used on any fields other than
input fields, or the selected choice (SC) output field.
Example:
)ATTR
@ TYPE(CEF) CKBOX(ON)
$ TYPE(SAC)
)BODY
% -------- CHECK BOX PANEL ---------- +
+ Select options:
&INSTR+
@Z$Check box #1 description+
@Z$Check box #2 description+
@Z$Check box #3 description+
@Z$Check box #4 description+
)INIT
.ZVARS = '(BOX1 BOX2 BOX3 BOX4)'
IF (&ZGUI = ' ')
&INSTR = 'Enter '/'' to select option.'
ELSE
&INSTR = 'Check box to select option.'
)END
COLOR(value)
For 3279-B terminals (or other ISPF-supported seven-color terminals), the
COLOR keyword defines the color of a field. The value can be: WHITE, RED,
BLUE, GREEN, PINK, YELLOW, or TURQ (turquoise). If a color has not been
specified and the panel is displayed on a terminal, a default color is generated
based on the protection (TYPE) and intensity attributes of the field. Table 7
shows which defaults are the same as the hardware-generated colors for
3279-A (or other ISPF-supported four-color terminals).
Table 7. Color Defaults
Field Type Intensity Default Color
Text/Output HIGH WHITE
Text/Output LOW BLUE
Input HIGH RED
Input LOW GREEN
If a color has been specified and the panel is displayed on a terminal other
than one with features such as those on the 3279-B, the following occurs:
v If an explicit intensity has also been specified for the field, the color
specification is ignored. For example:
)ATTR
@ TYPE(INPUT) INTENS(HIGH) COLOR(YELLOW)
Note: You can make global changes to one or more of the ISPF-supported
colors by using the COLOR command or by selecting the Global Color
Change choice from the Colors pull-down on the ISPF Settings panel.
You can control the colors when you are in GUI mode. Refer to the ISPF
User’s Guide for more information.
COMBO(ON|OFF|name)
Enables you to define choices for a combination box in GUI mode. This
keyword is used in conjunction with the )LIST section. See “Defining the LIST
Section” on page 216 for more information about the )LIST section. The
COMBO attribute keyword is valid on input type fields only. The combination
box combines the functions of an entry field and a drop-down list (see page
182). It has an entry field and contains a list of choices that you can scroll
through to select from to complete the entry field. The list of choices is hidden
until you take an action to make the list visible. As an alternative, you can type
text directly into the entry field. The typed text does not need to match one of
the choices in the list. The width of the input field determines the width of the
combination box. If a COMBOBOX field is immediately followed by 3 or more
consecutive attributes, then the COMBOBOX will be displayed for the entire
length of the field, since the 3 attributes allow space for the COMBOBOX
button without overlaying data in the next field. If a COMBOBOX field is not
followed by 3 or more consecutive attributes, then the COMBOBOX will be
displayed for the length of the field, to avoid overlaying data in the next field,
but the COMBOBOX field will scroll to the right so that the user will be able
to type in more than enough data to fill the field.
On the host, the application must be made to implement this function. One
method to do this is to code the input field with a field-level help panel
containing a scrollable list of choices.
The COMBO keyword can have one of the following values:
ON Specifies an input field is to display as a combination box when
running in GUI mode.
OFF Specifies an input field is NOT to display as a combination box when
running in GUI mode. This is the default setting.
name Specifies a name that is matched with the )LIST section name
parameter (see “Defining the LIST Section” on page 216). This name is
valid only on a CEF or other input type field. The name is composed
of 1 to 8 characters. Alphanumeric characters A-Z, a-z, 0-9, #, $, or @
can be used in the name, but the first character cannot be numeric.
Lowercase characters are converted into uppercase equivalents.
Note: The COMBO keyword is supported for any input field type. To keep the
following discussion simple, CEF is used to mean any input field type,
and SAC is used to mean any text or output field type.
The TYPE value must be an input type field. The DEPTH(d) sets the number
of rows for the combination box. Values can be from 0 to 99. For example, if
you specify DEPTH(8), the combination box contains eight rows of data. If the
depth specified is 0, or if the depth is not specified, the default depth is 4.
CSRGRP(x)
Enables you to determine which pushbuttons and checkbox fields are grouped
together for cursor movement purposes. When pushbuttons or checkboxes are
grouped into cursor groups, the cursor up and down keys move the focus
through each of the fields within the group. The TAB key moves the focus out
of the group, to the next field that is not within this particular group.
To specify the CSRGRP(x) keyword for cursor groups use the following syntax:
attribute-char TYPE(PS) CSRGRP(x)
attribute-char TYPE(OUTPUT) PAS(ON) CSRGRP(x)
attribute-char TYPE(CEF) CKBOX(ON) CSRGRP(x)
All pushbuttons and checkbox fields that do not have a CSRGRP defined do
not have a cursor group set in GUI mode, which has the same effect as having
them all in the same cursor group.
CUADYN(value)
Enables you to define dynamic area DATAIN and DATAOUT attributes with
CUA attribute characteristics. For more information, see “Specifying Dynamic
Areas” on page 200.
DDLIST(ON|OFF|name)
Enables you to define choices for a single choice selection list and display the
list in a drop-down box in GUI mode. A drop-down list is a variation of a list
box (see 188). A drop-down list initially displays only one item until you take
action to display the rest of the items in the list.
The DDLIST keyword can have one of the following values:
ON Specifies a single selection list to display as a drop-down list when
running in GUI mode.
Note: To keep the following discussion simple, CEF is used to mean any input
field type, and SAC is used to mean any protected text or output type.
The following describes how to define a drop-down list using just the attribute
keywords DDLIST and CSRGRP. Define the drop-down list by coding the
DDLIST(ON) keyword on the CEF field and on the SAC field that identifies
the choices that go with the CEF field. The SAC choice fields that have the
same keyword settings (DDLIST and CSRGRP) as the CEF field are used to
build the list of choices in the list. They are not built into the panel body when
the panel is displayed. The fields following the SAC fields should be text or
output fields, they are used as the list choice text. If a field following an SAC
field is not a text or output field, no entry is built in the list for that field. The
data in the drop-down list is displayed in the order that ISPF processes the
defined panel body, that is, left to right, and top to bottom.
ISPF initially compares the CEF field with each SAC field for the drop-down
list. If a CEF and SAC match is found the drop-down list field is set to the
matching SAC choice text field. If no match is found, or if the CEF field is
blank, the drop-down list field is set to blank.
To specify the attributes of a drop-down list use the following syntax in the
)ATTR section:
attr-char TYPE(CEF) DDLIST(ON) CSRGRP(x) WIDTH(w) DEPTH(d)
attr-char TYPE(SAC) DDLIST(ON) CSRGRP(x)
Note: Ensure that, from the starting position of the drop-down list, the
width that you specify does not extend past the right border of
the panel.
DEPTH(d)
The value of d sets the number of rows for the list to display. Values
can be from 0 to 99. This parameter is only used when it is specified
on a CEF field. If you specify a depth, ISPF makes the drop-down list
that is displayed the specified depth.
If you specify DEPTH(8), the DDLIST can contain 8 lines of data. If the
depth specified is 0, or if the depth is not specified, the default depth
is 4.
+Terminal Characteristics:
+Screen format
@Z $1.#Data+ $3.#Max+
$2.#STD+ $4.#Part+
)END
-------------------------------------------------------------------
Another way to define a DDLIST is to build the choices into the )LIST section
of the panel. See “Defining the LIST Section” on page 216 for more information
about the LIST section.
Where the DDLIST(name) on the CEF field in the )ATTR section matches the
name on the )LIST statement. The )LIST section contains the list of choices and
the values for the drop-down list. The data in the drop-down list is displayed
in the order in which you define the choices in the )LIST section.
ISPF initially compares the CEF field with each VAL(value) in the named )LIST
section. If a CEF and VAL match is found the drop-down list field is set to the
matching VAL’s choice text. If no match is found, or if the CEF field is blank,
the drop-down list field is set to blank.
RECOMMENDATION
Defining drop-down lists is not a trivial task. You might find it less
complex if you use the Dialog Tag Language to define panels that contain
drop-down lists. Refer to Dialog Tag Language (DTL) Guide and Reference
for information about the DTL.
When you define drop-down lists, keep the following points in mind:
v The CEF field (or other input field) receives the selection number and the
SAC field (or other output or text field) that contains the selection number.
The SAC field must be followed by another output or text field with the
choice description to be placed in the list.
v The CEF field should not be more than 3 characters long. Only 3 characters
are checked and set for CEF fields processed as drop-down lists.
v If the text following the SAC attribute is longer than 3 characters or the CEF
field, then the text is truncated to the size of the CEF field, or 3 characters
(whichever is smaller when that list choice is selected). Periods at the end of
the string are ignored, they are not set into the list entry field with the other
text when the choice is selected and the panel is processed.
v If a CEF field has the same CSRGRP value as a previous CEF field, and both
of them have the same DDLIST(ON) keyword, then the second CEF field is
displayed as an input field and all of the choices with the same keywords
are grouped under the first CEF field.
v If a CEF field has a DDLIST(ON) and a CSRGRP value that does not match
an SAC field with DDLIST(ON) and a CSRGRP value that comes after it,
then the CEF field is displayed as an input field.
v If an SAC field has a DDLIST(ON) and a CSRGRP value that does not match
a previous CEF field with DDLIST(ON) and a CSRGRP value, then the SAC
field and the description following it do not display.
v If an SAC field is not followed by an output or text field to be used as the
list choice text, then the SAC field is not displayed, and there is no entry in
the list for that choice.
DEPTH(d)
The value of d sets the number of rows for a list box, drop-down list, or
combination box to display. Values can be from 0 to 99. This parameter is only
used when it is specified on an input field. See the appropriate sections on list
boxes, drop-down lists, and combination boxes for more information.
FORMAT(EBCDIC|DBCS|MIX)
For DBCS terminals, the FORMAT keyword specifies the character format for a
field.
EBCDIC
EBCDIC characters only
The pad character for a DBCS field is converted to the corresponding 16-bit
character and is then used for padding. Other format fields are padded
normally.
The CAPS attribute is meaningful only for EBCDIC and MIX fields. In
addition, within a MIX field, the CAPS attribute applies only to the EBCDIC
subfields.
GE(ON|OFF)
The GE keyword indicates that a specific character attribute should be
preceeded in the order stream by the graphic escape order, provided the
terminal supports GE order. The GE order indicates that the character comes
from the APL/TEXT character set. This keyword is supported on TYPE(CHAR)
within a Dynamic Area, action bar separator lines (TYPE(ABSL)), work area
separator lines (TYPE(WASL)), and column headings (TYPE(CH)).
The GE keyword can have one of the following values:
ON Specifies that ISPF will place a graphic escape order before the
attribute character when building the order stream.
OFF The default. Specifies that ISPF will not place a graphic escape order
before the attribute character.
Note: If the terminal does not support graphic escape or if you are running
under GDDM (i.e., GRINIT service has been issued) then these panel
elements will be displayed as coded in the panel definition.
* Results in white.
INTENS(HIGH|LOW|NON)
Specifies the intensity of the field (HIGH is the default):
HIGH High-intensity field
LOW Low-intensity (normal) field
NON Nondisplay field
You can specify these operands for the basic attribute types
(TEXT|INPUT|OUTPUT). NEF is the only CUA panel-element type that
supports the INTENS(NON) operand. The remaining CUA panel-element types
do not allow the COLOR, INTENS, and HILITE keyword default values to be
changed. The NON operand allows you to optionally display comments or
directive lines.
For a panel displayed on a color terminal, you can also use the INTENS
keyword to generate a default color for the field, as described for the COLOR
keyword. INTENS(HIGH) and INTENS(LOW) are ignored for a 3290 terminal
and in GUI mode.
JUST(LEFT|RIGHT|ASIS)
Specifies how the contents of the field are to be justified when displayed. JUST
is valid only for input and output fields.
LEFT Left justification
RIGHT
Right justification
ASIS No justification
For LEFT or RIGHT, the justification applies only to how the field appears on
the screen. Leading blanks are automatically deleted when the field is
processed. For ASIS, leading blanks are not deleted when the field is
processed, nor when it is initialized. Trailing blanks are automatically deleted
when a field is processed, regardless of its justification.
Note: To keep the following discussion simple, CEF is used to mean any input
field type, and SAC is used to mean any protected text or output type.
Define the list box by coding the LISTBOX(ON) keyword on the CEF field and
on the SAC field that identifies the choices that go with the CEF field. The
SAC choice fields that have the same keyword settings (LISTBOX and
CSRGRP) as the CEF field are used to build the list of choices in the list. They
are not built into the panel body when the panel is displayed. The fields
following the SAC fields should be text or output fields, they are used as the
list choice text. If a field following an SAC field is not a text or output field, no
entry is built in the list for that field.
Note: Ensure that from the starting position of the List Box, the width
specified does not extend past the right border of the panel.
Also ensure that from the starting position of the List Box, the
depth specified does not extend past the bottom edge of the
panel.
+Terminal Characteristics:
+Terminal Type
@Z $1.#3277+ $5.#3290A+
$2.#3277A+ $6.#3278T+
$3.#3278+ $7.#3278CF+
$4.#3278A+ $8.#3277KN+
)END
-------------------------------------------------------------------
Where the LISTBOX(name) on the CEF field in the )ATTR section matches the
name on the )LIST statement. The )LIST section contains the list of choices and
the values for the drop-down list. The data in the drop-down list is displayed
in the order in which you define the choices in the )LIST section.
If the choices are also built into the panel body, the SAC attribute must have
LISTBOX(ON) so that ISPF does not display the choices in the panel body, but
uses the choices specified in the )LIST section.
RECOMMENDATION
Defining list box lists is not a trivial task. You might find it less complex
if you use the Dialog Tag Language to define panels that contain list box
lists. Refer to Dialog Tag Language (DTL) Guide and Reference for
information about the DTL.
On a data-entry keyboard with the Numeric Lock feature, when the user
moves the cursor into a field defined by the NUMERIC(ON) attribute
keyword, the display shifts to numeric mode. If the user presses any key other
than those allowed by the Numeric Lock feature, the DO NOT ENTER
message displays in the operator information area and the terminal is disabled.
The user can continue by pressing the reset key.
Note: On non-English keyboards with the Numeric Lock feature, the comma
sometimes replaces the period as a valid numeric character.
The default value for OUTLINE is NONE. The default value for TYPE(INPUT)
and TYPE(DATAIN) fields can be specified on the )ATTR or )BODY statement,
and can be overridden by the OUTLINE keyword. For example:
)ATTR OUTLINE(U)
@ TYPE(INPUT) OUTLINE(BOX)
When you are running in GUI mode, the OUTLINE keyword is ignored.
PAD(char|NULLS|USER)
Specifies the pad character for initializing the field. This is not valid for text
fields. If PAD is omitted, the default is PAD(’ ’) for output fields.
char Any character, including blank (’ ’), can be specified as the padding
character. If the character is any of the following, it must be enclosed
in single quotes:
blank < ( + ) ; ¬ , > : =
If the desired pad character is a single quote, use four single quotes:
PAD(’’).
NULLS
Nulls are used for padding.
USER Padding character is specified by a user through the ISPF Settings
panel.
In no case does ISPF delete embedded pad characters. It deletes only leading
or trailing pad characters.
PADC(char|NULLS|USER)
Specifies conditional padding with the specified pad character. The pad
character is used as a field filler only if the value of the input or output field is
initially blank. The pad character is not displayed in the remaining unfilled
character positions if the field has an initial value. Instead, the unfilled
positions contain nulls. Otherwise, ISPF treats the PADC keyword like the PAD
keyword, including justification and deletion of pad characters before storing
variables in the pool.
char Any character, including blank (‘ ’), can be specified as the padding
character. If the character is any of the following, it must be enclosed
in single quotes:
blank < ( + ) ; ¬ , > : =
If the desired pad character is a single quote, use four single quotes:
PAD(‘’‘’).
NULLS
Nulls are used for padding.
USER Specifies that a user-defined character be used for padding. You define
the character by using the ISPF Settings panel. PAD and PADC are
incompatible. It is not valid to specify both PAD and PADC for the
same attribute character.
Note: You can use option 0 (Settings) to set the tab key to move the cursor
point-and-shoot fields. This changes output fields to input fields, but
Example:
)PANEL
)ATTR
$ TYPE(PIN)
} TYPE(PS)
+ TYPE(NT)
| AREA(SCRL) EXTEND(ON)
! TYPE(OUTPUT) PAS(ON) COLOR(RED)
* TYPE(OUTPUT) PAS(ON) COLOR(BLUE)
@ TYPE(TEXT) INTENS(LOW) COLOR(RED) PAD(NULLS)
ø TYPE(TEXT) INTENS(LOW) COLOR(BLUE) PAD(NULLS)
)BODY WINDOW(60,23)
$
%COMMAND ===>_ZCMD
$
$ Press }DEFAULTS$to reinstate defaults
$
+
|S1 |
)AREA S1
+ +
+ +
+ øBLUE . . . .*BLUE1 +
+ @RED . . . . .!RED1 +
)INIT
.cursor = blue1
&blue1 = ' '
)PROC
REFRESH(*)
)PNTS
FIELD(BLUE1) VAR(RED1) VAL(RED)
FIELD(ZPS00001) VAR(BLUE1) VAL(DEFAULT)
)END
RADIO(ON|OFF) CSRGRP(x)
Displays mutually exclusive textual settings choices. These fields must contain
at least two choices, one of which is usually selected. A single-choice selection
list is the equivalent function on the host. In GUI mode, they appear as radio
button groups.
To have a single-choice selection list display as a radio button group, use the
RADIO(ON) keyword with the CSRGRP(x) keyword on the CEF type (or other
input type) field that is used to enter the selection on the host.
Note: The RADIO keyword is supported for any input, output, or text field
type. To keep the following discussion simple, CEF is used to mean any
input field type, and SAC is used to mean any protected text or output
type.
For a list of possible selections, attribute type SAC (select available choice) or
another text or output field type must be used before the choice selection
number. The attribute used for the choice selection number also must have the
RADIO(ON) keyword with the CSRGRP(x) keyword. The x on the CSRGRP
keyword is a number used to identify each radio button group. The CSRGRP
ISPF initially sets the radio button in the group that corresponds to the value
in the CEF field. If the CEF field is blank or the value in the field does not
correspond with any of the radio button selections, then no radio button is set
by default. ISPF then uses the characters following the SAC attribute to set the
value into the CEF field with the same CSRGRP(x) number.
The CEF field must be no more than 3 characters, because only 3 characters are
checked and set for the CEF fields processed as radio buttons. If the text
following the SAC attribute is longer than 3 characters, or longer than the
value in the CEF field, then the text is truncated to the size of the CEF field or
3 characters, whichever is smaller when the radio button corresponding to that
choice is selected. Periods at the end of the string are ignored.
For example:
)ATTR
@ TYPE(CEF) RADIO(ON) CSRGRP(1)
$ TYPE(SAC) RADIO(ON) CSRGRP(1)
! TYPE(CEF) RADIO(ON) CSRGRP(2)
| TYPE(SAC) RADIO(ON) CSRGRP(2)
#TYPE(SAC)
)BODY
% -------- Radio Button PANEL ---------- +
+Terminal Characteristics:
+Screen format @Z $1.#Data+ $2.#Std+ $3.#Max+ $4.#Part+
CAUTION:
v Radio button groups can appear in a scrollable area, but choices that do
not appear in the visible portion of the area are not displayed.
v If a radio button group does appear in a scrollable area, and the panel
cannot be scrolled to show all of the choices and the CEF field, then it
might not be possible to select some of the choices in the radio button
group.
v If the CEF field is scrolled out of the visible area of a scrollable area, the
SAC field and the choice text field that follow it are displayed in the
panel body as text or output fields.
Recommendation
Because of the scrolling restrictions mentioned above, instead of using
radio buttons, try using a LISTBOX or DDLIST with the )LIST section for
your application.
REP(character)
For DBCS terminals, the REP keyword allows users to view, on panel
definitions, the displayable replacements for nondisplayable attribute
characters. This provides for the use of a wider range of BODY record attribute
characters that can be viewed on panel definitions. These replacement
characters are not visible on the actual panel displays.
You can specify any replacement character, but those that must be enclosed in
single quotes are as follows: < > ( ) + ; : , = blank.
Replacement characters are defined in the attribute section. Then, in the body
section of the panel definition, a record containing only the defined attribute
replacement characters is inserted immediately below any field defined by a
corresponding statement in the attribute section. Each replacement character
must be in the same column position as the attribute character position in the
field above.
)BODY
+ DBCS input field %===>x VARDBCS +
*
[DBDBDBDBDBDBDBDBDB]===>x VAREBC +
# $ !
Any characters used to replace shift-out or shift-in characters must be less than
hexadecimal 40 and must not be hexadecimal 00, 0E, or 0F.
The EXPAND keyword cannot be used for records containing only those
characters defined by the REP keyword.
SKIP(ON|OFF)
The SKIP keyword defines the autoskip attribute of the field. It is valid only
for text or output (protected) fields (OFF is the default).
ON Specifies that the cursor automatically skips the field. When a character
is entered into the last character location of the preceding unprotected
data field, ISPF positions the cursor at the first character location of the
next unprotected field.
OFF Specifies that the cursor does not automatically skip the field when the
condition described for SKIP(ON) occurs.
When you are running in GUI mode, the SKIP keyword is ignored.
TYPE(value)
Specifies the TYPE category of the panel element. The default is TYPE(INPUT).
The following TYPE values must be coded explicitly; it is not valid to assign
For input (unprotected) or output (protected) fields in the body of the panel, 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. For input fields, any user-entered information is stored in
the variable after the panel has been displayed.
An output field is different from a text field in that an output field has a variable
name associated with the field. It also permits padding, capitalization, justification,
and refreshing of the data. There is no default attribute character for output fields.
ISPF initializes input fields prior to displaying them. They can be entered (or typed
over) by the user. ISPF also initializes output fields prior to displaying them, but
output fields cannot be changed by the user. Both input and output fields can have
associated caps, justification, and pad attributes. There is no default attribute
character for output fields.
The default values for the data-manipulation attribute keywords, by TYPE, are
summarized in Table 8.
Table 8. Default Values for Data-Manipulation Keywords
TYPE CAPS JUST PADDING
TEXT N/A N/A N/A
INPUT ON LEFT PADC(USER)
OUTPUT ON LEFT PAD(’ ’)
The ISPF basic attribute type rules for field types (defined in Table 8) determine
which attribute keywords can be used in conjunction with the basic attribute TYPE
keywords.
)ATTR
* TYPE(TEXT) INTENS(HIGH) COLOR(WHITE) CAPS(OFF)
# TYPE(TEXT) INTENS(HIGH) COLOR(BLUE) CAPS(OFF)
@ TYPE(TEXT) INTENS(LOW) COLOR(BLUE) HILITE(REVERSE)
? TYPE(TEXT) INTENS(LOW) COLOR(TURQ) CAPS(OFF)
_ TYPE(INPUT) INTENS(HIGH) COLOR(YELLOW)
$ TYPE(INPUT) INTENS(NON)
ø TYPE(OUTPUT) INTENS(LOW) COLOR(TURQ) CAPS(OFF)
)BODY
* --------------------------@EMPLOYEE RECORD*--------------------------
# SERIAL NO.*===>_SERNUM +&rbl %
#
#
# NAME:?&LAST, &FIRST
#
# ADDRESS:øADDR1 +
# øADDR2 +
# øADDR3 +
# øADDR4 +
#
# POSITION:øPOSIT +
#
# YEARS EXPERIENCE:øYRS+
#
# SALARY:øSALARY + # PASSWORD*===>$PSW +
# (Password is required for salary)
#
#
* Enter#END*command to terminate application.
#
)PROC
VER(&SERNUM,NB,NUM)
.ATTR(.CURSOR) = ‘COLOR(RED) HILITE(BLINK)’
)END
The default values for the DATAIN and DATAOUT attribute keywords, by TYPE,
are summarized in Table 9.
Table 9. Default Values for DATAIN and DATAOUT Keywords
TYPE CAPS JUST PADDING
DATAIN OFF ASIS PAD(’ ’)
DATAOUT OFF ASIS PADC(’ ’)
CUA Attribute Characteristics in Dynamic Areas: You can define dynamic area
DATAIN and DATAOUT attributes with CUA attribute characteristics. You do this
with the attribute keyword CUADYN(value) on the TYPE(DATAIN) or
TYPE(DATAOUT) attribute statements. DATAIN and DATAOUT fields that you
define with the CUADYN(value) keyword are not true CUA attribute fields, but
are DATAIN and DATAOUT fields that have taken on CUA attribute
characteristics.
You can define those panel-element attributes that have a TYPE keyword value in
the panel attribute section. The panel-element attributes without a TYPE keyword
value are used internally by ISPF in response to user interactions.
The ISPF CUA attribute type rules for field types (defined in Table 10) determine
which attribute keywords can be used in conjunction with the CUA panel-element
TYPE keywords.
Table 10 lists the CUA values for the TYPE keyword. With each TYPE keyword are
listed additional attribute keywords and their default values.
Table 10. CUA TYPE Default Keyword Values
TYPE
Keywd COLOR INTENS HILITE NUM-
Value * * * CAPS JUST PAD PADC SKIP ERIC FORMAT
AB WHITE HIGH NONE N/A N/A N/A N/A N/A N/A MIX
CEF TURQ LOW USCORE OFF LEFT B N/A OFF EBCDIC
EE YELLOW HIGH REVRSE OFF LEFT 6D N/A OFF EBCDIC
LEF TURQ LOW USCORE OFF ASIS B N/A OFF EBCDIC
NEF TURQ LOW USCORE OFF LEFT B N/A OFF EBCDIC
1
RP WHITE HIGH NONE N/A N/A N/A N/A N/A N/A MIX
ABSL BLUE LOW NONE N/A N/A N/A N/A OFF N/A MIX
CH BLUE HIGH NONE N/A N/A N/A N/A OFF N/A MIX
CT YELLOW HIGH NONE N/A N/A N/A N/A OFF N/A MIX
DT GREEN LOW NONE N/A N/A N/A N/A OFF N/A MIX
ET TURQ HIGH NONE N/A N/A N/A N/A OFF N/A MIX
FP GREEN LOW NONE N/A N/A N/A N/A OFF N/A MIX
NT GREEN LOW NONE N/A N/A N/A N/A OFF N/A MIX
PIN GREEN LOW NONE N/A N/A N/A N/A OFF N/A MIX
PS TURQ HIGH NONE N/A LEFT B OFF N/A MIX
PT BLUE LOW NONE N/A N/A N/A N/A OFF N/A MIX
SAC WHITE LOW NONE N/A N/A N/A N/A OFF N/A MIX
SI WHITE HIGH NONE N/A N/A N/A N/A OFF N/A MIX
SUC BLUE LOW NONE N/A N/A N/A N/A OFF N/A MIX
WASL BLUE LOW NONE N/A N/A N/A N/A OFF N/A MIX
WT RED HIGH NONE N/A N/A N/A N/A OFF N/A MIX
LI WHITE LOW NONE OFF ASIS B OFF N/A MIX
LID GREEN LOW NONE OFF ASIS B OFF N/A MIX
VOI TURQ LOW NONE OFF LEFT B OFF N/A MIX
Table 11 lists the CUA panel-element attributes that are used internally by ISPF in
response to user interactions. These panel-element attributes do not have a TYPE
keyword, so you cannot code them in the panel attribute section. They are
considered as field-type text (that is, protected). The related attribute keywords and
their default values are shown for each.
Table 11. Internal Attributes without TYPE Keyword Values
Panel Element Attribute COLOR INTENS HILITE
AB Selected Choices YELLOW LOW NONE
PD Choices BLUE LOW NONE
Function Keys BLUE LOW NONE
Informational Message Text WHITE HIGH NONE
Warning Message Text YELLOW HIGH NONE
Action Message Text RED HIGH NONE
Panel ID BLUE LOW NONE
You can change the default values of COLOR, INTENS, and HIGHLIGHT by using
the CUAATTR command or by selecting the CUA attributes... choice from the
Colors pull-down on the ISPF Settings panel.
Group Box: A group box is a rectangle that is drawn around a group of related
fields. The upper-left corner of the box contains a label for the group. Group boxes
display in GUI mode only.
1. You may specify the INTENS(NON) keyword with the CUA type NEF.
Where:
v attribute-char is the special character or 2-position hexadecimal value used to
define the group box area within the panel body section. The area is defined by
using the special character to position the upper-left corner of the group box in
the panel body section.
v wvalue is the width of the group box, not including the borders. This value can
be 0 to 99. For example, a specification of WIDTH(9) means the box can contain
data 9 characters wide.
v dvalue is the depth of the group box, including the group box title line. This
value can be 0 to 99. A minimum of 2 lines must be defined for the box. The top
line is reserved for the label. For example, a specification of DEPTH(5) means
the box consists of a group box title and 4 lines of data.
In the panel body section, the name immediately following the special character
for the upper-left corner of the group box identifies the dialog variable that
contains the text for the group box label. In Figure 64 on page 205, that name is
gbar. The name cannot be specified by using a Z-variable placeholder within the
panel body.
Note: Even though the type GRPBOX is considered an output field, it maps to the
CUA panel-element type Column Heading (CH). Therefore, its color,
intensity, and highlight values can only be changed through the CUA
Attribute Change Utility.
)ATTR
+ TYPE(TEXT) INTENS(low) SKIP(on)
% TYPE(TEXT) INTENS(HIGH) SKIP(on)
_ TYPE(INPUT) INTENS(HIGH) CAPS(ON)
# TYPE(GRPBOX) WIDTH(44) DEPTH(7)
)BODY
* --------------------------Group Box Example--------------------------
%COMMAND ===>_ZCMD
+ +
+ #gbar +
+ +
+ +Available Desired+ +
+ +Cruise Control Sunroof+ +
+ +AM/FM Stereo AM/FM Stereo +
+ +Power Brakes+ +
+ +Sunroof+ +
+ +
+ +
)INIT
&zcmd = &z
&gbar = 'Options'
)REINIT
&zcmd = &z
)PROC
)END
Selected Choice: The Select Choice (SC) type is an output (protected) field to be
used in conjunction with the UNAVAIL attribute keyword.
When TYPE(SC) is coded with the UNAVAIL(OFF) attribute, the field has the color,
intensity, and highlighting characteristics of TYPE(SAC).
When TYPE(SC) is coded with the UNAVAIL(ON) attribute, the field has the color,
intensity, and highlighting characteristics of TYPE(SUC).
The result is that the field is changed to CUA TYPE(NEF), but when the
COLOR(PINK) keyword is processed a dialog error message is given stating that
the color of the CUA attribute cannot be overridden.
If you change a CUA attribute type to a basic attribute type, only the type
changes. The other characteristics associated with the type do not change. For
example, the color associated with the CUA type does not change unless you
specifically override the color using the COLOR keyword. If you change the
CUA type ET to basic type TEXT, the color remains turquoise unless you
purposely override it.
v CAPS, JUST, PAD, PADC, SKIP, ATTN, NUMERIC, FORMAT, REP, OUTLINE
If the keyword is applicable on the )ATTR statement, it can be overridden using
the attribute override statements. Those panel attribute keywords whose value is
denoted as N/A (not applicable) are not valid in attribute override statements.
v CUADYN(value) keyword
The CUADYN(value) attribute keyword can be used in .ATTRCHAR statements
for DATAIN or DATAOUT attribute characters. The keyword values listed in
“CUA Attribute Characteristics in Dynamic Areas” on page 201 for DATAOUT
attributes can only override DATAOUT attribute characters. Those listed for
DATAIN attributes can only override DATAIN attribute characters.
v Input fields with LISTBOX(ON|name) or DDLIST(ON|name)
You can override input fields with LISTBOX(ON|name) or DDLIST(ON|name)
that are coded in the )ATTR section. You do this by using the .ATTR or
.ATTRCHAR statements to set LISTBOX, DDLIST, CSRGRP, WIDTH, and
DEPTH values for the input field.
v Input fields with COMBO(ON|name)
The section begins with the )BODY header statement, which can be omitted if there
are no preceding sections and no change to the default attribute characters. The
)BODY header statement and all associated keywords must be specified on the
same line. The panel body ends with any of the following statements:
v )MODEL
v )AREA
v )INIT
v )REINIT
v )PROC
v )HELP
v )PNTS
v )LIST
v )END.
)BODY
[KANA]
[WINDOW(width,depth)]
[CMD(field name)]
[SMSG(field name)]
[LMSG(field name)]
[ASIS]
[WIDTH(width)]
[EXPAND(xy)]
[DEFAULT(def1def2def3)]
[FORMAT(EBCDIC|DBCS|MIX)]
[OUTLINE([L][R][O] [U]|BOX|NONE)]
Notes:
1. There are system-defined (default) areas for the display of messages and the
command field. You can specify alternate locations using the WINDOW, CMD,
SMSG, LMSG, and ASIS keywords on the )BODY header statement.
2. The WIDTH and EXPAND keywords on the )BODY header statement control
the width of a panel. Both keywords are optional. You can specify either or
both. However, if the panel definition width is greater than 80 characters, the
WIDTH keyword must be used. If the WIDTH keyword is used, the WIDTH
variable must be set in the variable pool before the panel is displayed.
3. DEFAULT, FORMAT, and OUTLINE can also be specified on the )ATTR section
statement. The values specified on the )BODY section statement take
precedence.
where:
KANA
Include the KANA keyword when Katakana characters will appear within the
panel and you have not specified an extended code page using the )CCSID
section.
Note:
When you are running in GUI mode, the width you specify is respected
regardless of whether or not the panel is displayed in a popup window.
The depth is honored when the panel is displayed in a popup. If you
specify a depth greater than the depth of the panel definition, extra lines
are generated to fill the space. Any extendable areas (such as,
AREA(DYNAMIC), or AREA(SCRL) with EXTEND(ON)) might be
truncated at the popup depth.
For panels not displayed in a popup window, the depth is the minimum
of the specified depth and the actual number of )BODY records in the
panel definition. Extendable areas are not truncated. That is, the depth
expands to the length of the logical screen.
The width that you specify must be a numeric value greater than or equal to
the minimum width of 8 characters. The depth that you specify must be a
numeric value greater than 0.
For panels that are not being displayed in a pop-up window (no active
ADDPOP), ISPF validates the width and depth values against the screen size
and issues an error message if either of the following is true:
v The width is greater than the current device width.
v The depth is greater than the current device depth.
For help panels and panels that are being displayed in a pop-up window (after
ADDPOP service), ISPF validates the width and depth values against the
screen size minus the frame and issues an error message if:
v The depth is greater than the screen depth minus 2.
v The depth is less than the screen depth minus 2 and the width is greater
than the screen width minus 3.
v The depth is equal to the screen depth minus 2 and the width is greater than
the screen width minus 4.
When running in GUI mode, the frame will be what you specified on
ISPSTART unless its ADDPOP was specified in a dialog. In this case, the frame
is a dialog frame.
The Dialog Manager recognizes the WINDOW keyword for panels displayed
in a pop-up window (after an ADDPOP service request has been issued), and
when running in GUI mode. If the panel is not being displayed in a pop-up
window and you are not in GUI mode, ISPF validates the keyword, but
ignores it. If the text on the panel you are defining exceeds the width of the
window, the panel fields do not wrap. All fields end at the window width.
Note: Text coded in column 1 of the panel body does not appear when a panel
is displayed in a pop-up window. This occurs because ISPF places a
field attribute in the column following the pop-up border character, due
Attributes coded in column 1 of the panel body overlay the field attributes that
ISPF generates following the left side of the window frame. Therefore, an
attribute coded in column 1 of the panel will be in effect for subsequent text.
CMD(field-name)
Identifies the panel field (variable name) to be treated as the command field.
The field type must be a CUA input type. If the CMD keyword is omitted from
a )BODY statement, ISPF uses the first input field as a default command field.
You can specify that you do not want a command field by using CMD(). Do
not use this option for a table display. You must have a command field for a
table display.
SMSG(field-name)
Identifies the panel field (variable name) where the short message, if any, is to
be placed. The field type must be a CUA output type. If the message is longer
than the length of this field, the message is placed in a pop-up window. The
SMSG keyword does not effect placement of the TOP-ROW-DISPLAYED
indicator which is right-justified on the top line of the display, or just below
the action bar separator line if an action bar is defined.
LMSG(field-name)
Identifies the panel field (variable name) where the long message, if any, is to
be placed. The field type must be a CUA output type. If the message is longer
than the length of this field, the message is placed in a pop-up window.
Notes:
1. For CMD, SMSG, and LMSG the field-name must be within the )BODY
section, not within a scrollable area or table.
2. For long or short messages in pop-up windows, if the message originates
from panel processing, as in a verification error message, the message
pop-up window is placed adjacent to the field that is the object of the
validation.
3. The format of the command, long-message, and short-message fields must
not be FORMAT(DBCS). Because a FORMAT(EBCDIC) field does not
display DBCS characters correctly, FORMAT(MIX) is recommended.
4. For additional information about the placement of the command and long
message fields, see the ISPF User’s Guide
ASIS
Specifies that the command and long message fields are to appear on the
display as specified in the panel definition. When ASIS is specified, any user
request, using SETTINGS option 0 or by setting system variable ZPLACE, to
reposition the command and long message fields is ignored.
WIDTH(width)
The number of columns to use in formatting the panel. width can be a constant
or a dialog variable, including the system variable &ZSCREENW The specified
width must not be less than 80 or greater than the width of the terminal on
which the panel is to be displayed. If the WIDTH keyword is not specified, the
default is 80.
In the title line, hyphens are repeated to expand the line to the width specified
by &EDWIDTH The command field and the employee number field would
both be expanded with repeated blanks.
If more than one repetition character appears in a line of the panel body, each
of the characters is repeated an equal number of times. For example:
)BODY EXPAND(#@)
TUTORIAL #-@ TITLE OF PAGE #-@ TUTORIAL
would become:
TUTORIAL ------------ TITLE OF PAGE ------------ TUTORIAL
ISPF treats as an error a request to display a panel that is wider than the
physical screen or current logical screen for a 3290 terminal. ISPF displays a
box panel indicating the error. For the 3290, if a panel that is wider than 80
characters is being displayed, and the user attempts to divide the screen
vertically (SPLITV command), ISPF denies the request and displays an error
message. Remember that the panel is displayed as though the expanded format
of the body were originally coded in the panel definition. Therefore, be careful
when expanding text fields that contain substitutable variables, so that
meaningful text is not truncated. For example:
)BODY EXPAND(//)
TUTORIAL /-/ &VAR1 /-/ TUTORIAL
would become:
TUTORIAL ---------------- &VAR1 ---------------- TUTORIAL
Then, if &VAR1 had the value ‘ABCDEFG’ when the screen was displayed, the
following line would result:
TUTORIAL ---------------- ABCDEFG ---------------- TUTORI
To avoid this problem, provide a few blanks at the end of the text string, as
follows:
TUTORIAL /-/ &VAR1 /-/ TUTORIAL +
Table 12 on page 211 and Table 13 on page 211 describe the display width, data
expansion width (resulting from EXPAND keyword on the )BODY statement),
Note: ISPF will issue an error message if you attempt to display a panel in a
pop-up window where the WINDOW width value is greater than the
width of the underlying panel .
DEFAULT(def1def2def3)
You can use the DEFAULT keyword to specify the characters that define a
high-intensity text field, a low-intensity text field, and a high-intensity input
field, respectively. The value inside the parentheses must consist of exactly
three characters, not enclosed in single quotes and not separated by commas or
blanks.
The DEFAULT keyword can also be specified on the )ATTR section statement.
FORMAT(EBCDIC|DBCS|MIX)
The default value for a TYPE(INPUT) and a TYPE(DATAIN) field is
FORMAT(EBCDIC). These two default values can be changed by using the
)ATTR statement or the )BODY statement. These values, in turn, can be
overridden if explicitly specified on a subsequent statement. For example, the
net result of the following two statements is FORMAT(DBCS):
)BODY FORMAT(MIX)
$ TYPE(INPUT) FORMAT(DBCS)
OUTLINE([L][R][O][U]|BOX|NONE)
The default value for OUTLINE is NONE. The default value for TYPE(INPUT)
and TYPE(DATAIN) fields can be specified on the )ATTR or )BODY statement
and can be overridden by the OUTLINE keyword. For example:
)BODY OUTLINE(U)
@ TYPE(INPUT) OUTLINE(BOX)
This data entry panel has 11 input fields (for example, ZCMD and TYPECHG)
indicated with the underscore attribute character. It also has a substitutable
variable (EMPSER) within a text field. The first two lines of the panel and the
arrows preceding the input fields are all highlighted, as indicated by the percent
sign attribute characters. The other text fields are low intensity, as indicated by the
plus sign attribute characters.
)Body
%---------------------------- EMPLOYEE RECORDS ------------------------------
%COMMAND ===>_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 NUMBER%===>_PHNUM +
+
)End
Figure 66 on page 213 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.
EMPLOYEE NAME:
LAST ===>
FIRST ===>
INITIAL ===>
HOME ADDRESS:
LINE 1 ===>
LINE 2 ===>
LINE 3 ===>
LINE 4 ===>
HOME PHONE:
AREA CODE ===>
LOCAL NUMBER ===>
)CCSID [NUMBER(xxxxx)]
where:
NUMBER(xxxxx)
The CCSID of the EXTENDED CODE PAGE as defined by Character Data
Representation Architecture. Refer to “Supported CCSIDs” on page 316 for
which CCSIDs are supported.
The )CCSID section must be the first section in the panel as illustrated in the
following example:
)CCSID NUMBER(00037)
)PANEL
)BODY
%---------------------- NAME OF PANEL -------------------------------
%COMMAND
. ===>__ZCMD
.
.
)END
If the CCSID section is used, the single-byte text characters in the )BODY,
)MODEL, or )AREA section of the panel are translated to the equivalent character
(or a period if the character does not exist) in the terminal code page for display.
ISPF scans the panel for a text attribute, notes the position, and then scans for a
non-text attribute. When the non-text attribute is found, ISPF translates the text
between the text attribute and the non-text attribute. Thus you must have one text
The ISPF program scans the panel record for a text attribute, notes the position,
then scans for a non-text attribute. When the non-text attribute is found, ISPF
translates the text found between the text attribute and the non-text attribute.
Therefore, you must have one text attribute defined prior to any text you want
translated.
All characters in the panel source that are not in the )BODY text must be in the
Syntactic Character Set:
v A–Z
v a–z
v 0–9
v +<=>%&*″’
v (),_-./:;?
Note: Lowercase a–z can be used for any CCSID supported by ISPF except the
Japanese (Katakana) Extended CCSID 930.
See “Chapter 10. Extended Code Page Support” on page 311
)END
The definition consists only of the )END statement. Any lines placed after the END
statement are ignored.
)PANEL
)BODY
%---------------------- NAME OF PANEL -------------------------------
%COMMAND
. ===>__ZCMD
.
.
)END
where:
FIELD(field-name)
The name of the source panel element (input selection field, action bar choice,
dynamic area name, and so on). When the PANEL keyword is used, a help
panel is displayed when help is requested for an element. When the MSG
keyword is used, a message is displayed when help is requested for an
The action bar choice and pull-down choice elements, have no associated field
name. ISPF uses the following convention when generating a field-name value for
these panel elements.
Action bar choice field-names will have the following format:
ZABCxx
where:
ZABC The field-name prefix
xx The number of the action bar choice
Pull-down choice field-names have the following format:
ZPDCxxyy
where:
)INIT
It begins with the )INIT header statement and ends with either the )REINIT,
)PROC, )HELP, or )END header statement. The number of lines allowed in an
)INIT section depends upon the storage size available for panel processing at
execution time.
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 )LIST section, if you use it, follows the )PNTS section if one exists. It follows
the )HELP section if you have no )PNTS section. If you have neither the )PNTS
section nor the )HELP section, the )LIST section follows the )PROC section of your
panel definition. The )LIST section contains the following parameters when used
with list boxes and drop-down lists:
)LIST list-name
VAL(value) CHOICE(value)
The )LIST section contains the following parameters when used with combination
boxes:
)LIST list-name
CHOICE(value)
where:
list-name
The name of the list. It must match a LISTBOX(name), DDLIST(name), or
COMBO(name) specified on an input field in the )ATTR section. The name can
be 1 to 8 characters long. Alphanumeric characters A-Z, a-z, 0-9, #, $, or @ can
be used in the name, but the first character cannot be numeric. Lowercase
characters are converted to their uppercase equivalents.
VAL(value)
This parameter is used for list boxes and drop-down lists only. It is not used
for combination boxes. The value can be a variable or text. It must be 3
characters or less (more than three characters are truncated without warning)
and is used as the value placed into the CEF field when the choice is selected.
CHOICE(value)
This parameter is used with list boxes, drop-down lists, and combination
boxes. The value can be a variable or text. If the value is a variable, the
ampersand (&) must be in the first column following the left parenthesis of the
CHOICE keyword. The length of the variable data is limited to 99 single-byte
characters. If the varible data is longer than 99 bytes, it will be truncated.
CHOICE(&var)
If the value is a single word text string it is not necessary to enclose it in single
quotation marks.
CHOICE(3278)
If the value is more than a single word of text, the phrase must be enclosed in
single quotation marks.
CHOICE('3278 terminal type')
Literal values can be split between lines by coding a plus sign (+) as the last
character on each line that is to be continued. The plus sign is used as a
continuation character.
CHOICE('This is an example of a continuation +
of the literal string')
The )LIST section must contain a list-name. For list boxes and drop-down lists, it
also must contain a VAL and a CHOICE for each of the choices to display in the
list. Each entry in the )LIST section must contain the keywords in the following
order: VAL(value) CHOICE(value). For combination boxes, the list section must
contain a CHOICE(value) for each of the choices to display in the list. The data in
the lists is displayed in the order in which you define the choices in the )LIST
section.
The IMAGE keyword is used to show images on panels in GUI mode. It is ignored
in 3270 mode. ISPF supports image files in the Graphical Interchange Format (GIF).
ISPF ships image files in sample library SISPSAMP. The panel ISR@PRIM uses
three of the GIF image files: ISPFGIFL, ISPFGIFS, and ISPEXIT.
To use images, store the image files on the host in a partitioned data set and
allocate this image data set to ddname ISPILIB before invoking ISPF. For more
information about allocating this image library, see the section called Allocating
Optional Image ISPF Library in the ISPF User’s Guide.
Images can be placed on unused panel space. They should not be positioned on
text or panel fields. When an image is requested, ISPF does a query and file
transfer to download the image specified to the workstation. The image is
downloaded to the image path, which the user specifies from the GUI Panel Settings
window (Option 0). See the ISPF User’s Guide for details. If no image path is
specified, ISPF downloads the images to the workstation’s working directory.
where:
KEYLIST
keylist-name
Required when KEYLIST is specified. The keylist name must have the
following characteristics:
v 1–8 characters in length
v First, or only, character must be A–Z or a–z
v Remaining characters, if any, must be A–Z, a–z, or 0–9.
If the KEYLIST keyword is not found on the )PANEL statement, then the default
keylist, ISPKYLST, is used.
Before run-time processing, any keylist (other than the default ISPKYLST)
referenced in a panel’s definitions must have been created and stored. If you add
or modify the )PANEL KEYLIST statement in the definition of an existing source
panel, you must create the keylist if it does not already exist. New keylists can be
created using ISPF option 0 or using the Dialog Tag Language.
Keylist variables
The following variables are used by the keylist function:
ZKLUSE
Y or N, this variable indicates whether the keylists are being used for an
application ID or not. For example, if KEYLIST OFF has been issued,
&ZKLUSE is N. This variable is stored in the application profile. The
VPUT service can be used by your application to set this value. Putting a
value of N in &ZKLUSE to the profile pool is equivalent to issuing the
KEYLIST OFF command. Putting a value of Y in &ZKLUSE to the profile
pool is equivalent to issuing the KEYLIST ON command.
ZKLNAME
contains the name of the keylist of the panel currently being displayed. If
no keylist is defined for the panel or the keylist is not being used,
&ZKLNAME is blank.
ZKLAPPL
contains the application ID where the keylist of the panel currently being
displayed is found. If no keylist is defined for the panel or the keylist is
not being used, &ZKLAPPL is blank.
ZKLTYPE
P or S, this variable indicates that the keylist for the panel currently being
displayed is a private (P) copy defined in the profile table, or a shared (S)
copy defined in the xxxxKEYS table (where xxxx is the application ID of
the keylist (ZKLAPPL)).
Note: This variable shows and determines where ISPF looks for a keylist.
&ZKLTYPE is a non-modifiable variable that shows where ISPF
found the keylist.
You can specify to not have a command line by including the keyword CMD()
with no value on the )BODY statement. This is valid only for displaying panels
with the DISPLAY service. In this case, the default position of the long message is
at the bottom of the panel above the FKA, if it is displayed. Panels (tables)
displayed with the TBDISPL service must specify a command area either by coding
a CMD() with a value or by coding the system control variable ZCMD in the panel
body.
Because the )PANEL statement affects the same display characteristics as if you
had selected the Panel display CUA mode option on the ISPF Settings panel, the
color and intensity of the short and long messages is affected by the presence of
the )PANEL statement. If you specify the LMSG or SMSG keywords on the )BODY
statement, you control the color and intensity in which both the short and long
messages are displayed, regardless of CUA mode or the presence of a ) PANEL
statement. Table 19 on page 295 illustrates default message placement.
Note: The system control variable ZPFCTL setting is ignored for panel source
definitions that contain the )PANEL statement.
If the panel contains an action bar and the cursor is on the action bar, CANCEL
moves the cursor to the panel body. ZVERB is not updated.
These system variables are stored in the function pool as output variables.
Note: You can use option 0 (Settings) to set the tab key to move the cursor
point-and-shoot fields. This changes output fields to input fields, but data is
GUI Mode: If you are running in GUI mode, fields designated as point-and-shoot
output and text fields will appear as pushbuttons. Point-and-shoot input fields will
appear as selection fields.
Large pushbuttons are point-and-shoot output or text fields which display with a
depth greater than one. Large pushbuttons are built by coding the DEPTH
keyword on the point-and-shoot statement in the )PNTS panel section.
In GUI mode, images can be displayed on these pushbuttons. The keywords that
provide the support for images are DEPTH, IMAGE, IMAGEP, TEXT, and PLACE.
These keywords are used in GUI mode and ignored in 3270 mode.
You can specify where to place an image on a large pushbutton. It can be above or
below the pushbutton text, or to the left or right of the pushbutton text. When you
specify the placement of the image to be above or below the text, the image is
always centered relative to the text.
ISPF ships sample images in sample library SISPSAMP. The panel ISR@PRIM uses
three of the GIF image files: ISPFGIFL, ISPFGIFS, and ISPEXIT.
To use images, store the image files on the host in a partitioned data set and
allocate this image data set to ddname ISPILIB before invoking ISPF. For more
information about allocating this image library see the section called Allocating
Optional Image ISPF Library in the ISPF User’s Guide.
When an image is requested, ISPF does a query and file transfer to download the
image specified to the workstation. The image is downloaded to the image path that
you specify from the GUI Panel Settings window (Option 0). See the ISPF User’s
Guide for details. If no image path is specified, ISPF downloads the image to the
workstation’s working directory.
)PNTS
FIELD(field_name|ZPSxxyyy) VAR(value) VAL(value)
[DEPTH(depth)] [IMAGE(image-name)] [IMAGEP(image-name)]
[TEXT('text')] [PLACE(a,b,l,r)]
Note: Each entry in the )PNTS section must contain the keywords in the following
order: FIELD, VAR, VAL, [DEPTH]. When defining large pushbuttons or
large pushbuttons with images the DEPTH keyword must immediately
follow the VAL keyword on the )PNTS entry statement. The remaining
keywords, [IMAGE] [IMAGEP], [TEXT], [PLACE], follow the DEPTH
keyword. Both the DEPTH keyword and the TEXT keyword must be coded
on the PNTS entry for point-and-shoot text fields if you are defining a large
pushbutton, or an image for the field.
where:
Literal values can be split between lines by coding a plus sign (+) as the
last character on each line that is to be continued. The plus sign is used as
a continuation character.
VAL('This is an example of a continuation +
of the literal string')
DEPTH(depth)
The depth of the point-and-shoot field (pushbutton). The DEPTH keyword
is required and must be specified immediately following the VAL keyword
on the )PNTS section statement. ISPF allows depth values from zero to
sixty-two (0-62). Sixty-two is the maximum screen depth. It is up to the
dialog developer to define the depth such that other items on the panel
body will not be overlaid by the point-and-shoot field (pushbutton). If
depth is specified as 0, the default depth of two (2) is used. The depth can
be a variable, whose value is from 0-62.
IMAGE(image-name)
The image-name identifies the image to be displayed. The image-name is
used when the images are stored on the host in a partitioned data set, with
a data set definition of ISPILIB. The image-name must follow TSO data set
member naming conventions. The image-name can be a variable, which
should follow ISPF’s variable naming conventions.
IMAGEP(image-name)
The image-name identifies the image to be displayed, when the
point-and-shoot pushbutton is pressed. For example, a pushbutton might
normally display a closed door image, but when you press the button, an
opened door image could appear. The image-name is used when the images
are stored on the host in a partitioned data set, with a data set definition of
ISPILIB. The image-name must follow TSO data set member naming
conventions. The image-name can be a variable, which should follow ISPF’s
variable naming conventions.
Example:
)PANEL
)ATTR
$ TYPE(PIN)
} TYPE(PS)
+ TYPE(NT)
| AREA(SCRL) EXTEND(ON)
! TYPE(OUTPUT) PAS(ON) COLOR(RED)
* TYPE(OUTPUT) PAS(ON) COLOR(BLUE)
@ TYPE(TEXT) INTENS(LOW) COLOR(RED) PAD(NULLS)
ø TYPE(TEXT) INTENS(LOW) COLOR(BLUE) PAD(NULLS)
)BODY WINDOW(60,23)
$
%COMMAND ===>_ZCMD
$
$ Press }DEFAULTS$to reinstate defaults
$
+
|S1 |
)AREA S1
+ +
+ +
+ øBLUE . . . .*BLUE1 +
+ @RED . . . . .!RED1 +
)INIT
.CURSOR = blue1
&blue1 = ' '
)PROC
REFRESH(*)
)PNTS
FIELD(BLUE1) VAR(RED1) VAL(RED)
FIELD(ZPS00001) VAR(BLUE1) VAL(DEFAULT)
)END
)PROC
)REINIT
Note: See ISPF Services Guide under the description of the TBDISPL for a
description of how redisplay processing for the TBDISPL service differs
from that for the DISPLAY service described here.
Figure 67 on page 227 shows panel processing and the point at which attribute
settings can be modified for redisplay of a panel.
DISPLAY DISPLAY
Service With Service With
No Panel Name Panel Name
)INIT Section
Processing
Attribute
)REINIT Section Determination
Processing (See Note 1)
Automatic
Initialization
of Fields in
the Panel Body
(See Note 2)
Display/
Redisplay of
Panel
)ABCINIT Display/
Automatic
Section Redisplay
Storing of
Processing Pulldown
Input Variables
from the Panel
Data is Scrolled Body
)ABCPROC Pulldown
Section Choice
Processing Selection
AB Yes
Selected
No No Yes
Msg =
Blank
(See Note 4)
Yes Scroll
Request ? (See Note 3)
END or
RETURN Yes
No Command?
)PROC Section
Processing No RETURN
RC = 8
No Yes
MSG = Blank?
Notes:
1. Any attributes specified in variables in the )ATTR or )INIT sections
are determined after the )INIT section has been processed.
2. Any attributes set above this line are permanent across redisplays of RETURN
the panel. Those set below the line hold for a single redisplay only. RC = 0
3. On panels created using the Dialog Tag Language (DTL), the next EXIT
and CANCEL commands also produce return code 8.
4. The Yes branch is taken if there is a scroll request, a scrollable
area is defined for the panel, and the cursor is within a scrollable area.
The following types of data references can appear within panel section statements:
Dialog variable
A name preceded by an ampersand (&)
Control variable
A name preceded by a period (.)
Literal value
A character string not beginning with an ampersand or period. A literal
value can be enclosed in single quotes (‘’). It must be enclosed in single
quotes if it begins with a single ampersand or a period, or if it contains
any of the following special characters:
Blank < ( + | ) ; ¬ - , > : =
In the description of statements and built-in functions that follows, a variable can
be either a dialog variable or a control variable. A value can be either type of
variable or a literal value.
variable = value
where:
value
Specifies the contents of the dialog variable.
Example:
&A = ‘’
&COUNT = 5
&DSN = ‘’‘SYS1.MACLIB’‘’
&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 example sets variable
DSN to a character string that begins and ends with a single quote. See Chapter 5.
Panel Definition Statement Guide for information on syntax rules and restrictions.
The fourth example sets variable BB to the contents of another variable, C.
The literal ’ ’ represents a single blank. To define a null, you must use the &Z
literal.
where:
variable
(Inside the parentheses). Specifies the variable to be truncated.
value
A numeric quantity indicating the length of the truncated result or any special
character indicating truncation at the first occurrence of that character.
Examples:
&A = TRUNC (&XYZ,3)
&INTEG = TRUNC (&NUMB,‘.’)
In the first example, the contents of variable XYZ are truncated to a length of 3
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 is not stored, nor is it retained
in the assignment variable’s value. For example:
If variable ZCMD contains 9.4.6, variable AAA contains 9. The .TRAIL control
variable and variable BBB contain 4.6. The value of ZCMD remains as 9.4.6.
Because the control variable .TRAIL is set to blanks before the truncation function
is performed, it should not be specified as the truncation variable in the TRUNC
statement. For example: &ERROR = TRUNC(.TRAIL,1) would always result in
&ERROR being set to blank.
For the TRUNC built-in function, the source and destination variables can be the
same. Figure 68 on page 232 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 you to change the valid options for TYPECHG by
simply typeing over the first character.
The TRUNC and TRANS built-in functions can be nested. For example:
&XYZ = TRUNC( TRANS(&A ---),1 )
&ZSEL = TRANS( TRUNC(&ZCMD,‘.’) --- )
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 ZCMD are truncated at the first
period, the truncated value is then translated, and the result is stored in variable
ZSEL.
where:
variable
(Inside the parentheses). Specifies the variable to be translated.
value,value
Paired values. The maximum number of paired values allowed is 126. The first
value in each pair indicates a possible value of the variable, and the second
indicates the translated result.
Example:
&REPL = TRANS (&MOD Y,YES N,NO)
The current value of variable MOD is translated, and the result is stored in
variable REPL. Variable MOD remains unchanged. The translation is as
follows: if the current value of MOD 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.
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.
MSG=value
A message ID. Another option for the anything-else condition is to cause a
message to be displayed to the user Typically, this technique is used in the
processing section of the panel definition.
Example:
&DISP = TRANS (&D 1,SHR 2,NEW 3,MOD MSG=PQRS001)
For the TRANS built-in function, the source and destination variables can be the
same. Figure 68 on page 232 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 you to change the valid options for TYPECHG by
simply typing over the first character.
The TRANS and TRUNC built-in functions can be nested. For example:
&XYZ = TRUNC( TRANS(&A ---),1 )
&ZSEL = TRANS( TRUNC(&ZCMD,‘.’) --- )
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 ZCMD are truncated at the first
period, the truncated value is then translated, and the result is stored in variable
ZSEL.
)Body
%---------------------------- EMPLOYEE RECORDS -------------------------------
%COMMAND===>_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 NUMBER%===>_PHNUM +
+
)Init
&TYPECHG = Trans (&TYPECHG N,NEW U,UPDATE D,DELETE)
)Proc
&TYPECHG = Trunc (&TYPECHG,1)
)End
variable = PFK(value)
where:
value
Either a command or a key number.
Example:
&X = PFK (HELP)
&Y = PFK (2)
In the first example, the first function key that is assigned to the HELP command
is returned in variable X as a character string PFnn, where nn is the function key
number. If CUA mode is set, or the panel has an active keylist, the character string
is Fnn, where nn is the function key number. If the HELP command is not assigned
to a function key, a blank value is returned.
In scanning the current function key definitions, the primary keys are scanned first,
then the secondary keys. If KEYLIST OFF has been issued, ISPF searches the ZPF
variables. On a 24-key terminal, for example, if both function keys 13 and 1 are
assigned to HELP, the function returns F13.
variable = LVLINE(value)
where:
value
Name of the GRAPHIC or DYNAMIC area. In split-screen mode, this value
could be less than the number of lines defined in the area.
This built-in function provides the line number of the last line within a graphic or
dynamic area that is visible to the user on the currently displayed panel. The value
parameter is the name of the graphic or dynamic area. In split-screen mode, this
value could be less than the number of lines defined in the area. If the area is
defined within a scrollable area, the number returned is the last visible line when
the user submitted the panel, even if the user could have scrolled to see more.
Note: When coding the command line after the dynamic area on a non-TBDISPL
panel, ISPF might not be able to calculate the LVLINE value correcty based
on the location of the command line following the dynamic area, the
number of lines after the dynamic area, the function key settings, SPLIT or
SPLITV command processing, or other ISPF commands that affect the screen
size displayed. To achieve the correct LVLINE value with the command line
displayed at the bottom of the ISPF dynamic area panel, the command line
will have to be coded above the dynamic area on the panel, ZPLACE set to
BOTTOM, and CUA mode set to YES.
Example:
&L1 = LVLINE(AREA1)
where:
variable name
Name of the variable that the function will process.
Examples:
&VAR2 = ADDSOSI(&VAR1)
&VAR2; = DELSOSI(‘[DBDBDBDB]’)
The bracket characters [ and ] represent the shift-out and shift-in characters.
Example:
&VARB = ADDSOSI(TWOBYTE(&VARA))
Variable VARA is converted to a 2-byte character code and shift-out and shift-in
characters are added to the character string. Then, variable VARB is set to the
resulting value.
where:
variable name
Name of the variable the function will process.
Examples:
&VARA = ONEBYTE(&VARB)
&VARA = TWOBYTE(&VARB)
The variable being converted must not contain mixed (DBCS/EBCDIC) data. Only
variables, not literals, can be converted. An odd input value length is permitted for
the TWOBYTE function, but is not permitted for the ONEBYTE function. The input
value length does not include trailing blanks or nulls. Literals cannot be used as
input parameters for either function. Nested built-in functions are not allowed on
the TWOBYTE function. The ONEBYTE function allows nesting of the DELSOSI
built-in function.
Example:
&VARB = ONEBYTE(DELSOSI(&VARA))
ELSE
In this example, if the value of &DOW is UP, variable &ACTION is set to SELL
and processing continues at the statement &DOW = &BEAR The indented
processing statements following the first ELSE statement execute if variable &DOW
does not have a value of UP. The assignment statement, &ACTION = HOLD,
executes only if the value of &DOW is not UP or DOWN.
Figure 69 on page 236 shows a sample panel definition with an IF/ELSE statement
pair. The current value of variable PHA is tested for the local area code, 919. If the
value of PHA is 919, variable RATE is set to the value of variable &LOCAL If the
value of PHA is not 919, variable RATE is set to the value of variable &LONGD
)BODY
%---------------------------- EMPLOYEE RECORDS ------------------------------
%COMMAND===>_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 NUMBER%===>_PHNUM +
+
)INIT
&TYPECHG = TRANS (&TYPECHG N,NEW U,UPDATE D,DELETE)
)PROC
&TYPECHG = TRUNC (&TYPECHG,1)
IF (&PHA = ‘919’)
&RATE = &LOCAL
ELSE
&RATE = &LONGD
)END
The GOTO and the EXIT statements are both allowed in the )INIT, )REINIT,
)PROC, )ABCINIT, and )ABCPROC sections of the panel source definitions.
EXIT Statement
EXIT
In this example, the VER statements are skipped if no values are entered for the
CUSTNAME or CUSTNUM variable fields. Processing for the )PROC is halted
after the .msg variable is set.
v Example 2: Multiple GOTOs
)INIT
&var2 = ' '
IF (&newcust = ' ')
GOTO BYPASS
IF (&newcust = 'renew')
&var2 = 1
GOTO NXTCHK1
IF (&newcust = 'initial')
&var2 = 2
GOTO NXTCHK1
ELSE
GOTO BYPASS
NXTCHK1:
IF (&var2 = 1)
&var3 = 1
&var4 = 0
GOTO NXTSECT
ELSE
&var4 = 1
&var3 = 0
GOTO NXTSECT
BYPASS:
&var3 = 0
&var4 = 0
NXTSECT:
zero, one, or more statements
Assuming that the variable NEWCUST was entered and verified to contain one
of the two values on a previous panel display, this example illustrates that
certain fields on the panel currently being processed will or will not be set
depending on the value of NEWCUST.
v Example 3: GOTO Label within IF/ELSE
)INIT
IF (&var1 = ' ')
GOTO BYPASS
IF (&var2 = 1)
&var5 = 1
&var6 = 0
BYPASS:
&var7 = 1
ELSE
zero, one, or more statements
If variable var1 is blank, control is transferred to the label BYPASS. Variables var5
and var6 are not set and processing will continue as if the IF statement were
TRUE. Variable var7 will be set to 1. The ELSE branch is not executed.
where:
label
Literal value of the label to which you will branch. The label:
v Must be from 1 to 8 characters in length
v Must begin with an alphabetic character (A–Z, a–z)
v May contain any other alphameric character (A–Z, a–z, 0–9).
The literal value of the label used must be followed by a colon when it appears
by itself as a label. For example:
label:
ISPF translates the value for the label to uppercase before it is processed.
ISPF issues a severe error message if it does not find a matching label below the
GOTO statement and within the same section in which the GOTO statement is
coded. The label need not be on a line by itself.
The IF Statement
The IF statement is a valuable tool used to verify a conditional expression. The
conditional expression can be as basic as testing the value of a variable or can be
expanded to use VER statement constructs and Boolean capabilities. This section
first defines the complete syntax of the IF statement. More detailed sections follow
to describe:
v Basic IF value testing
v IF statement with VER constructs
v IF statement with Boolean operators
IF statements are valid in the )INIT, )REINIT, )PROC, )ABCINIT, and )ABCPROC
panel sections.
where:
conditional-expression
Is either:
Basic value test expression:
variable operator value[,value...]
VER statement construct coded without the MSG= parameter:
VER (variable [, NONBLANK], keyword [, value1, value2,...])
Boolean-operator
The character symbol & or characters AND (AND Boolean operator) or the
character symbol | or characters OR (OR Boolean operator).
ELSE
The optional statement that specifies alternate processing if the IF condition is
not satisfied.
= or EQ (equal to)
¬= or NE (not equal)
> or GT (greater than)
< or LT (less than)
>= or GE (greater than or equal)
<= or LE (less than or equal)
¬> or NG (not greater than)
¬< or NL (not less than).
You can specify comparison against up to 255 values for the EQ (=) and NE (¬=)
operators. For the remaining operators, you can specify comparison against only
one value.
If you use a character symbol operator, it must be separated from the variable
name and comparison value by one or more blanks. For example:
IF (&ABC EQ 365)
Separation of a special symbol operator from the variable name and comparison
value is optional.
IF (&ABC = 365) is the same as IF (&ABC=365)
A compound symbol operator, such as <= or NG, must not contain intervening
blanks. For example:
<= cannot be < =
| Note that the scope of the IF statement is not terminated by a blank line.
ELSE
.MSG = nld122
IF
. (VER (valid keyword parameters and values))
.
.
The VER statement can be split over more than one line, but the VER statement
and the left parenthesis of its keyword parameters must be on the same line. The
following example is invalid:
The use of the AND Boolean operator takes precedence over the OR Boolean
operator as shown in the following examples.
ELSE
IF
. (&varc = 123 OR VER (&vard,NB,NUM))
.
.
The first IF statement will be successful only if both VER expressions are
satisfied, while the IF statement under the ELSE will be successful if either of
the expressions on the IF statement are satisfied.
v Example 2: Comparison of three expressions using the AND Boolean operator in
the same IF statement, with additional OR Boolean operators.
IF (VER (&vara,NB,ALPHA) & VER (&varb,NB,ALPHA) &
. &varc = abc,xyz | &vard = 123 | &vard = 456)
.
.
ELSE
.msg = nld123
ELSE
.msg = nld124
.attr (vara) = 'color(yellow)'
.attr (varb) = 'color(yellow)'
ELSE
.msg = nld125
Because the IF statement AND Boolean operator has precedence over the IF
statement OR Boolean operator, the specifying an IF statement similar to the one
above might not give you the results you expected.
Else
.msg = nld126
Else
.msg = nld127
PANEXIT ((value,value,...),{PGM,exit-add
[,exit-data]
[,MSG=msgid]
LOAD,exit-mod
[,exit-data]
[,MSG=msgid]
REXX,rexx-name
[,exit-data]
[,MSG=msgid]})
where:
value
Specifies the names of dialog variables being passed to the exit. The string of
values, including the parenthesis, cannot exceed 255 characters. The string of
values can be represented by the name of a dialog variable that contains a list
of names of variables being passed to the exit routine.
PGM
Keyword that indicates that the exit routine being invoked was loaded when
ISPF loaded the application dialog or was loaded from the application. The
application passes ISPF the address of the exit routine in exit-add.
exit-add
This is the name of a 4-byte, FIXED format dialog variable that contains the
address of the exit routine, which can reside above or below the 16Mb line.
The exit routine receives control in AMODE=31 mode. This parameter is used
in conjunction with the keyword PGM.
exit-data
This is the name of a 4-byte FIXED format dialog variable that contains a
value, such as the address of an information area, to be passed to the exit
routine.
msgid
If no message identification is returned to ISPF from the exit routine, this
parameter identifies the message to be displayed if a variable fails the exit
routine evaluation. If this parameter is not specified, and no message
identification is returned from the exit routine, ISPF issues a generic message
indicating that the exit routine evaluation failed.
LOAD
Keyword that indicates that the exit routine is to be loaded dynamically. The
application passes ISPF the module name of the exit routine that is to be
dynamically loaded. The module name is passed in the exit-mod parm.
exit-mod
This parameter identifies the name of the panel user exit routine module that
is to be dynamically loaded by ISPF. The panel user exit name can be passed
as a literal or as a dialog variable that contains the panel user exit name. This
parameter is used in conjunction with the LOAD keyword.
REXX
Keyword that indicates the name of the Rexx panel exit that is to be loaded
and run. The exit can be an interpreted Rexx exec or an exec that was
compiled into load module form. Standard search sequences are used to load
the Rexx program.
rexx-name
This parameter is the name of the Rexx program that is to be used as the panel
On the PANEXIT statement you can specify that the following be passed to the
panel user exit routine:
v A list of dialog variables to be processed by the exit routine in one call. Rules
that apply to the variables being passed are:
– Variable values must be in character format when passed, and must remain in
character format.
– The exit routine can change a variable’s value but it cannot change its length.
Thus, if a dialog uses the VDEFINE service to define any of these variables to
be passed, it should specify the NOBSCAN option. Otherwise, the variable
value’s length is considered to be the length of the actual data with blanks
being ignored.
For implicitly defined variables, the variable length is considered to be the
same as the length of its value.
v A 4-byte area that you can use to pass the address of data to be used by the exit
routine.
v The identification of a message to be issued if a variable fails the exit routine
evaluation. ISPF uses this value to set the .MSG control variable or, in the case of
a panel user exit severe error (RC=20 or invalid value), to set ZERRMSG.
Notes:
1. A panel user exit routine cannot access any dialog variables except those
passed on the call.
2. A panel user exit routine cannot issue requests for any ISPF services.
3. ISPF ignores any PANEXIT statement issued from dialog test option 7.2.
4. The PANEXIT statement cannot be issued from a selection panel that initiates a
dialog prior to defining the exit address.
| 5. The panel exit can not be written in LE member languages (languages which
| require the LE runtime environment). Exits that require the existence of an LE
| environment are not supported.
Following a successful validation exit, during which one or more dialog variable
values are changed, ISPF updates the values for all dialog variable names included
on the PANEXIT statement. This allows the exit routine to define dialog variables
for cursor field or cursor position, and to return these values to ISPF when an
error has been detected.
| Panel exits cannot be written in languages that use the Language Environment
| (LE) run time environment.
ISPF uses the standard parameter list format to pass parameters. Register one
points to a list of addresses; each address points to a different parameter as shown
in Figure 70. See “Parameters Passed from ISPF to the Panel User Exit Routine” on
page 246 for information on these parameters.
┌─────────┐
reg 1 ──q│ addr 1 ├──q Exit Data
├─────────┤
│ addr 2 ├──q Panel Name
├─────────┤
│ addr 3 ├──q Panel Section
├─────────┤
│ addr 4 ├──q Message ID
├─────────┤
│ addr 5 ├──q Number of Variables
├─────────┤
│ addr 6 ├──q Array of Variable Names
├─────────┤
│ addr 7 ├──q Array of Variable Lengths
├─────────┤
│ addr 8 ├──q String of Variable Values
└─────────┘
The keyword, LOAD, on the PANEXIT panel statement, provides the option of
dynamically loading a panel user exit routine. PGM and LOAD are the only valid
keywords. PGM indicates that a panel user exit using a compiled source is being
invoked. LOAD indicates that the panel user exit routine named by the exit-mod
parameter is to be dynamically loaded by ISPF.
The panel user exit routine is loaded only once per SELECT level the first time the
panel is displayed. The loaded panel user exit routine is not deleted until the
SELECT, which first displayed the panel, is terminated.
For an exit routine return code of 8, ISPF sets the .MSG control variable by using
the following search order:
1. If the value in the Message ID parameter is not blank on return to ISPF, that
value is used for setting the .MSG control variable.
2. If the value in the Message ID parameter is blank on return, the value (if any)
specified for the MSG= keyword on the PANEXIT statement is used for setting
the .MSG control variable.
3. If neither the Message ID parameter nor the MSG= keyword has been given a
value, the default ISPF exit error message is used for setting the .MSG control
variable.
The panel section in which the .MSG control variable is set affects the message
display as follows:
v )INIT or )REINIT section — The message is displayed on the panel.
v )PROC section — The panel, including the message to be displayed, is
redisplayed.
If the return code from the exit routine is either 20 or not one of the recognized
codes, the display service terminates with a severe error condition. ISPF sets the
ZERRMSG system variable by using the following search order:
1. If the value in the Message ID parameter is not blank on return to ISPF, it is
used for setting the ZERRMSG system variable. This allows the exit routine to
define the message to be used in case of a severe error.
2. If the value in the Message ID parameter is blank on return, the value (if any)
specified for the MSG= keyword on the PANEXIT statement is used for setting
the ZERRMSG system variable.
3. If neither the Message ID parameter nor the MSG= keyword has been given a
value, the default ISPF exit error message is used for setting ZERRMSG.
ISPREXPX Syntax:
Call ISPREXPX('I')
to set ISPF variables from the Rexx variables of the same name.
The Rexx program must insure that changes to the variables are done to the
named variables and not to the VARNAMES.n stem variable. For example, if the
PANEXIT statement on the panel passes in a variable named ZDATA, then
ISPREXPX creates a named variable called ZDATA. The Rexx program must refer
to and update that variable. If you do not know the exact name that is specified on
the PANEXIT statement in the panel that calls the Rexx exit, you can get the name
from the VARNAMES.n stem variable and use the INTERPRET instruction to get
and set the actual variable.
Variable Explanation
user variables The variables as named in the PANEXIT statement. For
example, a PANEXIT statement like
PANEXIT((ZDATA,USER),REXX...) creates variables ZDATA
and USER. Changes to the variables are returned to ISPF. If
the length changes, the new value is truncated or padded with
blanks as needed to keep the original length.
VARNAMES.0 All of these variables contain the number of
VARVALS.0 variable names passed into the panel exit.
VARLENS.0 Changes to these variables are ignored.
MSGID Message id to set in case of error. It is blank on entry to the
exit. Changes to this variable are used.
PANELNAME The name of the panel being processed. Changes to this
variable are ignored.
PANELSECTION Panel section ’I’, ’R’, or ’P’. Changes to this variable are
ignored.
EXDATA A hexadecimal representation of the address of the user data.
Changes to this variable are ignored, but the program might
change the data to which this address points.
Example: This sample exit changes the case of all data in the variable ZDATA. It
also overlays the beginning of the variable ZDATA with the string ’**REXX**’. The
name ZDATA is used on the PANEXIT statement in the panel source and is
assigned to the variable name VARNAMES.1.
Note: You can see how this panel works by saving this example in a REXX library
using the name SAMPLE and changing the Browse panel ISRBROBA to
include the following line in the )INIT and )REINIT sections:
panexit((zdata),REXX,sample)
where:
value
Name of an input or output field in the panel body.
The REFRESH statement can appear within the )PROC or )REINIT section of a
panel definition. ISPF flags it as an error if it appears in the )INIT section. When
this statement is encountered, the specified input/output fields within the panel
body are retrieved from the corresponding dialog variables prior to redisplay of
the panel.
A value of * indicates that all input/output fields on the panel are retrieved. You
can omit the parentheses if only one field is refreshed.
v Example 1:
)PROC
.
.
.
IF (.MSG ¬= ‘’)
&STMT = ‘Correct invalid field and press Enter key’.
IF (.MSG = ‘ ’)
&STMT = ‘ ’
REFRESH STMT
If the panel is displayed again and if the control variable .MSG is set to
non-blank in the )PROC section, the panel field STMT is reset to Correct the
... Enter key. Otherwise, the field is set to blank.
v Example 2:
)REINIT
REFRESH(SEL, RENAME)
The variable RVARS will contain a list of one or more panel fields to be
refreshed.
A field that is refreshed on the screen remains unchanged for multiple redisplays
unless it is again refreshed.
TOG(mode,fld,&variable[,value1,value2])
where:
mode
Mode in which TOG is to function:
v S—single, used for pull-downs and single-choice selection fields.
v M—multiple, used for multiple choice selection fields.
fld
Panel field used to determine whether &variable alternates.
&variable
Variable whose value may alternate between value1 and value2.
value1
Value &variable receives if &variable is not equal to value1. The default is 0.
Value1 can be a dialog variable or literal.
value2
Value &variable receives if &variable is equal to value1. The default is 1.
Value2 can be a dialog variable or literal.
Examples:
Value1 = 0
Value2 = 1
IF &variable = Value2
&variable = Value1
ELSE
&variable = Value2
If the TOG is in single mode, a check is made to determine if the data has been
modified. If it has been modified, then the TOG is performed.
If the TOG is in multiple mode, and a check determines that the data has been
modified, then:
v If the field contained a character at the last display and it has not been changed
to a blank, the TOG is not performed.
v If the field contained a blank and now contains a character, the TOG is
performed.
This is to ensure the selection is not deselected by a different character. Only by
blanking the field should the variable be deselected.
The following TOG statement example in Figure 71 uses both single and multiple
mode combinations. The single mode TOG statements are prefaced with IF
statements and are performed based on the IF statement condition. The multiple
mode TOG statements are not conditional. They are performed with each pass
through this processing section.
)PROC
IF ( &CLS = 1 )
TOG (S,CLS,&CHSPORT,'0','1')
IF ( &CLS = 2 )
TOG (S,CLS,&CHSEDAN,'0','1')
IF ( &CLS = 3 )
TOG (S,CLS,&CHLUXRY,'0','1')
IF ( &PERFMOD |= ' ' )
&PERFMOD = '/'
&PERFORM = 'MODERATE'
ELSE &PERFORM = '0'
TOG (M,PERFMOD,&CHPERFO,'0','1')
IF ( &PERFSUP |= ' ' )
&PERFSUP = '/'
&PERFORM = 'SUPER'
ELSE &PERFORM = '0'
TOG (M,PERFSUP,&CHSUPER,'0','1')
IF ( &PERFULT |= ' ' )
&PERFULT = '/'
&PERFORM = 'ULTRA'
ELSE &PERFORM = '0'
TOG (M,PERFULT,&CHULTRA,'0','1')
)END
)ATTR DEFAULT(%+_)
@ TYPE(INPUT) INTENS(LOW)
)BODY
%-------------------------------TEST PANEL-----------------------------
%COMMAND ===>_ZCMD
%
+ PHONE %===>@CVAR + (999)999-999
+ TIME %===>@FVAR + HH:MM
+
+
+
+
+ Press%ENTER+to leave this panel
)INIT
)PROC
VEDIT (CVAR)
VEDIT (FVAR)
)END
where:
variable
Name of the variable to be checked.
NONBLANK
Optional keyword. Specifies that the variable must contain a value and not all
blanks. NONBLANK, or NB, can be specified with another type verification,
such as ALPHA, NUM, or HEX. Do this by specifying the NONBLANK
keyword after the variable name but before the other keyword. Example:
VER (&A,NB,PICT,NNN-NNNN)
is equivalent to:
VER (&A,NONBLANK)
VER (&A,PICT,NNN-NNNN)
If the variable does not meet the verification criteria, ISPF displays a message.
The message can be specified in the MSG=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’s
)PROC and )REINIT statements is performed.
keyword
Specifies the verification criteria. One of the following keywords must be
specified:
The variable being verified can contain leading blanks. Any trailing blanks
in the variable’s value in the variable pool cause a verify error condition.
Trailing blanks result from defining the variable by using the VDEFINE
service with the NOBSCAN option specified. These trailing blanks are not
overlaid when the variable is updated by a panel operation if the
corresponding panel field has a justification attribute of LEFT or ASIS.
Example:
)PROC
VER (&vara,NB,INCLUDE,IMBLK,ALPHAB,NUM,MSG=NSL001)
VER (&varb,NB,INCLUDE,IMBLK,NUM,MSG=NSL002)
VER (&varc,NB,INCLUDE,ALPHA,NUM,MSG=NSL003)
.
.
.
This example illustrates that the variable vara can contain any alphabetic
(A–Z or a–z) or numeric character as well as imbedded blanks; varb can
contain numeric characters only and imbedded blanks; and variable varc
can only contain alphabetic characters (A–Z, a–z, #, $, or @) and/or
numeric characters (0–9), but no imbedded blanks.
| IPADDR4
| The variable must contain a valid IP (Internet Protocol) address in dotted
| decimal notation (as the decimal representation of four 8-bit values,
| concatenated with dots). For example, 128.2.7.9 is a valid IP version 4
| address. The first octed (8-bit value) can range from 0 to 223 in decimal
| notation. The remaining three octets of the IP version 4 address can range
You can specify the relational operator either as a special symbol (=, <,
and so forth) or as a character symbol (EQ, LT, and so forth) expressed
in uppercase. A relational operator can be expressed either as a literal
This statement verifies that the number of characters defining the value
of variable &NAME is less than or equal to 8.
Example:
VER (&NAME,LEN,NG,&SIZE)
This statement verifies that the number of characters defining the value
of variable &NAME is not greater than the value of dialog variable
&SIZE
If a variable has been defined using the VDEFINE service but currently
has no value, ISPF uses a length value of zero for comparison.
LIST,value1,value2, ...
The variable must contain one of the listed values. The maximum number
of listed values allowed is 100.
LISTV,varlist
Allows the use of a variable containing a list of values to be used for
variable field verification.
varlist
When defined within the panel, this is the name of a variable,
preceded by an &, that contains a list of values that will be compared
to the value contained in the verify variable. The varlist variable can
contain up to 100 values. Each value in the varlist variable must be
delimited by a comma or at least one blank. A value in the varlist
variable containing any of the following special characters should be
enclosed in single quotes (’ ’):
Blank < ( + | ) ; ¬ - , > : =
To specify the ampersand character in a value contained in the varlist
variable, or a period in a value contained in the varlist variable when it
immediately follows a dialog variable name, you must double these
Example:
)PROC
.
.
.
VER (&areacode,NONBLANK,LISTV,&varlist,MSG=NSL011)
.
.
.
The variable specified in the VER LISTV variable parameter must be set
before being referenced in the statement. (The variable used in the
previous example could have been assigned the following values in the
)INIT section of the panel definition.)
&varlist ='919 914 212'
In this example, the value must start with an alphabetic character, followed
by a slash, followed by 3 numeric characters. The length of the variable
value and the picture string must be the same. Trailing blanks are not
included.
PICTCN,mask-character,field-mask,string
The VER statement keyword PICTCN, with its three parameters, enables
you to check a variable for specific constants within the variable.
VER (variable,PICTCN,mask-character,field-mask,string)
variable
Name of the variable to be checked.
mask-character
Any special character that represents itself. If you select one of the
following special characters as a mask-character, the
mask-character and the field-mask containing the mask-character
must be enclosed in quotes:
¬ ’not’ symbol
= equal sign
. period
> greater than symbol
< less than sysmbol
) right parenthesis
( left parenthesis
‘ single quote
Examples
In this VER PICTCN statement the mask-character is the asterisk (*), the
constants are O and S. The picture string characters are N (any numeric
character 0–9) and A (any alphabetic character A-Z, a-z,#,$,@). If fld1 =
OS390R8 it passes verification. If fld1 = OS39018 it fails because 1 is not an
alphabetic character.
VER (&fld1,PICTCN,*,OS*****,OSNNNAN)
RANGE,lower,upper
The variable must contain all numeric characters (0–9). It can also contain a
leading plus (+) or minus ( −). Its value must fall within the specified
lower and upper limits, which can be either positive or negative. The
length of the specified variable is limited to 16 digits, in addition to the
plus or minus sign. Further, the lower and upper parameters can consist of
no more than 16 digits each, in addition to the plus or minus sign, if used.
Any characters in excess of the 16 allowed are truncated.
STDDATE
The standard date (STDDATE) format contains 10 characters, including the
national language date delimiter. The format represents a date expressed in
a 4-digit year (YYYY), 2-digit month (MM), and a 2-digit day (DD). Valid
values for YYYY are 0000-9999. Valid values for MM are 01-12. Valid values
for DD are 01-31. ISPF verifies for a valid date and national language date
delimiter. For the Untied States, the format is YYYY/MM/DD.
STDTIME
The standard time (STDTIME) format contains 8 characters, including the
national language time delimiter. The format represents a time expressed in
a 2-digit hour (HH), 2-digit minute (MM), and a 2-digit second (SS). Valid
values for HH are 00-23. Valid values for MM are 00-59. Valid values for SS
are 00-59. For the Untied States, the format is HH:MM:SS.
MSG=value
value contains the message issued if the current value of the variable does not
meet the criteria being checked.
Figure 73 shows a sample panel with VER statements to verify that information
entered meets the following criteria:
v The truncated value of TYPECHG is N, U, or D.
v The three name variables, LNAME, FNAME, and I, contain all alphabetic
characters.
v The PHA (area code) field contains all numeric characters and a length of 3.
v The PHNUM (local number) field contains 3 numeric characters followed by a
hyphen, followed by 4 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 is displayed if the variable
fails the verification test.
)BODY
%---------------------------- EMPLOYEE RECORDS ------------------------
%COMMAND===>_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 NUMBER%===>_PHNUM +
+
)INIT
IF (&PHA = ‘ ’)
&PHA = 301
&TYPECHG = TRANS (&TYPECHG N,NEW U,UPDATE D,DELETE)
)PROC
&TYPECHG = TRUNC (&TYPECHG,1)
VER (&TYPECHG,LIST,N,U,D,MSG=EMPX210)
VER (&LNAME,ALPHAB)
VER (&FNAME,ALPHAB)
VER (&I,ALPHAB)
VER (&PHA,LEN,‘=’,3)
VER (&PHA,NUM)
VER (&PHNUM,PICT,‘NNN-NNNN’)
)END
where:
name-list
Specifies one or more dialog variables, separated by commas or blanks,
whose values are to be copied from the shared or application profile pool.
The names are passed in standard name-list format. A name-list of more
than one name must be enclosed in parentheses.
ASIS Variable values are to be copied from the shared variable pool, if found
there; otherwise, they are to be copied from the application profile pool.
ASIS is the default value.
SHARED
Variable values are to be copied from the shared variable pool.
PROFILE
Variable values are to be copied from the application profile variable pool.
ISPF deletes any shared pool variables having the same name, even if they
do not exist in the application profile pool.
To give you control over the pool from which ISPF retrieves variable values, the
VGET statement in a panel’s )INIT, )REINIT, or )PROC section allows you to
specify that ISPF is to copy one or more variable values from either the shared
pool or application profile pool to the function pool. If one or more of these
variables already exist in the function pool, their values are updated with the
values of the corresponding variables accessed by the VGET statement. Any of
these variables that do not exist in the function pool are created and updated with
the values of those accessed by the VGET statement.
Example:
)PROC
VGET (XYZ ABC) PROFILE
This VGET statement in a panel’s )PROC section causes the current values for
variables XYZ and ABC to be copied from the profile pool and updated in the
function pool and used as the variable values for display of a panel field. If XYZ
and ABC do not already exist in the function pool, they are created then updated.
This statement causes ISPF to retrieve the current value of variable FNAME from
the profile pool and display it in the corresponding panel field. Any updates to the
variable are made to the profile pool. ISPF deletes the variable from the shared
pool.
where:
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.
ASIS Specifies that the variables are to be copied to the pool in which they
already exist 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 only to the shared pool.
SHARED
Specifies that the variables are to be copied to the shared pool.
PROFILE
Specifies that the variables are to be copied to the application profile pool.
Any shared pool variables with the same names are deleted.
Example:
)PROC
VPUT (XYZ ABC) PROFILE
This statement 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 command procedure except that the ISPEXEC command verb
is omitted.
Control variables are automatically reset to blank when the panel display service
first receives control. If .MSG, .CURSOR, and .CSRPOS 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 placement. Under certain
conditions, processing of the initialization section is bypassed.
Once .CURSOR, .CSRPOS, .MSG, and .RESP have been set to nonblank by panel
processing, they retain their initial values until the panel is displayed, or
redisplayed, at which time they are reset.
Figure 74 on page 267 shows an example in which both .HELP and .CURSOR have
been set in the )INIT section of the panel definition.
)BODY
%---------------------------- EMPLOYEE RECORDS ------------------------------
%COMMAND===>_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 NUMBER%===>_PHNUM +
+
)INIT
.HELP = PERS032
.CURSOR = TYPECHG
IF (&PHA = ‘ ’)
&PHA = 301
&TYPECHG = TRANS (&TYPECHG N,NEW U,UPDATE D,DELETE)
)PROC
&TYPECHG = TRUNC (&TYPECHG,1)
VER (&TYPECHG,LIST,N,U,D,MSG=EMPX210)
VER (&LNAME,ALPHAB)
VER (&FNAME,ALPHAB)
VER (&I,ALPHAB)
VER (&PHA,NUM)
VER (&PHNUM,PICT,‘NNN-NNNN’)
)END
.ALARM
The .ALARM control variable can be set in an assignment statement within the
)INIT, )REINIT, or )PROC sections to control the terminal alarm.
.ALARM = value
where:
value
YES, NO, a blank, or null.
YES Causes the terminal alarm to sound when the panel is displayed.
NO Causes the terminal alarm to be silent when the panel is displayed.
blank Causes the terminal alarm to be silent when the panel is displayed.
null Causes the terminal alarm to be silent when the panel is displayed.
Note: value can also be a variable containing the value YES, NO, a blank or
null.
Examples:
In the first example, the .ALARM setting is YES, which causes the terminal alarm
to sound when the panel is displayed. In the second example, the alarm setting can
be turned on (YES) or off (NO) according to the current value of the variable
ALRM. If the panel is displayed with a message that has .ALARM = YES, the
alarm sounds regardless of the setting of .ALARM within the panel assignment
statement.
Control variable .ALARM can also appear on the right side of an assignment
statement. For example:
&ALRM = .ALARM
where:
field
Can be:
v The name of any input or output field that occurs in the panel body or area
section.
v The .CURSOR control variable, which indicates the field where the cursor is
currently positioned.
v The name of a dialog variable, preceded by an ampersand. The variable
must contain the name of an input or output field that occurs in the panel
body, .CURSOR, or a blank.
keyword (value)
A legitimate attribute keyword and value for that attribute.
Examples:
.ATTR (.CURSOR) = ‘COLOR(YELLOW) HILITE(REVERSE)’
.ATTR (&FLD) = ‘HILITE(&HLTE)’
.ATTR (&FLD) = ‘PAS(ON)’
In the first example, the color and highlighting of the field containing the cursor is
overridden. In the second example, the name of the field whose highlighting
attribute is to be overridden is found in dialog variable FLD and the highlighting
value is in variable HLTE.
Overriding the cursor field (.CURSOR) and the alternate long or short message
field attributes can be particularly useful if the panel is being redisplayed because
of a translation or verification failure. When such a failure occurs, the cursor is
automatically placed on the field in error and the message ID to be displayed is
automatically placed in the message area.
This will cause the field in error to be redisplayed in red and underscored, and the
error message to blink.
Only the specified attributes are overridden. Any other attributes associated with
the field remain in effect.
When a field attribute is overridden in the )INIT section of a panel, the override
remains in effect if the panel is redisplayed (unless the attribute is again
overridden by another statement in the )REINIT section). However, an attribute
override in the )PROC or )REINIT section of the panel remains in effect only for a
single redisplay of that panel, should a redisplay occur. This allows one field at a
time to be highlighted as errors are found. Once the user corrects the error, the
field reverts to its normal attributes.
.ATTRCHAR
The .ATTRCHAR control variable can be set in the )INIT, )REINIT, or )PROC
section to override attributes for all fields related to an existing attribute character.
.ATTRCHAR(<char)=‘keyword(value),keyword(value) ....’
where:
char
Can be:
v One of the special characters, one-digit character, or two-digit hexadecimal
codes used to denote attribute characters within the panel.
v The name of a dialog variable, the value of which must contain an attribute
character, two-digit hexadecimal code, or a blank.
char follows the rules for literals. That is, it must be enclosed in single quotes if
it contains any of the special characters listed in “Using Variables and Literal
Expressions in Text Fields” on page 109.
keyword (value)
A legitimate attribute keyword and value for that attribute.
When a field attribute is overridden in the )INIT section of a panel, the override
remains in effect if the panel is redisplayed unless the attribute is again overridden
by another statement in the )REINIT section. However, an attribute override in the
)PROC or )REINIT section of the panel remains in effect only for a single redisplay
of that panel, should a redisplay occur.
See “Relationship to Control Variables .ATTR and .ATTRCHAR” on page 205 for a
description of appropriate and inappropriate override conditions for CUA and
basic panel-element attributes.
Any scrolling activity performed when temporary overrides are in effect causes the
affected attributes to be cleared, including any temporary overrides in the fixed
portion of the panel, and the original attributes to be put into effect. In addition, if
a table is redisplayed after model sets have been selected and a scroll has taken
place, any .ATTR or .ATTRCHAR temporary overrides are not put into effect.
However, if you attempt to change the TYPE of a field from TEXT to INPUT, a
dialog error will result.
See “Relationship to Control Variables .ATTR and .ATTRCHAR” on page 205 for
a description of appropriate and inappropriate override conditions for CUA and
basic panel-element attributes.
v The command field or scroll amount field cannot be changed to TYPE(OUTPUT)
by an attribute override assignment.
v The first .ATTR assignment that is encountered within a panel section for a
particular field is the one that is honored. Subsequent .ATTR assignments for
that field are ignored. In the following example, FIELD1 will be blue and
FIELD2 will be yellow:
)INIT
.ATTR(FIELD1) = COLOR(BLUE)
.ATTR(FIELD2) = COLOR(YELLOW)
.ATTR(FIELD1) = COLOR(RED)
v Similarly, the first .ATTRCHAR assignment that is encountered within a panel
section for a particular attribute character or hexadecimal code is the one that is
honored.
v Be careful when overriding the pad character. Since the string of overridden
attribute keywords is in quotes, the new pad character must be specified either
without quotes or in double quotes, as follows:
%===>_FIELD1 +
)INIT
.ATTRCHAR(_) = ‘COLOR(YELLOW)’
.ATTR(FIELD1) = ‘COLOR(WHITE)’
)REINIT
IF (.MSG ¬= ‘ ’)
.ATTR(FIELD1) = ‘COLOR(RED) HILITE(BLINK)’
.ATTRCHAR(_) = ‘COLOR(BLUE)’
)PROC
VER(&FIELD1,NB)
)END
When this panel is initially displayed, FIELD1 will be white and all other input
fields will be yellow. If the panel is redisplayed with a message, FIELD1 will be
blinking red and all other input fields will be blue. If the panel is redisplayed
without a message, FIELD1 will revert to white, and all other input fields will
revert to yellow.
.AUTOSEL
The .AUTOSEL control variable is used in conjunction with table display panels to
specify auto-selection.
.AUTOSEL = YES | NO
where:
YES
Indicates that if the CSRROW parameter or control variable is specified, the
row is to be retrieved even if the user did not explicitly select the row. This is
called auto-selection.
NO
Indicates that if the CSRROW parameter or control variable is specified, the
row is to be retrieved only if the user explicitly selects the row by entering
data in the corresponding model set on the screen.
.CSRPOS
The .CSRPOS control variable can be set in the )INIT or )REINIT section and
controls where in a field the cursor is to be set.
.CSRPOS = integer
variable = .CSRPOS
where:
The .CSRPOS control variable can appear on the right side of an assignment
statement, making it act like a function. Thus, the cursor field name and its
position within a field can be stored in variables.
Example:
&CPOS = .CSRPOS
In the preceding statement, the position (an integer value) of the cursor within the
input or output field or area is returned in variable CPOS.
.CSRROW
The .CSRROW control variable is used in conjunction with table display panels.
.CSRROW = CRP-number
variable = .CSRROW
where:
CRP-number
Table current-row-pointer number corresponding to the model set on the
display where the cursor is to be placed. If the specified row does not have a
corresponding model set displayed on the screen, the cursor is placed at the
command field. The row will be auto-selected under either of the following
conditions:
v If the CSRROW parameter is specified on the TBDISPL service either
without AUTOSEL(NO) being specified on TBDISPL or .AUTOSEL(NO)
specified as a panel definition statement.
v If the .CSRROW control variable is specified as a panel definition statement
either without AUTOSEL(NO) being specified on TBDISPL or
.AUTOSEL(NO) specified as a panel definition statement.
The .CSRROW control variable can appear on the right side of an assignment
statement, making it act like a function. Thus, the table row number corresponding
to the model set on the display where the cursor is to be placed can be stored in a
variable.
Example:
&CROW = .CSRROW
.CURSOR
The .CURSOR control variable can be set in the )INIT or )REINIT section to control
the placement of the cursor.
.CURSOR = string
variable = .CURSOR
Example:
.CURSOR = DSN
This example causes the cursor to be placed at field DSN. This variable is
automatically set to the field last referred to whenever .MSG is set explicitly or
indirectly by TRANS or VER statements. The .CURSOR control variable overrides
any cursor position specified on the DISPLAY or TBDISPL service request.
The .CURSOR control variable can appear on the right side of an assignment
statement, making it look like a function.
Example:
&CNAME = .CURSOR
The cursor is automatically placed at the beginning of the field that was last
referred to in any panel definition statement when a message is displayed because
of:
v A verification failure that sets .MSG
v A .MSG=value condition in a TRANS
v An explicit setting of .MSG
Examples:
&XYZ = TRANS (&A ... MSG=xxxxx)
&A = TRANS (&XYZ ... MSG=xxxxx)
VER (&XYZ,NONBLANK) VER (&B,ALPHA)
.HELP
The .HELP control variable can be set in the initialization section to establish a
tutorial (extended help) panel to be displayed if the user enters the HELP
command.
.HELP = panelname
variable = .HELP
where:
panelname
Name of the tutorial panel to be displayed.
Example:
.HELP = ISPTE
This example causes tutorial panel ISPTE to be displayed when the user enters the
HELP command.
The .HELP control variable can appear on the right side of an assignment
statement, making it act like a function.
.HHELP
The .HHELP control variable can be set in the initialization section to establish a
tutorial (extended help) panel to be displayed if the user enters the HELP
command from within HELP.
.HHELP = panelname
where:
panelname
Name of the tutorial panel for help to be displayed.
Example:
.HHELP = ISP00006
This example causes tutorial panel ISP00006 to be displayed when the user enters
the HELP command from HELP. This also happens to be the default setting. The
Dialog Tag Language generates the setting .HHELP = ISP00006 for any help panels
it builds.
.MSG
The .MSG control variable can be set to a message ID, typically in the processing
section, to cause a message to be displayed.
.MSG = msgid
variable = .MSG
Example:
.MSG = ISPE016
The .MSG control variable can appear on the right side of an assignment
statement, making it act like a function.
.NRET
On enabled panels, the .NRET key retrieves the library names from the current
library referral list or data set, or workstation file name from the current data set
referral list. Unlike some othe dot variables, .NRET can be assigned multiple times
in panel logic.
.NRET = ON|OFF|DSN|LIB
where:
ON
Sets the NRETRIEV command table entry active.
OFF
Sets the NRETRIEV command table entry inactive.
DSN
Tells ISPF that the NRETRIEV command retrieved a name from the current
data set referral list.
LIB
Tells ISPF that the NRETRIEV command retrieved a name from the current
library referral list.
Other values are reserved by ISPF. No messages are given in case of an assignment
that is not valid.
When .NRET is used as the source for an assignment statement it always returns a
null.
Variable Function
ZNRPROJ Project name
.PFKEY
The .PFKEY control variable is set to a value that reflects the function key pressed
by a user while the panel is being displayed.
.PFKEY = value
variable = .PFKEY
where:
value
The function key (F01–F24) pressed by a user.
The value of .PFKEY can be examined in the )PROC section of the panel and
copied into dialog variables through use of assignment statements. If no function
key is pressed by the user, .PFKEY contains blanks. .PFKEY is blank during
processing of the )INIT and )REINIT sections.
The .PFKEY control variable can appear on the right side of an assignment
statement, making it act like a function.
.RESP
The .RESP control variable indicates normal or exception response on the part of the
user.
where:
ENTER
Normal response. ISPF always sets .RESP to ENTER unless the user enters an
END or RETURN command.
END
Exception response. ISPF sets .RESP to END if the user enters an END or
RETURN command.
Example:
IF (.RESP = END)
Setting .RESP in the )INIT or )REINIT section of the panel definition has no effect
if a message is being displayed.
The )INIT or )REINIT section can be coded with the following statements to assure
that the panel is not displayed, regardless of whether a message was specified on
the DISPLAY service request.
Example:
)INIT or )REINIT
IF (.MSG ¬= &Z)
.MSG = &Z
.RESP = END
This variable can be set in a panel processing section to force an END or ENTER
response. This can be particularly useful if a verification has failed (or .MSG was
set) and you want that panel to be redisplayed with the message even if the user
entered END or RETURN.
The .RESP control variable can appear on the right side of an assignment
statement, making it act like a function.
.TRAIL
The .TRAIL control variable contains the remainder following a truncate (TRUNC)
operation.
variable = .TRAIL
where:
variable
Assigned the value in .TRAIL.
.ZVARS
The .ZVARS control variable can be set in the initialization section to a list of
variable names that correspond to Z place-holders in the body and/or model lines.
where:
var
Name that corresponds to a Z place-holder.
The .ZVARS control variable can appear on the right side of an assignment
statement, making it act like a function.
Use of place-holders 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. The names are in 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 place-holder that appears in the body or model
lines. The second name in the list corresponds to the second Z, and so forth.
In the example shown in Figure 75, the input field labeled TYPE is 1 character long
and the next two input fields are each 2 characters long. The names of these three
fields are TYPFLD, LNGFLD, and OFFSET, respectively.
)BODY
---------------------------- TITLE LINE ------------------------------------
%COMMAND===>_ZCMD %
% .
.
.
.
+ TYPE %===>_Z+ (A for alpha, N for numeric)
+ LENGTH%===>_Z + (0 to 99)
+ OFFSET%===>_Z + (0 to 99)
.
.
.
)INIT
.ZVARS = '(TYPFLD LNGFLD OFFSET)'
The name list assigned to .ZVARS must be enclosed in single quotes because the
list contains special characters (parentheses) and blanks. As with other name lists,
either commas or blanks can be used to separate the names in the list. .ZVARS can
also be set to a dialog variable that has a valid name list as its value. For example:
.ZVARS = &NLIST
where the value of &NLIST is (TYPFLD LNGFLD OFFSET). See “Defining the Area
Section” on page 164 for the description of how to use Z place-holders in scrollable
panel areas.
All ISPF help panels that are created using the Dialog Tag Language display in a
pop-up window. ISPF help panels created using the ISPF panel source statements
and containing the WINDOW keyword on the panel’s )BODY statement also
display in a pop-up window. If field-level help is being displayed, the ISPF help
facility attempts to position the pop-up window relative to the object field.
The width and depth values specified on the HELP tag or on the WINDOW
keyword must be valid for the device on which these help panels are displayed.
Refer to the ISPF Dialog Tag Language Guide and Reference for details on the HELP
tag. See page 207 for details on the WINDOW keyword.
You can provide the following types of help or tutorial panels. The ISPF tutorial is
shipped with the product.
Extended help (panel help)
Provides general information about the contents of a panel. The
information in extended help can be an overall explanation of items on the
panel, an explanation of the panel’s purpose in the application, or
instructions for the user to interact with the panel.
See the description of the .HELP variable in “.HELP” on page 274 for more
information.
Field-level help
Provides help panels for fields defined on an application panel.
When the user enters the HELP command, ISPF displays the help panel
defined for the field on which the cursor is located.
You may define field-level help for action bar choices and pull-down
choices, as well as for fields within the panel body. If you are creating
panels with field level help using Dialog Tag Language, refer to the ISPF
Dialog Tag Language Guide and Reference for a description of the tag
attributes you should use. Otherwise, for further information about
defining the )HELP section of the panel, refer to “Defining the HELP
Section” on page 214.
HELP FOR HELP
Provides help for using the help or tutorial facility.
Keys help
Provides a brief description of each key defined for a panel. See “Keys
Help” on page 95 for more information on keys help.
Message help
Provides help for ISPF messages. See “How to Define a Message” on
page 290 for more information.
Processing Help
You can request help from an application panel or a help panel. You can also
specify a keylist to be associated with a help panel.
Figure 76 on page 281 illustrates the panel flow for help according to the ISPF
search sequences.
Application
panel Application
2 with long 3 panel
message
Is ISPF searches Is
Is
message No field-level* No panel No Application
help help help
Tutor ial
defined defined defined
? ? ?
If the panel contains a short message, and/or long message and the user requests
KEYSHELP, ISPF displays the keys help panel without following the search
sequence as illustrated in Figure 76.
If the panel contains a short message, and/or long message and the user requests
EXHELP, ISPF displays the extended help panel without following the search
sequence as illustrated in Figure 76.
Note: If the user requests EXHELP from the extended help panel, ISPF issues a
message stating that extended help is currently displayed.
v If the user requests KEYSHELP from any help or tutorial panel (except the keys
help panel), ISPF displays keys help.
Note: If the user requests KEYSHELP from the keys help panel, ISPF issues a
message stating that keys help is currently displayed.
v If the help panel contains a reference phrase, and the user requests HELP while
the cursor is positioned on a reference phrase, ISPF displays the reference phrase
help panel defined. When a reference phrase help panel is cancelled, the help
panel from which reference phrase help was requested is redisplayed. All other
help facilities are available from a reference phrase help panel.
Ending Help
When the user requests END or EXIT from any help panel (except the Help
Tutorial panel), ISPF returns to the original application panel. If the user requests
END or EXIT from the Help Tutorial panel, ISPF returns to the previous panel.
If the user requests CANCEL from any help or tutorial panel, ISPF returns to the
previous panel.
The key settings and forms for ISPHELP are shown in Table 16. Refer to the ISPF
User’s Guide for more information on keylists.
Table 16. ISPHELP Key Settings
Key Command Form
F1 HELP Short
F2 SPLIT Long
F3 EXIT Short
F5 EXHELP Short
F6 KEYSHELP Short
F7 UP Long
F8 DOWN Long
F9 SWAP Long
F10 LEFT Long
F11 RIGHT Long
F12 CANCEL Short
A user invokes the ISPF program that displays tutorial panels in four ways:
v As an option from a menu
v Directly or indirectly from any non-tutorial panel by entering the HELP
command or by pressing the function key assigned to the HELP command.
v By selecting a choice from a Help pull-down
v Through the use of the TUTOR command
Transfer into and out of the tutorial using the HELP command is transparent (no
action required) to ISPF functions.
ISPF tutorial panels are arranged in a hierarchy. Generally, this hierarchy is a table
of contents, each succeeding level of which contains a more detailed list of topics.
When the tutorial is entered from a menu, the first panel to be displayed is usually
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 you were doing
when help was requested.
When viewing the tutorial, you can select topics by entering a selection code or by
simply pressing Enter to view the next topic. On any panel, you can 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
TOC or T To display the table of contents
INDEX or I To display the tutorial index
You can use the following keys whenever you are in the tutorial:
ENTER To display the next sequential page or scroll a scrollable help panel
HELP To redisplay this page for help information
END To terminate the tutorial
UP To display a higher level list of topics (rather than typing UP)
DOWN To skip to the next topic (rather than typing SKIP)
RIGHT To display the next page (rather than pressing Enter) or to scroll a
scrollable help panel
LEFT To display the previous page (rather than typing BACK) or to
scroll a scrollable help panel
Cursor positioning usually defines which scrollable area will be scrolled. However,
when in tutorial, if the cursor is not within a scrollable area, the first area defined
in the )BODY section will be scrolled. The LEFT and RIGHT commands should be
included in any keylist specified for a scrollable help panel.
If you issue the HELP command while viewing a tutorial, ISPF displays a tutorial
panel that contains a summary of commands that are available to the tutorial user.
When you end the tutorial, using the END or RETURN command, the panel from
which you entered the tutorial is displayed again.
The name of the top panel must be specified by dialog variable ZHTOP. 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 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 “Example of a Primary Option Menu” on
page 122.
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 topic
selected by the user, by translating ZCMD to a panel name. The panel
name can be preceded by an asterisk (*) to indicate a topic that can be
explicitly selected by the user, but which is bypassed if the user presses
Enter to view the next topic.
The maximum number of entries allowed is 100.
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 can 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 if it is selected from the tutorial index and the user then
enters the UP command.
The ZIND variable is used only on index pages; it should not be set on
other tutorial panels.
Variables SEL, UP, and CONT are provided for compatibility with the previous SPF
product. Use of variable names ZSEL, ZUP, and ZCONT is recommended.
A panel cannot have both a continuation panel and selectable topics. However, the
last panel in a sequence of continuation panels can have selectable topics.
Figure 77 shows a sample hierarchy of tutorial panels. Panels A and B have three
selectable topics each. Panels C and D2 have two selectable topics each. The other
panels have no selectable topics. Panel D1 has a continuation page (D2), and panel
F1 has two continuation pages (F2 and F3).
In Figure 77, assuming that panel A is the highest-level table of contents, the
viewer can get to A from any point by issuing the TOC command. A viewer
currently on panel F1, F2, or F3 can return to panel B by issuing the BACK
command. Then, from B, the SKIP command would take the viewer to panel C. If
the user enters the TUTOR command along with a panel identifier parameter, a
specific tutorial panel within the Help hierarchy is displayed. From that point on,
any movement within the hierarchy is the same as if the user had reached the
panel by any other means.
D1
B C
D2
F1
E G H I J K
F2
F3
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 Enter to view
each topic. The order in which topics are presented when Enter is pressed is the
same as the order in which they appear in the TRANS function. If option 3 is
selected, pressing the Enter key does not display the other topics.
In panel B, the name of the parent panel (A) is stored in variable ZUP.
+
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 try out 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
Panel F2 ( Figure 79) 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.
If you call ISPTUTOR from an edit macro, be sure to save and restore the
environment at that point. For example:
ISREDIT MACRO
ISPEXEC CONTROL DISPLAY SAVE
ISPEXEC SELECT PGM(ISPTUTOR) PARM(panel-id)
ISPEXEC CONTROL DISPLAY RESTORE
EXIT
ISPF message definitions are stored in a message library and displayed by using
the DISPLAY, TBDISPL, or SETMSG service, written to the ISPF log file by the
LOG service, or copied to variables specified in a GETMSG service request. You
create or change messages by editing directly into the message library. ISPF
interprets the messages during processing. No compile or preprocessing step is
required.
Note: When not in TEST mode, the most recently accessed message definitions are
retained in virtual storage for performance reasons. If you have modified a
message, using TEST mode will ensure that the updated version of the
message will be picked up by ISPF services. See “ISPF Test and Trace
Modes” on page 24 for more information.
Several messages can be within each member of the message library. When using
the PDF editor to create a message file, prevent numbers from appearing in the file
by specifying NUMBER OFF.
The member name is determined by truncating the message ID after the second
digit of the number.
For example:
All messages that have IDs beginning with the characters G01, for example, must
be in member G01. Figure 80 on page 290 shows an example of a member in the
message library. This member contains all message IDs that begin with EMPX21.
Line 1:
msgid ['short message'][.HELP=panel|*][.ALARM=YES|NO]
[NOKANA|KANA][.WINDOW=RESP|NORESP|LRESP|LNORESP]
[.TYPE=NOTIFY|WARNING|ACTION|CRITICAL]
Line 2:
'long message' [+]
Line 3:
['long message' [+] ]
Line 4:
['long message' [+] ]
Line n:
['long message' ]
msgid
Required. Each message is referred to by a message identifier (ID). A message
ID can be four to eight characters long. It is defined as follows:
v Prefix: one to five alphabetic characters (A-Z, #, $, or @)
v Number: three numeric characters (0–9)
v 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. Use the message ID suffix if more than
10 messages are to be included in one member.
If the user enters the HELP command, the long message is displayed, with a
high intensity attribute. If the user enters the HELP command again, tutorial
mode is entered.
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.
The .TYPE keyword overrides any .ALARM value that can be specified and a
.TYPE=CRITICAL message is always displayed as though .WINDOW=RESP
was specified. The color and highlighting characteristics defined above apply
to messages displayed in the default short/long location and a pop-up
message window. The dialog application controls the field attributes for
alternate message location fields.
long message
Required. If a short message is not specified, the long message is automatically
displayed first, with a high intensity attribute, in the long message area or in a
message pop-up window. The long message is displayed in a pop-up window
if the text is longer than will fit in the long message area, if you defined a
message window using the .WINDOW keyword for the message, or if you
have selected this option on the Settings panel.
The location of the short and long messages in a user-designed panel is
specified by the SMSG and LMSG keywords. These keywords are defined
under “Defining the Body Section” on page 207.
The maximum length of the long message text is 512 bytes. If the message text
is greater than 512 bytes, it will be truncated. Messages greater than 78 bytes
require multiple long message lines. The continuation of the long message text
into additional lines is indicated by one or more spaces following the ending
quote (’) followed by a plus (+) sign. For example:
ISPX001 'short message text'
'Long message text' +
' continued over ' +
'multiple lines. The maximum length is ' +
'512 bytes.'
For the best results, use the fewest number of message lines possible.
ISPX001 'short message text'
'Long message text continued over multiple lines. The maximum' +
' length is 512 bytes.'
Consecutive SOSI characters resulting from multiple lines of DBCS data are
automatically removed. For example,
'Long messageSDBS' +
O I
'SCSSdata.'
The ending SI in the first record and the beginning SO in the second record are
automatically removed.
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.
The long message text will be written to multiple records if the text is greater
than 78 characters.
Note: If you are running in GUI mode, messages that would appear in a pop-up
window in non-GUI mode will be displayed in a message box. The message
box will include the appropriate icon as defined by CUA guidelines:
v .TYPE=NOTIFY produces an i in a circle, the international symbol for
information
v .TYPE=WARNING produces an exclamation point (!)
v .TYPE=ACTION or .TYPE=CRITICAL produces a red circle with a
diagonal line across it
If your dialog application panels are generated using the DTL, the dialog manager
displays the messages as shown in Table 18.
Table 18. Message Display Using DTL
Message Definition Text Intensity
.TYPE=NOTIFY .ALARM=YES|NO White High
.TYPE=WARNING .ALARM=YES|NO Yellow High
.TYPE=ACTION .ALARM=YES|NO Red High
.TYPE=CRITICAL .ALARM=YES|NO Red High
.TYPE not specified .ALARM=NO White High
.TYPE not specified .ALARM=YES Yellow High
If you define your panels using the panel definition statements and you use an
alternate message placement, the dialog (using the field attributes) controls the
message text color and highlighting.
Panels or messages tagged with the CCSID keyword invoke the TRANS service.
The to CCSID is the value in ZTERMCID. This value is filled in during ISPF
initialization as the result of the terminal query done by ISPF. The from CCSID is
the CCSID entered following the CCSID keyword.
If the CCSID keyword is used, the characters in the message are translated to the
equivalent characters in the terminal code page for display. This translation occurs
only if the terminal has returned information to allow ISPF to determine its CCSID
and only if the code page indicated by the CCSID is different from the code page
of the terminal.
Note: The same CCSID is used for all messages within a message member.
Therefore, this keyword should be in the first record and start in the first
column of the message member. If the .CCSID keyword is not in the first
record or does not start in the first column of the first record, it is ignored
and character translation does not occur.
.CCSID=xxxxx
ISPX001 'short message text'
'Long message text' +
' continued over ' +
'multiple lines. The maximum length is ' +
'512 bytes.'
The beginning and ending inhibited character tables are enhanced to include
characters from the extended code pages for the supported Asian Pacific languages
in formatting message text. The CCSID of the message is used to determine which
tables to use. If no CCSID is specified, the session language ID and terminal type
determine the tables used. See “Chapter 10. Extended Code Page Support” on
page 311 and “Message Pop-Up Text Formatting”.
For the cursor to be within the bounds of the message pop-up, it must be inside
the window frame of the message. Placing the cursor on the message window
frame does not result in the message window being cancelled. Note that
asynchronous command processing is not suspended when the cursor is placed
inside a message window. Therefore, commands such as PRINT and SPLIT are
executed when typed on the command line and Enter pressed, even if the cursor is
placed inside a modeless message pop-up window.
The HELP command will not display message help for a message window that has
been cancelled.
The width of the message pop-up window is determined based on the location
where the window will be placed. If the message is displayed as a result of a panel
verification error, the message pop-up is displayed relative to the field in error. If
the MSGLOC parameter is specified on the DISPLAY or SETMSG service, the
message pop-up is displayed relative to the specified field name. If the MSGLOC
parameter is not specified, the message pop-up will be displayed at the bottom of
the logical screen or below the active ADDPOP pop-up window, if one exists.
The width of the window will be the width from this determined location to the
right edge of the screen. Note that this width will vary based on the screen size the
user is running with.
If the data contains double-byte characters and the message CCSID is 00930, 00933,
00935, 00937, or 00939, the Japanese (Katakana), Korean, Simplified Chinese,
Traditional Chinese, or Japanese (Latin) text formatting rules are used, respectively.
If the data contains double-byte characters and the message does not have a
CCSID or the CCSID is not 00930, 00933, 00935, 00937, or 00939 and the ZLANG
value is JAPANESE, CHINESET, CHINESES, or KOREAN, the Japanese,
Traditional Chinese, Simplified Chinese, or Korean text formatting rules are used,
respectively. If the data contains double-byte characters and the message does not
have a CCSID, or if the message CCSID is not 00930, 00933, 00935, 00937, or 00939,
or if the ZLANG is not JAPANESE, CHINESET, CHINESES, or KOREAN, the
Japanese text formatting rules are used by default.
If the data is all single-byte data and there is no CCSID for the message, ISPF
determines if the application is running on a Japanese Katakana terminal and if the
NOKANA keyword was specified on the message definition. If so, ISPF uses the
English formatting rules. If NOKANA was not specified, ISPF uses the Japanese
Katakana formatting rules. If the application is not running on a Katakana terminal
and there is no CCSID for the message, ISPF uses the English formatting rules.
The message text is first split into words. A SBCS word is delimited by blanks, or
SO/SI characters. Then any beginning inhibitors are stripped from the beginning of
the word and treated as separate words, and any ending inhibitors are stripped
from the end of the word and treated as separate words.
Adjoining DBCS alphanumeric characters (that is, Ward 42 characters) are treated
as one DBCS word. Then any beginning inhibitors are stripped from the beginning
of the word and treated as separate words, and any ending inhibitors are stripped
from the end of the word and treated as separate words. All other non-Ward 42
double-byte characters are treated as separate DBCS words.
Words that exceed the width of the message window are wrapped to the next line
according to following rules:
┌───────────────────────┐
│ ... CE_1 CE │
│CB CB+1 ... │
└───────────────────────┘
┌───────┬─────┬─────┬─────┬─────────────┐
│ CE_1 │ CE │ CB │ CB+1│ Process │
┤───────┼─────┼─────┼─────┼─────────────├
│ any │ B,X │ B │ X,E │ Backward │
│ E │ E │ X,B │ X,E │ Backward │
│ X,B │ E │ any │ any │ Forward │
│ X,B - X - B - B │ Forward │
│ _____ any other ____ │ No process │
└─────────────────────────┴─────────────┘
where:
CE−1 and CE Last two words that fit on line
CB and CB+1 First two words on next line
E Ending inhibitor
B Beginning inhibitor
X Neither
Forward Move CE to next line
Backward Move CB to previous line
No process Split as is.
Note: If words CE or CB are single-byte words and are more than one character,
or if CE or CB are double-byte words and are more than one double-byte
character, no special processing is used; the line is split as is.
SBCS and DBCS blanks that end or begin a line will be deleted.
where variable H must contain a panel name or single asterisk, and variable A
must contain YES or NO. Substitutable parameters can also be used to specify the
value of .TYPE and .WINDOW.
where a comma terminates the variable names X and Y The name Z is delimited
by the single quote that marks the end of the message.
v A period (.) 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, the
'&V.DEF' yields 'ABCDEF'
v 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 nonblank is interpreted as the beginning of a substitutable variable.
v A double ampersand can be used to produce a character string starting with an
ampersand. The double character rule also applies to single quotes within the
delimiting single quotes required for the short and long message text, and to a
period, if it immediately follows a variable name. For example:
&& yields &
‘’ yields ' within delimiting single quotes
.. yields . immediately following a variable name.
The description below of skeleton formats applies only to new format skeletons
used with ISPF file-tailoring services. There are two types of records that can
appear in the skeleton file:
Data records
A continuous stream of intermixed text, variables, and control characters
that are processed to create an output record.
Control statements
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 nonblank character in column 2, are interpreted as control
statements. A )DEFAULT control statement can be used for assigning
different special characters for syntactical purposes. The available control
statements are:
v )BLANK
v )CM
v )DEFAULT
v )DOT
v )ENDSEL
v )ENDDOT
v )IM
v )SEL
v )SET
v )TB
v )TBA
If variable substitution results in an output record larger than the logical record
length of the output file, file tailoring terminates and a message is displayed.
Any blank data records in the input data are deleted from file-tailoring output.
However, the )BLANK control statement can be used to produce blank lines in the
output file.
where string1 must contain at least one variable name. string2 can be null.
If the first variable in string1 is not null, string1 is substituted in the output
record. If the first variable in string1 is null, string2 is substituted in the
output record.
Example:
and
.. yields . immediately following a variable name
Seven characters, ), &, ?, !, <, |, and >, can be overridden with the )DEFAULT
control statement. If those characters are overridden, the specified characters are
substituted in the list above.
The general format of a control statement, which must begin in column 1, is:
)control-word parameter1 parameter2 ... parameter31
The parameters must be separated by one or more blanks, and cannot contain
embedded blanks. A parameter can be coded as:
v A character string
v A dialog variable name, preceded by an ampersand
v A concatenation of variable names and character strings
The current value of each variable is substituted before the control statement is
evaluated. The rules for delimiting a variable name and for the use of ampersands,
periods, double ampersands, and double periods are the same as for data records,
described above.
The specified skeleton is imbedded at the point where the )IM statement is
encountered. Up to three levels of imbedding are permitted.
)DEFAULT abcdefg
The seven characters represented by abcdefg override the use of the ), &, ?, !, <, |,
and > characters, respectively. Exactly seven characters must be specified.
Example 1: This example demonstrates that defaults changed using )DEF do not
take effect in imbedded skeletons.
An FTINCL of the following skeleton, which changes the variable name control
character, &,; to the ø sign:
)DEFAULT )ø?!<|>
)SET A = USERNAME
A: øA
)IM SKEL2
A: øA
imbeds SKEL3 which changes the variable name control character & to the ø sign:
)DEFAULT )ø?!<|>
AA: øA
AA: &A
An exclamation point (!) is used as the default tab character for the )TB control
statement. It tabs the output record to the next tab stop and fills the intervening
spaces with blanks. The next character following an exclamation point in the input
record is put at the tab stop location in the output record. Up to 16 tab stops can
be specified. A tab stop specifies a tab position in the output record, and must be
in the range 1-255. The default is one tab stop at location 255.
When you use the standard tabbing syntax, )TB value1 ... value16, and the tab stop
value equals the current output position, the tabbing skips to the next tab stop
value that is greater than the current output position. The input character
following the tab character is then inserted into the position skipped to in the
output record.
When you use alternate tabbing syntax, specified with an ’A’ in the )TB tabbing
syntax, and the tab stop value equals the current output position, the input
character following the tab character is inserted into the current position in the
output record. This allows you to write to the current position of the output record
if a tab character in the input record is encountered at the same time as a tab stop
is encountered in the output record.
The way you specify alternate tabbing syntax on the )TB control statement
determines whether only designated or all tab stop values are affected, even if the
tab stop value equals the current position in the output record when a tab
character is encountered in the input record. If you specify:
only the tab stop values to which the character A is appended selectively cause
tabbing to stop in any of those positions. If you specify:
)TBA value1 ... value16
any tab stop value that equals the current position in the output record when a tab
character is encountered in the input record causes tabbing to stop.
Be sure the character that you append for alternate tabbing is an uppercase A.
Appending an A to the )TB control word ( )TBA ) has the same effect as appending
an A to all individual tab stop values. When you use the )TBA control word,
appending an A to an individual tab stop value has no additional effect.
Example 1: This example uses the standard tabbing syntax – )TB value1 ... value16.
Example 2: This example uses alternate tabbing syntax for designated tab positions
– )TB value1[A]...value16[A].
Example 3: This example uses the alternate tabbing syntax for all tab
positions–)TBA value1 ... value16.
The specified number of blank lines are placed in the output file at the point where
the )BLANK statement is encountered. If the number parameter is omitted, the
default value is 1. The number parameter can be specified as a symbolic variable.
Examples:
)BLANK
)BLANK &SPACER
The first example inserts a single blank line into the output file. In the second
example, the number of blank lines inserted into the output file is equal to the
current value of the variable SPACER.
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 )SEL nesting are permitted. The list of records must end with an
)ENDSEL statement.
Any of the other control statements can be used between the )SEL and the
)ENDSEL control statements. For example, if you want to write information from a
table only if variable ABC is set to the name of that table, specify:
)SEL &ABC='TABNAME'
)DOT TABNAME
&FNAME &LNAME
)ENDDOT
)ENDSEL
The allowable connectors are | (OR) and && (AND). ISPF evaluates connected
expressions from left to right and evaluates the connectors with equal priority.
Examples:
)SEL &COND = YES
)SEL &TEST1 ¬= &Z | &ABC = 5
)SEL &TEST1 ¬= &Z && &ABC = 5
Note: The )DOT command parameter table-name must be in uppercase for use with
ISPF table services.
Any of the other control statements can be used between the )DOT and the
)ENDDOT control statements. For example, if you want to take information from
table ABC, and write any blank table row as a blank line, specify:
)DOT ABC
)SEL &LNAME=&Z
)BLANK 1
)ENDSEL
&FNAME &LNAME
)ENDDOT
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.
)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. A blank is required between the variable and the equal sign and between
the equal sign and the expression. The expression can be specified as either:
value1
or
value1 operator value2 operator ... value15
To assign a null value to a dialog variable, use the system variable &Z
Example:
)CM comment
In the second part of the example, select statements are used to conditionally
execute a load-and-go step. An imbed statement, )IM, is used to bring in a separate
skeleton for the load-and-go step.
In a panel tagged with a CCSID, all characters that are not )BODY, )MODEL, and
)AREA text and all characters in variable names within the )BODY, )MODEL, and
)AREA text of a tagged panel and within the message text of a tagged message
member must be in the syntactic character set:
v A–Z
v a–z
v 0–9
v +<=>%&*″’
v (),_-./:;?
Note: Lowercase a–z can be used for any CCSID supported by ISPF except the
Japanese (Katakana) Extended CCSID 930.
If an EXTENDED CODE PAGE is specified and the terminal code page and
character set is one of those recognized by ISPF, all displayable code points are
available for display (no displayable code points are invalidated by ISPF).
Z Variables
The following Z variables are available for code page processing:
ZTERMCP
Terminal code page. Returned as a 4-digit decimal number (4 characters).
ZTERMCS
Terminal character set. Returned as a 4-digit decimal number (4 characters).
If an extended code page is specified for a panel or message and the terminal code
page cannot be determined, there is no transformation of characters.
Table 20 illustrates when characters will be transformed for Extended Code Page
support and when they will not be transformed:
Table 20. Character Transformation Table
Terminal Query Terminal Query Terminal Query
Reply CP/CS Reply CP/CS Reply CP/CS
Valid for ISPF Not Returned Invalid for ISPF
CCSID Tag Present Characters Characters not Characters not
transformed transformed transformed
No CCSID Tag PresentCharacters not Characters not Characters not
transformed transformed transformed
For DBCS languages, the beginning and ending inhibited character tables are
enhanced to include characters from the extended code pages for the text
formatting of messages and panels.
GETMSG Service
The GETMSG service can be called with a CCSID parameter. If the message is
tagged with a CCSID, the CCSID will be returned; otherwise, blanks will be
returned.
TRANS Service
Users can call the TRANS Service in ISPF to translate variable data specified by the
user from one CCSID to another CCSID. The to and from CCSIDs are also specified
by the user in the TRANS call (see ISPF Services Guide ). For a list of the
EXTENDED CODE PAGE translate tables provided by ISPF, see “Extended Code
Page Translate Tables Provided by ISPF” on page 321.
Only the values for the hex digits X’40’ through X’FE’ are defined in a given
translate table. These are the only code points that vary from CCSID to CCSID.
ISPCCSID Macro
The initial ISPCCSID macro usage identifies the CCSID associated with the
particular ISPccsid translate load module and provides addresses of the to and from
CCSID 00500 translate tables.
Description of Parameters
nnnnn
Required parameter. The nnnnn value is a 5-digit decimal (5 characters)
number that specifies a CCSID number. The nnnnn value on the first or only
ISPCCSID macro definition is the CCSID associated with the ISPccsid translate
load module. The nnnnn value on other than the first ISPCCSID macro
definition is the CCSID associated with direct to and from translate tables.
Assembly errors will occur if this parameter is not 5 digits.
to-address
Required parameter. On the first or only ISPCCSID macro definition, this
parameter specifies the address of the translate table that converts data from
the CCSID associated with the respective ISPccsid translate load module to
CCSID 00500. On subsequent ISPCCSID macro definitions within the same
ISPccsid translate load module, it specifies the address of the translate table
that converts data from the CCSID associated with the respective ISPccsid
translate load module to the CCSID specified on this ISPCCSID macro
definition.
from-address
Required parameter. On the first or only ISPCCSID macro definition, this
parameter specifies the address of the translate table that converts data from
CCSID 00500 to the CCSID associated with the respective ISPccsid translate
ISPCCSID CCSID=00111,TO=TRTO500,FROM=TRFR500
*
*
TRTO500 DC XL191'... 00111 TO 00500
TRFR500 DC XL191'... 00111 FROM 00500 (00500 TO 00111)
END
ISPCCSID CCSID=00222,TO=TRTO500,FROM=TRFR500
ISPCCSID CCSID=00333,TO=TRT00333,FROM=TRF00333
ISPCCSID CCSID=00444,TO=TRT00444,FROM=TRF00444
*
*
TRTO500 DC XL191'... 00222 TO 00500
TRFR500 DC XL191'... 00222 FROM 00500 (00500 TO 00222)
*
*
TRT00333 DC XL191'... 00222 TO 00333
Figure 84. ISP00222 Translate Module with Two Direct CCSID Entries
(CCSID=00930)
U.S. English X’81’ X’4B’ X’81’ X’81’
CECP and X’62’ X’81’ X’59’ X’4B’
Non-CECP
Japanese
(Latin)
Non-
Extended
Japanese X’81’ X’59’ X’81’ X’81’
(Latin) X’62’ X’81’ X’59’ X’59’
Extended
(CCSID=00939)
Code Points
Character Translation
X’81’ A Katakana character in the Katakana code pages and is lowercase a in the
U.S. English (CECP and base) and Japanese (Latin) (Extended and base)
code pages.
X’62’ Lowercase a in the extended Katakana (CCSID=00930) code page, a
Katakana character in the extended Japanese (Latin) (CCSID=00939) code
page, and is an unknown character in the U.S. English, base Japanese
(Latin), and base Katakana code pages.
X’59’ A Katakana character in the Japanese (Latin) Extended (CCSID=00939)
code page, and an unknown character in the other code pages.
X’C1’ Uppercase A and X’4B’ is a period (.) in all of the previously mentioned
code pages.
The extended CCSIDs shown in Table 23 on page 316 and Table 24 are supported
for the TRANS service, and also with the use of the CCSID keyword in panels and
messages. These are the mixed SBCS/DBCS CCSIDs for these languages.
Japanese (Katakana) and Simplified Chinese EXTENDED CODE PAGES are not
supported on any terminal, but these CCSIDs are supported by ISPF for the
TRANS service and for tagging panels and messages.
Note: Although the following CCSIDs represent both SBCS and DBCS character
sets and code pages, only the SBCS character set and code page are involved
in the EXTENDED CODE PAGE support in ISPF.
Table 24. Extended SBCS and DBCS CCSIDs Supported
CCSID Character Set Code Page Country
00930 1172 290 Japanese (Katakana)
00939 1172 1027 Japanese (Latin)
00933 1173 833 Korean
00935 1174 836 Simplified Chinese
00937 1175 037 Traditional Chinese
01159 65535 1159 Traditional Chinese
Direct translation between each base code page and its EXTENDED CODE PAGE
is provided. Also, direct translation between both base and extended Japanese
(Katakana) and both base and extended Japanese (Latin or English) is provided. All
translation between the single-byte EXTENDED CODE PAGES for the double-byte
languages and the CECP code pages is through CCSID 00500.
Note: The translate tables for the CCSIDs listed in Table 22 on page 316 and
Table 24 on page 317 are provided and shipped with ISPF. Also, see
“Extended Code Page Translate Tables Provided by ISPF” on page 321.
Any translate tables that are added must be named ISPnnnnn, where nnnnn is the
CCSID. The translate tables should include code points X’40’ through X’FE’.
v The following example illustrates the translation to CCSID 00500 from CCSID
xxxxx, where xxxxx is the CCSID for the new code page. This CCSID must be
different from any of the supported CCSIDs previously listed, and should be a
CCSID defined in the Character Data Representation Architecture. In Figure 85
on page 319, xxxxx is 00037.
. . .
. . .
v Figure 86 illustrates the translation to CCSID xxxxx from CCSID 00500, where
xxxxx is the CCSID for the new code page. This CCSID must be different from
any of the supported CCSIDs listed above, and should be a CCSID defined in
the Character Data Representation Architecture. In this example, xxxxx is 00037.
. . .
. . .
v Optionally, any number of pairs of to and from tables can be provided for direct
translation from the new CCSID to and from another CCSID.
The assembler macro, ISPCCSID, is supplied with ISPF to allow you to generate
custom ISPxxxxx translate load modules (where xxxxx is the new CCSID). Calls to
this macro must also be coded for the To_500 and From_500 tables and any to and
from tables for direct translation. The load module must either have the name
ISPxxxxx (where xxxxx is the new CCSID) or an alias of ISPxxxxx. See “ISPccsid
Translate Load Modules” on page 312, “ISPccsid Translate Load Module Generation
Macro” on page 313, and “ISPCCSID Macro” on page 313.
Direct to and from translate tables can be added for direct translation (to prevent
possible loss of characters through CCSID 00500 for character sets other than 697).
Additional direct translation tables can also be added to the extended code page
translate tables provided by ISPF. The direct translation CCSID must be one of the
CCSIDs supported by ISPF, or added by the user. If the CCSID of the terminal is
the same as the CCSID in any of the direct translation tables, those tables are used.
Otherwise, the To_500 and From_500 tables are used to translate through CCSID
00500.
Note: Both to and from translate tables must be provided for direct translation
tables as well as CCSID 00500 tables, even though there may be no
translation needed. For example, to translate from a base CCSID to an
extended CCSID for the same code page, all characters will translate to
themselves.
Base CCSIDs
The CCSIDs for the BASE CODE PAGES supported by ISPF (that include mixed
SBCS/DBCS CCSIDs for the DBCS languages) are listed in Table 25.
Table 25. Base CCSIDs Supported
CCSID Character Set Code Page Country/Language
00803 1147 424 Hebrew (Old)
00931 101 037 Japan (English)
04369 265 273 Germany and Austria
04371 273 275 Brazil
04373 281 277 Denmark and Norway
04374 285 278 Finland and Sweden
04376 293 280 Italy
04380 309 284 L.A. (Spanish Speaking)
04381 313 285 U.K. English
04393 1129 297 France
04934 938 838 Thailand
04966 959 870 Latin-2
04976 960 880 Cyrillic
05029 933 833 Korean
05031 936 836 Simplified Chinese
05033 101 037 Traditional Chinese
08229 101 037 U.S. English and Netherlands
08476 650 284 Spain
09122 332 290 Japan (Katakana)
41460 904 500 Switzerland
45556 908 500 Switzerland
The source for the above modules is provided in the SYS1.SAMPLIB library in the
MVS environment.
ISPF permits use of all keyboards for all models of 3270 and 3290 terminals, and
text keyboards for 3278 and 3279 terminals. The 2-byte transmission codes for APL
and text characters are translated by ISPF into 1-byte codes for internal storage as
shown in Figure 87 on page 326 and Figure 88 on page 327. ISPF also permits use of
3277 and 3278 Japanese Katakana terminals. ISPF does not permit the use of 3277
and 3278 Katakana terminals and an APL terminal at the same time.
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
See “How to Define a Message” on page 290 for a description of how the KANA
keyword provides a similar function for messages containing lowercase characters
that must be displayed on a Katakana terminal.
Note: The KANA keyword is not needed for panels and messages that specify a
CCSID for Extended Code Page Support. See “Chapter 10. Extended Code
Page Support” on page 311.
00
10
20
30
40 sp A B C D E F G H I ¢ . ( +
50 & J K L M N O P Q R ! $ * ) ;
60 / S T U V W X Y Z , %
70 v : # @ =
80 a b c d e f g h i
90 j k l m n o p q r o
A0 s t u v w x y z
B0
C0 A B C D E F G H I
D0 J K L M N O P Q R
E0 S T U V W X Y Z
F0 0 1 2 3 4 5 6 7 8 9
0 1 2 3 4 5 6 7 8 9 A B C D E F
00
10
20
30
40 sp ¢ . ( +
50 & 1 2 3 ! $ * ) ;
60 / , %
70 n o : # @ =
(
80 a b c d e f g h i
)
90 j k l m n o p q r
A0 s t u v w x y z
0 1 2 3 4 5 6 7 8 9
B0
C0 A B C D E F G H I
D0 J K L M N O P Q R
E0 S T U V W X Y Z
F0 1 2 3 4 5 6 7 8 9
0 1 2 3 4 5 6 7 8 9 A B C D E F
Note: This program is not used for Extended Code Page Support translate tables.
See “Chapter 10. Extended Code Page Support” on page 311.
You can invoke ISPTTDEF from a selection panel, as a command, or from a dialog
function. The format of the ISPTTDEF program call is:
SELECT PGM(ISPTTDEF) PARM(xxx)
where xxx is the terminal type or the name of the load module containing translate
tables.
Valid terminal types are those that can be specified using the ISPF Settings panel.
If the name specified is not a valid terminal type, ISPF attempts to load a module
having that name.
Diagnostic Information
This section is intended to help you gather information in order to diagnose ISPF
problems.
You can issue the ENVIRON command at any time during an ISPF session.
[TERMTRAC [ON|ERROR|DUMP|OFF]]
[TERMSTAT [QUERY]]
Prior to using the TERMTRAC option, you must define to ISPF the ddname for
the data set to be used for the SNAP macro, which ISPF invokes to provide
data stream dumps. The ddname can be defined by specifying it on the panel
displayed as a result of either issuing the ENVIRON command with no
parameters, or selecting the Environ settings... choice from the Environ
pull-down on the ISPF Settings panel. You must follow the data set
characteristics guidelines defined by MVS for the SNAP macro. See MVS/XA
Supervisor Services and Macro Instructions for DCB information that can be
specified for the SNAP ddname.
Data stream.
TPUTNER
‘TPUTNER ’ –return from noedit TPUT macro. 4-byte pointer to
previous entry. General purpose register 15:
R15 = TPUT return code
PUTLINE
‘PUTLINE ’ –prior to issuing the PUTLINE macro. 4-byte pointer to
previous entry 12-byte PUTLINE parameter block:
Control flags (2 bytes)
2-byte TPUT options field
4-byte address of message
4-byte address of format-only line
If your terminal is one that supports extended data streams, such as an IBM
3279, but is connected to a non-EDS port, you can issue ENVIRON TERMSTAT
QUERY to force ISPF to return information from list C. Be aware that if you
issue ENVIRON TERMSTAT QUERY, and your terminal is not a type that
supports extended data streams, such as the IBM 3277, you will receive an
ORDER STREAM CHECK error.
Error Recovery
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * ISPF processor ended abnormally * *
* * * *
* * * *
* * Reason code * *
* * * *
* * * *
* * * *
* * NOTE: The ABEND and REASON codes displayed above are * *
* * HEXADECIMAL values for "SYSTEM" abends and DECIMAL * *
* * values for "USER" abends. * *
* * * *
* * Enter HELP command for list of common ABEND codes. * *
* * Press ENTER key for additional DIAGNOSTIC information. * *
* * Enter END command to display primary option menu. * *
* * * *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
Command ===> _________________________________________________________________
F1=Help F2=Split F3=Exit F9=Swap F12=Cancel
If you are not running in an MVS/XA environment, the reason code will be blank.
If you are running in an MVS/XA environment and the SDWA (System Diagnostic
Work Area) Reason Code is not supplied, that is, the SDWA reason code flag bit is
OFF, the Reason Code panel field will be blank. If the abend code documentation
indicates that the reason code is in a particular register, see the contents of that
register, which can be displayed on the Additional Diagnostic Information panel as
shown in Figure 92 on page 339.
If you enter HELP, the panel shown in Figure 91 on page 339 displays a list of the
common abend codes.
The following list contains some common ABEND codes. For more information
about these codes and for information about other abend codes, see the
appropriate MVS completion code manual. For abends resulting from
other products, refer to the appropriate product’s message library.
To return to the Error Recovery panel, enter end from the Common ABEND panel.
If you press Enter from the Error Recovery panel, the panel shown in Figure 92 is
displayed:
Entry point, PSW, and register values are in hexadecimal. Abend code and reason
code are in hexadecimal for system abends and in decimal for user abends.
Meanings for the entries on the Additional Diagnostic Information panel are:
If the Recovery Termination Manager (RTM) could not get storage for the System
Diagnostic Work Area (SDWA) or an error occurred within the error routine, all
fields on this panel will contain 0’s, with the exception of the abend code and ISPF
release level. Those fields will contain the correct data.
You can enter the HELP command from this panel as well to display the list of
common abend codes. Information associated with an abend is available from the
ISPF log file.
Pressing the END function key returns you to the primary option menu.
Messages
v IKJ56500I COMMAND NOT FOUND
If a command processor exists only in LPA, there must be an entry in the
ISPTCM for the command processor. Please refer to ISPF Planning and
Customizing for more details on customizing the ISPF TSO command table.
v IKJ56861I FILE ddname NOT FREED, DATA SET IS OPEN
If the LIBRARY parameter is used with a table service, the user is not able to
free the ddname for the table library pointed to by the LIBRARY parameter. ISPF
keeps this library open until a new ddname is used in the LIBRARY parameter
with another table service. ISPF functions in this manner for performance
reasons.
Issuing a table service with a LIBRARY parameter containing a ddname that
does not exist causes the previous library to be closed and therefore allows the
user to free the previous ddname. Use of CONTROL ERRORS RETURN may be
used to guard against a severe error as a result of a ddname not existing.
For example:
ALLOC FILE(DD1) DATASET('USERID.YOUR.TABLES') SHR
ISPEXEC TBOPEN MYLIB LIBRARY(DD1)
.
. /*ISPF services against your table*/
.
ISPEXEC TBCLOSE MYLIB LIBRARY(DD1)
ISPEXEC CONTROL ERRORS RETURN
ISPEXEC TBOPEN JUNK LIBRARY(DDJUNK) /*non-existent table in a */
/*non-existent library */
ISPEXEC CONTROL ERRORS CANCEL
FREE F(DD1)
v ISPP150
Panel ’name’ error–At least one of the CLEAR names listed is not a panel field
name. or ISPP121
I/O error messages cannot be issued when there is a problem with the ISPMLIB
concatenation since messages cannot be located due to the I/O error. Message
CMG999 occurs when there is an I/O error due to an ISPMLIB concatenation
problem.
v CMG999
CMG999 is issued with an appropriate description of the error condition for any
problem with accessing a message. Refer to ISPF Dialog Developer’s Guide and
Reference for further information on how to define a message.
Under normal conditions (that is, when processor and controller dumps have not
been requested by specifying the ISPSTART TEST command):
v When a processor task abends:
– No dump is taken.
– The controller reattaches the processor main drive (ISPPMD).
– The primary option menu is redisplayed for that logical screen.
v When the controller task abends:
– ISPF terminates with *** ISPF MAIN TASK ABEND *** message.
– Control returns to TSO.
– Pressing Enter causes a dump to be taken if a dump data set has been
allocated.
The controller and processor tasks issue the ABEND system service and allow
dumps under certain situations. The ISPF modules that issue ABENDs and their
associated codes and reasons are listed below:
ABEND0C1 in various common ISPF subroutines
In several ISPF modules, an invalid operation code of (X’00’) is executed to
force an abend at the point that an unexpected condition occurs. Contact
IBM support if this condition occurs within an ISPF module.
ABEND0C4 in ISPDVCGT, ISPDVCPT, or ISPDVCFD
These abends are often caused by mismatched VDEFINE and VDELETE
services in a user’s program. The VDEFINE service gives ISPF
addressability to user storage. This storage is used by variable services any
time the variable that has been established by the VDEFINE service is
referenced. If this storage is released back to the system, an ABEND0C4
may occur depending on whether the storage is still accessible. Following
are two common scenarios that often show these abends:
v A program establishes a variable in a called subroutine using the
VDEFINE service and subsequently uses an ISPF service that references
If the program intent is to use the same variable in the main and called
routines, the variable should be VDEFINEd only in the main routine. If the
program intent to isolate a variable to be used only in the routine in which
it is VDEFINEd, then the program should also VDELETE the variable
before it ends. To diagnose whether the user application has this problem,
a function trace on VDEFINE, VDELETE, and the SELECT services (Option
7.7.1) is very helpful.
Abend codes 111 or 222
To produce these abends, the user must be in test mode and request
processor dumps by entering one of the following commands on the ISPF
command line. With exception of the user completion code, both
commands function in the same manner.
ABEND
Terminates ISPF with user completion code 111.
CRASH
Terminates ISPF with user completion code 222.
Abend code 908
ZISPFRC value was not valid
Abend code 920
ISPSTART command syntax was not valid
Abend code 985
An attempt was made to start a GUI in batch mode, but no workstation
connection was made.
Abend code 987
An attempt was made to start GUI with GUISCRW or GUISCRD and the
GUI intitialization failed.
Abend code 988
Invalid TSO environment. Refer to ISPF Planning and Customizing for the
proper TSO version.
Abend code 989
The ISPF C/S component window was closed while still running ISPF in
GUI mode
Abend code 990
An error occurred running in batch mode. If ZISPFRC has not been set
peviously, and ISPF encounters a severe error that terminates the product,
then 990 is set.
Usually when an abend occurs within ISPF code, register 12 points to the entry
point of the abending CSECT.
If you are not in TEST mode, split the screen, enter option 7, Dialog Test, and swap
back to the screen containing the error.
You can use the either of the following methods to get the message ID:
v Enter print on the panel displaying the error message. The message ID, along
with the displayed message text and screen output, appears in the LIST data set.
The LIST data set can be printed using the LIST command.
v With the short message displayed:
1. Press the function key assigned to Help (default is F1) or type help on the
command line. This displays the long message text for the error.
2. Press the function key assigned to Help or type help on the command line
once more to display the Tutorial panel associated with the error. The bottom
lines of the Tutorial panel contain fields that list the current panel name, the
previous panel name, and the message ID. The value following LAST MSG= is
the message ID associated with the error.
The following table lists the dialog function pool variables that are both read from
and written to by several of the PDF library access services. The variables are listed
in alphabetical order.
The first column lists the variable name. The second column indicates the
variable’s type, which corresponds to the format parameter of the ISPF VDEFINE
service. The third column specifies the variable’s length, which corresponds to the
length parameter of the VDEFINE service.
The fourth column lists the PDF services that either read from or write to the
variable. An R in parentheses after a service name indicates that the service, when
called, reads from the given variable. A W in parentheses after a service name
indicates that the service, when called, writes to the given variable. All variables
are available to a dialog unless otherwise indicated.
The last column contains a brief description of the contents of the variable and any
restrictions on the value of the variable.
2. Length limited only by ISPF restrictions on the length of table extension variables.
Commonly used system variables that a dialog can access are listed below. They
are grouped by topic.
The first column gives the name of the variable. The second column indicates in
which pool the variable resides. The following abbreviations are used:
func Function pool
shr Shared pool
prof Profile pool
any Any pool.
The third column indicates the variable’s type. The following abbreviations are
used:
in Input variable, set by a dialog to provide information to ISPF
out Output variable, set by ISPF to provide information to dialogs
non Non-modifiable output variable
i/o Both an input and an output variable.
Numeric system variables set by ISPF are right-justified and padded with zeros on
the left, if necessary. If a program function uses the VCOPY service to access the
variable, the value will be in character string format rather than in fixed binary
format.
The current date is displayed in the appropriate format for the session language,
where DD=DAY, MM=MONTH, and YY=YEAR. For countries that use a delimiter
other than a slash (/), that delimiter replaces the slash in the date representation.
General
If the system finds that the subsystem is neither JES2 4.3 or later,
nor JES3 5.1.1 or later, the ZSYSNODE variable contains the string
’ —DOWNLEVEL—’ (note the string delimiters).
ZSCRNAME Examples
Example 1
On the ISPF primary option panel the user issues the command SCRNAME POP.
The primary option panel’s screen name is now POP. The user then invokes
CLIST1.
CLIST1
PROC 0
ISPEXEC DISPLAY PANEL(PANELA)
SET &ZSCRNAME = EDIT1
ISPEXEC VPUT (ZSCRNAME) SHARED
ISPEXEC EDIT DATASET ('PROJECT.GROUP.TYPE(BBBBBB)')
SET &ZSCRNAME = EDIT2
ISPEXEC VPUT (ZSCRNAME) SHARED
ISPEXEC EDIT DATASET ('PROJECT.GROUP.TYPE(CCCCCC)')
SET &ZSCRNAME = BROWSE1
ISPEXEC VPUT (ZSCRNAME) SHARED
ISPEXEC BROWSE DATASET ('PROJECT.GROUP.TYPE(DDDDDD)')
SET &ZSCRNAME = LASTPAN
ISPEXEC VPUT (ZSCRNAME) SHARED
ISPEXEC DISPLAY PANEL(PANELA)
Example 2
On the ISPF primary option panel the user issues the command SCRNAME POP.
The primary option panel’s screen name is now POP. The user then invokes
CLIST1 with the following results:
1. PANELA displays with screen name POP.
2. The EDIT session displays with the screen name EDIT1.
3. The user enters SCRNAME MYEDIT, so the screen name becomes MYEDIT.
4. After the EDIT session ends, the CLIST sets ZSCRNAME to EDIT2.
5. The EDIT session displays with the screen name EDIT2.
6. After this EDIT session ends, the CLIST sets ZSCRNAME to BROWSE1.
7. The BROWSE session displays with the screen name BROWSE1.
8. The user enters SCRNAME MYBROWSE PERM, so the screen name becomes
MYBROWSE.
9. After the BROWSE session ends, the CLIST sets ZSCRNAME to LASTPAN.
10. PANELA displays with the screen name MYBROWSE. The CLIST command
ZSCRNAME=LASTPAN is ignored because the user issued the SCRNAME
MYBROWSE command with the PERM parameter.
11. The CLIST completes and the primary option panel displays with the screen
name MYBROWSE (again because the user issued the SCRNAME
MYBROWSE command with the PERM parameter).
Example 3
On the ISPF primary option panel the user issues the command SCRNAME POP.
The primary option panel’s screen name is now POP. The user then invokes
CLIST2.
CLIST2
PROC 0
SET &ZSCRNAME = STATE
ISPEXEC VPUT (ZSCRNAME) SHARED
ISPEXEC SELECT PANEL(MENUA) SCRNAME(NATION)
ISPEXEC DISPLAY PANEL(PANELA)
ZPFFMT prof i/o 4 Number of Function key definitions displayed per line
v SIX—Always display six keys per line
v MAX—Display as many keys as will fit on each line
Scrolling
Name Pool Type Len Description
ZSCBR prof i/o 4 Scroll amount for the BROWSE service
ZSCED prof i/o 4 Scroll amount for the EDIT service
ZSCML prof i/o 4 Scroll amount for member lists
ZSCROLLA shr out 4 Value from scroll amount field (PAGE, MAX, number)
ZSCROLLD any in 4 Value to be used as default scroll value for scrollable dynamic
areas and table display
ZSCROLLN shr out 4 Scroll number as computed from the value in the scroll amount
field
PRINTG Command
Name Pool Type Len Description
ZASPECT func in 4 Aspect ratio of printed output from PRINTG
ZDEVNAM func in 8 Device name for PRINTG
ZFAMPRT func non 4 Family printer type for PRINTG
LIST Service
Name Pool Type Len Description
ZLSTLPP shr non 4 Number of lines per page in list data set
ZLSTNUML shr non 4 Number of lines written to current list data set page
ZLSTTRUN shr non 4 List data set record length truncation value
Dialog Error
Name Pool Type Len Description
ZERRALRM func out 3 Message alarm indicator (YES or NO)
ZERRHM func out 8 Name of help panel associated with error message
ZERRLM func out 512 Long error message text
ZERRMSG func out 8 Error message-id
ZERRSM func out 24 Short error message text
ZERRTYPE func out 8 Error message type
ZERRWIND func out 6 Error message window type
Tutorial Panels
Name Description
ZCONT Name of next continuation panel
ZHINDEX Name of first index panel
ZHTOP Name of top panel
ZIND YES specifies an index page
ZUP Name of parent panel
Selection Panels
Name Description
ZCMD Command input field
ZPARENT Parent menu name (when in explicit chain mode)
ZPRIM YES specifies panel is a primary option menu
ZSEL Command input field truncated at first period
Note: These variables will contain the values that would result if they were set to
.CURSOR, .CSRPOS, and .CSRROW, as the first statements in the panel’s
)PROC section.
IBM may not offer the products, services, or features discussed in this document in
other countries. Consult your local IBM representative for information on the
products and services currently available in your area. Any reference to an IBM
product, program, or service is not intended to state or imply that only that IBM
product, program, or service may be used. Any functionally equivalent product,
program, or service that does not infringe any IBM intellectual property right may
be used instead. However, it is the user’s responsibility to evaluate and verify the
operation of any non_IBM product, program, or service.
IBM may have patents or pending patent applications covering subject matter
described in this document. The furnishing of this document does not give you
any license to these patents. You can send license inquiries, in writing, to the IBM
Director of Licensing, IBM Corporation, North Castle Drive, Armonk, NY
10504–1785, USA.
For license inquiries regarding double-byte (DBCS) information, contact the IBM
Intellectual Property Department in your country or send inquiries in writing to
The following paragraph does not apply to the United Kingdom or any other
country where such provisions are inconsistent with local law:
Any references in this information to non-IBM Web sites are provided for
convenience only and do not in any manner serve as an endorsement of those Web
sites. The materials at those Web sites are not part of the materials for this IBM
product and use of those Web sites is at your own risk.
IBM may use or distribute any of the information you supply in any way it
believes appropriate without incurring any obligation to you.
The licensed program described in this document and all licensed material
available for it are provided by IBM under terms of the IBM Customer Agreement,
IBM International Program License Agreement or any equivalent agreement
between us.
If you are viewing this information softcopy, the photographs and color
illustrations may not appear.
Trademarks
The following terms are trademarks of International Business Machines
Corporation in the United States, other countries, or both:
APL2 IBM
BookManager Language Environment
C++ MVS
COBOL/2 MVS/ESA
Common User Access MVS/XA
CUA OS/2
DFSMSdfp OS/390
DFSMSdss OS/390 Security Server
DFSMShsm RACF
DFSMSrmm Resource Access Control Facility
DFSMS/MVS SOMobjects
DFSORT System View
ESCON VisualLift
FFST VTAM
GDDM
UNIX is a registered trademark of The Open Group in the United States and other
countries.
Notices 369
370 z/OS V1R2.0 ISPF Dialog Developer’s Guide and Reference
Index
Special Characters )ENDSEL file-tailoring control
statement 307
988
989
error
error
return
return
code
code
22
22
‘’ (quotation marks), enclosing > (greater than) operator on the IF 990 error return code 22
literals 109 statement 239 997 error return code 22
= (equal sign) operator on the IF >= operator on the IF statement 239 998 error return code 22
statement 239 <= operator on the IF statement 239 999 error return code 23
% sign < operator on the IF statement 239
beginning a command procedure .HELP control variable
name with 12
default attribute character 172
description 274, 283, 291
example 267
A
_ (underscore) character, default A, used to specify alternate tabbing 305
)HELP section of panel definition 214
attribute 172 ABCINIT section of panel definition 163
.HHELP control variable
+ sign ABCPROC section of panel
description 274
continuation character for literals 109 definition 164
)IM file-tailoring control statement 303
default attribute character 172 abend
)INIT section of panel definition 216
)ABC section, defining pull-down diagnostic panels 338
.KANA control variable in messages 291
choice 160 ABEND
)LIST section of panel definition 216
)ABC section of panel definition 157 codes 338
)MODEL section of panel definition 217
)ABCINIT section of panel description 24
.MSG control variable
definition 163 accessing table data 71, 369
description 274
)ABCPROC section of panel action bar choice initialization panel
in batch mode 37
definition 164 definition section
panel user exit messages 247
.ALARM control variable 267 definition 163
.NRET control variable 275
)AREA section of panel definition 164 action bar choice processing section of
)PANEL statement KEYLIST
.ATTR control variable panel definition
parameter 217
considerations 270 definition 164
.PFKEY control variable 276
description 268 action bar choice section of panel
)PNTS statement 221
override conditions 205 definition
)PROC section of panel definition 225
using with table display panels 269 definition 157
)REINIT section of panel definition 225
)ATTR section of panel definition 171 action bars and pull-down choices 92
.RESP control variable
.ATTRCHAR control variable ADDPOP parameter on ISPSTART
description 276
description of 269 command 10
in batch mode 36
dynamic area override 145 ADDPOP service 91, 92
)SEL file-tailoring control statement 307
override conditions 205 ADDSOSI built-in function on assignment
)SET file-tailoring control statement 308
.AUTOSEL control variable 271 statement 233
)TB file-tailoring control statement 305
)BLANK file-tailoring control alarm indicator message 366
)TBA file-tailoring control statement 305
statement 301, 307 ALARM keyword, message
.TRAIL control variable
)BODY section of panel definition 207 definition 292
description 277
)BODY statement, WINDOW ALPHA parameter on VER
example 114, 230
keyword 107 statement 253
.TYPE keyword, message definition 292
.CCSID section of message ALPHAB parameter on VER
.WINDOW keyword, message
definition 295 Statement 254
definition 292
)CCSID section of panel definition 213 alternate tabbing 305
.ZVARS control variable
)CM file-tailoring control statement 308 APL keyboard character translations 325
description 277, 278
.CSRPOS control variable 271 APL2
example 278
.CSRROW control variable 272 multiple calls of 30, 369
.ZVARS control variable, associating a
.CURSOR control variable number of times invoked, system
PDC with a variable name in
description 273 variable containing 358
)ABCINIT 162
example 267 using 28, 369
when not initialized or set to workspace used as the function
blank 273 pool 31, 369
÷= operator on the IF statement 239 Numerics application-id parameter on
÷> operator on the IF statement 239 3278 Mod 5 ISPSTART 10, 15
÷< operator on the IF statement 239 batch mode 36 application identifier, system
)DEFAULT skeleton control graphics interface mode 149 variable 358
statement 304 3290 application keylist 91
)DOT file-tailoring control statement 307 batch mode 36 application profile pool 61, 66, 369
)END section of panel definition 214 graphics interface mode 148 application profile pool extension name,
)END statement, required on panel 908 error return code 22 system variable 359
definition 108 920 error return code 22 AREA(DYNAMIC) parameter in )ATTR
)ENDDOT file-tailoring control 985 error return code 22 section 174
statement 307 987 error return code 22
Index 373
explicit chain mode 116 GE keyword initialization of control variables 266
EXTEND parameter in panel )ATTR section 186 initialization section of panel definition
in )ATTR section 174, 178 GE operator on the IF statement 239 definition 216
in graphic areas 176 GERMAN keyword on ISPSTART requirements for table display 137
Extended Code Page Support command 10, 17 initiating dialog execution 19
base code pages 318 GETMSG service 89, 369 INPUT parameter used with TYPE
CCSIDs supported 316 GIF 218 keyword 198
description 311 GOTO statement in panel section 236, INTENS keyword in panel )ATTR
ISPF-provided translate tables 321 238 section 173
messages tagged 312 graphic area, panel definition 176 invoking
panels tagged 312 graphical user interface authorized commands 26
translate load modules 312 batch mode 38 authorized programs 25
Z variables 311 GRPBOX 203 authorized TSO commands 25
Extended Code Page Translate Tables GT operator on the IF statement 239 TSO commands 26
Provided by ISPF 321 GUI in batch mode 38 invoking a dialog
extended help 95, 279 GUI parameter on ISPSTART 10, 14 from a selection panel 18
extended highlighting availability, system GUISCRD 14 from the ISPF master application
variable 363 GUISCRD parameter on ISPSTART 10 menu 18
GUISCRW 14 the ISPSTART command 17
GUISCRW parameter on ISPSTART 10 ISP@MSTR, ISPF Master Application
F Menu 116
ISP@PRIM on the ISPF Primary Option
field-level help 95, 214, 279, 369
field-type specification in panel )ATTR H Menu 122
ISPCMDS system command table 2
section 197 help
ISPF
file-tailoring services extended 95, 279
command 26, 369
example 84, 369 field-level 95, 279
Common User Access support 91
skeleton files 83, 369 help for help 279
default keylist 282
writing dialogs 83, 369 keys 95, 279
EDIF service 32, 369
file-tailoring skeleton message 279, 280
help panels 279
control statement considerations 303 panel 279, 280
interface with APL2 32, 369
data record considerations 83, 301, reference phrase 96, 280
overview 4
369 TUTOR command 280
tutorial panels 279
DBCS considerations 309 tutorial 280
variables 67, 369
defining 301 help for help command 279
ISPF conversion utility 91
definition 3 help panel 111
ISPF Services in Batch Mode 33
sample 309 name associated with error
ISPPREP preprocessed panel routine
file tailoring temporary file name, system message 366
batch environment 37
variable 360 system variable containing name
error conditions 154
FILEID parameter on VER associated with error message 366
examples 154
statement 257 with scrollable areas 167
restrictions 152
fixed portion of a TBDISPL display 131 help section of panel definition
return codes 154
FORMAT keyword definition 214
using 150
in panel )ATTR section 173, 185 HELP system command
ISPREXPX 247
in panel )BODY section 207 entry to tutorial 283
ISPSTART command
formatting guidelines for panels 217 on ABEND panels 338
description 9, 10
FRAME parameter on ISPSTART 15 HEX parameter on VER statement 257
example 10
FRENCH keyword on ISPSTART HIGH parameter with INTENS
syntax 10
command 10 keyword 187
TSO 26, 369
FRENCH keyword on the ISPSTART HILITE keyword in panel )ATTR
ISPTTDEF, using to specify translate
command 17 section 187
tables 329
function, definition 1
ISPTUTOR 283
function commands, definition 135, 369
ISRABEND debug tool 331, 369
Function key set displayed, system
variable 363
I ISRCSECT debug tool 331, 369
IDATE parameter on VER statement 257 ISRFIND debug tool 331, 369
Function key settings, system
IF statement ISRPOINT debug tool 331, 369
variables 363
basic IF 239 ISRROUTE command 162
Function keys, system variable containing
with Boolean operators 241 ISRTCB debug tool 331, 369
number of 363
with VER constructs 240 ISRTEST debug tool
function pool 61, 62, 63, 369
IM file-tailoring control statement 303 description 331, 369
IMAGE keyword 218 ITALIAN keyword on ISPSTART
IN parameter used with CAPS command 10
G keyword 179 ITALIAN keyword on the ISPSTART
GDDM INCLUDE parameter on VER command 17
in batch environment 36 Statement 257 ITIME parameter on VER statement 258
interface to 148 index page, specifying for tutorials 285
GDDM service 88, 369 INDEX tutorial command 283
Index 375
NUM parameter on VER statement 261 panel definition (continued) PFK built-in function on assignment
number of colors supported by the initialization section statement 232
terminal type, system variable 363 statement formats 228 PFkey, system variable 359
number of Function keys, system line 1 content 102 PGM keyword in )PROC section 113
variable 363 line 2 content 102 PGM parameter on ISPSTART
number of variables on panel user exit line 3 content 102 command 10
parameter 246 location 101 PICT parameter on VER statement 261
numeric (extended) verification 255 menus 111 PICTCN parameter on VER
numeric compare on IF statement 240 model section 136 statement 261
NUMERIC keyword in panel )ATTR panel title, location 101 pools, variable
section 191 reinitialization section application profile 61, 369
Numeric Lock feature (with NUMERIC statement formats 228 function 61, 369
attribute keyword) 191 restrictions 108 shared 61, 369
sections 100 pop-up window
short message for TBDISPL ADDPOP service 92
O operations 102
size 107
moveable 93
processing considerations 149
OFF parameter
special requirements 111 size 208
with ATTN keyword 179
specifying a message field 209 PORTUGUESE keyword on ISPSTART
with CAPS keyword 179
split-screen consideration 104 command 10, 17
with NOJUMP keyword 191
syntax rules 108 POSITION, TBDISPL parameter 133, 369
with NUMERIC keyword 191
table display 129 PQUERY
with SKIP keyword 197
tutorial and help panels 283 in batch environment 36
ON parameter
using )PANEL 217 used with dynamic area 145
with ATTN keyword 179
panel help 279, 280 PQUERY service 89, 369
with CAPS keyword 179
panel name on panel user exit prefix system variable 359
with NOJUMP keyword 191
parameter 246 preprocessed panels
with NUMERIC keyword 191
PANEL parameter creating (ISPPREP) 150
with SKIP keyword 197
in )PROC section 113 definition 150
ONEBYTE built-in function on
on ISPSTART command 10 ISPPREP call 152
assignment statement 234
panel redisplay 226 PARM keyword 151
online tutorial 283
panel section of panel definition SELECT service 151
OPT(option) parameter on ISPSTART
formatting panel 217 Primary Option Menu 115
command 10
panel section on panel user exit printer family type for PRINTG 365
OPT system variable 112
parameter 246 processing section of panel definition
OUT parameter used with CAPS
panel user exit routine definition 225
keyword 179
description 242 requirements for table display 138
OUTLINE keyword
how to invoke 245 PROFILE parameter
in panel )ATTR section 172, 173, 192
how to load 244 on VGET panel statement 264
in panel )BODY section 207, 211
parameters passed 246 on VPUT panel statement 264, 265
OUTPUT parameter used with TYPE
return codes 247 program-name parameter
keyword 198
panels in panel )PROC section 113
preprocessed 150 on ISPSTART command 10
vertically scrollable 107 program status word on diagnostic
P PANEXIT statement 242 panel 338
PAD keyword in panel )ATTR PARM protecting table resources 72, 369
section 173, 192 keyword PSW on diagnostic panel 338
PADC keyword in panel )ATTR in )PROC section 113 pull-down choice, defining within the
section 193 on preprocessed panels 151 )ABC section 160
panel definition 100 parameter on ISPSTART pushbuttons 222
)PNTS statement 221 command 10 pushbuttons, large 222
attribute section parts of a dialog 1
default characters 172 PAS keyword in panel )ATTR
blanks 108
body section
section 193
passing control from program-coded to
Q
QUERY parameter on the ENVIRON
sample 212 command-coded function 6
command 338
command field PDF command 26, 369
quotation mark, enclosing literals 109
description 101 PDF service
quote mark, enclosing literals 109
specifying 207 library access 86, 369
comment statement 108 where to find examples and
creation of 5 listings 87, 369
description 100, 101 writing dialogs 85, 369 R
design suggestions 104 pending END request 132 RADIO keyword in panel )ATTR
dynamic areas 200 pending scroll request 132 section 194
graphic areas 176 pending selected rows 132 RANGE parameter on VER
GUI considerations 136, 149 percent (%) sign, beginning a command statement 262
help and tutorial panels 283 procedure name with 11
Index 377
system variables (continued) system variables (continued) system variables (continued)
Z 358 ZPFCTL 363 ZWSCON 361
ZACCTNUM 358 ZPFFMT 363 ZWSOPSYS 361
ZAPLCNT 358 ZPFKEY 359 ZYEAR 358
ZAPPLID 358 ZPFLxx 363 SYSTSPRT file for error messages 35
ZAPPTTL 358 ZPFSET 363
ZASPECT 365 ZPFSHOW 363
ZBDMAX 358
ZBDMXCNT 358
ZPLACE 359
ZPREFIX 359
T
tab stop in skeleton definition 305
ZCMD 366 ZPRIKEYS 364
tabbing
ZCOLORS 363 ZPRIM 366
alternate 305
ZCONT 366 ZPROFAPP 359
standard 305
ZCS 358 ZSCBR 364
table
ZCSDLL 358 ZSCED 364
accessing data 71, 369
ZCURFLD 366 ZSCML 364
adding rows dynamically 45, 369
ZCURINX 366 ZSCRCUR 359, 360
definition 3
ZCURPOS 366 ZSCREEN 364
dynamic expansion 131
ZDATE 357 ZSCREENC 359
temporary or permanent 70, 369
ZDATEF 357 ZSCREEND 364
when created or updated 3
ZDATEFD 357 ZSCREENI 359
table display (TBDISPL), terms related
ZDATESTD 357 ZSCREENW 364
to 130
ZDAY 357 ZSCRMAX 360
table display output example 141, 142
ZDBCS 363 ZSCRMAXD 364
table display panel definition
ZDECS 358 ZSCRMAXW 364
attribute section 134
ZDEL 358 ZSCROLLA 364
body section 135
ZDEVNAM 365 ZSCROLLD 364
example 139
ZENTKTXT 358 ZSCROLLN 364
example of multiple model lines 141
ZENVIR 359 ZSCTPREF 360
initialization section 137
ZERRALRM 366 ZSEL 366
message location 102
ZERRHM 366 ZSPLIT 364
model line 43, 130
ZERRLM 366 ZSTDYEAR 358
model section 136
ZERRMSG 366 ZSYSICON 360
scroll field location 102
ZERRSM 366 ZSYSID 360
short message area content 102
ZERRTYPE 366 ZSYSNODE 360
using the TBDISPL service 129
ZERRWIND 366 ZSYSPLEX 360
table rows
ZEURO 359 ZTDADD 365
number of selected upon return from
ZFAMPRT 365 ZTDAMT 365
table display 365
ZFKA 363 ZTDLROWS 365
number of system variable containing
ZGE 363 ZTDLTOP 365
upon return from table display 365
ZGUI 359 ZTDMARK 365
system variable containing 365
ZHILITE 363 ZTDMSG 365
table services
ZHINDEX 366 ZTDRET 365
determining table size 73, 369
ZHTOP 366 ZTDROWS 365
example 73, 74, 369
ZIND 366 ZTDSCRP 365
protecting resources 72, 369
ZISPFOS 359 ZTDSELS 365
row operation 72, 369
ZISPFRC 359 ZTDSIZE 365
using 70, 72, 369
ZJ4DATE 358 ZTDSRID 365
tags, creating dialog elements 91
ZJDATE 357 ZTDTOP 365
task abend code on diagnostic panel 338
ZKEYHELP 359 ZTEMPF 360
TB file-tailoring control statement 305
ZKEYS 363 ZTEMPN 360
TBA file-tailoring control statement 305
ZKLAPPL 363 ZTERM 364
TBDISPL series 133
ZKLNAME 363 ZTERMCID 360
TBDISPL service
ZKLTYPE 363 ZTERMCP 360
description 139, 369
ZKLUSE 363 ZTERMCS 361
dynamically building the table 46,
ZLANG 359 ZTHS 361
369
ZLOGNAME 365 ZTIME 358
terms related to 130
ZLOGO 359 ZTIMEL 358
writing dialogs 41, 369
ZLOGON 359 ZTS 361
terminal data in batch mode 36
ZLSTLPP 365 ZTSICMD 361
terminal type
ZLSTNAME 365 ZTSSCMD 361
specifying ISPTTDEF 329
ZLSTNUML 365 ZUCTPREF 361
system variable containing 364
ZLSTTRUN 365 ZUCTSRCH 360
terminating
ZMONTH 358 ZUP 366
a dialog 21
ZOS390RL 359 ZUSER 361
ISPF 9, 10
ZPANELID 359 ZVERB 361
TERMSTAT parameter on ENVIRON
ZPARENT 366 ZWINTTL 361
command 336
ZPF01-24 363 ZWSCDPG 361
Index 379
writing dialogs (continued) ZDLLRECL 351, 369 ZKLTYPE system variable 363
PDF services 85, 369 ZDLMIGR 351, 369 ZKLUSE system variable 363
table services 70, 369 ZDLRDATE 351, 369 ZLAC 353
variable services 60, 369 ZDLRECFM 351, 369 ZLALIAS 353
WSCMD 13 ZDLSIZE 351, 369 ZLAMODE 353
WSCMD parameter on ISPSTART ZDLSPACU 351 ZLANG system variable 359
command 10 ZDLUSED 351, 369 ZLATTR 353
WSCMDV 13 ZDLVOL 351, 369 ZLC4DATE 353
WSCMDV parameter on ISPSTART ZDSN 352, 369 ZLCDATE 353, 369
command 10 ZDST 352 ZLCNORC 353, 369
ZE system variable 300, 310 ZLINORC 354, 369
ZEDBDSN 352, 369 ZLLIB 354, 369
Z ZEDROW 352, 369
ZEDSAVE 352
ZLM4DATE 354
ZLMDATE 354, 369
Z system variable 358
ZEDTDSN 352, 369 ZLMEMBER 354, 369
Z variables used for field name
ZEDTMCMD 352 ZLMNORC 352, 354, 369
place-holders 278
ZEDTMEM 352, 369 ZLMOD 354, 355, 369
ZACCTNUM system variable 358
ZEDTRD 352, 369 ZLMSEC 354, 369
ZAPLCNT system variable 358
ZEDUSER 352, 369 ZLMTIME 354, 355, 369
ZAPPLID system variable 358
ZEIBSDN 352, 369 ZLOGNAME system variable 365
ZAPPTTL system variable 358
ZEIROW 352, 369 ZLOGO system variable 359
ZASPECT system variable 365
ZEITDSN 352, 369 ZLOGON system variable 359
ZBDMAX system variable 358
ZEIUSER 352, 369 ZLPDSUDA 354, 369
ZBDMXCNT system variable 358
ZENTKTXT 369 ZLRMODE 355
ZC system variable 300, 310
ZENVIR system variable 34, 359 ZLSIZE 355
ZCMD 351, 369
ZERRALRM 352, 369 ZLSTLPP system variable 365
ZCMD system variable 366
ZERRALRM system variable 366 ZLSTNAME system variable 365
example 114
ZERRHM 352, 369 ZLSTNUML system variable 365
on tutorial panels 284
ZERRHM system variable 366 ZLSTTRUN system variable 365
processing
ZERRLM 353, 369 ZLTTR 355
blank 115
ZERRLM system variable 366 ZLUSER 355, 369
invalid option 115
ZERRMSG 353, 369 ZLVERS 355, 369
truncation 113
ZERRMSG system variable 366 ZMLCOLS 355, 369
versus other names for command
for panel user exit messages 247 ZMLCR 355, 369
field 102
ZERRSM 353, 369 ZMLTR 355, 369
ZCOLORS system variable 363
ZERRSM system variable 366 ZMONTH system variable 358
in batch mode 36
ZERRTYPE system variable 366 ZPARENT system variable 116, 366
ZCONT system variable 285, 287, 366
ZERRWIND system variable 366 ZPDFREL 356, 369
ZCS system variable 358
ZEURO system variable 359 ZPF01-24 system variables 363
ZCSDLL system variable 358
ZFAMPRT system variable 365 ZPFCTL system variable 363
ZCUNIT 356, 369
ZFKA system variable 363 ZPFFMT system variable 363
ZCURFLD
ZGE system variable 146, 363 ZPFKEY system variable 359
general description 221
ZGRPLVL 353, 369 ZPFSET system variable 363
ZCURFLD system variable 366
ZGRPNME 353, 369 ZPFSHOW system variable 363
ZCURINX
ZGUI system variable 359 ZPLACE system variable 359
general description 221
ZHILITE system variable 363 ZPREFIX system variable 359
ZCURINX system variable 366
in batch mode 37 ZPRIKEYS system variable 364
ZCURPOS
ZHINDEX system variable 366 ZPRIM system variable 366
general description 221
example 122 example 115, 122
ZCURPOS system variable 366
specifying top indexed panel 284 ignored in explicit chain mode 116
ZCUSIZE 356, 369
ZHTOP system variable 366 using 116
ZDATE system variable 357
example 122 ZPROFAPP system variable 359
ZDATEF system variable 357
specifying top tutorial panel 284 ZSCBR system variable 364
ZDATEFD system variable 357
ZICFPRT 356, 369 ZSCED system variable 364
ZDATESTD system variable 357
ZIND system variable 366 ZSCLM 355
ZDAY system variable 357
using on tutorial panels 285 ZSCML system variable 364
ZDBCS system variable 363
ZISPFOS system variable 359 ZSCRCUR system variable 359, 360
in batch mode 36
ZISPFRC system variable ZSCREEN system variable 364
ZDECS system variable 358
description 22 ZSCREENC system variable 359
ZDEL system variable 358
example of using 23 ZSCREEND system variable 364
ZDEVNAM system variable 365
return codes 359 in batch environment 36
ZDLBLKSZ 351, 369
ZJ4DATE system variable 358 ZSCREENI system variable 359
ZDLCDATE 351, 369
ZJDATE system variable 357 ZSCREENW system variable 364
ZDLDEV 351, 369
ZKEYHELP system variable 95, 359 in batch environment 36
ZDLDSNTP 351, 369
ZKEYS system variable 363 ZSCRMAX system variable 360
ZDLDSORG 351, 369
ZKLAPPL system variable 363 ZSCRMAXD system variable 364
ZDLEDATE 351, 369
ZKLNAME system variable 363 in batch environment 36
ZDLEXT 351, 369
Index 381
382 z/OS V1R2.0 ISPF Dialog Developer’s Guide and Reference
Readers’ Comments — We’d Like to Hear from You
Interactive System Productivity Facility (ISPF)
Dialog Developer’s Guide and Reference
z/OS Version 1 Release 2.0
Overall, how satisfied are you with the information in this book?
How satisfied are you that the information in this book is:
When you send comments to IBM, you grant IBM a nonexclusive right to use or distribute your comments in any
way it believes appropriate without incurring any obligation to you.
Name Address
Company or Organization
Phone No.
___________________________________________________________________________________________________
Readers’ Comments — We’d Like to Hear from You Cut or Fold
SC34-4821-01 Along Line
_ _ _ _ _ _ _Fold
_ _ _and
_ _ _Tape
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _Please
_ _ _ _ _do
_ _not
_ _ staple
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _Fold
_ _ _and
_ _ Tape
______
NO POSTAGE
NECESSARY
IF MAILED IN THE
UNITED STATES
IBM Corporation
Software Reengineering
Department G7IA / Bldg 503
Research Triangle Park, NC
27709-9990
_________________________________________________________________________________________
Fold and Tape Please do not staple Fold and Tape
Cut or Fold
SC34-4821-01 Along Line
SC34-4821-01