Aller au contenu

Message d'erreur IBM i (AS/400)

MCH4441

Incompatibilité entre le masque de paramètres de la procédure à liage tardif et le masque de paramètres de la procédure cible.

Gravité 40 · Fin anormale du programme ou de la fonction

Cause

Le masque de paramètres construit pour l'opération d'appel de procédure à liage tardif ne correspond pas au masque de paramètres de procédure cible. Le pointeur d'appel de procédure à liage tardif est &1. La procédure cible du module &3 du programme &2 est &4. Raisons pouvant être à l'origine de cette erreur : 1. L'appel de procédure à liage tardif utilise la technique d'optimisation d'arguments ARGOPT alors que la procédure cible ne l'utilise pas. 2. L'appel de procédure à liage tardif n'utilise pas la technique d'optimisation d'arguments ARGOPT alors que la procédure cible l'utilise. 3. L'appel de procédure à liage tardif et la procédure cible utilisent ARGOPT mais ne font pas le même usage des paramètres de pointeur d'espace. 4. L'appel de procédure à liage tardif et la procédure cible utilisent ARGOPT mais un seul des deux est activé pour l'utilisation d'un espace mémoire à téraoctets.

Que faire

Assurez-vous que l'utilisation d'ARGOPT par l'appel de procédure à liage tardif correspond à celle de la procédure cible &4 du module &3 du programme &2. Pour les modules, lancez la commande DSPMOD en indiquant le paramètre DETAIL(*EXPORT *IMPORT *PROCLIST) afin de déterminer si la procédure cible utilise ARGOPT. Pour les programmes de service, lancez la commande DSPSRVPGM en indiquant le paramètre DETAIL(*PROCEXP) afin de déterminer si la procédure cible utilise ARGOPT. Si l'utilisation d'ARGOPT par l'appel de procédure à liage tardif correspond à celle de la procédure cible, assurez-vous que l'appel de procédure à liage tardif et la procédure cible font le même usage des pointeurs d'espace et que tous deux sont activés pour l'utilisation d'un espace mémoire à téraoctets. Ensuite, apportez les corrections nécessaires et renouvelez la demande.

Variables du message

Quand le système envoie le message, chaque variable est remplacée par une valeur réelle : un nom d'objet, de bibliothèque, un code...

VariableTypeLongueur
&1 *HEX 16
&2 *CHAR 30
&3 *CHAR 30
&4 *CHAR 64

Sur votre IBM i

Afficher la description complète du message :

DSPMSGD RANGE(MCH4441) MSGF(QSYS/QCPFMSG)

L'intercepter dans un programme CL, quand il est envoyé comme message d'échappement :

MONMSG MSGID(MCH4441) EXEC(DO)
  /* traitement de l'erreur */
ENDDO