Hola Alberto:
La opción que explicas también es válida, siempre y cuando lleves cuidado con
signos, decimales, fechas, etc.
________________________________
De: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] En nombre de [EMAIL
PROTECTED]
Enviado el: lunes, 16 de julio de 2007 8:37
Para: forum.help400
Asunto: RE: CPYFRMIMPF
Hola
Os explico cómo lo estoy probando y parece que sale bien.
-Creo un fichero con un sólo campo de longitud igual a la del fichero
correspondiente que voy a traspasar desde las IFS, eso por cada tipo de fichero
diferente,( que son unos pocos, por eso no quiero hacer un programa con
definición interna de ficheros para cada tipo de traspaso)
-copio el archivo de las IFS con CPYFRMSTMF
-luego con el fichero de un campo hago un cpyf *nochk al de base de
datos que le corresponda.
Funcionar,funciona, pero si alguien tiene una opción más directa, se lo
agradeceria.
La duda que me queda es: para qué sirve la opción FLDDFNFILE del
CPYFRMIMPF???
Gracias
"Javier Mora" <[EMAIL PROTECTED]>
Enviado por: [EMAIL PROTECTED]
13/07/2007 12:00
Por favor, responda a
"forum.help400" <[email protected]>
Para
"forum.help400" <[email protected]>
cc
Asunto
RE: CPYFRMIMPF
Bueno, es un caso complicado de resolver. Ese churro de registro (al
estilo de DSPPFM) tiene varios inconvenientes:
1. Los signos.
2. Los campos empaquetados.
3. Las fechas.
4. Los campos nulos.
En estos casos yo opto por un programa de conversión que toma los datos
del IFS, directamente utilizando APIs o a través de mandatos CPYFRMSTMF. El
programa RPG valida que los tipos de datos concuerdan y los va traspasando uno
a uno todos los registros.
Siempre que he intentado algún traspaso directo siempre me he
encontrado con problemas, sobre todo de incompatibilidades.
En un entorno más controlado, es decir, yo genero el archivo de texto y
estoy seguro de cada campo lo que es y su tipo. Este archivo siempre lo genero
separado por comas (*.CSV) y a través de CPYFRMIMPF lo traspaso. Hay que tener
en cuenta los siguientes parámetros:
- STMFLEN(*TOFILE)
- RCDDLM(*CRLF) = identifica el fin de registro por CR+LF. Si fuera un
Linux/Unix entonces LF.
- DTAFMT(*DLM) = campos delimitados
- STRDLM(*DBLQUOTE) = delimitador de serie, la doble comilla (por
ejemplo)
- FLDDLM(',') = delimitador de campos, la coma (por ejemplo)
Con esta fórmula evito muchos de los problemas que he tenido siempre
utilizando herramientas como: peticiones de transferencias, ftp, archivos de
texto con registros con todo en un "churro", etc.
________________________________
De: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] En nombre de [EMAIL
PROTECTED]
Enviado el: viernes, 13 de julio de 2007 10:24
Para: forum.help400
Asunto: RE: CPYFRMIMPF
Hola
Estoy en V5R3
Los archivos me los envian directamente por FTP desde un UNIX y en
ASCII con lo cual queda toda la butifarra de caracteres que corresponde a una
definicion de fichero, igual que si haces un DSPPFM. Mi intencion es poder
importar en un sólo paso y no tener que hacer un programa de importación con
definicion intrerna de ficheros para cada archivo que voy a recibir, que son
unos cuantos...
"Javier Mora" <[EMAIL PROTECTED]>
Enviado por: [EMAIL PROTECTED]
13/07/2007 10:08
Por favor, responda a
"forum.help400" <[email protected]>
Para
"forum.help400" <[email protected]>
cc
Asunto
RE: CPYFRMIMPF
Hola Alberto:
¿En que versión del S.O. estás? Dependiendo de la versión el mandato
tiene comportamientos distintos.
¿En qué formato está el archivo en el IFS?
Yo, en V5R4 y con archivos separados por comas (CSV) estoy traspasando
datos a un archivo de base de datos. No he utilizado nunca el parámetro
FLDDFNFILE.
Si me das algo más de información, a lo mejor, puedo ayudarte.
Un saludo,
Javier Mora
________________________________
De: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] En nombre de [EMAIL
PROTECTED]
Enviado el: viernes, 13 de julio de 2007 9:34
Para: forum.help400
Asunto: CPYFRMIMPF
Hola.
A ver si alguien hace servir habitualmente el comando CPYFRMIMPF para
copiar ficheros de las IFS a base de datos.
El tema es que estoy intentando copiar un *.txt con estructura de base
de datos y no me deja. He hecho la prueba de copiar yo mismo este fichero desde
la base de datos a las carpetas con CPYTOIMPF y luego recuperarlo con
CPYFRMIMPF y no me lo recupera, me dice que
10 - Los datos del archivo de definición de campos no son correctos
para TOFILE.
como archivo de definicion( el parámetro FLDDFNFILE) le he puesto el
miembro que contiene las DDS de este archivo.
Si esto no lo pongo, me obliga a poner DTAFMT como *DLM y tampoco
copia nada porque me da un error de correlación de datos en el miembro.
===> CPYFRMIMPF FROMSTMF('/home/albert/fitxeftp.txt')
TOFILE(ALBERT/FITXEFTP) RCDDLM(*CRLF) DTAFMT(*FIXED) FLDDFNFILE(ALBERT/QDDSSRC
FITXEFTP)
PD: es la primera vez que utilizo este mandato para copiar datos en un
archivo de base de datos con más de un campo.Siempre lo habia hecho con un sólo
campo igual a la longitud de registro.
Gracias.
__________________________________________________
Forum.HELP400 es un servicio m&#225;s de NEWS/400.
&#169; Publicaciones Help400, S.L. - Todos los derechos reservados
http://www.help400.es
_____________________________________________________
Para darte de baja visita la siguente URL:
http://listas.combios.es/mailman/listinfo/forum.help400
__________________________________________________
Forum.HELP400 es un servicio m&#225;s de NEWS/400.
&#169; Publicaciones Help400, S.L. - Todos los derechos reservados
http://www.help400.es
_____________________________________________________
Para darte de baja visita la siguente URL:
http://listas.combios.es/mailman/listinfo/forum.help400
__________________________________________________
Forum.HELP400 es un servicio m&#225;s de NEWS/400.
&#169; Publicaciones Help400, S.L. - Todos los derechos reservados
http://www.help400.es
_____________________________________________________
Para darte de baja visita la siguente URL:
http://listas.combios.es/mailman/listinfo/forum.help400