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
 
EL programa  tiene esto :
2713.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                      
 
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                                      
 
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                                                     
0018.00              RETURN                                                    
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
 

Responder a