Hola Nosotros implementamos algo
asi.
SFLMSG y SFLCTRL
0423.00
A R
SFLMSG
SFL
0424.00 A SFLMSGRCD(24) <----- Indica que ira en la linea 24
0425.00 A NONE SFLMSGKEY
0426.00 A W$$PGM SFLPGMQ <------ COla de Mensajes del Programa
0427.00 *
0428.00 A R SFLCTL SFLCTL(SFLMSG)
0429.00 A KEEP
0430.00 A SFLSIZ(0030) <- Capacidad para 30 mensjaes
0431.00 A SFLPAG(0001) <- un mensaje por ves....
0432.00 A SFLDSP
0433.00 A SFLDSPCTL
0434.00 A SFLINZ
0435.00 A N37 OVERLAY
0436.00 A N38 PUTOVR
0437.00 A 40 SFLEND
0438.00 A W$$PGM SFLPGMQ <- Idem subfile
0424.00 A SFLMSGRCD(24) <----- Indica que ira en la linea 24
0425.00 A NONE SFLMSGKEY
0426.00 A W$$PGM SFLPGMQ <------ COla de Mensajes del Programa
0427.00 *
0428.00 A R SFLCTL SFLCTL(SFLMSG)
0429.00 A KEEP
0430.00 A SFLSIZ(0030) <- Capacidad para 30 mensjaes
0431.00 A SFLPAG(0001) <- un mensaje por ves....
0432.00 A SFLDSP
0433.00 A SFLDSPCTL
0434.00 A SFLINZ
0435.00 A N37 OVERLAY
0436.00 A N38 PUTOVR
0437.00 A 40 SFLEND
0438.00 A W$$PGM SFLPGMQ <- Idem subfile
EL
programa tiene
esto :
2713.00 *
-------------------------------------------------
2714.00 * ** *INIT - RUTINA INICIAL.
2715.00 * -------------------------------------------------
2716.00 C *INZSR BEGSR
2717.00 *
2714.00 * ** *INIT - RUTINA INICIAL.
2715.00 * -------------------------------------------------
2716.00 C *INZSR BEGSR
2717.00 *
...
2727.00 *
Inicializar las lineas de opciones y
mandatos
2728.00 C MOVE P$$PGM W$$PGM
2728.00 C MOVE P$$PGM W$$PGM
Luego la logica del programa tiene que antes de hacer
una 2da lectura de pantalla para confirmar, si hay errores llama a esta
subrutina:
2701.00 *
-------------------------------------------------
2702.00 * ** $$SNDM - ENVIA VARIOS MENSAJES AL PROGRAMA
2703.00 * -------------------------------------------------
2704.00 C $$SNDM BEGSR
2705.00 *
2706.00 C CALL 'QUTSVMC1'
2707.00 C PARM MSGF
2708.00 C PARM MSG
2709.00 C Z-ADD0 @Z 40
2710.00 C CLEARMSG
2711.00 *
2712.00 C ENDSR
2702.00 * ** $$SNDM - ENVIA VARIOS MENSAJES AL PROGRAMA
2703.00 * -------------------------------------------------
2704.00 C $$SNDM BEGSR
2705.00 *
2706.00 C CALL 'QUTSVMC1'
2707.00 C PARM MSGF
2708.00 C PARM MSG
2709.00 C Z-ADD0 @Z 40
2710.00 C CLEARMSG
2711.00 *
2712.00 C ENDSR
MSGF es el archivo de
Mensajes
MSG es un Array de 20 elemento con los identificadores
de mensajes.
EL programa QUTSVMC1 hace
esto:
0001.00
PGM PARM(&MSGF
&MSGS)
0001.01 DCL &MSGF *CHAR 10
0002.00 DCL &MSGS *CHAR 140
0005.00 DCL &IND *DEC LEN(3 0)
0006.00 DCL &LNG *DEC LEN(1 0) VALUE(7)
0007.00 DCL &MSG *CHAR 7
0010.00 CHGVAR &IND 1
0011.00 LOOP: CHGVAR &MSG %SST(&MSGS &IND &LNG)
0012.00 CHGVAR &IND VALUE(&IND+7)
0013.00 IF (&MSG>' ' *AND &IND<140) DO
0014.00 SNDPGMMSG MSGID(&MSG) MSGF(&MSGF) TOPGMQ(*PRV)
0016.00 GOTO LOOP
0017.00 ENDDO
0001.01 DCL &MSGF *CHAR 10
0002.00 DCL &MSGS *CHAR 140
0005.00 DCL &IND *DEC LEN(3 0)
0006.00 DCL &LNG *DEC LEN(1 0) VALUE(7)
0007.00 DCL &MSG *CHAR 7
0010.00 CHGVAR &IND 1
0011.00 LOOP: CHGVAR &MSG %SST(&MSGS &IND &LNG)
0012.00 CHGVAR &IND VALUE(&IND+7)
0013.00 IF (&MSG>' ' *AND &IND<140) DO
0014.00 SNDPGMMSG MSGID(&MSG) MSGF(&MSGF) TOPGMQ(*PRV)
0016.00 GOTO LOOP
0017.00 ENDDO
0018.00
RETURN
0019.00 ENDPGM
0019.00 ENDPGM
El tema esta en TOPGMQ(*PRV), los mensajes van a la
cola de mansajes.
Nosotros tenemos unas estructuras que lo hacen solo,
pero tu podrias investigar esto y usarlo como te
convenga.
Saludos
