Page 1 sur 1
probleme utilisation d'une fonction
Posté : ven. 31 oct. 2014, 16:41:19
par manae
Bonjour,
je crée une fonction ainsi :
Create function NEWART/ETAT ( art decimal(7, 0),
date decimal(8, 0),
zone char(7) )
returns decimal(1, 0)
language rpgle
external name 'NEWART/UTIL01PS(AUTETAT)'
parameter style general
la fonction est créée, mais lorsque je tente de l'utiliser
j'ai le message suivant
ETAT de type *N dans NEWART non trouvé.
si vous avez une idée ...
Merci pour vos réponses.
(sans texte)
Posté : ven. 31 oct. 2014, 16:50:40
par cmasse
C'est probablement un problème de signature.
qu'est-ce que la signature d'une fonction ? le nombre et le type de paramètres.
si vous transmettez par ex 432, il y a toutes les chances que cela soit pris par SQL pour du binaire (les règles se sont bien assouplies en 7.2) et il n'y a pas de version de votre fonction attendant du binaire, d'où le message.
Essayez de caster : DEC(432, 7 , 0), et dites nous...
(sans texte)
Posté : ven. 31 oct. 2014, 17:07:49
par manae
j'ai caster tous les numériques, sans résultat.
l'iserie est en v7r2.
parallèlement, j'ai crée une fonction en sql qui fonctionne bien
lorsque que je fais wrkobj *all/etat aucun objet apparait ???
(sans texte)
Posté : ven. 31 oct. 2014, 17:16:45
par cmasse
Vérifiez que l'objet NEWART/UTIL01PS existe, vérifiez la procédure AUTETAT par un DSPSRVPGM. Est-elle exportée (EXPORT en RPG ).
il n'y a pas d’objet correspondant au CREATE FUNCTION, mais une ligne dans SYSFUNCS de QSYS2
(sans texte)
Posté : ven. 31 oct. 2014, 17:33:47
par manae
l'objet NEWART/UTIL01PS existe
la procédure AUTETAT par un DSPSRVPGM ok
Est-elle exportée (EXPORT en RPG ) ? OUI
un enregistrement existe dans le fichier sysfuncs de qsys2
(sans texte)
Posté : sam. 01 nov. 2014, 08:35:36
par cmasse
Alors , je persiste, je pense que c'est un problème de signature (définition des paramètres envoyés)
(sans texte)
Posté : lun. 03 nov. 2014, 10:27:31
par manae
Bonjour,
J'ai casté les paramètres avec cast et pas dec comme au début.
La fonction est bien appelée mais j'ai toujours un plantage peut-être
lié a mon programme ?
j'analyse le problème
cdlt
(sans texte)
Posté : mar. 04 nov. 2014, 16:48:34
par manae
Bonjour,
Réponse au problème des paramètres :
Dans le programme de service :
les paramètres ne doivent avoir aucune option ou CONST (surtout pas value)
Code : Tout sélectionner
Create function Mabib/myfunc ( art decimal(7, 0),
date decimal(8, 0),
zone varchar(7) ) '<------ ATTENTION VARCHAR ICI
returns decimal(1, 0)
language rpgle
external name 'mybib/mysrvpgm(myproc)'
parameter style general
Par contre l'utilisation du programme de service dans un rpgle imposera que les paramètres soient des variables.
Cdlt