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

