[NEWSboard IBMi Forum]

Thema: CCSID Problem

  1. #1
    Registriert seit
    Aug 2001
    Beiträge
    26

    Post CCSID Problem

    Hallo, ich habe mal wieder ein Problem.
    Und zwar habe ich ein deutsches OS400 und einen englischen ILE C++ Compiler. Wenn ich nun ein Programm schreibe und dieses mir eine Datei einlesen und wieder ausgeben soll. Bekomme ich den Code für die englischen Zeichen angezeigt. Kann man den Compiler und das System auf die gleiche CCSID einstellen, damit dieses Problem behoben wird.
    Beispiel: Im Programm steht:
    unsigned char k = '[';
    printf ("0x%X\n", k);
    Ausgabe sollte sein: 0x63 (deutsche Tabelle)
    Ist aber : 0xBA (amerikanische Tabelle)

    Hat da jemand eine Lösung???

  2. #2
    Registriert seit
    May 2001
    Beiträge
    131

    Post

    Hallo,

    ich würde das C++ Programm in einem Job mit der CCSID 273 oder (1141 für die deutschen Zeichen und EURO)laufen lassen.
    Standardmäßig sollten die Jobs mit CCSID 65535 laufen, d.h. es wird keine Umsetzung für den NLS durchgeführt.

    Gruss Thomas

  3. #3
    Registriert seit
    Feb 2001
    Beiträge
    20.207

    Post

    Wichtig bei Programmen mit Zeichenkonstanten ist folgendes:
    Nur bei Datenbankzugriffen wird entsprechend der eingestellten CCSID's eine Zeichenumsetzung durchgeführt. Dies gilt auch für die Compiler. Läuft also der Compiler in einem Job mit einer anderen CCSID als die Quelldatei, so erfolgt eine Zeichenumsetzung in die CCSID des Job's !
    Wenn das erstellte Programm dann mit diesen Zeichenkonstanten arbeitet erfolgt KEINE Umsetzung mehr, da das Programm selbst keine CCSID-Information besitzt und Konstanten mit ihrem, zum Umwandlungsze***unkt gültigen, Hexwert verarbeitet werden.

    Wichtig ist also, dass die Programme IMMER mit der selben CCSID im Job laufen unter der sie auch erstellt wurden.

    Achtung: Ist auf irgend einer Ebene (Datei bzw. Job) die CCSID 65535 eingestellt, wird generell KEINE Umsetzung durchgeführt. Dies führt leider immer wieder zu unerwünschten Ergebnissen.

    IBM liefert z.B. die Include-Dateien mit CCSID 285 aus. Der Systemwert QCCSID steht meistens auf 65535, so dass neue SRC-Dateien (CRTSRCPF) auch ohne CCSID erstellt werden, es sollte aber generell eine CCSID in JEDER Datei und in JEDEM Job verwendet werden.
    Dann funktioniert es meistens (aber leider nicht bei allen Objekttypen), in Deutschland also 273.

    Bei Spools z.B. erfolgt die CCSID-Umetzung zum Ze***unkt der Erstellung. Wird also in eine OUTQ ausgegeben, die noch keinem Drucker zugeordnet ist, gilt die CCSID der PRTF. Ist ein Drucker zugeordnet, gilt die CHRID des Druckers.
    Wird nun eine Liste auf verschiedenen Druckern ausgegeben (insbesonders bei mehrsprachigen Umgebungen) werden auch hier teilweise unerwünschte Ergebnisse erzielt, da eine Umsetzung von OUTQ zu Drucker NICHT mehr erfolgt !
    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. Konvertierung nach Graphic --> CCSID Problem
    By codierknecht in forum NEWSboard SAP
    Antworten: 32
    Letzter Beitrag: 09-02-18, 14:00
  2. Problem mit Java-Methoden Aufruf aus ILE RPG?
    By Stoeberl in forum NEWSboard Programmierung
    Antworten: 8
    Letzter Beitrag: 10-01-07, 11:58
  3. Problem mit Steuerzeichen in Datenbank?
    By Stoeberl in forum NEWSboard Programmierung
    Antworten: 11
    Letzter Beitrag: 26-10-06, 11:07
  4. CCSID Problem aufs Neue
    By b.horstmann in forum NEWSboard Programmierung
    Antworten: 15
    Letzter Beitrag: 12-10-05, 12:26
  5. Problem mit CCSID
    By Ralle in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 25-07-05, 15:58

Berechtigungen

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