Mismo ejemplo en RPG 3
FPANTALLACF E WORKSTN
F KNUM 1
C *IN03 DOUEQ*ON
C WRITEREGISTRO 77
C READ PANTALLA 8899
C *IN03 IFEQ *OFF
C DATO MULT 2 RESUL
C ENDIF
C ENDDO
C MOVE *ON *INLR
En lugar del maxdev de ile es el knum todo lo demás es prácticamente lo
mismo.
Yo lo he usado para hacer precisamente pantallas que van indicando el
porcentaje de avance de un proceso.
Tambien, si lo único que queres es mostrar el avance, podrías probar
enviando un mensaje de estado con un comando:
En el programa principal leo el archivo (o lleno el subfile o lo que
querras) y armo el mensaje (campo MSG) que se envía como parámetro a una CL
que lo único que hace es desplegar el mensaje en la línea de estatus:
FCVDCOVENIP E DISK
E ARR 1 1 80
I DS
I 1 80 MSG
I I 12 160REGIS
I I 31 350TOTAL
C ADD 1 CONTA 50
C MOVEAARR,1 MSG
C Z-ADD312 TOTAL
C Z-ADDCONTA REGIS
C CALL '$$'
C PARM MSG
C FREE '$$'
**
PROCESADOS $$$$$ REGISTROS DE $$$$$
Y aquí está la CL.
PGM PARM(&MENSAJE)
DCL VAR(&MENSAJE) TYPE(*CHAR) LEN(80)
SNDPGMMSG MSGID(CPF9898) MSGF(QCPFMSG) +
MSGDTA(&MENSAJE) TOPGMQ(*EXT) +
MSGTYPE(*STATUS)
ENDPGM
Saludos.
From: [email protected]
[mailto:[email protected]] On Behalf Of Javier B.
Sent: jueves, 07 de agosto de 2014 06:43 a.m.
To: Foro-Help400
Subject: RE: No me muestra registro de pantalla
Pues me temo que no porque no utilizo ILE y porque me sale otro error :
"No hay coincidencia INDARA entre el programa y el archivo PMTU140"
Saludos y gracias de todas formas,
Javier
> ------------------------------
>
> Message: 2
> Date: Wed, 6 Aug 2014 08:21:26 -0600
> From: Bernabé Estrada <[email protected]>
> Subject: RE: No me muestra registro de pantalla
> To: "'forum.help400'" <[email protected]>
> Message-ID: <[email protected]>
> Content-Type: text/plain; charset="iso-8859-1"
>
> Quizás te sirva este ejemplo:
>
>
>
> Importante, maxdev en hoja f, indicadores de respuesta en write y read, en
> el registro a mostrar INVITE y al compilar la pantalla WAITRCD que puede
ser
> *IMMED.
>
>
>
>
>
> fpantalla cf e workstn maxdev(*file)
>
> C dou *in03
>
> C write registro 77
>
> C read pantalla 8899
>
> c if not(*in03)
>
> c eval resul = dato * 2
>
> c endif
>
> C enddo
>
> C eval *inlr = *on
>
>
>
>
>
> A*%%
>
> A DSPSIZ(24 80 *DS3)
>
> A CA03(03)
>
> A R REGISTRO
>
> A*%%
>
> A INVITE
>
> A 1 17'Hora:'
>
> A 1 23TIME
>
> A 3 1'Dato:'
>
> A 4 23'F3'
>
> A DSPATR(HI)
>
> A 4 26'Salir'
>
> A DATO 3Y 0B 3 9EDTCDE(4)
>
> A 3 17'Dato x 2'
>
> A RESUL 5S 0O 3 26
>
>
>
> CHGDSPF FILE(PANTALLA) WAITRCD(2)
>
>
>
>
>
> From: [email protected]
> [mailto:[email protected]] On Behalf Of Javier B.
> Sent: miércoles, 06 de agosto de 2014 05:06 a.m.
> To: Foro-Help400
> Subject: Re: No me muestra registro de pantalla
>
>
>
> Hola Juan Ramón :
>
>
>
> Rectifico, no es que no lo vea, me da los siguientes errores :
>
>
>
> "Se ha producido un error de E/S permanente (C G S D F)."
>
> "No se ha podido transmitir al dispositivo S1PC10. La sesión no está en
> condición de envío."
>
>
>
> Es un programa que carga un subfile (SFL) y por cada registro marcado,
hará
> una tarea.
>
> En este momento ya conozco el nº de registros a leer (yy).
>
> Por cada registro leído (xx) del SFL (o cada 100 registros), quiero
mostrar
> una ventana que ponga "Registro leído : xx de yy".
>
> El SFL lo leo con CHAIN (READC no me vale porque quiero leer todos los
> registros que tengan una "X", y esta "X" se puede escribir con el teclado
o
> mediante una tecla de función que pone "X" en todos los registros).
>
> Y cuando quiero mostrar la ventana de "Registro leído...", lo hago con
> WRITE.
>
>
>
> Un saludo y gracias,
>
> Javier
>
>
>
>
> >
> > ------------------------------
> >
> > Message: 2
> > Date: Tue, 5 Aug 2014 12:11:47 +0200
> > From: Juan Ramón Garcia <[email protected]>
> > Subject: Re: No me muestra registro de pantalla
> > To: "forum.help400" <[email protected]>
> > Message-ID:
> > <cabs2mgnwtmvvgkk3f162wyfia+lqff_yzz5_oa-z6pf75xw...@mail.gmail.com>
> > Content-Type: text/plain; charset="utf-8"
> >
> > Hola Javier:
> >
> > Al crear el archivo de pantalla CRTDSPF ENHDSP(*YES) DFRWRT(*NO)
> > También lo puedes hacer con CHGDSPF.
> >
> > Un saludo.
> > Juanra
> >
> >
> > El 5 de agosto de 2014, 12:06, Javier B. <[email protected]> escribió:
> >
> > > Buenas tardes :
> > >
> > > Estoy intentando poner en un programa que tarda mucho, el nº de
registro
> > > leído, para que el usuario tenga una idea de cuánto va a tardar el
> proceso.
> > > Lo que hago es que por cada 100 registros leídos, intento mostrar una
> > > ventana del tipo "Registro leído : nn de nn".
> > > Entonces lo que hago (utilizo RPG/400) es una 'WRITE registro', pero
no
> me
> > > lo muestra.
> > > Me suena que había alguna forma de forzar que visualice el contanido
de
> un
> > > registro de pantalla aunque no se haga un EXFMT, ¿es posible?
> > > He probado con KEEP (en la DDS de pantalla) y nada.
> > >
> > > ¿Me podéis ayudar por favor?
> > > A parte de saber por qué no la muestra, ¿hay otra forma más eficaz de
> > > conseguir lo mismo?
> > >
> > > Javier
> > >
>
> ------------ próxima parte ------------
> Se ha borrado un adjunto en formato HTML...
> URL:
<http://listas.combios.es/cgi-bin/mailman/private/forum.help400/attachments/
20140806/7956e811/attachment.htm>
>
> ------------------------------
>
> Message: 3
> Date: Wed, 06 Aug 2014 14:11:26 -0400
> From: josepo <[email protected]>
> Subject: Msg:Demasiados archivos abiertos para procesar
> To: "[email protected]"
> <[email protected]>
> Message-ID: <[email protected]>
> Content-Type: text/plain; charset="utf-8"
>
> Hola estoy ejecutando un programa Rpg que no abre archivos y cual llama a
programa socket al llegar a las 200 llamadas me aborta el programa y me da
el mensaje anterior. Solo se normaliza cuando cierro la sesión.
> Alguien me podría ayudar.
> Gracias.
>
> Enviado desde Samsung Mobile
> ------------ próxima parte ------------
> Se ha borrado un adjunto en formato HTML...
> URL:
<http://listas.combios.es/cgi-bin/mailman/private/forum.help400/attachments/
20140806/4326e4c6/attachment.htm>
>
> ------------------------------
>
> Message: 4
> Date: Thu, 7 Aug 2014 07:54:57 +0200
> From: Juan Ramón Garcia <[email protected]>
> Subject: Re: No me muestra registro de pantalla
> To: "forum.help400" <[email protected]>
> Message-ID:
> <cabs2mgm1vexvwfugrktzsdsr54psu5py9qxhv6enpewxxho...@mail.gmail.com>
> Content-Type: text/plain; charset="utf-8"
>
> Hola Javier:
>
> Tendrás que mirar el motivo por el que te da el error, desde luego para
> poder visualizar algo en pantalla con WRITE debes compilarla como te dije
> porque, por defecto, el sistema espera a una operación de entrada o a
> llenar el buffer antes de mostrar la pantalla (para mejorar el
rendmiento).
>
> Un saludo.
> Juanra
>
>
>
> El 6 de agosto de 2014, 13:06, Javier B. <[email protected]> escribió:
>
> > Hola Juan Ramón :
> >
> > Rectifico, no es que no lo vea, me da los siguientes errores :
> >
> > "Se ha producido un error de E/S permanente (C G S D F)."
> > "No se ha podido transmitir al dispositivo S1PC10. La sesión no está en
> > condición de envío."
> >
> > Es un programa que carga un subfile (SFL) y por cada registro marcado,
> > hará una tarea.
> > En este momento ya conozco el nº de registros a leer (yy).
> > Por cada registro leído (xx) del SFL (o cada 100 registros), quiero
> > mostrar una ventana que ponga "Registro leído : xx de yy".
> > El SFL lo leo con CHAIN (READC no me vale porque quiero leer todos los
> > registros que tengan una "X", y esta "X" se puede escribir con el
teclado o
> > mediante una tecla de función que pone "X" en todos los registros).
> > Y cuando quiero mostrar la ventana de "Registro leído...", lo hago con
> > WRITE.
> >
> > Un saludo y gracias,
> > Javier
> >
> >
> > >
> > > ------------------------------
> > >
> > > Message: 2
> > > Date: Tue, 5 Aug 2014 12:11:47 +0200
> > > From: Juan Ramón Garcia <[email protected]>
> > > Subject: Re: No me muestra registro de pantalla
> > > To: "forum.help400" <[email protected]>
> > > Message-ID:
> > > <cabs2mgnwtmvvgkk3f162wyfia+lqff_yzz5_oa-z6pf75xw...@mail.gmail.com>
> > > Content-Type: text/plain; charset="utf-8"
> >
> > >
> > > Hola Javier:
> > >
> > > Al crear el archivo de pantalla CRTDSPF ENHDSP(*YES) DFRWRT(*NO)
> > > También lo puedes hacer con CHGDSPF.
> > >
> > > Un saludo.
> > > Juanra
> > >
> > >
> > > El 5 de agosto de 2014, 12:06, Javier B. <[email protected]>
escribió:
> >
> > >
> > > > Buenas tardes :
> > > >
> > > > Estoy intentando poner en un programa que tarda mucho, el nº de
> > registro
> > > > leído, para que el usuario tenga una idea de cuánto va a tardar el
> > proceso.
> > > > Lo que hago es que por cada 100 registros leídos, intento mostrar
una
> > > > ventana del tipo "Registro leído : nn de nn".
> > > > Entonces lo que hago (utilizo RPG/400) es una 'WRITE registro', pero
> > no me
> > > > lo muestra.
> > > > Me suena que había alguna forma de forzar que visualice el contanido
> > de un
> > > > registro de pantalla aunque no se haga un EXFMT, ¿es posible?
> > > > He probado con KEEP (en la DDS de pantalla) y nada.
> > > >
> > > > ¿Me podéis ayudar por favor?
> > > > A parte de saber por qué no la muestra, ¿hay otra forma más eficaz
de
> > > > conseguir lo mismo?
> > > >
> > > > Javier
> > > >
> >
> >
> > ____________________________________________________
> > Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd )
> > Forum.Help400 © Publicaciones Help400, S.L.
> >
> ------------ próxima parte ------------
> Se ha borrado un adjunto en formato HTML...
> URL:
<http://listas.combios.es/cgi-bin/mailman/private/forum.help400/attachments/
20140807/098b29b9/attachment.htm>
>
> ------------------------------
>
> __________________________________________________
> Forum.HELP400 es un servicio m&amp;#225;s de ServerNEWS.
> &amp;#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
>
> Fin de Resumen de Forum.help400, Vol 94, Envío 3
> ************************************************
____________________________________________________
Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd )
Forum.Help400 © Publicaciones Help400, S.L.