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&#40;7&#41; &#41;    '<------  ATTENTION VARCHAR ICI 
            returns decimal&#40;1, 0&#41; 
            language rpgle 
            external name 'mybib/mysrvpgm&#40;myproc&#41;' 
            parameter style general 
   

Par contre l'utilisation du programme de service dans un rpgle imposera que les paramètres soient des variables.


Cdlt