[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Jan 2010
    Beiträge
    31

    %substr eines UTF16 Feld

    Hallo *all,

    ich habe folgendes Problem:
    Datei mit dem FELd: TEXT1 G 502 CCSID(1200) gefüllt mit chinesischen zeichen

    D feld1 S 15000CCCSID(1200)

    nach dem select auf die Datei in meinem programm, möchte ich folgendes machen:

    %subst(feld1:1:L)= %subst(text1:1:L);

    hier stürzt das Programm ab mit der Meldung: "Länge oder Anfangsposition liegt außerhalb des gültigen Bereichs für die Zeichenfolgeoperation"

    Kann mir jemand hier das Problem schildern?

    DANKE!

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Da UTF16 ein variables Format ist (2 oder 4 Byte), funktioniert %subst da leider nicht.
    Hier musst du einen Umweg über UCS2 (13488) machen (fix 2 Byte).

    %subst(% UCS2(TEXT1:1:L))

    Probiert habe ich das allerdings noch nicht.

    UTF16 und auch UTF8 sollte nur als Import/Export-Datentyp verwendet werden.
    UCS2 sollte bei der Datenhaltung und Programmierung verwendet werden.

    Es wäre also besser, die Daten beim Select in eine UCS2-Variable zu lesen und dann eben auch per Update/Insert zu schreiben.

    Variable Zeichensätze (UTF8, UTF16) sollten datenbanktechnisch auch als VARCHAR/VARGRAPHIC definiert und Leerzeichen am Ende immer abgeschnitten werden (Trim).
    Es könnte nämlich sonst passieren, dass beim Schreiben die Daten zu lang werden.

    Ich hatte da mal das Problem mit Oracle:

    LagerNr varchar2(2)

    varchar2 ist bei Oracle immer UTF8.

    Leider kam der Anwender auf die Idee, das Lager "ÜL" zu nennen, für UTF8 werden aber 3-Byte benötigt. Und schon gabs SQL-Fehler!

    Wenn man also mit UTF8 bzw. UTF16 arbeitet sollte man die 4 bzw. 2-fache Kapazität in der DB planen und die Eingabe entsprechend beschränken.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  3. #3
    Registriert seit
    Jan 2010
    Beiträge
    31
    DANKE!!!

    und ein schönes Wochenende noch!

  4. #4
    Registriert seit
    Jan 2010
    Beiträge
    31
    das hat fuktioniert. ich konnte es aber besser lösen indem ich schon im SQL-stmt den substring auf das utf16-feld durchgeführt habe. Bsp: select substring(feld1,1,:x) from.... Dies hat mir das hin und her convertieren erspart.
    Hätte gleich darauf kommen können :-)

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Hier regelt SQL das intern selber, da auch SQL erst mal in UCS2 konvertieren muss.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

Similar Threads

  1. Subfile - Feld anzeigen
    By christian_lettner in forum NEWSboard Programmierung
    Antworten: 10
    Letzter Beitrag: 01-09-10, 15:21
  2. per SQL Feld ändern...
    By svente in forum NEWSboard Programmierung
    Antworten: 4
    Letzter Beitrag: 23-01-07, 09:49
  3. num. Feld in Datumsfeld konvertieren
    By edig in forum NEWSboard Programmierung
    Antworten: 1
    Letzter Beitrag: 27-07-06, 08:20
  4. Prüfung, ob Eingabe in Feld
    By M Scheid in forum NEWSboard Programmierung
    Antworten: 7
    Letzter Beitrag: 12-06-06, 13:02
  5. ILE Feld in Feld ansprechen
    By jogisarge in forum NEWSboard Programmierung
    Antworten: 5
    Letzter Beitrag: 10-05-06, 16:26

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •