[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    An den diversen Ebenen der CCSID.
    Welche Hostcodepage hat deine Sitzung?
    Welche CCSID hat dein Job?

    Zwischen Sitzung und Job wird keine Codewandlung durchgeführt.

    Mittels %char wird die Job-CCSID verwendet.

    Dein Problem ist, dass das @-Zeichen in deinem Programm nicht passend zum Terminal verarbeitet wird.

    Übrigens:
    Die DSPF unterstützt auch G-Felder mit CCSID 13488!
    Die Codewandlung zwischen UCS2 und Terminal erfolgt dann automatisch.
    Unicode considerations for display files
    Da UCS2-Felder doppelt lang sind, kann man die DSPF-Länge spezifisch anpassen:
    CCSID keyword considerations for display files that use Unicode data
    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

  2. #2
    Registriert seit
    Apr 2005
    Beiträge
    385
    Hallo Fuerchau,

    habe jetzt mal folgendes probiert:

    1. G-Felder in DSPF mit CCSID 13488 eingefügt.
    Code:
     A            WWTXT1        50G  B  5 15CCSID(13488 25)        
     A                                  6  3'Text2    :'
    2. Die komplette DB ist mit dem CCSID Keyword auf Recordebene auf 13488 gesetzt.
    Code:
        A                                      CCSID(13488)        
        A          R UTF16R
    3. Jegliche Umsetzung (%CHAR %UCS2 ist aus dem RPG-Prpgramm entfernt.
    Code:
    C                   EVAL      ATXT3 = WWTXT3
    4. Eine Sitzung mit wie folgt definiert:
    Code:
    [5250]
    ScreenSize=27x132
    HostCodePage=1154-SC
    Andere Sitzung wie folgt definiert:
    Code:
    [5250]
    ScreenSize=27x132
    HostCodePage=1141-G
    Job ist immer wie folgt defineirt:
    Code:
    Sprachen-ID . . . . . . . . . . . . . . . . . . . :   DEU   
    Landes- oder Regions-ID . . . . . . . . . . . . . :   DE    
    ID des codierten Zeichensatzes (CCSID)  . . . . . :   65535 
    Standard-ID des codierten Zeichensatzes . . . . . :   273
    Das @-Zeichen wird mir auf beiden Sitzungen jetzt sauber angezeigt. Die Zeichen ÜÖÄ wird auf der Russ. Sitzung nur noch als Highlight angezeigt?

    Irgendwie gerät mein UNICODE Weltbild gerade aus den Fugen

  3. #3
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Das Problem hier ist nun mal leider Windows.
    Eine Codepage in der 5250-Sitzung die nicht zur Codepage des Windows passt, kann nicht funktionieren.

    Begründung:
    Die 5250-Emulation arbeitet als Terminal im SBCS, also kein Unicode.

    D.h., dass die Tastaturzeichen aus Windows-ANSI an die Emulation geht.
    Diese nimmt jetzt die Hostcodepage und wandelt auf dieser Codepoint-Basis (Zeichenwert des ANSI-Zeichens) in EBCDIC um und sendet an die AS/400.
    Die Terminal-Schicht bekommt also nun den EBCDIC-Wert, identifiziert durch die Hostcodepage, und wandelt dann in UCS2 um bevor das Programm den Inhalt bekommt.
    Bei Nicht-UCS2-Feldern erfolgt nämlich keine Umwandlung.
    Bei der Ausgabe wird dann von UCS2 in die EBCDIC-CCSID des Terminals umgewandelt.
    Die 5250 wandelt nun von EBCDIC in die Windows-Codepage und zeigt dann mit der eingestellten Schrift an.
    Also auch die Schrift der 5250 muss dann russisch können. Diese iststandardmäßig auch nicht installiert.

    Das Problem also ist, dass der Translate von Windows-Codepage in die EBCDIC-CCSID hier fehlschlägt, umgekehrt natürlich genauso.
    Zufällig ist wohl das @-Zeichen in den Codepages das selbe, deshalb funktionierts.

    Um also die 5250-Russisch zu testen musst du in Windows eine zusätzliche Sprache (Systemsteuerung->Region und Sprache->register Tastaturen), nämlich russisch, installieren und beim Aufruf der 5250-Sitzung dann auf diese Sprache umschalten.

    OK, in Windows wird natürlich auch alles russisch dargestellt, du suchst dir da also jemanden, der das beherrscht.

    In Windowsanwendungen mit SBCS hat man genau die seleben Probleme (Beispiel MS-Query). Hier ruft man 2 Windows-API's auf (von MultiByte in Singlebyte bzw. umgekehrt), wobei dann eben Ersatzzeichen (MBCS->SBCS) genommen werden.

    Auch die Funktion %CHAR(UCS-Feld) wandelt auf Basis der Job-CCSID um!
    Steht die auf *HEX (wie dein Job jetzt) ist das auch nicht so klar, was die Funktion dann macht, könnte sein, dass er dann mal wieder 037 annimmt.

    Nachtrag:
    Auch PRTF's erlauben UCS2!
    Wobei dann die CHRID (CRTPRTF/OVRPRTF) zum Erstellzeitpunkt des Spools für die korrekte Darstellung im Spool sorgt, eine spätere Anpassung geht nicht mehr.
    Mit dem DDS-Schlüsselwort FONT kann man eine UCS2-fähige Schrift auswählen (muss auch installiert werden, OpenType/TrueType), dann klappts auch mit PDF's.
    Ob Hosttransform das auch kann, konnte ich noch nicht ausprobieren.
    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

  4. #4
    Registriert seit
    Apr 2005
    Beiträge
    385
    Danke Fuerchau für die Ausführliche Problembeschreibung.

    Warum kann nicht mal was einfach sein

    Dann werde ich mal versuchen auf HEX-Ebene zu Vergleichen und eventuell an der PC-Anwednung schrauben.

    Aber auf jeden Fall Danke erstmal!

Similar Threads

  1. AS400 Zugriff von SQL Server 2005 mit linked Server
    By mhegel in forum NEWSboard Windows
    Antworten: 3
    Letzter Beitrag: 19-06-13, 16:28
  2. AS400 auf SQL Server
    By DEVJO in forum IBM i Hauptforum
    Antworten: 7
    Letzter Beitrag: 12-10-06, 18:28
  3. SQL -> CREATE VIEW
    By Kaufmann in forum IBM i Hauptforum
    Antworten: 17
    Letzter Beitrag: 11-05-06, 14:57
  4. MS Sql Server + iSeries -> Verbindungsserver
    By reraru in forum NEWSboard Programmierung
    Antworten: 13
    Letzter Beitrag: 20-04-05, 13:07
  5. AS/400 Zugriff via Linked Server unter SQL Server 2000
    By epsih2 in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 29-11-04, 10:06

Berechtigungen

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