Volubis, le forum IBM i Index du Forum Volubis, le forum IBM i
avec les clubs Informatiques IPL et Bretagne.
 
 FAQFAQ   RechercherRechercher   Liste des MembresListe des Membres   Groupes d'utilisateursGroupes d'utilisateurs   S'enregistrerS'enregistrer 
 ProfilProfil   Se connecter pour vérifier ses messages privésSe connecter pour vérifier ses messages privés   ConnexionConnexion 

signler une erreur

 
Poster un nouveau sujet   Répondre au sujet    Volubis, le forum IBM i Index du Forum -> langages
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
Ponpon



Inscrit le: 15 Fév 2017
Messages: 15

MessagePosté le: Mer 16 Jan 2019, 17:08:50    Sujet du message: (sans sujet) Répondre en citant

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:

Conversion(nombre:unite1:unite2);
if %error();
   dsply 'Erreur';

endif;


Merci d'avance
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
cmasse
Site Admin


Inscrit le: 14 Fév 2007
Messages: 701
Localisation: Nantes

MessagePosté le: Mer 16 Jan 2019, 17:50:29    Sujet du message: QMHSNDPM Répondre en citant

L'API QMHSNDPM permet d'envoyer un message, s'il est de type *ESCAPE cela provoque une erreur
Code:

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)
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web de l'utilisateur
Balder



Inscrit le: 17 Jan 2019
Messages: 1

MessagePosté le: Jeu 24 Jan 2019, 18:11:12    Sujet du message: (sans sujet) Répondre en citant

A traiter avec le monitor et non pas le %error.
Code:
 monitor;
   Conversion(nombre:unite1:unite2);
 on-error;
   //Affichage du message à l'ecran;
 Endmon;                       
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
cmasse
Site Admin


Inscrit le: 14 Fév 2007
Messages: 701
Localisation: Nantes

MessagePosté le: Jeu 24 Jan 2019, 18:19:57    Sujet du message: (sans sujet) Répondre en citant

très juste.

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

https://github.com/FrenchIBMi/exemples/tree/master/messages
_________________
Christian Massé (Volubis.fr)
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web de l'utilisateur
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    Volubis, le forum IBM i Index du Forum -> langages Toutes les heures sont au format GMT + 1 Heure
Page 1 sur 1

 
Sauter vers:  
Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum


Powered by phpBB © 2001, 2005 phpBB Group
Traduction par : phpBB-fr.com

Anti Bot Question MOD - phpBB MOD against Spam Bots