fadhlogo2.gif (3693 bytes)
PDSFLIST :- Rexx Fullscreen PDS list function.   Version 4.3      
© Copyright : FadH Software 1989, 1999
 
This Rexx function enables you to display the directories of multiple
PDS's at the same time.
Members within the listed libraries can then be edited, browsed, renamed
copied, moved and deleted all from the same screen.
Various subcommands are available to modify the order and details of the
members displayed.
Rexx execs, TSO Clists and TSO commands can be executed from the
PDSFLIST command area.

As PDSFLIST is a Rexx function it can be invoked from a Rexx exec by
either :-

1) Call PDSFLIST
or
2) rc=pdsflist()


PDSFLIST Variables
 
Variable : pdslist 

Prior to invoking the function, the exec must set up a variable called
PDSLIST. This variable is a list of Datasets to be processed. Each
Dataset in this list must be separated by a blank. For example,
PDSLIST="X99999.PRIVATE.JCL X99999.EXEC" would display members from
both those PDS's. There is no limit to the number of datasets that can 
be included in the list. However, there is a display limit of 50,000 
members.

The dataset requested can be a fully qualified name, a partially qualified
name, eg SYS1.USER.* or a DDNAME. If a DDNAME is being specified, it must
be specified as DD=. For example, DD=ISPPLIB would request a display of
the datasets allocated to ISPPLIB. When using the DD= parameter, you can 
also specify the 'virtual DD' names of APFLIST and LINKLST. This will cause  
those system lists to be displayed/searched.

If you specify a dataset starting with a . (dot), your TSO userid will be 
prefixed to the DSN. 
 
If a requested dataset is uncataloged, the volume it resides on should 
be indicated by the VOL= parameter,
ie PDSLIST="X99999.PRIVATE.CNTL,VOL=TEST01" (Note : the VOL= parameter can
be abbreviated to V=). 

All of the DSN specifications may be specified in the same list, eg 
 
pdslist="DD=ISPPLIB TSG.SYS1.* TSG.TEST.LINKLIB,V=TEST01" 

If you wish to display multiple uncataloged DSNs from the same volume,
you should use the VOLLIST variable. This indicates the volume on which
all the requested datasets reside. If this method is used, you do not
need the VOL= parameter on each DSN. 
 
 
Variable : memlist     (optional)

Additionally, the exec may initialise a 'member search option' variable
called MEMLIST. This contains a search pattern for the members to be
displayed. An example of search patterns and their meaning are listed
below.

 Memlist Parameter           Meaning

        *                               All members
      ABC                           Member called ABC
     ABC*                           Members starting with ABC
    *ABC*                           Members with ABC somewhere within the name

     ++++                           All member names of four bytes
    +BCD+                         All member names of five bytes with B,C and
                                        D in positions 2,3 and 4 respectively.

Note : To provide compatibility with UNIX, the member search pattern can
use a question mark (?) instead of a plus sign. 
 

Variable : helpdsn     (optional) 
 
This variable should be set to indicate the location of the PDSFLIST help
file (used by the PF1 Help function). 
 
 
Variable : opclass     (optional) 
 
Specifies the output class that will be used for Print requests. (default R)
 
 
Variable : dsninfo     (optional) 
 
The can be used to invoke the PDSFLIST Dataset Information screen directly. 
It is useful in execs to display various details about a DSN without going
through the PDSFLIST member list display.
 
The following values may be used, 
D - Display the Dataset Information screen 
A - Display the Dataset allocation summary
V - Display the volume details 
C - Display the Catalog details 
 

Variable : safcheck     (optional) 
 
When using the Generic Filtered List (GFL) function (ie requesting a group 
of DSNs by partial qualifier), it is useful to avoid any security allocation
failure messages. If you wish a "pre allocation" authorisation check to be
made, set this variable to Y 
 
 

Below is a sample Exec using PDSFLIST. A similar method is used by 
an exec called 'FL' that provides a generalised tool for invoking this
REXX function.

/* REXX */
Trace

pdslist=userid()".PRIVATE.JCL" , /* word list of datasets to display */
        userid()".EXEC"
memlist="TEST*"                  /* Show only members prefixed TEST */

   call pdsflist

exit
/* End of exec */

Below is a list of the alternatives when invoking the exec as a TSO
command and the action taken.

    Command Entered          Action
    
    FL                                   List all members in userid.PRIVATE.JCL and
                                           userid.EXEC (where userid is your TSO ID)

    FL ABC*                          List all members starting with ABC from
                                           userid.PRIVATE.JCL and userid.EXEC

    FL *ABC*                         List all members with the string ABC in them
                                           from userid.PRIVATE.JCL and userid.EXEC

    FL TEST.PDS.EXEC         List all members in TEST.PDS.EXEC

    FL ABC* TEST.PDS.JCL   List all members starting with ABC from
                                           TEST.PDS.JCL

    FL *ABC* TEST.PDS.JCL   List all members with the string ABC in them
                                             from TEST.PDS.JCL

    FL XYZ* .EXEC                 List all members starting with XYZ in
                                             dataset 'userid.EXEC'.

    FL XYZ* DD=SYSEXEC     List all members starting with XYZ in the
                                             datasets allocated to DDNAME SYSEXEC.

    
PDSFLIST Subcommands

The following subcommands are available to help you once you enter
PDSFLIST.
If the command area is not large enough to contain a subcommand and it's
parameters, use PF11 to extend the command area.


Subcommand  : TOP
Format           : /T
Description     : Display the first page of the current PDSFLIST level.


Subcommand  : BOTTOM
Format           : /B
Description     : Display the last page of the current PDSFLIST level.


Subcommand  : CURRENT
Format           : /
Description     : Display the list of members starting from this entry.
                       i.e Position this member at top of screen.


Subcommand  : EDIT
Format           : X <member> <dsn>
                       E <member> <dsn>
                       EDIT <member> <dsn>
Description     : Edit the selected member.
                        It should be noted that the ISPF editor will produce a
                        return code of 4 when no data has been changed during
                        an edit session.


Subcommand  : BROWSE
Format           : B <member> <dsn>
                       CAT <member> <dsn>
                       MORE <member> <dsn>
                       TYPE <member> <dsn>
Description     : Browse the selected member.


Subcommand  : VIEW
Format            : V <member> <dsn>
Description      : View the selected member.

Notes for EDIT/VIEW/BROWSE : Both the member and dsn parameters are
optional. By default, the member selected is the one on the line where
the subcommand is executed. However, using the member and DSN
parameters, you can EDIT/VIEW/BROWSE any specific member directly.
Neither the member or dsn parameters have to be within the currently
displayed list.
If you specify a member but omit the dsn, the dsn used will be that
from the entry on the line where the subcommand is executed.


Subcommand  : ERASE
Format           : ER
                        ERASE
                        DEL
                        KIL
                        KILL
                        RM
Description     : Delete the selected member.
                       The name of the deleted member will continue to show in
                       the displayed level, however, the line is protected and
                       *Deleted is shown next to the member name.

 

Subcommand  : DELDSN
Format           :  DELDSN
                        DSNDEL
Description     :  Delete the selected DSN.
                        The DSN which contains the selected member is deleted.
                        Once deleted, all entries for that DSN will show as
                        *DSN deleted*


Subcommand  : RENAME
Format           : R newmem
                        RE newmem
                        REN newmem
Description     :  Rename the selected member to a new name.
                        The new member name is immediately reflected in the
                        displayed list of members.


Subcommand  : COPY
Format            : C newmem newdsn
                         COPY newmem newdsn
                         CP newmem newdsn
Description      : Copy the selected member to the same dataset or another
                        Dataset. The new member name can be specified as an
                        equals sign '='. In this case, the new member name will
                        be the same as the member that is being copied.
                        The copy operation will not replace any like named
                        members. Use the COPYR (replace) subcommand if need be.
                        A copy command with a new member name of '=' and no new
                        dataset name specified will fail. This is because two
                        members with the same name cannot exist within the
                        same PDS.
                        The dataset that the member is being copied to does not
                        have to be currently being displayed via PDSFLIST. If you
                        are copying to an uncataloged DSN you should include the
                        VOL= (or V=) parameter.


Subcommand  : COPYR
Format           : COPYR newmem newdsn
                        CR newmem newdsn
                        CPR newmem newdsn
                        REPLACE newmem newdsn
Description     :  Copy the selected member to a another dataset. If the
                        member name already exists in the target PDS then it will
                        will be overwritten.
                        The dataset that the member is being copied to does not
                        have to be currently being displayed via PDSFLIST. If you
                        are copying to an uncataloged DSN you should include the
                        VOL= (or V=) parameter.


Subcommand  : MOVE
Format           : MOVE newmem newdsn
                        M newmem newdsn
                        MV newmem newdsn
Description     : Moves the selected member to another Dataset.
                       The new member name can be specified as an equals sign '='.
                       In this case, the new member name will be the same as the
                       member that is being moved. The dataset name that the
                       member is being moved to must be specified.
                       The dataset that the member is being moved to does not
                       have to be currently being displayed via PDSFLIST. If you
                       are moving a member to an uncataloged DSN you should
                       include the VOL= (or V=) parameter.
                       Once the member has been moved, it is deleted from the
                       original dataset. The member will only be moved if it
                       does not already exist in the target cataloged dataset.
                       Use the MOVER command if you wish to replace an existing
                       member.


Subcommand  : MOVER
Format           : MOVER newmem newdsn
                        MR newmem newdsn
                        MVR newmem newdsn
Description     : Moves the selected member to a another dataset. If the
                       member name already exists in the target PDS then it will
                       will be overwritten.
                       The dataset that the member is being moved to does not
                       have to be currently being displayed via PDSFLIST. If you
                       are moving a member to an uncataloged DSN you should
                       include the VOL= (or V=) parameter.

 

Subcommand  : COMPRESS
Format           : Z dsn
                       COMPRESS dsn
Description     : Compresses the target PDS. If no DSN is passed as a parameter,
                         the PDS of the member selected is compressed.
                      

Subcommand  : LOCATE
Format           : L member
                        F member
Description     : Locate the requested member within the list. This member
                       will then be moved to the top of the display.
                       The RFIND PF Key, PF5, can then be used to find subsequent
                        occurrences within the list.


Subcommand  : SORT
Format           : /SD<all>
                       /SN<all>
                       /SR<all>
Description     : Sort the members in the order indicated. The subcommands
                        and their meanings are listed below :-

                        /SD - Sort by Date     (Most recent file first)
                        /SN - Sort by Name
                        /SR - Sort by Records  (Largest record count first)

By default, the sort commands will operate within the dataset that the
subcommand was issued against. This enables you to sort the members within
a single dataset of a multiple dataset list. However, if you wish to sort
across all the displayed DSNs, you should suffix the subcommand with ALL


Subcommand  : LEVEL
Format           : FL <memlist> <pdslist>
                        /L <memlist> <pdslist>
                        /E <memlist> <pdslist>
                        /EN <memlist> <pdslist>
                        LS <memlist> <pdslist>
                        CD <memlist> <pdslist>
                        DIR <memlist> <pdslist>
                        TREE <memlist> <pdslist>
Description     : Invoke another level of PDSFLIST with the members from the
                       requested dataset. If the dataset requested is uncataloged
                       you should use the VOL= (or V=) parameter.
                       If no dataset is requested, the dataset(s) currently being
                       displayed is/are used.
                       Examples of the Level subcommand are shown below,

              Subcommand              Action
              
              /L * X99999.EXEC      List all members in X99999.EXEC
              /L X99999.EXEC        List all members in X99999.EXEC
              /L ABC*                     List all members starting with ABC
                                               from the already displayed Dataset
                                               list.
              LS XYZ* >                 List all members starting with XYZ
                                               from the dataset this subcommand was
                                               entered against.
              FL *XYZ* .EXEC        List all members with XYZ in their
                                               name from the dataset userid.exec
                                                (Note : As the DSN starts with a DOT
                                                the TSO userid is automatically
                                                inserted).



Subcommand  : INFO
Format           : I
                       S
Description     : Display dataset information regarding the member selected.


Subcommand  : OMIT
Format            : /O
Description      : Prevents member information being included in the
                        command being processed. This should be used to Edit a
                        new member within a PDS that is currently empty.
                        For example, /O E NEWMEM would edit a member called NEWMEM
                        within a PDS that has no members in it.

 

Subcommand  : Jump Function
Format           : =n
Description     : Jump directly to another ISPF panel.
                       

Subcommand  : Repeat Function
Format           : =
Description     : Repeat the last function issued. This can be useful when
                       wishing to invoke multiple edit, browse or copy functions.


Subcommand  : Retrieve function
Format            : ?
Description      : Retrieves the last typed command issued and places it in
                        the command area. PF keys are not retained by this
                        feature.


Subcommand  : Quit function
Format           : /Q
Description     : Quits the current level of PDSFLIST.


Subcommand  : Cancel function
Format           : /C
                        /CANCEL
Description     : Cancels ALL active levels of PDSFLIST.


Subcommand  : Help function
Format           : /H
                        /HELP
Description     : Invokes the Help function.


Subcommand  : SDSF
Format            : SDSF
Description      : Invokes TSO SDSF.


PF Key functions

The PF Keys for PDSFLIST are set as follows :-

              PF Key    Action
             
                1           Flip the PF Key display.
                2           Browse the file to the left of the cursor.
                3           End current level of PDSFLIST display.
                4           Edit the file to the left of the cursor.
                5           Repeat Find of a Located member.
                6           Sort by name.
                7           Scroll list backwards.
                8           Scroll list forwards.
                9           Sort by Date.
                10          Switch to Dataset or Member Statistics.
                11          Increase input area to end of line.
                12          Refresh the current list.
                13          Help facility.
                14          Display list from Top.
                15          Display list from Bottom.
                16          Invoke DLIB facility.
                17          Invoke SUBJOB facility.
                18          Invoke TSO SDSF.
                19          Move display to previous DSN.
                20          Move display to next DSN.
                21          Print current member list.
                22          Invoke another level of ISPF/PDF.
                23          Unused.
                24          Display version details of PDSFLIST.



Usage notes


1. As this facility is invoked via a Rexx exec, it may be useful to
   set a PF Key, for example PF24, to TSO. This means that rather
   than having to prefix all Rexx execs or TSO commands with TSO, you
   just enter the command name and press the PF Key.

2. Nested executions of PDSFLIST are allowed. Therefore, if you are
    editing a member from a PDSFLIST display, you can invoke PDSFLIST
    again from within that Edit session to get further displays.
    The Level number on the Title line gives an indication of the
    nested level you are currently displaying.

3. When in nested PDSFLIST displays, PF3 will end the current display
    and return you to the previous PDSFLIST display level.

4. The 'Type' information is obtained from the Low-Level-Qualifier of
    the relevant Dataset.

5. Following the execution of a command, the return code it produces is
    placed in the command area. A return code of zero will result in
    an asterisk.

6. Flat files are supported and can be browsed and edited. The Fname
    entry for them is left as blank and the Type entry has DSORG=PS.
    Other dataset organisations, such as VSAM, BDAM etc. are listed in
    the same manner (DSORG=VS, DSORG=DA etc.) but you cannot use ISPF
    functions on them. However, the PDSFLIST information subcommand can
    be used to obtain dataset details.

7. A PDS that has no members is displayed as a one line entry with the
    Fname and type left blank. Using either the /O subcommand or the 
    member name parameter of the edit subcommand, new members can be 
    be added to the PDS.

8. The subcommand 'newdsn' (target) dataset can have the HLQ
    (High Level Qualifier) omitted when it matches your TSO userid.
    Simply prefix the target dataset with '.' and your userid will
    be inserted in front.
    e.g '.TEST.DATA' would be treated as 'userid.TEST.DATA'.

9. Unrecognised PDSFLIST commands are passed to the TSO command search
    routine, along with a Datasetname(member) parameter list. This
    allows REXX execs/clists to be invoked from PDSFLIST. The format
    of the parameter list is compatible with that passed by ISPF from the
    member list screen. If you wish to execute TSO commands, Rexx execs
    or TSO Clists and need to pass different parameters, use the /O
    feature.

10.When displaying uncataloged DSNs, the title line will show
    'Uncataloged DSN' and the volume on which the dataset resides.
    If you request to display a dataset as uncataloged from a particular
    volume but it is in fact cataloged on that volume, it will be
    treated as a Cataloged dataset. This is especially relevant when a
    display exec is invoked from the ISPF 3.4 (DSLIST) panel.
    It is possible to display both cataloged and uncataloged datasets
    in the same list. This may be useful to compare members in both
    production and test parmlib files. Due to the high risk of confusion,
    you should only do this if the dataset names are different ie,
    PROD.PRODUCT.PARMLIB and TEST.PRODUCT.PARMLIB.

    Specifying an uncataloged dataset is supported via the VOL= (or V=)
    parameter on :-

    * PDSLIST variable
    * /L target dsn
    * COPY and COPYR target dsn
    * MOVE and MOVER target dsn
    * EDIT/BROWSE/VIEW target dsn


11.If you request to display a single dataset that has been migrated by
     HSM, it is treated as a cataloged dataset. However, on a generic 
     request, datasets that are migrated will be shown as "Not recalled". 
     Dataset ALIAS's are also supported. The dataset name shown on the
     initial PDSFLIST screen will be the ALIAS name, however, when using
     option I (to display dataset information), the dataset name will be
     the actual DSN obtained from the VTOC.
12.The Help facility (PF13) requires the helpdsn variable to be set by
     an exec using PDSFLIST. Once set by one exec, the value is saved
     across further PDSFLIST executions, until explicitly overriden by
     another exec.
     The helpdsn can be either a flat file or a member of a PDS.
     Note : When defining the variable, you DO NOT have to enclose the
     dataset name within quotes.

13.The Sysout class (default is R) for the PF21 Print function, can
     be changed via the opclass variable. Once set by one exec, the
     value is saved across further PDSFLIST executions, until explicitly
     overriden by another exec.

14.The CANCEL function results in ALL active levels of PDSFLIST being
     cancelled. Nesting may occur as a result of a PDSFLIST subcommand or
     execution from an invoked ISPF environment, eg ISPF edit.
     If a nested level was entered from an invoked ISPF environment, the
     CANCEL will return there. However, once that environment is left, the
     CANCEL is propagated to any outstanding active levels.

15.Most file manipulation functions have UNIX and PC-DOS command
     compatibility. For example you can use CP to copy a member or CAT
     to browse a member. Two notable exceptions are COPY with Replace and
     MOVE with Replace. In UNIX, the copy and move commands default to
     replace. To provide a degree of safety in the MVS environment, if
     you use either CP or MV to replace members, you must use CPR or MVR
     to indicate replacement.

16. When using the member parameter on EDIT/VIEW/BROWSE, you can
      specify and equals sign (=). This will cause the member name from
      from the line you are on, to be the member name.
 
17. All subcommands can use the > (greater than) character to indicate
      "this line DSN". For example, if you have done a specific member search
      across multiple datasets but then, wish to display ALL members from one
      of the datasets in the list, you could use LS >  
 
18. The Generic Filtered List support will only work if the Catalog Search 
      Interface is available. This catalog function is shipped as standard 
      in DFSMS/MVS 1.4 and above. If PDSFLIST finds the CSI support missing, 
      any generic request will be ignored and the dataset will show as 
      "Not allocated". Furthermore, the Catalog details display of the 
      dataset information screen is only available with CSI support.