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...
| Variable | Type | Longueur |
|---|---|---|
| &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