viernes, 28 de noviembre de 2008

Obtener listas objetos en IFS

Como obtener listas de objetos en el Integrated File System del AS400.

Habitualmente sabemos navegar desde la pantalla verde con el mandato
WRKLNK OBJ('/') DETAIL(*EXTENDED) DSPOPT(*ALL) pero si desde un programa queremos obtener una lista de archivos del directorio '/home/temp' (por ejemplo) no tenemos un mandato para hacerlo directamente y hemos de volcarlo a spool y leer ese spool o utilizar una API del sistema.

Una solución sencilla, si esta instalado el entorno QSHELL (opción 30 del 5722SS1) , es ejecutar mandatos tipo UNIX, pongo algunos ejemplos de los que se puede conseguir:

Obtener contenido del directorio /home/temp (en el archivo MYLIB/LISTDIR):
  • QSH CMD('ls /home/temp/* >/qsys.lib/mylib.lib/listdir.file/listdir.mbr')
Obtener lista de directorios del sistema (atención puede tardar horas):
  • QSH CMD('find / -type d |grep -v "QSYS.LIB" |grep -v "QNTC">/qsys.lib/mylib.lib/listdir.file/listdir.mbr')
o también:
  • QSH CMD('ls -alR / |grep "/" |grep -v "l" |grep -v "QSYS.LIB">/qsys.lib/mylib.lib/listdir.file/listdir.mbr')

1 comentario:

TONY dijo...

EXCELENTE APORTE.

GRACIAS