Forum iSeries, hébergé par xdocs400.com

As400, iSeries, i5, System i, une machine qui évolue pour être de plus en plus puissante.

Vous n'êtes pas identifié(e).

Annonce

ATTENTION : Le système anti-spam est à nouveau opérationnel. Nous avons réactivé les inscriptions.

#1 2018-06-19 14:52:35

niej
Membre
Inscription : 2007-02-13
Messages : 11

fonction sql et procédure de programme de service

Bonjour à tous,

Je souhaite créer ma première fonction SQL qui appelle une procédure de programme de service mais, en débug, je vois que j'ai des caractères bizarres dans mon deuxième paramètre.

La définition de ma procédure :

setMajMin        b                   EXPORT
     D                 pi           200    VARYING
     D zone_e                       200    VARYING
     D                                     CONST
     D type_trf                       5    VALUE 

Et la fonction SQL (totalement inspirée de la page de Philippe):

CREATE FUNCTION MABIB/f_setmajmin(VARCHAR(200), CHAR(5))  
  RETURNS VARCHAR(200)                                        
  LANGUAGE RPGLE                                              
  DETERMINISTIC                                               
  NO SQL                                                      
  RETURNS NULL ON NULL INPUT                                  
  NO EXTERNAL ACTION ALLOW PARALLEL                           
  SIMPLE CALL                                                 
  EXTERNAL NAME 'MABIB/H_STR(SETMAJMIN)'                  

Cette procédure fonctionne bien en appel RPG.

values  f_setmajmin('MONTEST', 'MIN')     

Ma variable TYPE_TRF contient "D." et un carré alors que j'attends "MIN".

Avez-vous une piste ?

Merci,
niej

Hors ligne

#2 2018-06-19 15:24:58

RouanRouan
Membre
Inscription : 2010-01-14
Messages : 231

Re : fonction sql et procédure de programme de service

Bonjour,

Enleve , pour voir

[== Indéfini ==]
D                                     CONST


JeanMarc

Hors ligne

#3 2018-06-19 15:35:18

Domi34
Membre
Lieu : Montpellier
Inscription : 2012-11-17
Messages : 70
Site Web

Re : fonction sql et procédure de programme de service

Bonjour,

ça sent le problème de CCSID.

Dans la description de ta fonction, essaye de mettre un CCSID sur les deux paramètres du style : VARCHAR(200) CCSID 297, CHAR(5) CCSID 297).

Peut être aussi sur le RETURNS, j'ai un doute ?

Dominique

Hors ligne

#4 2018-06-19 16:38:24

niej
Membre
Inscription : 2007-02-13
Messages : 11

Re : fonction sql et procédure de programme de service

Merci de vos réponses. Cela ne change rien dans les 2 cas (ni en combinant les 2). Avant de faire les tests, j'ai du redémarrer mon poste car RDI faisait des siennes et maintenant la valeur de la variable a changé mais est toujours incorrecte.

Hors ligne

#5 2018-06-20 08:22:39

niej
Membre
Inscription : 2007-02-13
Messages : 11

Re : fonction sql et procédure de programme de service

Bonjour,

En fait, c'est la mot-clé VALUE sur le deuxième paramètre qui pose problème. Si je l'enlève, je n'ai plus de problème la fonction SQL fonctionne...

Hors ligne

#6 2018-06-21 07:52:42

niej
Membre
Inscription : 2007-02-13
Messages : 11

Re : fonction sql et procédure de programme de service

Bonjour,

Pour ne pas avoir à modifier tout l'existant (qui fonctionne) j'ai créé une nouvelle procédure bidon dans mon programme de service avec le deuxième paramètre avec le mot clé CONST et qui appelle le programme de service initial. Ma fonction SQL appelle ensuite la procédure Bidon, cela fonctionne.

Merci pour les pistes.

Niej

Hors ligne

Pied de page des forums