Bonjour,
Dans le cadre de la nouvelle LIBMQM au lieu de la qmqm, j'essaye d'écrire le pgm ci-dessous qui récupéré les message depuis la MQ:
     Hdatfmt(*eur)                                                              
     HDEBUG(*YES)                                                               
     DMQOPEN1          PR                  EXTPROC('MQOPEN')                    
     D* Connection handle                                                       
     D HCONN                         10I 0 VALUE                                
     D* Object descriptor                                                       
     D OBJDSC                       468A                                        
     D* Options that control the action of MQOPEN                               
     D OPTS                          10I 0 VALUE                                
     D* Object handle                                                           
     D HOBJ                          10I 0                                      
     D* Completion code                                                         
     D CMPCOD                        10I 0                                      
     D* Reason code qualifying CMPCOD                                           
     D REASON                        10I 0                                      
     DMQGET1           PR                  EXTPROC('MQGET')                     
     D* Connection handle                                                       
     D HCONN                         10I 0 VALUE                                
     D* Object handle                                                           
     D HOBJ                          10I 0 VALUE                                
     D* Message descriptor                                                      
     D MSGDSC                       364A                                        
     D* Options that control the action of MQGET                                
     D GMO                          112A                                        
     D* Length in bytes of the Buffer area                                      
     D BUFLEN                        10I 0 VALUE                                
     D* Area to contain the message data                                        
     D BUFFER                          *   VALUE                                
     D* Length of the message                                                   
     D DATLEN                        10I 0                                      
     D* Completion code                                                         
     D CMPCOD                        10I 0                                      
     D* Reason code qualifying CMPCOD                                           
     D REASON                        10I 0                                      
     DMQCLOSE1         PR                  EXTPROC('MQCLOSE')                   
     D* Connection handle                                                       
     D HCONN                         10I 0 VALUE                                
     D* Object handle                                                           
     D HOBJ                          10I 0                                      
     D* Options that control the action of MQCLOSE                              
     D OPTS                          10I 0 VALUE                                
     D* Completion code                                                         
     D CMPCOD                        10I 0                                      
     D* Reason code qualifying CMPCOD                                           
     D REASON                        10I 0                                      
      *-- Specification F ------------------------------------------------      
     FARC1999IN o    e             disk                                         
      *****12056 ******                                                         
      //  Connection handle                                                     
     D HCONN           S             10I 0                                      
                                                                                
      // Options                                                                
     D OPTS            S             10I 0                                      
                                                                                
      // Object handle                                                          
     D HOBJ            S             10I 0                                      
                                                                                
      // Completion codes                                                       
     D OpenCode        S             10I 0                                      
      // CompletionCode                                                         
     D CCODE           S             10I 0                                      
                                                                                
      // Reasons                                                                
     D REASON          S             10I 0                                      
     D ConnReason      S             10I 0                                      
                                                                                
      // Buffer                                                                 
     D Buffer          S             60A                                        
      // Buffer length                                                          
     D BUFLEN          S             10I 0 INZ(%LEN(Buffer))                    
                                                                                
      // Actual Message length received                                         
     D MESLEN          S             10I 0                                      
                                                                                
      *****12056 ******                                                         
      *-- Specification D ------------------------------------------------      
     Das_erreur        s            254                                         
     Dai_occurs        s              8  0                                      
      * HAU Gestion du message ORDERS jusqu'à 3680 segments de 1000 caractères  
      * Das_cpt           s              2  0                                   
     Das_cpt           s              4  0                                      
      * HAU Fin                                                                 
     Das_dta           s           1000                                         
     D/copy cmqr                                                                
     D MQOD            DS                  qualified                            
     D/COPY CMQODG                                                              
      *--- Message Descriptor --------------------------------------------      
     D MQMD            DS                  qualified                            
     D/copy cmqmdr                                                              
      *--- Get message options -------------------------------------------      
     D mqgmo           ds                  qualified                            
     I/copy cmqgmor                                                             
      *-- Parametre d'entree ---------------------------------------------      
     C     *entry        plist                                                  
     C                   parm                    as_qmsg          16            
     C                   parm                    as_perreu         2            
     C                   parm                    as_reason        10            
     C                   parm                    as_IDEMET        20            
     C                   parm                    as_IDDEST        20            
      *-- MQCONN implicite sur AS400, utilisation handle par defaut ------      
     C*                  z-add     HCDEFH        HCONN                          
      *-- Longueur du message --------------------------------------------      
     C                   z-add     4194304       BUFLEN                         
      *-- Initialisation du code retour erreur ---------------------------      
     C                   eval      as_perreu='00'                               
      *-- Initialisation du header du message ----------------------------      
     C                   eval      as_erreur =' '                               
     C                   z-add     0             ai_occurs                      
      *-- Ouverture de la QMSG -------------------------------------------      
     C                   exsr      open_qmsg                                    
     C                   exsr      gest_erreur                                  
     C                   if        REASON<>RCNONE                               
     C                   eval      as_perreu='02'                               
     C                   exsr      fin_pgm                                      
     C                   endif                                                  
     C                   exsr      init_qmsg                                    
      *-- Boucle de lecture des messages ---------------------------------      
     C                   exsr      get_qmsg                                     
     C                   exsr      gest_erreur                                  
     C                   if        REASON<>RCNONE                               
     C                   eval      as_perreu='03'                               
     C                   exsr      fin_pgm                                      
     C                   endif                                                  
      *-- Fermeture de la QMSG -------------------------------------------      
     C                   exsr      close_qmsg                                   
     C                   exsr      gest_erreur                                  
     C                   if        REASON<>RCNONE                               
     C                   eval      as_perreu='06'                               
     C                   exsr      fin_pgm                                      
     C                   endif                                                  
      *-Fin du programme                                                        
     C                   exsr      fin_pgm                                      
      *-- Sous-routine ---------------------------------------------------      
      *--- Ouverture de la queue MSG sans option -------------------------      
     C     open_qmsg     begsr                                                  
     C                   CALLP     MQOPEN1(HCONN :                              
     C                                    MQOD :                                
     C                                    OPTS :                                
     C                                    HOBJ :                                
     C                                    CCODE :                               
     C                                    REASON)                               
     C                   endsr                                                  
      *--- Initialisation de la queue MSG --------------------------------      
     C     init_qmsg     begsr                                                  
     C     *like         define    HOBJ          ab_hobjmsg                     
     C     *like         define    CCODE         ab_compcodemsg                 
     C                   z-add     HOBJ          ab_hobjmsg                     
     C                   z-add     CCODE         ab_compcodemsg                 
     C                   endsr                                                  
      *--- GET dans la queue MSG -----------------------------------------      
      *--- Accept truncated, conversion and no sync point ----------------      
     C     get_qmsg      begsr                                                  
     C                   CALLP          MQGET1(HCONN :                          
     C                                         HOBJ :                           
     C                                         MQMD :                           
     C                                         mqgmo :                          
     C                                         BUFLEN :                         
     C                                         Buffer  :                        
     C                                         MESLEN :                         
     C                                         CCODE :                          
     C                                         REASON)                          
                                                                                
     C                   z-add     1             as_cpt                         
     C                   eval      as_IDEMET = %subst(as_dta:20:20)             
     C                   eval      as_IDDEST = %subst(as_dta:40:20)             
      * HAU Gestion du message ORDRSP jusqu'à 3680 segments de 1000 caractères  
      * HAU Optimisation on s'arrête au premier enreg à blanc                   
     C     as_dta        downe     ' '                                          
      * HAU Fin                                                                 
     C                   eval      Z1000I = as_dta                              
     C                   write     FIC1000IF                                    
      * Récup de la ligne suivante (1000 caractères)                            
     C                   add       1             as_cpt                         
     C*                  eval      as_dta = BUFFER(as_cpt)                      
     C                   enddo                                                  
     C                   endsr                                                  
      *--- Gestion des erreurs MQSERIES ----------------------------------      
     C     gest_erreur   begsr                                                  
     C                   if        REASON<>RCNONE                               
     C                   movel     REASON        as_reason                      
     C                   endif                                                  
     C                   endsr                                                  
      *--- Fermeture de la queue MSG -------------------------------------      
     C     close_qmsg    begsr                                                  
     C                   CallP     MQCLOSE1(HConn :                             
     C                                      HOBJ :                              
     C                                      OPTS :                              
     C                                      CCODE :                             
     C                                      REASON)                             
     C                   endsr                                                  
                                                                                
      *--- Sortie du programme -------------------------------------------      
     C     fin_pgm       begsr                                                  
     C                   eval      *inlr=*on                                    
     C                   dump                                                   
     C                   return                                                 
     C                   endsr                                                  
le problème c'est que quand je fait la compilation il me reste trois message d'erreur suivant:
*RNF7535 30   1544 013604  Le type et les attributs du paramètre 4 ne correspondent   
                           pas à ceux du prototype.                                   
*RNF7536 30   1546 013607  Le type du paramètre 6 indiqué pour l'appel ne correspond  
                           pas au prototype.                                          
*RNF7086 00     63 002000  RPG traite les groupages du fichier FARC1999I. INFDS mis à 
                           jour uniquement lorsque les blocs de données sont          
                           transférés.                   
++> Le premier et le 2éme sont dans l'instruction   ci-dessous pour les variables mqgmo et Buffer  
C                   CALLP          MQGET1(HCONN :    
C                                         HOBJ :     
C                                         MQMD :     
C                                         mqgmo :    
C                                         BUFLEN :   
C                                         Buffer  :  
C                                         MESLEN :   
C                                         CCODE :    
C                                         REASON)                          
  Pouvez-vous m'aider pour la résolution de ces deux anomalie?
			
			
			
									
									
						Lecture de la MQ via la nouvelle LBMQM
- 
				yOUSSEF HAM
 - Messages : 1
 - Enregistré le : lun. 18 avr. 2022, 10:57:25