Utiliza USROPN, abre el fichero, graba los registros, cierra el fichero y 
ejecuta el CL que copia el resultado.


Saludos


^^^
Ing. Armando Luengas Mendoza
Jafra Cosmetics International
IT México
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~





From:   Benito Hernandez <[email protected]>
To:     "forum.help400" <[email protected]>
Date:   27/01/2011 01:47 p.m.
Subject:        caso raro (duda)
Sent by:        [email protected]





Tengo un programa que recibe parametros empieza hacer una serie de 
instrucciones y va grabando en un archivo  XXX registro por registro .
 despues de haber grabado ciertos registros entra una subrutina y en esa 
subrutina vuelve a grabar mas registros al archivo XXX
 
al termniar la subrutina le doy un CALL a un CL 
Este CL hace un CPYF  que selecciona solo los registros que se fueron 
grabando en el programa al archivo XXX para dejarlos en un archivo con 
otro nombre YYYYYYYYYY (YYYYYYYYYY va cambiando de nombre de acuerdo a los 
parametros y solo se graba un campo del archivo XXX a YYYYYYYYY con *MAP y 
*DROP),  despues del CALL al CL prendo el *INLR para finalizar el 
programa.
 
EL problema que tengo es que cuando hace el copy no esta pasando los 3 
ultimos registros al Archivo YYYYYYYYYY  que se graban en el archivo XXX
 
no entiendo por que no los copia,  si cuando finaliza el programa y 
despliego el archivo XXX
ahi estan los registros
 
hagan de cuenta que esos registros se quedaron en memoria y no los muestra 
en el archivo XXX hasta que finaliza el programa con el *INLR  aunque ya 
se hizo el write al archivo
 
 
Espero me puedan dar una idea de lo que pudiera estar pasando
 les mando instrucciones de como esta definido el archivo y unas lineas 
que dan idea de lo que hace el programa:
-- - - - - - - - - - - - - - - - - - - - - -- - - - - - -- - - - - -- - 
DEFINICION DE ARCHIVO PARA GRABAR
FXXX    O      A    E                           DISK
 
se mueven a los campos diferentes valores y se graba el registro
WRITE     RXXX 
CLEAR                             RXXX
esto de mover valores a campos y hacer el write y el clear se hace como 50 
veces despues de grabar los 50 registros entra un IF como sigue
 
IF        tipimp = 'I' 
EXSR       DETALLE
ENDIF 
 
se ejecutan algunas instrucciones y despues de estas se hace un CALL
 
CALL        CLCPYF     (Este CL hace el CPYF )
 
esta es la parte de la rutina que se ejecuta en el IF
 
DETALLE        BEGSR 
se mueven a los campos diferentes valores y se graba el registro
WRITE     RXXX 
CLEAR                             RXXX
igual a qui se graban otros 50 registros en la rutina del detalle y 
termina la rutina
 
                         ENDSR
 
como les comento los ultimos 3 registros  que se graban en la rutina de 
detalle no se van con el CPYF que se hace en el CL aunque esos 3 registros 
si cumplen las condiciones para que pasen
 
 
Mucho Agradecere su ayuda y espero no haberlos enredado con mi readccion
 
Saludos 
 
Benito Hernandez Rivera
 
 
 
 
____________________________________________________
Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd )
Forum.Help400 © Publicaciones Help400, S.L.
____________________________________________________
Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd )
Forum.Help400 © Publicaciones Help400, S.L.

Responder a