[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Feb 2001
    Beiträge
    17

    Question CGI-Programm und Zeichenumsetzung

    Hallo!

    Ich habe ein CGI-Programm in RPG-ILE geschrieben, dass Daten in einem Formular einliest, verarbeitet und in einem PF speichert.

    Umlaute und sonderzeichen (@) werden allerdings als Klammern (z. B. 'ü' = ']') oder Paragraphenzeichen ('@' = '§') im PF gespeichert.
    Beim Ausgeben der Datensätze in eine HTML-Seite durch ein anderes CGI-Programm werden die Zeichen nicht umgewandelt, sondern so angezeigt, wie sie im PF gespeichert sind.

    Kann mir jemand helfen?

    Vielen Dank,
    Christian

  2. #2
    Registriert seit
    Jan 2002
    Beiträge
    24

    Post

    Hallo,
    ich behelfe mir in der Regel so:
    ich erstelle eine logische Datei, spezifiziere eine Umsetztabelle und lese über die logische Datei.
    Die logische Datei sieht so aus:
    0001.00 A R MAILASF1
    0002.00 A PFILE(QTEMP/MAILA1)
    0003.00 A MAILA1 I TRNTBL(KRICKOBJ/ASTOANSI)

    Die Umsetztabelle, z.B. von EBCDIC nach Windows ANSI wie folgt:

    0000.03 000102039C09867F978D8E0B0C0D0E0F101112139D85088718 19928F1C1D1E1F
    0000.04 80818283840A171B88898A8B8C050607909116939495960498 999A9B14159E1A
    0000.05 20A0A1A2A3A4A5A6A7A8C42E3C282B2126A9AAABACADAEAFB0 B1DC242A293B5E
    0000.06 2D2FB2B3B4B5B6B7B8B9F62C255F3E3FBABBBCBDBEBFC0C1C2 603A2340273D22
    0000.07 C3616263646566676869C4C5C6C7C8C9CA6A6B6C6D6E6F7071 72CBCCCDCECFD0
    0000.08 D1DF737475767778797AD2D3D4D5D6D7D8D9DADBDC40DEDFE0 E1E2E3E4E5E6E7
    0000.09 E4414243444546474849E8E9EAEBECEDFC4A4B4C4D4E4F5051 52EEEFF0F1F2F3
    0000.10 D69F535455565758595AF4F5F6F7F8F9303132333435363738 39FAFBFCFDFEFF

    gruss sufukli

  3. #3
    Registriert seit
    Jan 2002
    Beiträge
    24

    Post

    sorry, ich habe die SEU-Nummerierung mitkopiert. Die Tabelle sieht ohne diese so aus:

    000102039C09867F978D8E0B0C0D0E0F101112139D85088718 19928F1C1D1E1F
    80818283840A171B88898A8B8C050607909116939495960498 999A9B14159E1A
    20A0A1A2A3A4A5A6A7A8C42E3C282B2126A9AAABACADAEAFB0 B1DC242A293B5E
    2D2FB2B3B4B5B6B7B8B9F62C255F3E3FBABBBCBDBEBFC0C1C2 603A2340273D22
    C3616263646566676869C4C5C6C7C8C9CA6A6B6C6D6E6F7071 72CBCCCDCECFD0
    D1DF737475767778797AD2D3D4D5D6D7D8D9DADBDC40DEDFE0 E1E2E3E4E5E6E7
    E4414243444546474849E8E9EAEBECEDFC4A4B4C4D4E4F5051 52EEEFF0F1F2F3
    D69F535455565758595AF4F5F6F7F8F9303132333435363738 39FAFBFCFDFEFF

    gruss

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    17

    Post

    Danke für die Hilfe, allerdings liegt das Problem an einer anderen Stelle:

    Die Daten (Umlaute), die der Benutzer in die Formularfelder der HTML Seite eingibt werden im System irgendwie umgesetzt, z. B.:
    Ä -> D
    Ö -> O
    Ü -> }
    ä -> U
    ö -> 6
    ü -> }
    @ -> § usw. und in der Datenbank gespeichert. Bei der Übernahme der Datenbank in die Ausgabe (in eine HTML-Seite) werden die Daten nicht konvertiert, also so angezeigt, wie in der Datenbank gespeichert.

    Ich kann jetzt ja nicht in einer Umsetztabelle definieren, das das U nach ä umgewandelt werden soll, denn dann wird ja auch ein U umgewandelt, das ein U sein soll (alles klar ;-) Aus 'Uwe' wird dann 'äwe')

    Die Konvertierung muss an anderer Stelle, bei der Übernahme der Daten aus dem Formular mittels der API's QtmhRdStin oder APICvtDB erfolgen, aber wo?

    Gruß, Christian

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    17

    Exclamation

    Das Problem hat sich gelöst!

    Sonderzeichen und Umlaute werden vom Browser als Codes mit einem vorangestellten '%' übermittelt (z.B. %E4 für 'ä').
    Das API QtmhCvtDb, welches die Aufteilung der vom Browser übergebenen Daten in die RPG-Felder vornimmt, interpretiert diese falsch und setzt sie direkt in EBCDIC um (E4 = 'U').
    Ich habe mir nun mit einer Prozedur beholfen, die die Umwandlung direkt durch Zeichenaustausch vor dem Aufruf des API QtmhCvtDb vornimmt.

    Schöne Grüße,
    Christian

    [Dieser Beitrag wurde von cmatzat am 12. Juli 2002 editiert.]

Similar Threads

  1. Programm auf "ferner" AS400 ausführen.
    By Souljumper in forum NEWSboard Programmierung
    Antworten: 6
    Letzter Beitrag: 13-05-09, 19:50
  2. Zu einem Programm die Service-Attribute ändern!
    By ExAzubi in forum IBM i Hauptforum
    Antworten: 6
    Letzter Beitrag: 18-01-07, 15:06
  3. Programmbibliothek in einem Cobol oder CL Programm ermitteln
    By schatte in forum NEWSboard Programmierung
    Antworten: 19
    Letzter Beitrag: 10-01-07, 11:32
  4. Programm auf anderer AS400 starten
    By codierknecht in forum NEWSboard Programmierung
    Antworten: 8
    Letzter Beitrag: 04-07-06, 11:52

Berechtigungen

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