Page 1 sur 1

SQL connexion bd distante. Pb de CCSID

Posté : lun. 22 nov. 2010, 11:48:56
par Jean Roussel
Bonjour,
Depuis un as400 source, je cherche depuis un pgm en RPG, à accéder via des instructions SQL (CONNECT , DECLARE , FETCH ) à une table d'un 2ème as400 codé en unicode.
J'ai le messagge suivant à l'exécution du programme :
SQL0332 Conversion de caractères entre CCSID 13488 et CCSID 65535 incorrecte

Le pgm a été compilé par CRTSQLRPGI, avec le nom de la BDD distante dans le paramètre RDB

Le job qui exécute le programme a un CCSID 297.

Merci de votre aide

(sans texte)

Posté : lun. 22 nov. 2010, 13:46:31
par cmasse
Bonjour,

Quel est le CCSID du PGM (visible par DSPPGM) ?

CCSID du pgm

Posté : lun. 22 nov. 2010, 15:59:57
par Jean Roussel
Le CCSID du pgm est 65535

CCSID du PGM

Posté : lun. 22 nov. 2010, 18:06:34
par cmasse
Après qq tests, je ne pense pas que ça soit le prb en fait.


J'ai créé une table SQL avec CCSID à 13488 sur une machine V5R40 et un PGM accédant à cette table sur une autre machine (V6R1).

je compile le pgm normalement en renseignant la RDB et ca marche bien. le CCSID du pgm est à 65535 (ce qui doit ne concerner QUE les constantes), par contre mes deux machines sont avec QCCSID à 297 !!!

bref, je n'arrive pas à reproduire (sauf à modifier QCCSID et à faire un IPL, ce qui est un peu compliqué pour un simple test)


Juste deux petites questions pour finir :


-Quelle est la version de l'OS ?
- la variable de réception (INTO :VARIABLE) est-elle déclaré en UNICODE (le type C en GAP) ?

pour infos, le pgm qui fonctionne chez moi

Code : Tout sélectionner

*************  Début des données  *********************
 F1              S             40C                     
 F1short         S             20C                     
 F1local         S             40A                     
/free                                                  
 exec sql                                              
    SELECT F1 into :F1 FROM af4test/unicodeT ;                          
 F1short = F1;                                         
 dsply f1short;                                        
 F1local = %char(F1);                                  
 dsply f1local;                                        
 *inLR=*ON;                                            
/end-free            

Pb CCSID

Posté : mar. 23 nov. 2010, 08:27:41
par Jean Roussel
Bonjour,

La machine source est en V5R4, la cible en V6R1

Les constantes du pgm ne sont pas déclarées en unicode, ce qui peut effectivement être la cause du problème.
Je refais des test dans ce sens

Merci