ad CCSID65535:
das bezieht sich auf den Cast des Literals (das hat keine CCSID)
das geht über einen doppelten CAST
CAST(CAST('TOP' as char(60) ccsid 273) as graphic(60) CCSID 13488)

ad Unicode:
ja was denn nun, 1200 oder 13488

ad SQL-104:
ungültiger Token => dein Statement ist falsch!

ad %UCS :
cast des SQL Strings ist unnötiger Schnickschnack

ad Cast Arie insgesamt:
wenn das Dateifeld verträglich zu dem Programmfeld deklariert ist, braucht es da keine Konvertierungen.

ad alle Sätze:
schu dir mal deinen SQLCODE nach jedem Statement an, was da wirklich krumm geht

D*B

Zitat Zitat von tsh1970 Beitrag anzeigen
Versuche ich unter STRSQL alle mögliche Formen des Cast's wie z.B.:
select * from MDPROP03
where cast(TITITL as graphic(60) ccsid 13488)
= cast('Top' as graphic(60) ccsid 13488)

Erhalte ich immer die Fehlermeldung:
Zeichenumsetzung zwischen CCSID 65535 und CCSID 13488 ungültig.

Folgendes funktioniert unter STRSQL:
select * from MDPROP03 where cast(TITITL as char(20)) = 'Top'
select * from MDPROP03 where UPPER(cast(TITITL as char(60))) = cast('TOP' as char(60))
wäre aber unsinnig da ich eben auch Unicode Zeichen bekomme,die beim Cast auf CHAR "verschluckt" werden.

Führe ich das ganze im Programm aus: Zeigt mir der Debugger
SQLStatement =
select * from MDPROP03 where UPPER(cast(TITITL as char(60))) = cast('TOP' as char(60))

und ich bekomme folgende Fehlermeldung beim Prepare Cursor
SQLCODE: -104, SQLSTATE: 42601, SQLERRMC: AS
andere Abfragen die ich mit der gleichen Routine zusammenbaue funktionieren korrekt, wenn ich eben kein Graphic Feld abzufragen versuche.

Ich versteh die Welt nicht mehr...