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.

3 comentarios:

mrierab dijo...

También puede ser de interés esta entrada:
http://www.itjungle.com/fhg/fhg020905-story01.html

mrierab dijo...

Otra forma de hacer lo mismo pero con comandos del SQL y del QShell: http://www.mcpressonline.com/database/db2/create-ascii-text-files-using-db2-in-qshell.html

mrierab dijo...

Alex Martinez recomendó usar otro tipo de conexión explicada en el documento de IBM: Copying Files between iSeries Using QFileSvr.400.
Podéis acceder a ella en este enlace:
http://www-912.ibm.com/s_dir/SLKBase.nsf/1ac66549a21402188625680b0002037e/490643ad5a213320862576e4001170bf?OpenDocument