[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Aug 2014
    Beiträge
    15

    MQ Nachricht auslesen und je nach Inhalt unterschiedliches encoding verwenden

    Hallo Zusammen,

    wir haben ein Europaprojekt und ich muss sowohl Latin1 als auch Latin2 verarbeiten können.
    Die Datenbanken der Folgeverarbeitung sind bereits in der Lage, beides zu verarbeiten, es besteht jetzt "nur" noch die Herausforderung, die MQ-Message entsprechend zu verarbeiten.

    Der Kollege, der mir die Nachrichten schickt, schreibt dazu folgendes:

    Browse the first message
    Check what CodedCharSetId is set on the MQMD
    If 819 then do the real get with conversion to EBCDIC 273
    If 912 then do the real get with conversion to EBCDIC 870
    For safety on the second GET, you should select the message using the MessageId from the browsed message, so that you are sure to get the same message (eg in case of multiple jobs reading the queue).

    Im Quellcode ILE COBOL ist der MQGET heute ohne jegliche Abfrage:

    CALL "MQGET" USING HCONN
    Q-HANDLE
    MESSAGE-DESCRIPTOR
    GMOPTIONS
    BUFFER-LENGTH
    BUFFER
    DATA-LENGTH
    COMPLETION-CODE
    REASON
    END-CALL.

    Hat jemand Erfahrung oder ein Beispiel, wie ich das umsetzen könnte?

    Viele Grüße,

    Sabine

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Leider finde ich dazu nun nicht die IBM i Definition.
    Aber via GMOPTIONS solltest du die Konvertierung der CCSID in z.B. Unicode vornehmen können.
    Als Zielfeld nimmst du dann den Typ mit "USAGE NATIONAL" an. Dann bekommst du sofort CCSID 1200.
    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
    Aug 2014
    Beiträge
    15
    Hallo,

    Unicode hilft mir leider nicht, weil ich dann keine single byte Verarbeitung mehr habe und die Struktur kaputt geht. Dann müsste ich hinten raus eine Konvertierung vornehmen einmal in 870 und einmal in 273. Die Idee ist, den MGET 2 Mal abzusetzen: erst mit Browse auslesen, dann im 2. MGET mit der MessageID auf die richtige Codedcharactersetid in MQMD umsetzen.

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    "Die Datenbanken der Folgeverarbeitung sind bereits in der Lage, beides zu verarbeiten".
    Darunter verstehe ich, dass die Datenbanken auf Unicode umgestellt sind.
    Alles andere sind nur Klimmzüge, die mit einer normalen Job-CCSID oder mit SQL kaum händelbar ist.

    Also benötigst du 2 Umgebungen:
    Job-CCSID = 273/1142 => nur diese Nachrichten
    Job-CCSID = 870 => nur diese Nachrichten

    Du kannst die Job-CCSID zur Laufzeit anpassen, so dass zwischen Lesen der MQ-Nachrichten nur ein CHGJOB CCSID(nnn) erforderlich ist.
    Oder du setzt die Job-CCSID auf *Hex und machst den Rest per Translate-API's (iconv, qdc...).
    Die CCSID bekommst du ja wohl als Info beim Lesen und wenn der Job auf *HEX steht gibts keinen automatischen Translate.
    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. JSON_TABLE in dynamischem SQL verwenden
    By dschroeder in forum NEWSboard Programmierung
    Antworten: 15
    Letzter Beitrag: 20-12-18, 11:11
  2. Hex-Code in XML-Nachricht nach PDF umwandeln
    By msost in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 06-12-17, 12:50
  3. CPYSPLF unterschiedliches Verhalten im Batch und interaktiv
    By nico1964 in forum IBM i Hauptforum
    Antworten: 71
    Letzter Beitrag: 22-08-17, 14:13
  4. Unterschiedliches Verhalten gsk_secure_soc_init() V5R3 - V5R4
    By schatte in forum NEWSboard Programmierung
    Antworten: 0
    Letzter Beitrag: 22-08-15, 15:46
  5. WinWord für AS/400 verwenden
    By CMueller@must.de in forum NEWSboard Windows
    Antworten: 0
    Letzter Beitrag: 01-10-01, 10:00

Tags for this Thread

Berechtigungen

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