Generar Reporte de los members de un PDS

Este foro está dedicado a encuestas y discusiones no técnicas que afectan nuestro trabajo.
Responder
Everardo

Generar Reporte de los members de un PDS

Mensaje por Everardo » 25 Feb 2011, 10:22

Buen día a todos.
Me gustaría que me auxiliaran en lo siguiente: ¿Cómo puedo generar un archivo, por medio de un job, donde me aparezcan cada uno de los member de un archivo particionado con sus estadísticas?. He intentado generarlo con un PGM=IEHLIST. Sin embargo, las estadísticas me parecen con un formato hexadecimal. Necesito que me genere el reporte de esta manera:
A 454 2010/07/15 2010/07/15 17:37:23
ABEND 13 2007/11/15 2007/11/15 21:54:18
ABENDS 66 2002/06/12 2008/08/30 13:15:20
ADDRESS 33 2004/06/25 2004/06/25 16:12:30.

Saludos y gracias por el apoyo.

isrojas

Re: Generar Reporte de los members de un PDS

Mensaje por isrojas » 26 Feb 2011, 04:34

Buenos días.

Yo mediante un job no se hacerlo. la única manera que se de hacerlo es entrando desde 3.4 en la librería particionada y poniendo el comando "save" seguido del nombre que quieras darle, por ejemplo "lista".

Esto generará un fichero secuencial con el siguiente puntero:

USER.LISTA.MEMBERS, donde "user" y "lista" se corresponderán con tu user y el nombre que le hayas dado. Luego puedes editar el secuencial di dejarlo como quieras.

Espero haberte ayudado.

Saludos.

jaisaper
Usuario avanzado
Usuario avanzado
Mensajes: 42
Registrado: 11 Nov 2010, 09:12
País: España
Ciudad: Pamplona
Ocupación: Técnico en Sistemas

Re: Generar Reporte de los members de un PDS

Mensaje por jaisaper » 28 Feb 2011, 04:14

En esta pagina web de la "competencia" tienes un REXX para hacerlo
http://www.sillysot.com/ftp/mlrexx.txt
Personalmente cree un programa en PL/I para hacerlo contra una serie de ficheros, pero no te lo puedo ofrecer por temas de derechos.

Everardo

Re: Generar Reporte de los members de un PDS

Mensaje por Everardo » 28 Feb 2011, 13:00

Mil gracias por su apoyo.
Intentaré hacerlo por medio de un REXX, ya que necesito hacerlo por medio de un job.

Saludos.

ramiro gonzalez
Usuario avanzado
Usuario avanzado
Mensajes: 40
Registrado: 29 Ene 2008, 20:07
País: argentina
Ciudad: buenos aires
Ocupación: System Programmer
Ubicación: Buenos Aires -Argentina

Re: Generar Reporte de los members de un PDS

Mensaje por ramiro gonzalez » 05 Mar 2011, 10:24

Hola, tambien podes invocar un REXX desde un job. Si te interesa busco un ejemplo y te lo paso.
Saludos

ramiro
rami

Avatar de Usuario
juancle
Usuario avanzado
Usuario avanzado
Mensajes: 39
Registrado: 15 Dic 2008, 20:32
País: Argentina
Ciudad: Vicente Lopez
Ocupación: System Programmer

Re: Generar Reporte de los members de un PDS

Mensaje por juancle » 20 Mar 2011, 23:46

Hola,
Te hice un REXX ejemplo de como obtener la lista de miembros con las estadisticas usando servicios de ISPF
Guarda este REXX en TU.CLIST.LIBRARY
Yo la llame JERL, si cambias el nombre debes hacerlo tambien en el job

Código: Seleccionar todo

/*REXX*/ 
parse upper arg dsn prf grp .                                    
uid = userid()                                                   
if length(prf) > 8 then do                                       
  say "longitud de PREFIX > 8, reemplazado por '"uid"'"          
  prf = uid                                                      
  end                                                            
if length(grp) > 8 then do                                       
  say "longitud de GROUP > 8, reemplazado por 'LISTA'"           
  grp = 'LISTA'                                                  
  end                                                            
                                                                 
"ISPEXEC LMINIT DATAID(id) DATASET('"dsn"') ENQ(SHR)"            
if rc /= 0 then call exitST 'LMINIT' rc                          
                                                                 
"ISPEXEC LMOPEN DATAID("id") LRECL(lrecl) RECFM(recfm) ORG(org)" 
if rc /= 0 then call exitST 'LMOPEN' rc                          
                                                                 
mem = ' '      
if grp = '' then grp='LISTA'                                        
if prf /= '' then "PROFILE PREFIX("prf")"                           
"ISPEXEC LMMLIST DATAID("id") OPTION(SAVE) MEMBER(mem) GROUP("grp")"
if rc /= 0 then call exitST 'S-LMMLIST' rc                          
                                                                    
if prf /= uid & prf /= '' then oprf = prf'.'uid'.'grp'.MEMBERS'     
else oprf = uid'.'grp'.MEMBERS'                                     
say "Lista de miembros salvada en '"oprf"'"                         
                                                                    
"ISPEXEC LMCLOSE DATAID("id")"                                      
if rc /= 0 then call exitST 'LMCLOSE' rc                            
                                                                    
"ISPEXEC LMFREE DATAID("id")"                                       
if rc /= 0 then call exitST 'LMFREE' rc                             
                                                                    
exit                                                                
                                                                    
/**/                                                                
exitST: procedure                                                   
arg funtion r      
say funtion 'rc' r 
exit r             
return 
Y despues envia este job:
En la llamada al REXX podes omitir PREFIX y/o GROUP
ISPSTART CMD(%JERL PDS.A.LISTAR PREFIX GROUP)
Si omitis PREFIX, va a usar tu userid como primer calificador
Si omitis GROUP usara LISTA como segundo calificador
El ultimo calificador es siempre MEMBERS

Código: Seleccionar todo

//LPDS  JOB .....,                           
//* TSO BATCH                                            
//         EXEC PGM=IKJEFT01,DYNAMNBR=50,REGION=2M       
//ISPPLIB  DD DISP=SHR,DSN=SYS1.SISPPENU                 
//ISPSLIB  DD DISP=SHR,DSN=SYS1.SISPSENU                 
//ISPTLIB  DD DISP=SHR,DSN=SYS1.SISPTENU                 
//ISPMLIB  DD DISP=SHR,DSN=SYS1.SISPMENU                 
//ISPPROF  DD DSN=&&PPROF,UNIT=SYSDA,SPACE=(TRK,(3,1,3)),
//         DCB=(DSORG=PO,LRECL=80,RECFM=FB,BLKSIZE=3120) 
//ISPLOG   DD DSN=&&PLOG,UNIT=SYSDA,SPACE=(TRK,(3,1)),   
//         DCB=(DSORG=PS,LRECL=125,RECFM=VA,BLKSIZE=129) 
//SYSTSPRT DD SYSOUT=*                                   
//SYSPROC  DD DISP=SHR,DSN=TU.CLIST.LIBRARY            
//SYSTSIN  DD *                                          
 PROFILE NOPREFIX                                        
 ISPSTART CMD(%JERL PDS.A.LISTAR PREFIX GROUP)              
/*   

guille

Re: Generar Reporte de los members de un PDS

Mensaje por guille » 21 Mar 2011, 20:44

Hola!
Otra manera para resolver el listado de miembros de un pds, es ejecutando el comando DIR vía FTP.- Te
conectas a la IP del Mainframe con un job batch de FTP y ejecutas las siguientes sentencias:

Código: Seleccionar todo

//FTP   EXEC PGM=FTP,PARM='(EXIT'   
//INPUT DD *                                                 
10.0.xx.y    ==> Direcip del Mainframe donde ejecutas el job                      
Usuario                       
Password                       
lcd 'NOMBRE.ARCHIVO.SALIDA'   ==> Es donde queda el resultado del dir
cd 'NOMBRE.DEL.PO.A.LISTAR'   ==> Es el nombre del PO que deseas listar        
dir (DISK                      
quit                                            
//OUTPUT DD SYSOUT=*                                         
//SYSPRINT DD SYSOUT=*   

El resultado te queda en el archivo 'NOMBRE.ARCHIVO.SALIDA.FTP.DIROUTP'
Lo único que necesitas, es tener permiso en RACF para acceder al PO

Espero te sirva

Responder