Al grabar en el archivo puedes utilizar FEOD  después del WRITE para que 
también libere memoria.


De: [email protected] 
[mailto:[email protected]] En nombre de Benito Hernandez
Enviado el: jueves, 27 de enero de 2011 14:04
Para: forum.help400
Asunto: caso raro (duda)


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







________________________________
En Diners Club cuidamos el planeta; REDUCIMOS, RECICLAMOS Y REUTILIZAMOS los 
recursos que usamos.

Nota de descargo: La información contenida en este e-mail y sus anexos es 
confidencial y sólo puede ser utilizada por el destinatario del mismo. Esta 
información no debe ser distribuida, ni copiada total o parcialmente por ningún 
medio sin la autorización de DINERS/INTERDIN. Además, DINERS/INTERDIN no asume 
responsabilidad sobre información, opiniones o criterios contenidos en este 
e-mail.

Disclaimer: The information contained in this e-mail and its attached files are 
confidential and intended only for the use of the person to which it is 
addressed. This information can not be totally or partially distributed nor 
copied by any media without the authorization from DINERS/INTERDIN. In 
addition, DINERS/INTERDIN does not assume responsibility about this 
information, opinions or criteria contented in this e-mail.
____________________________________________________
Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd )
Forum.Help400 © Publicaciones Help400, S.L.

Responder a