Skip to main content

String data - right truncation[32]

  • October 12, 2018
  • 4 replies
  • 1 view

hi

I' have program that run with cobol server 4.0,

compiled with Enterpsie developer 4.0 for eclipse,

on windows 2012 and give this error:

SQLCODE: 00000001                                    

SQLSTATE: 01004                                       

SQL MESSAGE TEXT: String data - right truncation[32]  

EXPANDED TEXT: String data - right truncation[32]     

 

in odbc trace i have found thos print:

) d88-1b74 EXIT SQLDriverConnectW with return code 1 (SQL_SUCCESS_WITH_INFO)
HDBC 0x0077E868
HWND 0x00010010
WCHAR * 0x74421F7C [ -3] "******\\ 0"
SWORD -3
WCHAR * 0x74421F7C <Invalid buffer length!> [-3]
SWORD -3
SWORD * 0x00000000
UWORD 0 <SQL_DRIVER_NOPROMPT>

DIAG [01004] [Oracle][ODBC]String data, right truncated. (0) 

 

What can I look for?

 

thanks bye

4 replies

Claude Greiner
  • Participating Frequently
  • October 12, 2018

hi

I' have program that run with cobol server 4.0,

compiled with Enterpsie developer 4.0 for eclipse,

on windows 2012 and give this error:

SQLCODE: 00000001                                    

SQLSTATE: 01004                                       

SQL MESSAGE TEXT: String data - right truncation[32]  

EXPANDED TEXT: String data - right truncation[32]     

 

in odbc trace i have found thos print:

) d88-1b74 EXIT SQLDriverConnectW with return code 1 (SQL_SUCCESS_WITH_INFO)
HDBC 0x0077E868
HWND 0x00010010
WCHAR * 0x74421F7C [ -3] "******\\ 0"
SWORD -3
WCHAR * 0x74421F7C <Invalid buffer length!> [-3]
SWORD -3
SWORD * 0x00000000
UWORD 0 <SQL_DRIVER_NOPROMPT>

DIAG [01004] [Oracle][ODBC]String data, right truncated. (0) 

 

What can I look for?

 

thanks bye

sqlcode=1 Comes when a variable have a false length. Please verify all database fields and the Cobol fields.
Can you Show us the sqlcommand, the create Statement and the Cobol varialbe?
thanks

Claude Greiner
  • Participating Frequently
  • October 12, 2018

hi

I' have program that run with cobol server 4.0,

compiled with Enterpsie developer 4.0 for eclipse,

on windows 2012 and give this error:

SQLCODE: 00000001                                    

SQLSTATE: 01004                                       

SQL MESSAGE TEXT: String data - right truncation[32]  

EXPANDED TEXT: String data - right truncation[32]     

 

in odbc trace i have found thos print:

) d88-1b74 EXIT SQLDriverConnectW with return code 1 (SQL_SUCCESS_WITH_INFO)
HDBC 0x0077E868
HWND 0x00010010
WCHAR * 0x74421F7C [ -3] "******\\ 0"
SWORD -3
WCHAR * 0x74421F7C <Invalid buffer length!> [-3]
SWORD -3
SWORD * 0x00000000
UWORD 0 <SQL_DRIVER_NOPROMPT>

DIAG [01004] [Oracle][ODBC]String data, right truncated. (0) 

 

What can I look for?

 

thanks bye

if you read the message error, the buffer length will be given, also string data, right truncated

  • October 12, 2018

hi

I' have program that run with cobol server 4.0,

compiled with Enterpsie developer 4.0 for eclipse,

on windows 2012 and give this error:

SQLCODE: 00000001                                    

SQLSTATE: 01004                                       

SQL MESSAGE TEXT: String data - right truncation[32]  

EXPANDED TEXT: String data - right truncation[32]     

 

in odbc trace i have found thos print:

) d88-1b74 EXIT SQLDriverConnectW with return code 1 (SQL_SUCCESS_WITH_INFO)
HDBC 0x0077E868
HWND 0x00010010
WCHAR * 0x74421F7C [ -3] "******\\ 0"
SWORD -3
WCHAR * 0x74421F7C <Invalid buffer length!> [-3]
SWORD -3
SWORD * 0x00000000
UWORD 0 <SQL_DRIVER_NOPROMPT>

DIAG [01004] [Oracle][ODBC]String data, right truncated. (0) 

 

What can I look for?

 

thanks bye

the descr of oracle table,

cursor declare,

fetch cursor and

cobol area below:

 

NOTE:

- I have only a varchar2 column INTESTAZIONE

- with cobol server in 2.3.2 version it's work fine:

 

05 HV-TABLE-INTESTAZIONE.
     49 HV-TABLE-INTESTAZIONE-L PIC S9(0004) COMP.
     49 HV-TABLE-INTESTAZIONE-T PIC X(0160).

 

descr TABLE
Nome Nullo Tipo
------------------ -------- ------------------
ID NOT NULL NUMBER(15)
COD_ISTITUTO NOT NULL NUMBER(5)
CODICE_ABI NOT NULL NUMBER(6)
NDG NOT NULL CHAR(16 CHAR)
INTESTAZIONE NOT NULL VARCHAR2(160 CHAR)
DATA_CONTABILE NOT NULL NUMBER(8)
FENOMENO NOT NULL NUMBER(9)
TIPO_FIN NOT NULL NUMBER(3)
UFFICIO NOT NULL CHAR(7 CHAR)
OPERATORE NOT NULL CHAR(13 CHAR)
DATA_RICHIESTA NOT NULL NUMBER(8)
TIPO_RICHIESTA NOT NULL CHAR(4 CHAR)
CONFERMA NOT NULL CHAR(1 CHAR)
STATO_RICHIESTA NOT NULL CHAR(2 CHAR)
DATA_INS NOT NULL NUMBER(8)
ORA_INS NOT NULL NUMBER(8)
DATA_VAR NOT NULL NUMBER(8)
ORA_VAR NOT NULL NUMBER(8)
OPERATORE_VAR NOT NULL CHAR(13 CHAR)
NUMERO_MESSAGGIO NOT NULL NUMBER(7)
DATA_PRO_MESSAGGIO NOT NULL NUMBER(8)
VERSION NOT NULL NUMBER(16)

EXEC SQL
DECLARE TABLE_17 CURSOR WITH HOLD FOR
SELECT ID ,
COD_ISTITUTO ,
CODICE_ABI ,
NDG ,
INTESTAZIONE ,
DATA_CONTABILE ,
FENOMENO ,
TIPO_FIN ,
UFFICIO ,
OPERATORE ,
DATA_RICHIESTA ,
TIPO_RICHIESTA ,
CONFERMA ,
STATO_RICHIESTA ,
DATA_INS ,
ORA_INS ,
DATA_VAR ,
ORA_VAR ,
OPERATORE_VAR ,
NUMERO_MESSAGGIO ,
DATA_PRO_MESSAGGIO,
VERSION
FROM TABLE
WHERE COD_ISTITUTO = :HV-TABLE-COD-ISTITUTO
AND TIPO_RICHIESTA = :HV-TABLE-TIPO-RICHIESTA
AND STATO_RICHIESTA IN ('40', '50')
END-EXEC.

EXEC SQL
FETCH TABLE_17
INTO :HV-TABLE-ID ,
:HV-TABLE-COD-ISTITUTO ,
:HV-TABLE-CODICE-ABI ,
:HV-TABLE-NDG ,
:HV-TABLE-INTESTAZIONE ,
:HV-TABLE-DATA-CONTABILE ,
:HV-TABLE-FENOMENO ,
:HV-TABLE-TIPO-FIN ,
:HV-TABLE-UFFICIO ,
:HV-TABLE-OPERATORE ,
:HV-TABLE-DATA-RICHIESTA ,
:HV-TABLE-TIPO-RICHIESTA ,
:HV-TABLE-CONFERMA ,
:HV-TABLE-STATO-RICHIESTA ,
:HV-TABLE-DATA-INS ,
:HV-TABLE-ORA-INS ,
:HV-TABLE-DATA-VAR ,
:HV-TABLE-ORA-VAR ,
:HV-TABLE-OPERATORE-VAR ,
:HV-TABLE-NUMERO-MESSAGGIO ,
:HV-TABLE-DATA-PRO-MESSAGGIO,
:HV-TABLE-VERSION
END-EXEC.


01 HV-TABLE.
05 HV-TABLE-ID PIC S9(0015) COMP-3.
05 HV-TABLE-COD-ISTITUTO PIC S9(0005) COMP-3.
05 HV-TABLE-CODICE-ABI PIC S9(0006) COMP-3.
05 HV-TABLE-NDG PIC X(0016).
05 HV-TABLE-INTESTAZIONE.
49 HV-TABLE-INTESTAZIONE-L PIC S9(0004) COMP.
49 HV-TABLE-INTESTAZIONE-T PIC X(0160).
05 HV-TABLE-DATA-CONTABILE PIC S9(0008) COMP-3.
05 HV-TABLE-FENOMENO PIC S9(0009) COMP-3.
05 HV-TABLE-TIPO-FIN PIC S9(0003) COMP-3.
05 HV-TABLE-UFFICIO PIC X(0007).
05 HV-TABLE-OPERATORE PIC X(0013).
05 HV-TABLE-DATA-RICHIESTA PIC S9(0008) COMP-3.
05 HV-TABLE-TIPO-RICHIESTA PIC X(0004).
05 HV-TABLE-CONFERMA PIC X(0001).
05 HV-TABLE-STATO-RICHIESTA PIC X(0002).
05 HV-TABLE-DATA-INS PIC S9(0008) COMP-3.
05 HV-TABLE-ORA-INS PIC S9(0008) COMP-3.
05 HV-TABLE-DATA-VAR PIC S9(0008) COMP-3.
05 HV-TABLE-ORA-VAR PIC S9(0008) COMP-3.
05 HV-TABLE-OPERATORE-VAR PIC X(0013).
05 HV-TABLE-NUMERO-MESSAGGIO PIC S9(0007) COMP-3.
05 HV-TABLE-DATA-PRO-MESSAGGIO PIC S9(0008) COMP-3.
05 HV-TABLE-VERSION PIC S9(0016) COMP-3.


hi

I' have program that run with cobol server 4.0,

compiled with Enterpsie developer 4.0 for eclipse,

on windows 2012 and give this error:

SQLCODE: 00000001                                    

SQLSTATE: 01004                                       

SQL MESSAGE TEXT: String data - right truncation[32]  

EXPANDED TEXT: String data - right truncation[32]     

 

in odbc trace i have found thos print:

) d88-1b74 EXIT SQLDriverConnectW with return code 1 (SQL_SUCCESS_WITH_INFO)
HDBC 0x0077E868
HWND 0x00010010
WCHAR * 0x74421F7C [ -3] "******\\ 0"
SWORD -3
WCHAR * 0x74421F7C <Invalid buffer length!> [-3]
SWORD -3
SWORD * 0x00000000
UWORD 0 <SQL_DRIVER_NOPROMPT>

DIAG [01004] [Oracle][ODBC]String data, right truncated. (0) 

 

What can I look for?

 

thanks bye

Hi, I use MySQL so may be different but... I get this error when I don't give columns a name which means the column name is automatically generated and may be too long and results in a string truncation error! i.e. nothing to do with the data returned! It had me pulling my hair out when I started using exec sql but I know now so always check for this!
e.g.
exec sql SELECT CASE WHEN xxxxxxxxxx = yyyyyyyyyy THEN zzzzzzzzzzz ELSE kkkkkkkkkkkkkk END INTO :my_result FROM myDB end-exec

TO FIX add 'AS' clause...
exec sql SELECT CASE WHEN xxxxxxxxxx = yyyyyyyyyy THEN zzzzzzzzzzz ELSE kkkkkkkkkkkkkk END AS myCol INTO :my_result  FROM myDB end-exec

There is probably a limit on the auto-generated column name of 256 chars so when my case statement is more than that I get the error!

Hope this helps.

Regards,
Linden