[RESOLU] IFS_READ avec PATH dynamique dans SQLRPGLE

RPG (3 et 4, free), CL, SQL, etc...
Répondre
jbellino
Messages : 4
Enregistré le : mar. 23 nov. 2021, 16:35:43

[RESOLU] IFS_READ avec PATH dynamique dans SQLRPGLE

Message 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.
Modifié en dernier par jbellino le mer. 24 nov. 2021, 08:13:47, modifié 1 fois.

nbonnet
Messages : 198
Enregistré le : mar. 11 sept. 2018, 08:20:13
Localisation : Lyon

Re: IFS_READ avec PATH dynamique dans SQLRPGLE

Message 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
Nathanaël

SebastienB
Messages : 51
Enregistré le : ven. 22 janv. 2021, 10:21:13

Re: IFS_READ avec PATH dynamique dans SQLRPGLE

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

jbellino
Messages : 4
Enregistré le : mar. 23 nov. 2021, 16:35:43

Re: IFS_READ avec PATH dynamique dans SQLRPGLE

Message par jbellino »

Définition de la variable Z :
D Z s 128A varying
Je ne vois pas non plus le rapport avec les CCSID.

nbonnet
Messages : 198
Enregistré le : mar. 11 sept. 2018, 08:20:13
Localisation : Lyon

Re: IFS_READ avec PATH dynamique dans SQLRPGLE

Message par nbonnet »

Quel est le CCSID du job ?
Nathanaël

jbellino
Messages : 4
Enregistré le : mar. 23 nov. 2021, 16:35:43

Re: IFS_READ avec PATH dynamique dans SQLRPGLE

Message par jbellino »

Coded character set identifier . . . . . . . . . : 65535
Default coded character set identifier . . . . . : 297

nbonnet
Messages : 198
Enregistré le : mar. 11 sept. 2018, 08:20:13
Localisation : Lyon

Re: IFS_READ avec PATH dynamique dans SQLRPGLE

Message 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).
Nathanaël

jbellino
Messages : 4
Enregistré le : mar. 23 nov. 2021, 16:35:43

Re: IFS_READ avec PATH dynamique dans SQLRPGLE

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

nbonnet
Messages : 198
Enregistré le : mar. 11 sept. 2018, 08:20:13
Localisation : Lyon

Re: IFS_READ avec PATH dynamique dans SQLRPGLE

Message par nbonnet »

Parfait !

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

Répondre