Page 1 sur 1

[RESOLU] IFS_READ avec PATH dynamique dans SQLRPGLE

Posté : mar. 23 nov. 2021, 16:48:31
par jbellino
Bonjour,

J'ai un programme SQLRPGLE qui lit un document dans l'IFS:

EXEC SQL
LISTAGG(LINE, ' ')
WITHIN GROUP(ORDER BY LINE_NUMBER)
AS REQUEST
INTO :Stmt
FROM TABLE(QSYS2.IFS_READ (
PATH_NAME => '/mypath/doc.txt',
END_OF_LINE => 'CRLF',
MAXIMUM_LINE_LENGTH => 1024)) ;

Il fonctionne bien.

J'essaye de rendre le PATH_NAME paramétrable.

Z= '/mypath/doc.txt'
EXEC SQL
LISTAGG(LINE, ' ')
WITHIN GROUP(ORDER BY LINE_NUMBER)
AS REQUEST
INTO :Stmt
FROM TABLE(QSYS2.IFS_READ (
PATH_NAME => :Z,
END_OF_LINE => 'CRLF',
MAXIMUM_LINE_LENGTH => 1024)) ;

Produit une erreur SQLCOD = -000000332

Même erreur avec:

Z= '/mypath/doc.txt'
EXEC SQL
LISTAGG(LINE, ' ')
WITHIN GROUP(ORDER BY LINE_NUMBER)
AS REQUEST
INTO :Stmt
FROM TABLE(QSYS2.IFS_READ ( :Z, 1024, 'CRLF')) ;

Quelqu'un aurait une idée ?
Merci.

Re: IFS_READ avec PATH dynamique dans SQLRPGLE

Posté : mar. 23 nov. 2021, 16:55:28
par nbonnet
Bonjour,

le SQLCODE -323 correspond à une erreur de conversion de CCSID : "Character conversion between CCSID &1 and CCSID &2 not valid.".

Je ne vois pas trop le rapport ici ...

Si la variable Z n'est pas à taille variable :

Code : Tout sélectionner

EXEC SQL
LISTAGG(LINE, ' ')
WITHIN GROUP(ORDER BY LINE_NUMBER)
AS REQUEST
INTO :Stmt
FROM TABLE(QSYS2.IFS_READ (TRIM(:Z), 1024, 'CRLF')) ;
Nathanaël

Re: IFS_READ avec PATH dynamique dans SQLRPGLE

Posté : mar. 23 nov. 2021, 16:58:27
par SebastienB
Bonjour,

j'utilise son petit frère ifs_write et pas de soucis avec une variable hôte comme chemin.
J'avais eu la même erreur car ma variable n'était pas en VARCHAR.

Sébastien.

Re: IFS_READ avec PATH dynamique dans SQLRPGLE

Posté : mar. 23 nov. 2021, 17:06:03
par jbellino
Définition de la variable Z :
D Z s 128A varying
Je ne vois pas non plus le rapport avec les CCSID.

Re: IFS_READ avec PATH dynamique dans SQLRPGLE

Posté : mar. 23 nov. 2021, 17:10:37
par nbonnet
Quel est le CCSID du job ?

Re: IFS_READ avec PATH dynamique dans SQLRPGLE

Posté : mar. 23 nov. 2021, 17:15:46
par jbellino
Coded character set identifier . . . . . . . . . : 65535
Default coded character set identifier . . . . . : 297

Re: IFS_READ avec PATH dynamique dans SQLRPGLE

Posté : mar. 23 nov. 2021, 17:22:05
par nbonnet
Il faudrait changer le CCSID du JOB : CHGJOB CCSID(297)

Ou bien essayer avec :
D Z s 128A varying ccsid(297)

Je ne pense pas qu'un CAST pour changer le CCSID fonctionne dans l'instruction SQL (pas pour les jobs en 65535).

Re: IFS_READ avec PATH dynamique dans SQLRPGLE

Posté : mar. 23 nov. 2021, 17:56:47
par jbellino
Si je change le job en CCSID(297) ça fonctionne !
Si je definis Z .... CCSID(297) ça fonctionne aussi.
Problème résolu. Merci beaucoup !

P.S.: Est-ce que sur ce forum quand un problème est résolu on doit mettre un mot clé style [RESOLU] dans le sujet ?

Re: IFS_READ avec PATH dynamique dans SQLRPGLE

Posté : mar. 23 nov. 2021, 18:19:21
par nbonnet
Parfait !

C'est toujours bien de marquer RESOLU dans le sujet (même si je suis le premier à oublier)