Post on 03-Sep-2014
Session 2632
February 16, 2007
Thomas Conley
Pinnacle Consulting Group, Inc. (PCG)
59 Applewood Drive
Rochester, NY 14612-3501
P: (585)720-0012
F: (585)723-3713
pinncons@rochester.rr.com
http://home.rochester.rr.com/pinncons
Dynamic ISPF
How to Eliminate All Those Datasets in the LOGON PROC
© Pinnacle Consulting Group, Inc., 2007. All rights
reserved.. Permission granted to SHARE to distribute
for SHARE 108.
2
© Pinnacle Consulting Group, Inc., 2007. All rights
reserved. Permission granted to SHARE to distribute for
SHARE 108.
Abstract
Do you have a large number of LOGON procs at your site? Do you ever get tired of adding ISPF application datasets to every LOGON proc? Have you ever
wondered if there's a better way to install and maintain your ISPF applications? If you answered 'YES' to any of these questions, this session is for you! Come to this popular session to learn how to invoke ISPF applications dynamically. The knowledge gained will help you to
shrink your logon procs to a manageable size, eliminate redundant procs, and get better overall ISPF performance to boot! This session will include an online demonstration of Dynamic ISPF.
3
© Pinnacle Consulting Group, Inc., 2007. All rights
reserved. Permission granted to SHARE to distribute for
SHARE 108.
Agenda
• “Standard” ISPF vs. Dynamic ISPF
• Coding Rexx Driver EXECs
• ISPF Menu Construction
• Performance Considerations
• LOADLIBs, Dynamic Steplib, TSOLIB
• Solving Common Problems
• Miscellaneous Recommendations
4
© Pinnacle Consulting Group, Inc., 2007. All rights
reserved. Permission granted to SHARE to distribute for
SHARE 108.
Agenda
• Sell Dynamic ISPF to Management
• ServerPac - “The Dark Side”
• Conversion to Dynamic ISPF
• Dynamic ISPF Starter Set (DISS)
• Setting Up TSO and ISPF (WAC)
• Summary
• Finally...
5
© Pinnacle Consulting Group, Inc., 2007. All rights
reserved. Permission granted to SHARE to distribute for
SHARE 108.
The “Standard” ISPF Environment
• The “Standard” ISPF environment is a LOGON PROC with every ISPF dialog dataset allocated,
or a LOGON PROC dynamically allocating every
ISPF dialog dataset at LOGON with a CLIST
• Many LOGON PROCs or LOGON CLISTs
customized with specific ISPF dialog datasets to
allow or disallow access to ISPF applications
6
© Pinnacle Consulting Group, Inc., 2007. All rights
reserved. Permission granted to SHARE to distribute for
SHARE 108.
The “Standard” ISPF Environment
• Many customized menus and submenus required to invoke specific ISPF applications
allocated in each LOGON PROC/CLIST
7
© Pinnacle Consulting Group, Inc., 2007. All rights
reserved. Permission granted to SHARE to distribute for
SHARE 108.
“Standard” ISPF - LOGON PROC
//TSOTGC2 EXEC PGM=IKJEFT01,
// DYNAMNBR=50,PARM='%LOGON'
//SYSEXEC DD DISP=SHR,DSN=ISP.SISPEXEC
// DD DISP=SHR,DSN=SYS1.SEDGEXE1
//SYSPROC DD DISP=SHR,DSN=SYS2.ISPCLIB
// DD DISP=SHR,DSN=ISP.SISPCLIB
// DD DISP=SHR,DSN=GIM.SGIMCLS0
// DD DISP=SHR,DSN=SYS1.SEDGEXE1
// DD DISP=SHR,DSN=SYS1.DGTCLIB
// DD DISP=SHR,DSN=SYS1.SCBDCLST
// DD DISP=SHR,DSN=SYS1.HRFCLST
// DD DISP=SHR,DSN=SYS1.SBLSCLI0
//ISPMLIB DD DISP=SHR,DSN=SYS2.ISPMLIB
// DD DISP=SHR,DSN=ISP.SISPMENU
// DD DISP=SHR,DSN=GIM.SGIMMENU
// DD DISP=SHR,DSN=SYS1.SEDGMENU
// DD DISP=SHR,DSN=SYS1.DGTMLIB
// DD DISP=SHR,DSN=SYS1.DFQMLIB
// DD DISP=SHR,DSN=SYS1.SCBDMENU
// DD DISP=SHR,DSN=SYS1.HRFMSG
// DD DISP=SHR,DSN=SYS1.SBLSMSG0
//ISPPLIB DD DISP=SHR,DSN=SYS2.ISPPLIB
// DD DISP=SHR,DSN=ISP.SISPPENU
// DD DISP=SHR,DSN=GIM.SGIMPENU
// DD DISP=SHR,DSN=SYS1.SEDGPENU
// DD DISP=SHR,DSN=SYS1.DGTPLIB
// DD DISP=SHR,DSN=SYS1.DFQPLIB
// DD DISP=SHR,DSN=SYS1.SCBDPENU
// DD DISP=SHR,DSN=SYS1.HRFPANL
// DD DISP=SHR,DSN=SYS1.SBLSPNL0
. . .
8
© Pinnacle Consulting Group, Inc., 2007. All rights
reserved. Permission granted to SHARE to distribute for
SHARE 108.
“Standard” ISPF - LOGON PROC
//ISPSLIB DD DISP=SHR,DSN=ISP.SISPSENU
// DD DISP=SHR,DSN=ISP.SISPSLIB
// DD DISP=SHR,DSN=ISP.SISPSLIB
// DD DISP=SHR,DSN=GIM.SGIMSENU
// DD DISP=SHR,DSN=SYS1.SEDGSKL1
// DD DISP=SHR,DSN=SYS1.DGTSLIB
// DD DISP=SHR,DSN=SYS1.HRFSKEL
// DD DISP=SHR,DSN=SYS1.SBLSKEL0
//ISPTLIB DD DISP=SHR,DSN=SYS2.ISPTLIB
// DD DISP=SHR,DSN=ISP.SISPTENU
// DD DISP=SHR,DSN=GIM.SGIMTENU
// DD DISP=SHR,DSN=SYS1.SMP.SMPTABL
// DD DISP=SHR,DSN=SYS1.SEDGTBL1
// DD DISP=SHR,DSN=SYS1.DGTTLIB
// DD DISP=SHR,DSN=SYS1.SCBDTENU
// DD DISP=SHR,DSN=SYS1.SBLSTBL0
//CIDTABL DD DISP=SHR,DSN=SYS1.SMP.SMPTABL
//SMPTABL DD DISP=SHR,DSN=SYS1.SMP.SMPTABL
//SYSHELP DD DISP=SHR,DSN=ISP.SISPHELP
// DD DISP=SHR,DSN=SYS1.HELP
// DD DISP=SHR,DSN=SYS1.SEDGHLP1
// DD DISP=SHR,DSN=TCPIP.SEZAHELP
//SYSUADS DD DISP=SHR,DSN=SYS1.UADS
//SYSLBC DD DISP=SHR,DSN=SYS1.BRODCAST
//SYSPRINT DD TERM=TS,SYSOUT=Z
//SYSTERM DD TERM=TS,SYSOUT=Z
//SYSIN DD TERM=TS
9
© Pinnacle Consulting Group, Inc., 2007. All rights
reserved. Permission granted to SHARE to distribute for
SHARE 108.
“Standard” ISPF - LOGON CLIST
PROC 0
CONTROL MAIN NOMSG
SET PROFDSN = &STR(&SYSUID..ISPF.ISPPROF)
ALLOC FI(ISPPROF) DA('&PROFDSN') OLD
IF &LASTCC NE 0 THEN +
DO
ALLOC DA('&PROFDSN') NEW CATALOG SPACE(1 1) CYLINDERS DIR(45) +
DSORG(PO) RECFM(F B) LRECL(80) BLKSIZE(0) FI(ISPPROF)
IF &LASTCC NE 0 THEN +
WRITE UNABLE TO ALLOCATE ISPF PROFILE DATASET &PROFDSN
ELSE +
WRITE ISPF PROFILE DATA SET &PROFDSN CREATED
END
/*********************************************************************/
/* REALLOCATE USER DATASETS. */
/*********************************************************************/
IF &SUBSTR(1:3,&SYSUID) = &STR(USR) THEN +
DO
FREE FI(SYSPROC)
ALLOC FI(SYSPROC) DA('SYS1.ISPCLIB','ISP.SISPEXEC') SHR
FREE FI(ISPMLIB)
ALLOC FI(ISPMLIB) DA('SYS1.ISPMLIB','ISP.SISPMENU') SHR
FREE FI(ISPPLIB)
ALLOC FI(ISPPLIB) DA('SYS1.ISPPLIB','ISP.SISPPENU') SHR
FREE FI(ISPSLIB)
ALLOC FI(ISPSLIB) DA('SYS1.ISPSLIB','ISP.SISPSENU') SHR
FREE FI(ISPTLIB)
ALLOC FI(ISPTLIB) DA('SYS1.ISPTLIB','ISP.SISPTENU') SHR
END
ISPF
10
© Pinnacle Consulting Group, Inc., 2007. All rights
reserved. Permission granted to SHARE to distribute for
SHARE 108.
“Standard” ISPF - Advantages
• “Standard” ISPF is the installation method documented by nearly all ISPF applications
• No extra coding required since dialog is invoked as specified in the installation documentation
• Requires no additional knowledge or training in ISPF
11
© Pinnacle Consulting Group, Inc., 2007. All rights
reserved. Permission granted to SHARE to distribute for
SHARE 108.
“Standard” ISPF - Disadvantages
• Adding, changing, or deleting an ISPF application requires modifying and testing every
LOGON PROC with that application
• Users must LOGOFF and LOGON to access
new or changed ISPF applications
• Datasets unavailable for maintenance due to
ENQ’s for many different users, even when not
using specific ISPF application - users must
LOGOFF to free datasets
12
© Pinnacle Consulting Group, Inc., 2007. All rights
reserved. Permission granted to SHARE to distribute for
SHARE 108.
“Standard” ISPF - Disadvantages
• Significant BLDL overhead with large concatenations (BLDL is MVS macro to locate a
member within a library or concatenation)
• Working set size increase due to large number
of datasets allocated to LOGON PROC
negatively impacts performance
• Slower LOGON time compared to Dynamic ISPF
13
© Pinnacle Consulting Group, Inc., 2007. All rights
reserved. Permission granted to SHARE to distribute for
SHARE 108.
“Standard” ISPF - Disadvantages
• For disaster recovery, “Standard” ISPF requires restores for all datasets in the LOGON PROC
before anyone can logon to TSO
• There can be multiple failure points, since each
LOGON PROC is a potential point of failure
14
© Pinnacle Consulting Group, Inc., 2007. All rights
reserved. Permission granted to SHARE to distribute for
SHARE 108.
Dynamic ISPF
• Dynamic ISPF uses a minimal LOGON PROC with only ISPF and site-specific datasets
allocated in the LOGON PROC
• ISPF applications are dynamically invoked by
Rexx driver EXECs from a site-wide SYSPROC
library allocated to every TSO LOGON PROC
• ISPF application datasets are only allocated
when the ISPF application is invoked
15
© Pinnacle Consulting Group, Inc., 2007. All rights
reserved. Permission granted to SHARE to distribute for
SHARE 108.
Dynamic ISPF - LOGON PROC
//TSOTGC1 EXEC PGM=IKJEFT01,
// DYNAMNBR=99,PARM='%LOGON'
//ISPSLIB DD DSN=ISP.SISPSENU,DISP=SHR
// DD DSN=ISP.SISPSLIB,DISP=SHR
//ISPMLIB DD DSN=SYS2.ISPMLIB,DISP=SHR
// DD DSN=ISP.SISPMENU,DISP=SHR
//ISPPLIB DD DSN=SYS2.ISPPLIB,DISP=SHR
// DD DSN=ISP.SISPPENU,DISP=SHR
//ISPTLIB DD DSN=SYS2.ISPTLIB,DISP=SHR
// DD DSN=ISP.SISPTENU,DISP=SHR
//SYSEXEC DD DSN=ISP.SISPEXEC,DISP=SHR
//* SYS2.ISPCLIB IS THE REXX DRIVER LIBRARY
//SYSPROC DD DSN=SYS2.ISPCLIB,DISP=SHR
// DD DSN=ISP.SISPCLIB,DISP=SHR
//SYSUADS DD DSN=SYS1.UADS,DISP=SHR
//SYSLBC DD DSN=SYS1.BRODCAST,DISP=SHR
//SYSPRINT DD TERM=TS,SYSOUT=Z
//SYSTERM DD TERM=TS,SYSOUT=Z
//SYSIN DD TERM=TS
16
© Pinnacle Consulting Group, Inc., 2007. All rights
reserved. Permission granted to SHARE to distribute for
SHARE 108.
Dynamic ISPF - Advantages
• Quick prototyping and immediate availability of ISPF applications after coding Rexx driver
EXEC; no changes or testing of LOGON PROCs
required
• Datasets only allocated when user actively using
ISPF application, so datasets usually available
for maintenance; if not, users just leave the
specific ISPF application instead of logging off
17
© Pinnacle Consulting Group, Inc., 2007. All rights
reserved. Permission granted to SHARE to distribute for
SHARE 108.
Dynamic ISPF - Advantages
• BLDL overhead decreases because the specific ISPF application datasets are “first” in the
concatenation, so there is usually only one
library to search with far fewer members than
the standard TSO concatenation
• Faster TSO logon time compared to “Standard”
ISPF, especially when “Standard” ISPF uses a
LOGON CLIST to deallocate and reallocate each ISPF dataset
18
© Pinnacle Consulting Group, Inc., 2007. All rights
reserved. Permission granted to SHARE to distribute for
SHARE 108.
Dynamic ISPF - Advantages
• Smaller TSO working set size compared to “Standard” ISPF, since fewer datasets are
allocated to the TSO LOGON PROC
• For disaster recovery, Dynamic ISPF ensures
TSO availability as soon as ISPF and site-
specific datasets are recovered - no need to wait
for every program product to be restored
• The Rexx driver EXEC is a single point of failure,
making Dynamic ISPF easier to maintain and
more reliable than “Standard” ISPF
19
© Pinnacle Consulting Group, Inc., 2007. All rights
reserved. Permission granted to SHARE to distribute for
SHARE 108.
Dynamic ISPF - Disadvantages
• Effort is required to code and test Rexx driver EXECs for each ISPF application, so systems
programmer will need additional knowledge in
ISPF and Rexx
• Invocation for an ISPF application is slightly
longer when compared to “Standard” ISPF, due
to dynamic allocation of ISPF datasets
20
© Pinnacle Consulting Group, Inc., 2007. All rights
reserved. Permission granted to SHARE to distribute for
SHARE 108.
Coding Rexx Driver EXECs
• Dynamic ISPF uses Rexx driver EXECs to setup the environment for each ISPF application
• Rexx driver EXECs are invoked from the site-wide EXEC library allocated to SYSPROC in
every TSO LOGON PROC
21
© Pinnacle Consulting Group, Inc., 2007. All rights
reserved. Permission granted to SHARE to distribute for
SHARE 108.
Coding Rexx Driver EXECs
• Basic logic for any Rexx driver EXEC:
• ALTLIB CLIST or Rexx EXEC libraries
• LIBDEF ISPF libraries
• ALLOC files not handled by ALTLIB or LIBDEF (be sure to include the “REUSE”parameter on the ALLOC statement)
• Invoke ISPF application
• Free ALTLIB, LIBDEF, and ALLOC datasets
22
© Pinnacle Consulting Group, Inc., 2007. All rights
reserved. Permission granted to SHARE to distribute for
SHARE 108.
Rexx Driver EXECs - The Tools
• ALTLIB is a TSO service modifying the standard TSO search order for CLISTs and Rexx EXECs
ALTLIB ACT APPL(CLIST) DA(‘SYS1.DGTCLIB’)
• LIBDEF is an ISPF service modifying the normal
ISPF search order for file tailoring output,
images, load libraries, messages, panels,
skeletons, and tables
LIBDEF ISPPLIB DATASET ID(‘SYS1.DGTPLIB’) STACK
23
© Pinnacle Consulting Group, Inc., 2007. All rights
reserved. Permission granted to SHARE to distribute for
SHARE 108.
Rexx Driver EXECs - Examples
/* Rexx */
/*trace i*/
/*********************************************************************/
/* This exec invokes IBM's ServerPac Installation Dialog. Change */
/* 'order' to your ServerPac order number. */
/*********************************************************************/
parse arg ztrail
address tso "ALTLIB ACT APPL(CLIST) DA('CPAC.order.SCPPCENU')"
address ispexec "LIBDEF ISPLLIB DATASET ID('CPAC.order.SCPPLOAD') STACK"
address ispexec "LIBDEF ISPMLIB DATASET ID('CPAC.order.SCPPMENU') STACK"
address ispexec "LIBDEF ISPPLIB DATASET ID('CPAC.order.SCPPPENU') STACK"
address ispexec "LIBDEF ISPSLIB DATASET ID('CPAC.order.SCPPSENU') STACK"
address ispexec "LIBDEF ISPTLIB DATASET ID('CPAC.order.SCPPTENU') STACK"
address ispexec "SELECT CMD(%CPPCISPF CPAC) NEWAPPL(CPP) PASSLIB",
"SCRNAME(SERVPAC)"
address ispexec "LIBDEF ISPLLIB"
address ispexec "LIBDEF ISPMLIB"
address ispexec "LIBDEF ISPPLIB"
address ispexec "LIBDEF ISPSLIB"
address ispexec "LIBDEF ISPTLIB"
address tso "ALTLIB DEACT APPL(CLIST)"
24
© Pinnacle Consulting Group, Inc., 2007. All rights
reserved. Permission granted to SHARE to distribute for
SHARE 108.
Rexx Driver EXECs - Examples
/* Rexx */
/*********************************************************************/
/* This exec invokes IBM's RACF dialog. */
/*********************************************************************/
parse arg ztrail
address tso "ALTLIB ACT APPL(CLIST) DA('SYS1.HRFCLST')"
address ispexec "LIBDEF ISPPLIB DATASET ID('SYS1.HRFPANL') STACK"
address ispexec "LIBDEF ISPMLIB DATASET ID('SYS1.HRFMSG') STACK"
address ispexec "LIBDEF ISPSLIB DATASET ID('SYS1.HRFSKEL') STACK"
address ispexec "CONTROL ERRORS RETURN"
address ispexec "SELECT PANEL(ICHP00) NEWAPPL(RACF) OPT("ztrail")",
"PASSLIB SCRNAME(RACF)"
address ispexec "LIBDEF ISPPLIB"
address ispexec "LIBDEF ISPMLIB"
address ispexec "LIBDEF ISPSLIB"
address tso "ALTLIB DEACT APPL(CLIST)"
25
© Pinnacle Consulting Group, Inc., 2007. All rights
reserved. Permission granted to SHARE to distribute for
SHARE 108.
ISPF Menu Construction
• ISPF menus have a different construction in the Dynamic ISPF environment, because the menu
will invoke Rexx driver EXECs instead of the
“Standard” ISPF invocations for the products
• Proper menu construction is necessary to
ensure ISPF applications operate transparently,
providing the same function and usability as the
“Standard” ISPF interface
26
© Pinnacle Consulting Group, Inc., 2007. All rights
reserved. Permission granted to SHARE to distribute for
SHARE 108.
ISPF Menu Construction
• Nested menu options must be invoked correctly under Dynamic ISPF, just as they are in
“Standard” ISPF (e.g. If “S” invokes SDSF, then
“S.DA” should invoke the SDSF Display Active
panel, not “S;DA”)
• Without this transparent operation, Dynamic
ISPF will not be accepted by the user community
27
© Pinnacle Consulting Group, Inc., 2007. All rights
reserved. Permission granted to SHARE to distribute for
SHARE 108.
“Standard” ISPF Menu Construction
• “Standard” ISPF menu uses this )PROC section:)PROC &ZSEL = TRANS (TRUNC (&ZCMD,'.') 0,'PGM(ISPISM) SCRNAME(SETTINGS)' 1,'PGM(ISRBRO) PARM(ISRBRO01) SCRNAME(VIEW)' 2,'PGM(ISREDIT) PARM(P,ISREDM01) SCRNAME(EDIT)' 3,'PANEL(ISRUTIL) SCRNAME(UTIL)' 4,'PANEL(ISRFPA) SCRNAME(FOREGRND)' 5,'PGM(ISRJB1) PARM(ISRJPA) SCRNAME(BATCH) NOCHECK' 6,'PGM(ISRPTC) SCRNAME(CMD)' 7,'PGM(ISPYXDR) PARM(&ZTAPPLID) SCRNAME(DTEST) NOCHECK'8,'PANEL(ISRLPRIM) SCRNAME(LMF)' 9,'PANEL(ISRDIIS) ADDPOP' 10,'PGM(ISRSCLM) SCRNAME(SCLM) NOCHECK' 11,'PGM(ISRUDA) PARM(ISRWORK) SCRNAME(WORK)' X,EXIT SP,'PGM(ISPSAM) PARM(PNS)' ' ',' '
*,'?' ) &ZTRAIL=.TRAIL
• “Standard” ISPF menu doesn’t work, because
&ZTRAIL set too late for &ZSEL substitution
28
© Pinnacle Consulting Group, Inc., 2007. All rights
reserved. Permission granted to SHARE to distribute for
SHARE 108.
Dynamic ISPF Menu Construction
• Dynamic ISPF menu uses this )PROC section:)PROC &ZQ = &Z IF (&ZCMD ¬= ' ')
&ZQ = TRUNC(&ZCMD,'.') &ZTRAIL = .TRAIL IF (&ZQ = ' ')
.MSG = ISRU000 &ZSEL = TRANS ( &ZQ F,'CMD(%@FFST)' H,'CMD(%@HCD)' I,'CMD(%@ISMF &ZCMD) NOCHECK' IP,'CMD(%@IPCS &ZTRAIL) NOCHECK' S,'CMD(%@SMPE &ZCMD) NOCHECK' X,EXIT SP,'PGM(ISPSAM) PARM(PNS)' ' ',' '
*,'?' )
• For Dynamic ISPF, &ZTRAIL must be resolved
before &ZSEL TRANS so it can pass the lower-
level menu options to the Rexx driver EXEC
29
© Pinnacle Consulting Group, Inc., 2007. All rights
reserved. Permission granted to SHARE to distribute for
SHARE 108.
Dynamic ISPF Menu Construction
• OW45623 documents changes necessary to set &ZTRAIL prior to &ZSEL TRANS statement;
closed FIN for releases prior to z/OS V1R2
• At z/OS V1R2+, new ISPF selection menus and
DTL compiler changed to set &ZTRAIL for
Dynamic ISPF (OA03277 fixes bug for&ZTRAIL)
• For SELECT, ISPF checks submenu options
unless NOCHECK used; NOCHECK required
when passing &ZCMD or &ZTRAIL
30
© Pinnacle Consulting Group, Inc., 2007. All rights
reserved. Permission granted to SHARE to distribute for
SHARE 108.
Dynamic ISPF Menu Construction
• DFSORT, ISMF, and SMP/E are exceptions to the preceding; they perform their own truncation
processing and require the entire &ZCMD string
(e.g. if “I” invokes ISMF, and the user enters
“I.1” to display the ISMF Data Set option, where
&ZCMD is “I.1” and &ZTRAIL is “1”, you must pass &ZCMD “I.1” to ISMF; passing just
&ZTRAIL “1” displays ISMF Primary Option
Menu)
31
© Pinnacle Consulting Group, Inc., 2007. All rights
reserved. Permission granted to SHARE to distribute for
SHARE 108.
Performance Considerations
• LOGON time minimized in Dynamic ISPF environment, especially compared to
environments with LOGON CLISTs freeing and
reallocating ISPF datasets
• While Dynamic ISPF application takes longer to
invoke, it executes more quickly due to
decreased BLDL overhead
• Smaller TSO working set size compared to
“Standard” ISPF results in less real storage per
user, as well as reduced paging and swapping
32
© Pinnacle Consulting Group, Inc., 2007. All rights
reserved. Permission granted to SHARE to distribute for
SHARE 108.
Performance Considerations
• Higher overhead for dynamic allocation is more than offset by decreased BLDL overhead, as
well as decreased paging and swapping due to
smaller TSO working set
33
© Pinnacle Consulting Group, Inc., 2007. All rights
reserved. Permission granted to SHARE to distribute for
SHARE 108.
Performance Considerations - VLF
• Use VLF to improve the performance of all your CLISTs and EXECs systemwide
• Take advantage of the COFVLFxx parmlib member specifications for the IKJEXEC VLF
class, and specify every CLIST and EXEC
library in the EDSN parm
• VLF only works for datasets in SYSPROC
concatenation or application-level CLIST
ALTLIB, not SYSEXEC
34
© Pinnacle Consulting Group, Inc., 2007. All rights
reserved. Permission granted to SHARE to distribute for
SHARE 108.
Performance Considerations - VLF
• Here’s an example of the COFVLFxx PARMLIB member for CLISTs and EXECs allocating 4
Meg for MAXVIRT:
CLASS NAME(IKJEXEC)
EDSN(SYS1.SBLSCLI0)
EDSN(SYS1.SEDGEXE1)
EDSN(SYS1.SCBDCLST)
EDSN(SYS1.DGTCLIB)
EDSN(CAI.CAICLIB)
EDSN(SYS2.ISPCLIB)
EDSN(GIM.SGIMCLS0)
EDSN(ISP.SISPCLIB)
EDSN(SYS1.HRFCLST)
EDSN(SYS1.SERBCLS)
MAXVIRT(1024)
35
© Pinnacle Consulting Group, Inc., 2007. All rights
reserved. Permission granted to SHARE to distribute for
SHARE 108.
Performance Considerations - VLF
• Specify enough MAXVIRT to cache all CLISTs and EXECs; MAXVIRT is number of 4K blocks
allocated to the class
• SMF Type 41, subtype 3 records show if you
have enough MAXVIRT for each VLF class,
including MAXVIRT specified and high-water-
mark for interval covered by the record
36
© Pinnacle Consulting Group, Inc., 2007. All rights
reserved. Permission granted to SHARE to distribute for
SHARE 108.
Performance Considerations - VLF
• If updating member in VLF-managed library shared by multiple systems, you must issue the
TSO VLFNOTE command on each other sharing
system, otherwise you will continue to execute
the old member on the other sharing systems:
TSO VLFNOTE UPDATE DATASET('SYS2.ISPCLIB(@RACF)')
37
© Pinnacle Consulting Group, Inc., 2007. All rights
reserved. Permission granted to SHARE to distribute for
SHARE 108.
LOADLIBs
• LOADLIBs can be very confusing - should they be in ISPLLIB, STEPLIB, LINKLIST?
• Generally, using a LIBDEF’d ISPLLIB for LOADLIBs only works for programs invoked with
ISPEXEC SELECT; dialogs using
CALL/LINK/ATTACH/XCTL interface typically do
not work with ISPLLIB in a LIBDEF
• Graham Purdie's “ISPF Behind the Scenes”
session is the bible on LOADLIBs in ISPF:http://shareweb.share.org/proceedings/sh100/S2605.PDF
38
© Pinnacle Consulting Group, Inc., 2007. All rights
reserved. Permission granted to SHARE to distribute for
SHARE 108.
LOADLIBs
• LOADLIB requirements for ISPF dialog can be satisfied by the following from best to worst:
• Add LOADLIB to LINKLIST (least overhead, best performance, requires master catalog entry for
LNKLSTxx/PROGxx unless using VOLUME)
• Use Dynamic STEPLIB product (good
performance if used in driver EXEC, possible
cost issue)
39
© Pinnacle Consulting Group, Inc., 2007. All rights
reserved. Permission granted to SHARE to distribute for
SHARE 108.
LOADLIBs
• Allocate LOADLIB to ISPLLIB from READY before invoking ISPF (reasonable performance,
user input or LOGON PROC or LOGON EXEC
changes required)
• Use TSOLIB before invoking ISPF (poor
performance, not recommended, user input or
LOGON EXEC changes required, but it is useful
for testing purposes)
40
© Pinnacle Consulting Group, Inc., 2007. All rights
reserved. Permission granted to SHARE to distribute for
SHARE 108.
LOADLIBs
• STEPLIB LOADLIB in TSO LOGON PROC (poor performance, not recommended,
significant TSO impact, see Cheryl Watson’s
January 1991 Tuning Letter, available at (Thank
you, Cheryl!):
http://www.watsonwalker.com/JAN91.pdf
41
© Pinnacle Consulting Group, Inc., 2007. All rights
reserved. Permission granted to SHARE to distribute for
SHARE 108.
Dynamic STEPLIB
• Dynamic STEPLIB products can create or add to a STEPLIB concatenation for TSO PROC
• Using Dynamic STEPLIB in Rexx Driver EXECsallows you to save LINKLIST extents by
removing ISPF LOADLIBs from the LINKLIST
• Dynamic STEPLIB is essential for QMF prior to
QMF V6; QMF V6 added DSQLLIB to remove
the need for Dynamic STEPLIB
42
© Pinnacle Consulting Group, Inc., 2007. All rights
reserved. Permission granted to SHARE to distribute for
SHARE 108.
Dynamic STEPLIB
• Dynamic STEPLIB also useful for running two or more releases of an ISPF application in parallel
if application has a STEPLIB dependency
43
© Pinnacle Consulting Group, Inc., 2007. All rights
reserved. Permission granted to SHARE to distribute for
SHARE 108.
Dynamic STEPLIB
• I do not endorse or recommend any of these products; they are listed for your information only
• GSF (Gilbert Saint-Flour) LLIBDEF, Dynamic STEPLIB:
http://gsf-soft.com/Products
• Tone Software DYNA-STEP: http://www.tonesoft.com/products/dynastep/index.html
• MVS/JES2 Software Dynamic STEPLIB: http://www.cbttape.org/ftp/cbt/CBT452.zip
44
© Pinnacle Consulting Group, Inc., 2007. All rights
reserved. Permission granted to SHARE to distribute for
SHARE 108.
Dynamic STEPLIB
• I do not endorse or recommend any of these products; they are listed for your information only
• Dynamic STEPLIB component of PIE/TSO: http://www.unicomsi.com/solutions/ProdDetail.asp?item_id=163
• TRX by OES System Software - P: (888)277-
9071
45
© Pinnacle Consulting Group, Inc., 2007. All rights
reserved. Permission granted to SHARE to distribute for
SHARE 108.
TSOLIB
• TSOLIB is a TSO service modifying standard TSO search order for commands and programs;
it only works from the READY prompt, so it can’t
change the loadlib search order within ISPF
TSOLIB ACT DA(‘SYS1.DGTLLIB’)
• While TSOLIB is not suitable for production use,
it is useful for testing ISPF applications with
LOADLIB dependencies without requiring LINKLIST or LOGON PROC changes
46
© Pinnacle Consulting Group, Inc., 2007. All rights
reserved. Permission granted to SHARE to distribute for
SHARE 108.
TSOLIB
• To test with TSOLIB, exit ISPF, enter TSOLIB at the READY prompt, then re-enter ISPF to
execute your Dynamic ISPF driver EXEC
• TSOLIB can only be invoked from the READY
prompt or by a CLIST executing from READY; a
Rexx exec executing from READY must QUEUE
or PUSH TSOLIB, which then runs AFTER the
Rexx exec
47
© Pinnacle Consulting Group, Inc., 2007. All rights
reserved. Permission granted to SHARE to distribute for
SHARE 108.
Solving Common Problems
• ALWAYS use STACK on your LIBDEFs; z/OS V1R7 provides ISPF Configuration option to
make LIBDEF STACK the default - HIGHLY RECOMMENDED!
• After omitting STACK on LIBDEF, the most
common problem is omitting PASSLIB on the
SELECT statement when using NEWAPPL;
most vendors don’t support LIBDEF, so they don’t code PASSLIB with NEWAPPL
48
© Pinnacle Consulting Group, Inc., 2007. All rights
reserved. Permission granted to SHARE to distribute for
SHARE 108.
Solving Common Problems
• If passing menu items to a program with ISPF SELECT PGM(…) isn’t working, try using the
PARM operand to pass &ZCMD or &ZTRAIL
• If ISPF applications have problems with
Dynamic ISPF, open a PMR to fix the problem
• If you attempt to pass an invalid initial option to a
non-primary option menu (&ZPRIM=NO):
address ispexec “SELECT PANEL(zprimno) OPT(invalid)”
• you will get a nasty surprise…..
49
© Pinnacle Consulting Group, Inc., 2007. All rights
reserved. Permission granted to SHARE to distribute for
SHARE 108.
Solving Common Problems
ISPF Dialog Error
Command ===>
*****************************************************************************
* ISPD221 *
* *
* Specified option invalid *
* 'PANEL(zprimno) OPT(invalid)' - contains invalid OPT selection. *
* *
* *
* *
* *
* *
* *
* Current dialog statement: *
* SELECT PANEL(zprimno) OPT(invalid) *
* *
* Enter HELP command for further information regarding this error. *
* Press ENTER key to terminate the dialog. *
* *
* *
* *
* *
*****************************************************************************
50
© Pinnacle Consulting Group, Inc., 2007. All rights
reserved. Permission granted to SHARE to distribute for
SHARE 108.
Solving Common Problems
• The following code fixes this problem by trapping the error and issuing the ISPF “Invalid option”
message instead of the dialog termination panel:
address ispexec "CONTROL ERRORS RETURN"
do forever
address ispexec "SELECT PANEL(zprimno) OPT("ztrail")
SCRNAME(zzzzzzzz)"
if rc <= 4 then
leave
else
address ispexec "SETMSG MSG("zerrmsg")"
ztrail = ''
end
51
© Pinnacle Consulting Group, Inc., 2007. All rights
reserved. Permission granted to SHARE to distribute for
SHARE 108.
Solving Common Problems
• Another common problem is the ISPF dialog that requires keylists, but doesn’t set ISPF keylist
variable ZKLUSE to “Y”
• Dialogs requiring keylists often run into problems
at sites that turn off keylists by default
• The HCD dialog set the standard by requiring
ZKLUSE, since HCD is not usable if KEYLIST is
OFF
52
© Pinnacle Consulting Group, Inc., 2007. All rights
reserved. Permission granted to SHARE to distribute for
SHARE 108.
Solving Common Problems
• Some IBM components have recognized the need to set ZKLUSE to “Y” (WLM APAR
OW53981, SDSF APARs PQ57763, PQ60751,
IPCS APAR OW50398, TCP/IP APAR
PQ74283) but others have not (MQSeries
APARs PQ24700, PQ25929)
• Don’t let IBM or OEM vendors tell you that you
have to set KEYLIST ON by default, tell them to use correct ISPF dialog coding techniques
instead!
53
© Pinnacle Consulting Group, Inc., 2007. All rights
reserved. Permission granted to SHARE to distribute for
SHARE 108.
Solving Common Problems
• To fix keylist dialog not setting ZKLUSE to “Y”, use the technique shown here:
/* Rexx */
/*trace i*/
/*********************************************************************//* This exec invokes IBM's SDSF dialog. This exec used to require */
/* zcmd as an argument for nested menu options, but more recent */
/* releases of SDSF allow ztrail to be used. If you are having */
/* problems with nested menu options, try both zcmd and ztrail to */
/* see which one works. The BookManager datasets were added to */
/* support the SDSF BOOK command, based on a suggestion by Jim Kay */
/* at CenturyTel. This exec has also been modified to call @SDSF1, */
/* a stub exec which fixes PQ60751 by turning on PFSHOW and setting *//* ZKLUSE to "Y" to enable keylists. */
/*********************************************************************/
parse arg ztrail
address tso "ALTLIB ACT APPL(CLIST) DA('ISF.SISFEXEC',",
"'pref.DYNISPF.EXEC',",
"'EOY.SEOYCLIB')"
address ispexec "LIBDEF ISPMLIB DATASET ID('ISF.SISFMLIB',",
"'EOY.SEOYMENU') STACK" address ispexec "LIBDEF ISPPLIB DATASET ID('ISF.SISFPLIB',",
"'EOY.SEOYPENU') STACK"
address ispexec "LIBDEF ISPSLIB DATASET ID('ISF.SISFSLIB') STACK"
address ispexec "LIBDEF ISPTLIB DATASET ID('ISF.SISFTLIB',",
"'EOY.SEOYTENU') STACK"
address ispexec "SELECT CMD(%@SDSF1 "ztrail") NEWAPPL(ISF) PASSLIB",
"NOCHECK SCRNAME(SDSF)"
address ispexec "LIBDEF ISPMLIB" address ispexec "LIBDEF ISPPLIB"
address ispexec "LIBDEF ISPSLIB"
address ispexec "LIBDEF ISPTLIB"
address tso "ALTLIB DEACT APPL(CLIST)"
54
© Pinnacle Consulting Group, Inc., 2007. All rights
reserved. Permission granted to SHARE to distribute for
SHARE 108.
Solving Common Problems
• The exec invokes @SDSF1 instead of PGM(ISFISP), then @SDSF1 sets ZKLUSE,
turns on PFSHOW, and invokes SDSF:/* Rexx */
/*trace i*/
/*********************************************************************/
/* This exec invokes IBM's SDSF dialog. It also fixes PQ60751 by */
/* turning on PFSHOW and setting ZKLUSE to "Y" to enable keylists. */
/*********************************************************************/
parse arg ztrail
address ispexec "VGET (ZPFSHOW)"
pfshowsv = zpfshow
address ispexec "SELECT PGM(ISPOPF) PARM(PFK,ON)"
zkluse = 'Y'
address ispexec "VPUT (ZKLUSE) PROFILE"
address ispexec "SELECT PGM(ISFISP) PARM("ztrail") NOCHECK",
"SCRNAME(SDSF)"
address ispexec "SELECT PGM(ISPOPF) PARM(PFK,"pfshowsv")"
55
© Pinnacle Consulting Group, Inc., 2007. All rights
reserved. Permission granted to SHARE to distribute for
SHARE 108.
Miscellaneous Recommendations
• Use a naming convention for Rexx driver EXECs(e.g. use “@” prefix, @RMM invokes RMM,
@IPCS invokes IPCS, etc.)
• Use security package to secure ISPF application
datasets, don’t let the LOGON PROC’s dataset
allocations give you a false sense of security
• If using an ISPTABL dataset, that dataset should
also be first in ISPTLIB concatenation:
address ispexec "LIBDEF ISPTABL DATASET ID(’SVAA.SIBTABL’) STACK"
address ispexec "LIBDEF ISPTLIB DATASET ID(’SVAA.SIBTABL’),"
"’SVAA.SIBTLIB’) STACK"
56
© Pinnacle Consulting Group, Inc., 2007. All rights
reserved. Permission granted to SHARE to distribute for
SHARE 108.
Miscellaneous Recommendations
• Use scrollable menus to eliminate multiple submenus and multi-column selection menus
(ISR@PRIM is a good example)
• There is a 126-entry limit for the TRANS
function; apply OA02785 to get error message
ISPP323 if the 126-pair limit for the TRANS
function is exceeded
57
© Pinnacle Consulting Group, Inc., 2007. All rights
reserved. Permission granted to SHARE to distribute for
SHARE 108.
Miscellaneous Recommendations
• To circumvent the 126-pair limit for TRANS, use the following code with a scrollable menu to
create a single menu with unlimited selections:)PROC
&ZSEL = TRANS( &ZQ
X,EXIT
SP,'PGM(ISPSAM) PARM(PNS)'
' ',' '
*,'?')
&NEXTZSEL = 'NO'
IF (&ZSEL = ' ')
&NEXTZSEL = 'YES'
IF (&ZSEL = '?')
&NEXTZSEL = 'YES'
IF (&NEXTZSEL = 'YES')
&ZSEL = TRANS( &ZQ
X,EXIT
SP,'PGM(ISPSAM) PARM(PNS)'
' ',' '
*,'?')
58
© Pinnacle Consulting Group, Inc., 2007. All rights
reserved. Permission granted to SHARE to distribute for
SHARE 108.
Miscellaneous Recommendations
• Include SCRNAME on SELECT statement in Rexx driver EXEC (instead of selection menu)
so users with command tables or using TSO
@EXEC can take advantage of SWAP LIST
processing
address ispexec "SELECT CMD(SIBREMM0) NOCHECK SCRNAME(SVAA)"
59
© Pinnacle Consulting Group, Inc., 2007. All rights
reserved. Permission granted to SHARE to distribute for
SHARE 108.
Miscellaneous Recommendations
• If using command table for ISPF applications, use &ZPARM when invoking Rexx driver exec:
Menu Utilities Help
------------------------------------------------------------------------------
Display TESTCMDS Row 1 to 1 of 1
Command ===> Scroll ===> CSR
Insert (I), delete (D), repeat (R) and edit (E) command entries.
Enter END command to save changes or CANCEL to end without saving.
Verb T Action
____ ISMF 0 SELECT CMD(%@ISMF I.&ZPARM) NOCHECK
____ RACF 0 SELECT CMD(%@RACF &ZPARM) NOCHECK
• If applications need &ZCMD (DFSORT, ISMF, SMP/E), use dummy selection argument “I.”
before &ZPARM; user can then enter “ISMF 1”
for ISMF dataset menu, instead of “ISMF I.1”
60
© Pinnacle Consulting Group, Inc., 2007. All rights
reserved. Permission granted to SHARE to distribute for
SHARE 108.
Miscellaneous Recommendations
• Delete SYSHELP DD statement in LOGON PROC and use the HELP statement in
IKJTSO00 instead:
HELP ENU(SYS1.HELP /* HELP COMMAND DEFAULTS */ +
ISP.SISPHELP /* ISPF HELP */ +
)
• Using HELP statement in IKJTSO00 saves
resources and reduces contention, since help datasets are only allocated if user enters TSO
HELP command
61
© Pinnacle Consulting Group, Inc., 2007. All rights
reserved. Permission granted to SHARE to distribute for
SHARE 108.
Miscellaneous Recommendations
• Some applications do not support dynamic help from IKJTSO00, so you might have to leave
SYSHELP in the LOGON PROC
• CA-ACF2 does not support dynamic help, so
use the ACFHELP DD to satisfy ACF2 help and
IKJTSO00 for everything else
• Due to a problem with attention processing,
OY59638 recommended using LOGON CLISTs
instead of EXECs
62
© Pinnacle Consulting Group, Inc., 2007. All rights
reserved. Permission granted to SHARE to distribute for
SHARE 108.
Miscellaneous Recommendations
• ISPF can be invoked by LOGON EXEC if using Rexx QUEUE or PUSH command
/* Rexx */
/* trace i */
msgsave = msg()
x = msg('OFF')
address tso "ALLOC FI(ISPPROF) DA('"userid()".ISPF.ISPPROF') OLD"
if rc <> 0 then
do
profdsn = userid().ISPF.ISPPROF
x = msg('ON')
address tso "ALLOC FI(ISPPROF) DA('"profdsn"') NEW CATALOG",
"CYLINDERS SPACE(1 1) DIR(45) DSORG(PO) RECFM(F B)",
"LRECL(80) BLKSIZE(0)"
if rc = 0 then
say "ISPF profile dataset'"profdsn"'created"
else
say "Unable to allocate ISPF profile dataset'"profdsn"'"
end
x = msg(msgsave)
/* queue “TSOLIB ACT DA(‘tsolib dsn’)” Put TSOLIB ACT here if needed */
queue "ISPF NOLOGO"
/* queue “TSOLIB DEACT” Put TSOLIB DEACT here if needed */
63
© Pinnacle Consulting Group, Inc., 2007. All rights
reserved. Permission granted to SHARE to distribute for
SHARE 108.
Miscellaneous Recommendations
• “QUEUE” command puts “ISPF NOLOGO” onto the Rexx stack, “ISPF NOLOGO” executes from
the READY prompt, and OY59638 is bypassed
since ISPF is executing in native TSO instead of
a Rexx environment
• An inhibitor to using a LOGON Rexx EXEC
occurs when the user specifies a command in
the TSO LOGON panel; that command will be executed before the QUEUEd or PUSHed ISPF
command
64
© Pinnacle Consulting Group, Inc., 2007. All rights
reserved. Permission granted to SHARE to distribute for
SHARE 108.
Miscellaneous Recommendations
• Other than the above inhibitor, the new recommendation is to use LOGON EXECs
instead of LOGON CLISTs wherever possible
• TSOLIB used to be an inhibitor, but it is easily
handled by “QUEUE”ing it before ISPF and
freeing it afterward
65
© Pinnacle Consulting Group, Inc., 2007. All rights
reserved. Permission granted to SHARE to distribute for
SHARE 108.
Miscellaneous Recommendations
• In recent releases of z/OS, IBM has repackaged certain components into other datasets
• To handle repackaging, the Rexx driver exec can use the Rexx mvsvar function to interrogate
the sysmvs variable, which indicates the MVS
release for the system
• The value in sysmvs can be used to make
decisions in the Rexx driver exec based on the
MVS release
66
© Pinnacle Consulting Group, Inc., 2007. All rights
reserved. Permission granted to SHARE to distribute for
SHARE 108.
Miscellaneous Recommendations
• In OS/390 V2R10, IBM repackaged RMM by eliminating SEDGSKL1 and SEDGTBL1 and
moving their members to DGTSLIB and
DGTTLIB, respectively
• The following @ISMF example shows how to
use the mvsvar function with sysmvs to
allocate the proper datasets for RMM support
67
© Pinnacle Consulting Group, Inc., 2007. All rights
reserved. Permission granted to SHARE to distribute for
SHARE 108.
Miscellaneous Recommendations
/* Rexx */
/* trace i */
parse arg zcmd
.
.
/*********************************************************************/
/* This code determines which release of OS/390 is running because */
/* at OS/390 V2R10 and higher, RMM eliminated SEDGSKL1 and SEDGTBL1. */
/* This modification is courtesy of David Alcock at American */
/* Electric Power. */
/*********************************************************************/
if mvsvar('sysmvs') > 'SP6.0.9' then
do
address ispexec "LIBDEF ISPSLIB DATASET ID('SYS1.DGTSLIB') STACK"
address ispexec "LIBDEF ISPTLIB DATASET ID('"userid()".ISPPROF',",
"'SYS1.DGTTLIB') STACK"
end
else
do
address ispexec "LIBDEF ISPSLIB DATASET ID('SYS1.DGTSLIB',",
"'SYS1.SEDGSKL1') STACK"
address ispexec "LIBDEF ISPTLIB DATASET ID('"userid()".ISPPROF',",
"'SYS1.DGTTLIB',",
"'SYS1.SEDGTBL1') STACK"
end
.
.
68
© Pinnacle Consulting Group, Inc., 2007. All rights
reserved. Permission granted to SHARE to distribute for
SHARE 108.
Sell Dynamic ISPF to Management
• Sell Performance - Dynamic ISPF performs better, due to faster LOGON, lower BLDL
overhead, and smaller TSO working set size
reducing paging and swapping
• Sell Reliability and Serviceability (RAS) -
Dynamic ISPF is more reliable and easier to
service, due to standard LOGON PROC, single
Rexx driver EXEC, immediate access to new ISPF applications, and ENQ’s are not held on
datasets unless the ISPF dialog is active
69
© Pinnacle Consulting Group, Inc., 2007. All rights
reserved. Permission granted to SHARE to distribute for
SHARE 108.
Sell Dynamic ISPF to Management
• Sell Disaster Recovery - Dynamic ISPF helps recover from disasters more quickly, since TSO
can run once system and site-specific ISPF
datasets are restored
• Sell Security - Dynamic ISPF encourages you to
implement real security for your ISPF
applications, rather than rely on the false sense
of security provided by “Standard” ISPF
70
© Pinnacle Consulting Group, Inc., 2007. All rights
reserved. Permission granted to SHARE to distribute for
SHARE 108.
Server Pac - The “Dark Side”
• ServerPac implements “Standard” ISPF by using large LOGON PROCs, a LOGON CLIST to free
and reallocate libraries, and an ISP@MSTR
menu where ISPF is not the main application
• ServerPac also includes an optional function to
merge similar datasets into one library; this
function is most often used to merge ISPF
application datasets
71
© Pinnacle Consulting Group, Inc., 2007. All rights
reserved. Permission granted to SHARE to distribute for
SHARE 108.
Server Pac - The “Dark Side”
• ServerPac’s tacit endorsement of this ISPF install method using merged libraries is a
significant inhibitor to an installation’s
acceptance of Dynamic ISPF
• LOGON PROC maintenance is simplified, but
BLDL overhead is still significant since ISPF
libraries will likely contain thousands of members
72
© Pinnacle Consulting Group, Inc., 2007. All rights
reserved. Permission granted to SHARE to distribute for
SHARE 108.
Server Pac - The “Dark Side”
• Unless you have Parallel Access Volume support, loads for ISPF dialog elements are
single-threaded since each merged ISPF library
is on a single volume; with Dynamic ISPF, you
can spread out the I/O for better performance
• With Dynamic ISPF, access to a specific ISPF
dialog can be controlled with dataset security,
but merging libraries allows all users to execute all ISPF dialogs
73
© Pinnacle Consulting Group, Inc., 2007. All rights
reserved. Permission granted to SHARE to distribute for
SHARE 108.
Server Pac - The “Dark Side”
• If two ISPF applications use the same member name, you have to use another library to resolve
the conflict
• If you haven’t implemented the merged library
methodology, use Dynamic ISPF instead
• If you’ve implemented the merged library
methodology, consider Dynamic ISPF as a
better alternative when you install your next
ServerPac
74
© Pinnacle Consulting Group, Inc., 2007. All rights
reserved. Permission granted to SHARE to distribute for
SHARE 108.
Conversion to Dynamic ISPF
• Conversion to Dynamic ISPF is heavily dependent on your existing TSO/ISPF
installation methodology
• Conversion is accomplished for each application
by coding the Dynamic ISPF driver EXEC,
creating an appropriate menu selection, and
thoroughly testing that application’s functionality
• Once applications are converted, you can plan
the production cutover
75
© Pinnacle Consulting Group, Inc., 2007. All rights
reserved. Permission granted to SHARE to distribute for
SHARE 108.
Conversion to Dynamic ISPF
• While production cutover to Dynamic ISPF can be accomplished in phases, I recommend an
approach that cuts everything over at once
• This approach minimizes the changes,
problems, and time required to convert to
Dynamic ISPF
76
© Pinnacle Consulting Group, Inc., 2007. All rights
reserved. Permission granted to SHARE to distribute for
SHARE 108.
Conversion to Dynamic ISPF
• Create LOGON PROC for building Dynamic ISPF applications, per example shown earlier
• Choose an application to convert and code a driver EXEC to invoke the application
• Create a menu selection or command table entry to invoke the application, then test the
application and selection menu or command
table entry for functionality
77
© Pinnacle Consulting Group, Inc., 2007. All rights
reserved. Permission granted to SHARE to distribute for
SHARE 108.
Conversion to Dynamic ISPF
• Code the appropriate access rules for the ISPF application datasets
• If creating new LOGON PROC names, update each TSO user's security profile for the new
PROC names
• Repeat these steps until each ISPF application
is converted and each menu selection or
command table entry is tested
78
© Pinnacle Consulting Group, Inc., 2007. All rights
reserved. Permission granted to SHARE to distribute for
SHARE 108.
Conversion to Dynamic ISPF
• For production cutover, create new LOGON PROCs for Dynamic ISPF
• I recommend swapping the old and new PROCsvia rename; using new PROC names will require
updating user security profiles for access to the
new PROC
• Similar to the LOGON PROCs, create new
selection menus, or command table members,
and implement via rename swaps
79
© Pinnacle Consulting Group, Inc., 2007. All rights
reserved. Permission granted to SHARE to distribute for
SHARE 108.
Conversion to Dynamic ISPF
• Select a small subset of users as the beta test group; I recommend systems programmers,
since they usually have access to the widest
range of ISPF applications
• Communicate the implementation to the users
• GO FOR IT!!
80
© Pinnacle Consulting Group, Inc., 2007. All rights
reserved. Permission granted to SHARE to distribute for
SHARE 108.
Dynamic ISPF Starter Set (DISS)
• To remove an inhibitor and assist converison to Dynamic ISPF, I’ve created a Starter Set of
Rexx driver EXECs for many popular ISPF
applications and made it available at:
http://home.rochester.rr.com/pinncons/dynispf.zip
• DISS is also available on CBT tape FILE495 at:
http://www.cbttape.org/ftp/updates/CBT495.zip
http://www.cbttape.org/ftp/cbt/CBT495.zip
81
© Pinnacle Consulting Group, Inc., 2007. All rights
reserved. Permission granted to SHARE to distribute for
SHARE 108.
Dynamic ISPF Starter Set (DISS)
• DISS contains over 150 Rexx execs to invoke popular ISPF applications
• If you encounter any problems with the Starter Set, or to contribute a new Rexx driver EXEC to
the Starter Set, send an Email to
pinncons@rochester.rr.com
82
© Pinnacle Consulting Group, Inc., 2007. All rights
reserved. Permission granted to SHARE to distribute for
SHARE 108.
Product Launch Point (PLP)
• Lionel Dyck has created a menu-driven application called Product Launch Point (PLP)
• PLP allows a user to specify the pieces of an ISPF application, such as datasets, the SELECT
command to invoke the application, etc., and
PLP will invoke the ISPF application dynamically
• Check out PLP and the other fine free software
available from Lionel's web site:http://www.lbdsoftware.com/
83
© Pinnacle Consulting Group, Inc., 2007. All rights
reserved. Permission granted to SHARE to distribute for
SHARE 108.
Setting up TSO and ISPF (WAC)
• I’m often asked about how to set up TSO and ISPF, so here’s the WAC (World According to
Conley) method
• Using the Dynamic ISPF LOGON PROC shown
earlier, create a unique LOGON proc for each
functional group at your site (STEPNAME on the
EXEC PGM=IKJEFT01 statement should be
unique for each LOGON PROC)
84
© Pinnacle Consulting Group, Inc., 2007. All rights
reserved. Permission granted to SHARE to distribute for
SHARE 108.
Setting up TSO and ISPF (WAC)
• Use LOGON EXEC shown earlier in the Miscellaneous Recommendations section (all it
does is allocate ISPPROF and invoke ISPF)
• If an existing LOGON CLIST or EXEC
customizes the user’s ISPF environment,
remove that code and have the user set up their
own ISPF environment from option 6, using TSO
EXEC to run a Rexx EXEC or CLIST with ALTLIB and LIBDEF commands for the user’s
ISPF files
85
© Pinnacle Consulting Group, Inc., 2007. All rights
reserved. Permission granted to SHARE to distribute for
SHARE 108.
Setting up TSO and ISPF (WAC)
• ISR@PRIM is modified to add an “A” option for applications for all users, and a “Z” option for
applications specific to a particular user groupMenu Utilities Compilers Options Status Help
------------------------------------------------------------------------------
ISPF Primary Option Menu
Option ===>
0 Settings Terminal and user parameters < Calendar >
1 View Display source data or listings August 2006
2 Edit Create or change source data Su Mo Tu We Th Fr Sa
3 Utilities Perform utility functions 1 2 3 4 5
4 Foreground Interactive language processing 6 7 8 9 10 11 12
5 Batch Submit job for language processing 13 14 15 16 17 18 19
6 Command Enter TSO or Workstation commands 20 21 22 23 24 25 26
7 Dialog Test Perform dialog testing 27 28 29 30 31
9 IBM Products IBM program development products
10 SCLM SW Configuration Library Manager Time . . . . : 21:36
11 Workplace ISPF Object/Action Workplace Day of year. : 224
A ALL ISPF Applications for all users
S SDSF Spool Display and Search Facility
Z TSOAPPL ISPF Applications for TSOAPPL group
Enter X to Terminate using log/list defaults
86
© Pinnacle Consulting Group, Inc., 2007. All rights
reserved. Permission granted to SHARE to distribute for
SHARE 108.
Setting up TSO and ISPF (WAC)
• The “Z” option is variable &ZLOGON &ZQ = &Z
IF (&ZCMD ¬= ' ')
&ZQ = TRUNC(&ZCMD,'.')
&ZTRAIL = .TRAIL
IF (&ZQ = ' ')
.MSG = ISRU000
&ZSEL = TRANS ( &ZQ
0,'PGM(ISPISM) SCRNAME(SETTINGS)'
1,'PGM(ISRBRO) PARM(ISRBRO01) SCRNAME(VIEW)'
2,'PGM(ISREDIT) PARM(P,ISREDM01) SCRNAME(EDIT)'
3,'PANEL(ISRUTIL) SCRNAME(UTIL)'
4,'PANEL(ISRFPA) SCRNAME(FOREGRND)'
5,'PGM(ISRJB1) PARM(ISRJPA) SCRNAME(BATCH) NOCHECK'
6,'PGM(ISRPTC) SCRNAME(CMD)'
7,'PGM(ISPYXDR) PARM(&ZTAPPLID) SCRNAME(DTEST) NOCHECK'
8,'PANEL(ISRLPRIM) SCRNAME(LMF)'
9,'PANEL(ISRDIIS) ADDPOP'
10,'PGM(ISRSCLM) SCRNAME(SCLM) NOCHECK'
11,'PGM(ISRUDA) PARM(ISRWORK) SCRNAME(WORK)'
A,'PANEL(ALLUSER) SCRNAME(ALLUSER)'
S,'CMD(%@SDSF &ZTRAIL) NOCHECK'
Z,'PANEL(&ZLOGON) SCRNAME(&ZLOGON)'
X,EXIT
SP,'PGM(ISPSAM) PARM(PNS)'
' ',' '
*,'?' )
87
© Pinnacle Consulting Group, Inc., 2007. All rights
reserved. Permission granted to SHARE to distribute for
SHARE 108.
Setting up TSO and ISPF (WAC)
• &ZLOGON is the stepname on the EXEC statement for IKJEFT01, not the member name
of the PROC
• z/OS V1R5 introduced a new &ZSYSPROC
variable which holds the member name of the
PROC (can now use a single proc with aliases!)
• This menu separates ISPF applications by
function and presents a single, standardized
ISR@PRIM to all users
88
© Pinnacle Consulting Group, Inc., 2007. All rights
reserved. Permission granted to SHARE to distribute for
SHARE 108.
Setting up TSO and ISPF (WAC)
• After setting up the LOGON PROC and Primary Option Menu, all that’s left is to set up the
ALLUSER menu for all users, and each
individual &ZLOGON menu for the functional
groups
• The Dynamic ISPF Starter Set contains samples
for the LOGON PROC, LOGON EXEC, Primary
Option Menu, ALLUSER menu, and &ZLOGON menu
89
© Pinnacle Consulting Group, Inc., 2007. All rights
reserved. Permission granted to SHARE to distribute for
SHARE 108.
Summary
• Dynamic ISPF is a methodology using Rexx EXECs to dynamically invoke ISPF applications
• Dynamic ISPF uses ALTLIB and LIBDEF to dynamically allocate ISPF application datasets,
instead of allocating each ISPF dataset in the
TSO LOGON PROC
• Properly implemented, Dynamic ISPF provides
significant maintenance and storage benefits
90
© Pinnacle Consulting Group, Inc., 2007. All rights
reserved. Permission granted to SHARE to distribute for
SHARE 108.
Summary
• ISPF menu construction is key in the Dynamic ISPF environment to ensure submenu options
are correctly passed through the Rexx driver
EXECs
• Dynamic ISPF performs better than "Standard"
ISPF; overhead involved in dynamically
allocating ISPF datasets is balanced by lower
BLDL, paging, and swapping overhead
91
© Pinnacle Consulting Group, Inc., 2007. All rights
reserved. Permission granted to SHARE to distribute for
SHARE 108.
Summary
• Use of LOADLIBs in Dynamic ISPF vary with each application, depending on whether the
application uses the ISPF SELECT service to
invoke its programs, or whether the application
uses CALL/ATTACH, etc. to invoke its programs
• Options for LOADLIBs are LINKLIST, Dynamic
STEPLIB, TSOLIB, ISPLLIB, and STEPLIB
• Common problems can be solved by using
specific techniques for menus or opening PMR’s
if necessary
92
© Pinnacle Consulting Group, Inc., 2007. All rights
reserved. Permission granted to SHARE to distribute for
SHARE 108.
Summary
• Miscellaneous recommendations were made covering a number of topics important to
Dynamic ISPF
• Selling Dynamic ISPF to Management can be
done by pointing out performance, maintenance,
disaster recovery, and security benefits of
Dynamic ISPF
93
© Pinnacle Consulting Group, Inc., 2007. All rights
reserved. Permission granted to SHARE to distribute for
SHARE 108.
Summary
• The ServerPac method merging all ISPF datasets into one large dataset prevents
securing ISPF applications and favors
“Standard” ISPF over Dynamic ISPF
• A roadmap for converting to Dynamic ISPF was
discussed with test and production cutover plans
94
© Pinnacle Consulting Group, Inc., 2007. All rights
reserved. Permission granted to SHARE to distribute for
SHARE 108.
Summary
• The Dynamic ISPF Starter Set (DISS) is a set of pre-coded Rexx driver EXECs designed to get
you up and running quickly with Dynamic ISPF
• Setting up TSO and ISPF using WAC (World
According to Conley) was discussed
95
© Pinnacle Consulting Group, Inc., 2007. All rights
reserved. Permission granted to SHARE to distribute for
SHARE 108.
Finally…
• Send me an Email at pinncons@rochester.rr.comor leave a business card to get on the Dynamic
ISPF mailing list
• If you implement Dynamic ISPF, please let me
know your experiences, positive or negative;
problems can be overcome, so let me know if you
need assistance
96
© Pinnacle Consulting Group, Inc., 2007. All rights
reserved. Permission granted to SHARE to distribute for
SHARE 108.
Finally…
• Vendors are now more willing to fix bugs, but if you encounter resistance, let me know and the
Dynamic ISPF community will respond with
PMR’s; a properly coded ISPF application should
always support Dynamic ISPF
• I was pleasantly surprised to see that the ADCD
folks at IBM distribute Dynamic ISPF, now if only
ServerPac….
97
© Pinnacle Consulting Group, Inc., 2007. All rights
reserved. Permission granted to SHARE to distribute for
SHARE 108.
Finally…
• Read my articles in Cheryl Watson’s TUNING Letter, “Focus: Dynamic ISPF” in the 2000, No. 6
edition, and “Dynamic ISPF: An Update”, in the
2003, No. 3 edition; go to
http://www.watsonwalker.com for details