Dear all, A simple testing program :
* * * * * * * * * * * * * * begin * * * * * * * * * * * * * * * * #include <stdio.h> #include <stdlib.h> int main (void) { unsigned int v; v = 0x87654321L; return (0); } * * * * * * * * * * * * * * end * * * * * * * * * * * * * * * * compile with ecpg using : ecpg -o mytest.c -I/usr/include/pgsql mytest.pgc produces the output C program file as follow : * * * * * * * * * * * * * * begin * * * * * * * * * * * * * * * * /* Processed by ecpg (2.8.0) */ /* These three include files are added by the preprocessor */ #include <ecpgtype.h> #include <ecpglib.h> #include <ecpgerrno.h> #line 1 "test.pgc" #include <stdio.h> #include <stdlib.h> int main (void) { unsigned int v; v = '0x87654321'L; return (0); } * * * * * * * * * * * * * * * end * * * * * * * * * * * * * * * It has translated the 4 bytes constant (0x87654321) into a one byte char constant (within the single quotes) during pre-processing. Seems this happens only when the high bit of the constant is set (i.e. it won't add the quotes if the constant is 0x12345678). Also, I noticed that the line number reported during the preprocessing error output is incorrect : it is '1' less than the actual line number in the source file. As shown, I am using version 2.8.0 of ecpg. Is my version being too old to be buggy ? Any suggestion to bypass the translation problem ? Thanks, Raymond Fung. ---------------------------(end of broadcast)--------------------------- TIP 4: Don't 'kill -9' the postmaster