viernes, 20 de marzo de 2009

Intercambio archivos entre AS y PC

En este documento se explican los tipos de intercambios de archivos más comunes entre AS400 y PC; deben servir solo como referencia y adaptar los parámetros según nuestras necesidades:

Archivos formato texto ("planos" de 1 solo campo):
De AS400 a PC, en un directorio ubicado en un servidor de archivos (por ejemplo):
CPYTOIMPF FROMFILE(mylib/myfile) TOSTMF('/QNTC/myserver/mysharedfolder/mytextfile.TXT') MBROPT(*REPLACE) STMFCODPAG(*PCASCII) RCDDLM(*CRLF) DTAFMT(*DLM) STRDLM(*NONE)

Para generar ficheros sin caracter CR (retorno carro) y solo LF (final de linea):
CPYTOIMPF FROMFILE(mylib/myfile) TOSTMF('/home/temp/myascii.txt') MBROPT(*REPLACE) FROMCCSID(37) STMFCODPAG(*PCASCII) RCDDLM(*LF) DTAFMT(*DLM) STRDLM(*NONE) STRESCCHR(*NONE) RMVBLANK(*TRAILING)
FLDDLM('')

Ejemplo para subir un archivo plano de PC (desde un servidor) al AS400:
  1. Primero averiguar la longitud del archivo TEXTO.TXT, por ejemplo en este caso 132.
  2. Crear un archivo de destino en el AS400:
  3. CRTPF FILE(MYLIB/TEXTO) RCDLEN(132)
  4. Copiar el archivo:
  5. CPYFRMIMPF FROMSTMF('/QNTC/myserver/mysharedfolder/mytextfile.TXT') TOFILE(MYLIB/TEXTO) MBROPT(*REPLACE) RCDDLM(*CRLF) DTAFMT(*DLM) STRDLM(*NONE) RMVBLANK(*NONE) FLDDLM(*TAB)
Para convertir y copiar un archivo de AS400 a formato CSV (para Excel y/o Access) y dejarlo en la carpeta de un servidor de archivos (p.e. WinNT) puedes utilizar el mandato:

CPYTOIMPF FROMFILE(mylib/myfile) TOSTMF ('/QNTC/myserver/mysharedfolder/mycsvfile.CSV') MBROPT(*REPLACE) STMFCODPAG(*PCASCII) RCDDLM(*CRLF) DTAFMT(*DLM) STRDLM('"') FLDDLM(';')

Tener en cuenta que la ruta "/QNTC/myserver/mysharedfolder/" solo funciona si:
  1. La carpeta compartida del servidor //myserver/mysharedfolder es accesible desde la red.
  2. El servicio Netserver del AS400, esta correctamente configurado.
  3. El usuario y la contraseña que lanza el mandato CPY???IMPF es igual en el AS400 y en el servidor de archivos.

viernes, 6 de marzo de 2009

Comprimir archivos en IFS

Para comprimir un archivo ASCII ubicado en el IFS del AS400 podemos utilizar el comando jar en una sesión del shell de UNIX en el AS400.

Como hacerlo, pues ahí va un ejemplo:
  1. Desde la línea de mandatos tecleamos STRQSH, o simplemente QSH.
  2. En la pantalla de "QSH Command Entry" teclear:
  3. jar -cfM /home/compress_folder/myfile.zip /home/myfolder/myfile1.txt
Si queremos comprimir todo el contenido de un directorio:
  1. jar -cfM /home/compress_folder/mydirectory.zip /home/folder_to_compress
Si queremos comprimir varios archivos, dentro de un CL:
  1. PGM
  2. ...
  3. QSH('jar -cfM /home/compress_folder/myfile.zip /home/myfolder/myfile1.txt /home/myfiles/myfile2.csv')
  4. ...
  5. ENDPGM