RPG (3 et 4, free), CL, SQL, etc...
			
		
		
			
				
																			
								Ponpon 							 
									
		Messages :  24  		Enregistré le :  mer. 15 févr. 2017,  23:31:16 		
		
						
						
		 
		
						
						
													
							
						
									
						Message 
					 
								par Ponpon   »  mer. 16 janv. 2019,  17:08:50 
			
			
			
			
			Bonjour,
je cherche une méthode pour générer une exception/erreur dans l'appel d'une fonction de programme de service.
Ma fonction permet d'effectuer une conversion d'une unité en une autre (par exemple, un nombre de bouteilles donne un certain nombre de packs). 
Actuellement, en cas d'erreur dans la conversion, la fonction retourne 0, ce qui ne nous permet pas de savoir dans l'appelant si cela correspond à un résultat ou une erreur dans le traitement.
Cela se traduirait comme suit dans le programme :
Code : Tout sélectionner 
Conversion(nombre:unite1:unite2);
if %error();
   dsply 'Erreur';
endif;
Merci d'avance
 
			
			
			
									
									
						 
		 
				
		
		 
	 
	 
				
		
		
			
				
																			
								cmasse 							 
						Site Admin 			
		Messages :  813  		Enregistré le :  mer. 14 févr. 2007,  18:00:03 		
		
											Localisation :  Nantes 
																	
							
				Contact : 
				
			 
				
		 
		
						
						
													
							
						
									
						Message 
					 
								par cmasse   »  mer. 16 janv. 2019,  17:50:29 
			
			
			
			
			L'API QMHSNDPM permet d'envoyer un message, s'il est de type *ESCAPE cela provoque une erreur
Code : Tout sélectionner 
dcl-proc signal export;
  dcl-pi *n;
    message char(80) CONST;
  END-PI;
  dcl-pr QMHSNDPM EXTPGM;
    msgid char(7)   CONST;
    msgf  char(20)  CONST;
    msgdta char(80) CONST;
    msgdtal int(10) CONST;
    msgtyp char(10) CONST;
    callstack char(10) CONST;
    callcount INT(10) CONST;
    msgkey    CHAR(4);
    erreur    likeds(erreurDS);
  END-PR;
  dcl-s cle char(4);
  erreurds.errlg = 16;
  // envoi un message d'erreur deux crans au dessus (paramètre "callcount")
  QMHSNDPM('CPF9898' : 'QCPFMSG   QSYS': message : %len(%trimr(message)) :
            '*ESCAPE': '*' : 2 : cle : erreurDS);
END-PROC;
Pour infos,notre prochain cours en ligne parle justement de messages
http://www.volubis.fr/SHOC.html  
			
			
			
									
									Christian Massé (Volubis.fr)
						 
		 
				
		
		 
	 
	 
				
		
		
			
				
																			
								Balder 							 
									
		Messages :  3  		Enregistré le :  jeu. 17 janv. 2019,  09:13:24 		
		
						
						
		 
		
						
						
													
							
						
									
						Message 
					 
								par Balder   »  jeu. 24 janv. 2019,  18:11:12 
			
			
			
			
			A traiter avec le monitor et non pas le %error.
Code : Tout sélectionner 
 monitor;
   Conversion(nombre:unite1:unite2); 
 on-error;
   //Affichage du message à l'ecran;
 Endmon;