En plus des fonctions ErreurInfo et HErreurInfo, voir rubrique sur la gestion des erreurs, il existe deux fonctions complémentaires qui permettent de remonter le détail complet d'une erreur AS400 de type CPF.
Ces fonctions remontent les informations qui seraient affichées par un DSPMSGD.
ASErreurAide renvoie le texte d'aide complet de la dernière erreur rencontrée.
ASErreurDonnee permet d'extraire les données de la dernière erreur, en donnant une position et une longueur.
Pour connaître les positions et longueurs des variables de messages, utilisez la commande DSPMSGD sur un terminal.
Syntaxe
sResult = ASErreurAide([Connexion])
sResult = ASErreurDonnee(Position,Longueur [,Connexion])
En anglais : ASErrorHelp et ASErrorData
Paramètres
sResult
Chaîne de caractères. Résultat de la récupération.
Position
Entier - position de la variable dans la chaîne
Longueur
Entier - longueur de la variable
Connexion (optionnel)
Connexion - Nom de la connexion
Exemple
Récupérer le nom de la contrainte en cas d'erreur d'intégrité
s1 est chaînes
contr_nom est chaîne
contr_parfic, contr_parlib est chaîne
contr_fic, contr_lib est chaîne
s1 = HErreurInfo(hErrMessage)
SI ExtraitChaîne(s1, 6, RC) = "Message: CPF503A" ALORS
// Nom de la contrainte
contr_nom = SansEspace(ASErreurDonnee(176, 258))
contr_parfic = SansEspace(ASErreurDonnee(448, 10))
contr_parlib = SansEspace(ASErreurDonnee(458, 10))
contr_fic = SansEspace(ASErreurDonnee(10, 10))
contr_lib = SansEspace(ASErreurDonnee(20, 10))
Info("Erreur intégrité sur contrainte: "+contr_nom+RC+"Fichier parent: "+contr_parlib+"/"+contr_parfic+RC+"Fichier de base: "+contr_lib+"/"+contr_fic)
FIN
Info("Erreur AS/400:" +Milieu(ExtraitChaîne(s1, 7, RC),14)+RC+"Aide :"+RC+ ASErreurAide())