title: How to display messages from a message file on a display screen using RPGLE?
body: <p>I have designed a screen using SDA in AS/400 that takes an ID number as input and searches in two PFs for that ID and displays corresponding values fetched from those PFs in the respective fields on screen. Below is the DSPF code:</p>
  
  <pre><code> A*%%TS  SD  20180813  084626  PATELDH     REL-V7R1M0  5770-WDS 
   A*%%EC                                                         
   A                                      DSPSIZ(24 80 *DS3)      
   A          R HEADER                                            
   A*%%TS  SD  20180802  075026  PATELDH     REL-V7R1M0  5770-WDS 
   A                                  2  2USER                    
   A                                  2 30'PRODUCT INQUIRY SCREEN'
   A                                      COLOR(WHT)              
   A                                  2 63DATE                    
   A                                      EDTCDE(Y)               
   A                                  3 63TIME                    
   A          R FOOTER                                            
   A*%%TS  SD  20180802  074433  PATELDH     REL-V7R1M0  5770-WDS 
   A                                      OVERLAY                 
   A                                 22  4'F3=EXIT'               
   A          R DETAIL                                            
   A*%%TS  SD  20180813  073420  PATELDH     REL-V7R1M0  5770-WDS 
   A                                      CA03(03 'EXIT')         
   A                                      CA12(12 'PREVIOUS')     
   A                                      OVERLAY                             
   A                                  7 16'ID:'                               
   A                                 10 16'NAME:'                             
   A                                 12 16'CATEGORY:'                         
   A            @ID       R        I  7 20REFFLD(CATEGORIES/ID AS400KT2/RCATE-
   A                                      GORY)                               
   A            @NAME     R        O 10 22REFFLD(PRODUCTS/NAME AS400KT2/RPROD-
   A                                      UCTS)                               
   A            @CATEGORY R        O 12 26REFFLD(CATEGORIES/CATEGORY AS400KT2-
   A                                      /RCATEGORY)                         
   A          R MSGSFL                    SFL                                 
   A*%%TS  SD  20180803  054959  PATELDH     REL-V7R1M0  5770-WDS             
   A                                      SFLMSGRCD(24)                       
   A            MSGKEY                    SFLMSGKEY                           
   A            MSGQ                      SFLPGMQ(10)                         
   A          R MSGCTL                    SFLCTL(MSGSFL)                      
   A*%%TS  SD  20180813  084626  PATELDH     REL-V7R1M0  5770-WDS             
   A                                      OVERLAY                             
   A                                      SFLDSP                              
   A                                      SFLDSPCTL   
   A                                      SFLINZ      
   A  01                                  SFLEND      
   A                                      SFLSIZ(0002)
   A                                      SFLPAG(0001)
   A            MSGQ                      SFLPGMQ(10) 
  </code></pre>
  
  <p>I have written a free format RPGLE code that makes this screen work. Below is the RPGLE code:</p>
  
  <pre><code> FDSPPRD    CF   E             WorkStn                   
   FRPRODUCTS IF   E           K DISK                      
   FRCATEGORY IF   E           K DISK                      
   FRPRODCATEGO  A E           K DISK                      
   DtempID           S                   LIKE(ID)          
   DmsgID            S              7A                     
   DmsgF             S             10A                     
   D getMsg          PR                  EXTPGM('MSGSFLCL')
   D  msgID                         7A                     
   D  msgF                         10A                     
    /Free                                                  
       DoW *In03 = *Off;                                   
        Write HEADER;                                      
        Write FOOTER;                                      
        ExFmt DETAIL;                                      
        If @ID = *Zeros;                                   
            msgID = 'MSG0001';                             
            msgF = 'ASGNMSGF';                             
            getMsg(msgID:msgF);                            
        Else;                       
         Chain @ID RPRODUCTS;       
         If %Found(RPRODUCTS);      
            @NAME = NAME;           
            Chain ID RCATEGORY;     
            If %Found(RCATEGORY);   
               @CATEGORY = CATEGORY;
            EndIf;                  
         EndIf;                     
        EndIf;                      
       EndDo;                       
        *InLR = *On;                
    /End-Free                       
  </code></pre>
  
  <p>Below is the CL program called by RPGLE program to get the message text from the msgfile:</p>
  
  <pre><code>         PGM       PARM(&amp;MSGID &amp;MSGF)             
           DCL       VAR(&amp;MSGID) TYPE(*CHAR) LEN(7) 
           DCL       VAR(&amp;MSGF)  TYPE(*CHAR) LEN(10)
  
           SNDPGMMSG MSGID(&amp;MSGID) MSGF(&amp;MSGF)      
           ENDPGM                                   
  </code></pre>
  
  <p>Below are the two PFs from which the records are read:</p>
  
  <p>RPRODUCTS-</p>
  
  <pre><code> A          R PRODUCTS           
   A            ID             2P 0
   A            NAME          16A  
   A          K ID                 
  </code></pre>
  
  <p>RCATEGORY-</p>
  
  <pre><code> A          R CATEGORIES         
   A            ID             2P 0
   A            CATEGORY      15A  
   A          K ID                 
  </code></pre>
  
  <p>All the above codes compile successfully. But the problem is that the msg from the msgf does not appear on the screen. Rest all works. Just the msg from msgf is not being displayed when I press 'Enter' key with a blank ID on screen. Can someone please suggest an information source from where I can learn the concepts of such applications. Also, a help with this one would be appreciated.</p>