ispf dynamic

97
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 [email protected] 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.

Upload: senthil-balasundaram

Post on 03-Sep-2014

289 views

Category:

Documents


23 download

TRANSCRIPT

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

[email protected]

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

[email protected]

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 [email protected] 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