probleme utilisation d'une fonction

RPG (3 et 4, free), CL, SQL, etc...
Répondre
manae
Messages : 58
Enregistré le : mar. 21 juin 2011, 07:08:24

probleme utilisation d'une fonction

Message 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.

cmasse
Site Admin
Messages : 813
Enregistré le : mer. 14 févr. 2007, 18:00:03
Localisation : Nantes
Contact :

(sans texte)

Message 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...
Christian Massé (Volubis.fr)

manae
Messages : 58
Enregistré le : mar. 21 juin 2011, 07:08:24

(sans texte)

Message 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 ???

cmasse
Site Admin
Messages : 813
Enregistré le : mer. 14 févr. 2007, 18:00:03
Localisation : Nantes
Contact :

(sans texte)

Message 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
Christian Massé (Volubis.fr)

manae
Messages : 58
Enregistré le : mar. 21 juin 2011, 07:08:24

(sans texte)

Message 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

cmasse
Site Admin
Messages : 813
Enregistré le : mer. 14 févr. 2007, 18:00:03
Localisation : Nantes
Contact :

(sans texte)

Message par cmasse »

Alors , je persiste, je pense que c'est un problème de signature (définition des paramètres envoyés)
Christian Massé (Volubis.fr)

manae
Messages : 58
Enregistré le : mar. 21 juin 2011, 07:08:24

(sans texte)

Message 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

manae
Messages : 58
Enregistré le : mar. 21 juin 2011, 07:08:24

(sans texte)

Message 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

Répondre