signler une erreur

RPG (3 et 4, free), CL, SQL, etc...
Répondre
Ponpon
Messages : 20
Enregistré le : mer. 15 févr. 2017, 23:31:16

(sans sujet)

Message par Ponpon »

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 :

QMHSNDPM

Message par cmasse »

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

(sans sujet)

Message par Balder »

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;                       

cmasse
Site Admin
Messages : 813
Enregistré le : mer. 14 févr. 2007, 18:00:03
Localisation : Nantes
Contact :

(sans sujet)

Message par cmasse »

très juste.

qq exemples d'api messages sur github (n'hésitez pas à participer)

https://github.com/FrenchIBMi/exemples/ ... r/messages
Christian Massé (Volubis.fr)

Répondre