AS/400 - Visualizar siempre pantalla SFL

   
Vista:

Visualizar siempre pantalla SFL

Publicado por Laura (5 intervenciones) el 24/04/2014 10:55:20
Buenos días,
hola otra vez, a ver si me podeis echar de nuevo una mano. Estoy peleandome con un pgm y no consigo lo que pretendo.
Os cuento, es un sencillo pgm de mantenimiento. Cargo un SFL, con campo de opción, con los registros de un fichero. Según la opción que tecleen en este campo llamo a otro pgm que abre una pantalla tipo *WDW para ejecutar la acción de la opción seleccionada (baja, copia, etc...).
Este campo de opción del SFL no tiene avance automático de registro, con lo cual pueden teclear varias opciones seguidas, dan intro y una detrás de otra se van efectuando las acciones.
El problema es que si teclean una sola opción no hay problema porque cuando se abre el window del siguiente pgm mantiene visualizable debajo el SFL pero si teclean varias, cuando se abre el segundo window, no se visualiza el SFL debajo.
Esto es lo que pretendo solucionar. Las opciones las leo en el pgm con READC, o sea que es en medio de este bucle entre un readc y el siguiente es cuando llamo al 2º pgm. Yo lo que quiero es que siempre mantenga visualizable la pantalla del SFL. Las pantallas ya tienen overlay, assume y están compilada con RSTDSP(*YES).

Gracias de antemano
Laura
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Carlos

Visualizar siempre pantalla SFL

Publicado por Carlos (33 intervenciones) el 25/04/2014 08:33:03
Hola Laura, esto me ha pasado, como a muchos otros del mundillo, pero lo malo es que no recuerdo la receta exacta...
Cuando seleccionas varios registros ¿mantienes el segundo programa abierto? Es decir ¿haces RETURN o *INLR?

Saludos,
Carlos Bartolomé.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Visualizar siempre pantalla SFL

Publicado por laura (5 intervenciones) el 25/04/2014 09:17:25
Hola Carlos,
lo he probado de las dos maneras, con *INLR no se visualiza y con Return la verdad es que si, lo que ocurre entonces es que, increible pero ocurre, a veces no visualizo el marco del *WDW del segundo programa, solo el marco, los campos de la ventana si. Ahora me estoy peleando con ello porque todavía no he encontrado la lógica de cuando pasa esto, pero vamos que confío en encontrarla y poderlo solucionar, al menos una parte ya esta. Ya te diré el resultado.

Muchas gracias Carlos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Visualizar siempre pantalla SFL

Publicado por Laura (5 intervenciones) el 25/04/2014 11:00:37
Hola Carlos, ya está.
Con Return mantiene el subfichero siempre visualizable. El rollo es que tienes que tenerlo en cuenta en el funcionamiento del segundo programa y adaptar el ciclo. Yo al principio, con las prisas de probarlo, he hecho una chapuza, he cambiado solo una parte del ciclo y cuando entraba por segunda vez en el ciclo READC para llamar al segundo pgm según la selección, perdía el marco del *WDW no se porqué. Total que ahora lo he adaptado todo y lo que hago es que se cierre el pgm con *INLR cada vez que sale del bucle de lectura del *SFL (READC) y así siempre va bien.
Es la solución para que funcione, pero no me gusta mucho la verdad, creo que complica los cálculos del programa de manera innecesaria, bueno quizas complica no sea la palabra. Pero....en fin, es lo que hay.

Gracias

Saludos
Laura
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Carlos

Visualizar siempre pantalla SFL

Publicado por Carlos (33 intervenciones) el 25/04/2014 13:33:35
En mi opinión tampoco complica tanto. Como tú lo haces puede que el programa B se abre y cierra innecesariamente cada vez que hacer lecturas por READC.

Yo suelo pasar al programa B un parámetro que indica si cierra o no y cuando se cierra el programa A siempre hago una llamada cerrando. De esta manera sólo se abre una vez.

Esto es irrelevante a todos los niveles, es más una cuestión de metodología o estilo. Vamos, que a efectos prácticos con los procesadores actuales da igual.

Yo termino el A más o menos así:

eval pcerrar = 1
exsr srllamar
eval *inlr = *on

y en el B

if pcerrar = 1
eval *inlr = *on
else
...lo que sea
return
end

Saludos,
Carlos Bartolomé.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar