Es cierto que el problema me surge cuando recargo el subfichero (su refresco). 
El tipo de subfichero que estoy utilizando en este caso es completo (hay pocos 
registros que visualizar).

Te confirmo que SFLMODE no puede condicionarse con indicadores.

Con todas las pruebas que he hecho, llego a la conclusión que con el READ(E) 
RAD061W (que es el nombre del fichero y no el del registro) no se están leyendo 
los campos de E/S del registro de control, pero no está actualizando los campos 
de salida (como son los ocultos tipo H).

El caso es, que si utilizo READ(E) P_SFLCTL ya no me funciona el autorrefresco.

Gracias por tu interés.

Javier

De: [email protected] 
[mailto:[email protected]] En nombre de Juan Carlos 
Paredes Castañón
Enviado el: miércoles, 17 de diciembre de 2014 22:48
Para: forum.help400
Asunto: Re: Subfichero que se autorefresca y SFLMODE


Te hablo de memoria, porque ahora estoy en casa y no tengo acceso al iSeries 
para confirmártelo. El problema es el mismo que se produce cuando dejas que sea 
el propio sistema el que gestione la carga del subarchivo. Una vez que pulsas 
la tecla de doblar, sólo se mantiene en los registros ya cargados. Una vez que 
carga nuevos registros, el registro vuelve a estar truncado. En las DDS (o en 
el SDA) indicas si el registro, inicialmente, está doblado o truncado. Si 
condicionas el SFLMODE por el mismo indicador que activas al pulsar la tecla 
que lo dobla o lo trunca, creo que funciona. No obstante, mañana lo compruebo 
(lo tengo implementado en alguna pantalla, sin refresco automático, pero con 
gestión de la carga por parte del sistema) y te lo confirmo.



Un saludo.



Juan Carlos

El 17/12/2014 19:40, Javier Mora escribió:
Hola a tod@s:

Tengo una pantalla con un subfichero que se refresca automáticamente sin tocar 
ninguna tecla. Los registros del subfichero son de dos líneas e inicialmente 
aparecen truncadas (DROP). Durante la visualización puedo pulsar una tecla para 
ver el registro completo (FOLD). Sin embargo, cuando refresco el subfichero no 
permanece en el modo (truncado/ampliado) en el que se encontraba antes del 
refresco.

El diseño de pantalla se asemeja a esto:

     A          R P_SFLMDT
     A                                      OVERLAY
     A                                 11  2'F1=Ampliar'
     A                                      DSPATR(HI)
     A                                 11 14'F3=Salir'
     A                                      DSPATR(HI)
 …

     A          R P_SFLCTL                  SFLCTL(P_SFL)
     A                                      SFLSIZ(0050)
     A                                      SFLPAG(0003)
     A                                      CA03
     A                                      CA07
     A  01                                  INVITE
     A                                      OVERLAY
     A                                      SFLCSRRRN(&SFLCSRRRN)
     A                                      SFLMODE(&SFLMODE)
     A N02                                  ERASE(P_SFL)
     A  02                                  SFLDSP
     A  01                                  SFLDSPCTL
     A N01                                  SFLCLR
     A  03                                  SFLEND
     A  05                                  SFLDROP(CA01)
     A            SFLMODE        1A  H
     A            SFLRCD         4S 0H      SFLRCDNBR(*TOP)
     A            SFLCSRRRN      5S 0H
     A                                  1  2DATE
     A                                      EDTWRD('  -  -  ')
     A                                      COLOR(BLU)
     A                                  1 11TIME
     A                                      COLOR(BLU)

…

La visualización y espera del registro de control se hace como sigue:

       Write P_SFLMDT;
       Write  P_SFLCTL;
       Read(e) RAD061W;
       //EXFMT  P_SFLCTL;
       // Con EXFMT si obtengo un SLFMODE con el valor correcto

    ‚  // Se excedió el tiempo de espera
       If %Status() = 1331;
          infDsp.key = F10;
       Endif;

Si desactivo el “autorefresco” de pantalla sustituyendo la pareja WRITE 
P_SFLCTL/READ(E) RAD061W por un EXFMT P_SFLCTL el comportamiento es el 
esperado, pero pierdo el “autorefresco”.

Creo que el problema está en el “READ RAD061W”, pero es necesario para el 
refresco. El caso es que no encuentro una solución para tener ambas cosas. 
¿Alguna sugerencia?

Un saludo a todos,


Javier Mora


____________________________________________________

Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd )

Forum.Help400 © Publicaciones Help400, S.L.

--

url: http://www.paredes.info

mail: [email protected]
____________________________________________________
Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd )
Forum.Help400 © Publicaciones Help400, S.L.

Responder a