Determining Member Lists (TAUPDELI)

The TAUPDELI procedure generates the member list of a PDS according to the filter criterion (see Filter type).

REXX Example: Extract from TAUPDELI (simplified)
. . . .
Parse Arg indsn filter .
. . . .
/* Create the element list dataset */                          
Call REXX '0 TAUPDXA1 CONFIG ELELIST'                  
Parse Value Result With . eledsn .                     
Call ALLOC_FILE eledd eledsn                           
/* Get the Elementtype */                              
type = GET_TYPE(indsn)                                 
/* Get members from PDS */         
Call GET_MEMBERS                                       
Call TSO "0 EXECIO * DISKW" eledd "(FINIS STEM member.)"
outparm = eledsn                                                                           
Call EXIT 0 wmsg
. . . .
 
GET_TYPE:                                                              
Arg tdsn .                                                             
Select                                                                 
  When Pos('SOURCE', tdsn) > 0 Then ttype = 'EDITABLE'                                               
  . . . .                                           
  Otherwise ttype = 'UNKNOWN'                                                
  End                                                                  
Return ttype
                                                           
GET_MEMBERS:                                                        
Call ISPF "0 LMINIT DATAID(DSNDD) DATASET('"indsn"') ENQ(SHR)"      
Call ISPF "0 LMOPEN DATAID("dsndd")"                                
j = 0                                                               
Do Forever                                                          
  mbr = ' '                                                         
  parm = "DATAID("dsndd") OPTION(LIST) STATS(YES) PATTERN("filter")"
  Call ISPF "8 LMMLIST" parm "MEMBER(MBR)"                          
  If Result > 0 Then Leave                                                          
  j = j + 1                                                         
  If Symbol('ZLC4DATE') = 'VAR' Then                             
    parm = zlc4date','zlm4date zlmtime','Strip(zlcnorc)','Strip(zluser)                    
  Else parm = ',,,'                                                    
  member.j = indsn','Strip(mbr)','parm','type                       
  End                                                               
member.0 = j                                                        
Return                                                                                                                              
. . . .
EXIT:
Parse Arg exitrc exitmsg
. . . .
Call ISPF "* LMMLIST DATAID("dsndd") OPTION(FREE)"
Call ISPF "* LMCLOSE DATAID("dsndd")"
Call ISPF '* LMFREE DATAID('dsndd')'
Call FREE_FILE eledd
. . . .
Exit exitrc outparm                                                        

Note the following in the programming for determining the member list: