-
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
-
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.
-
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.
-
"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.
Similar Threads
-
By dschroeder in forum NEWSboard Programmierung
Antworten: 15
Letzter Beitrag: 20-12-18, 11:11
-
By msost in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 06-12-17, 12:50
-
By nico1964 in forum IBM i Hauptforum
Antworten: 71
Letzter Beitrag: 22-08-17, 14:13
-
By schatte in forum NEWSboard Programmierung
Antworten: 0
Letzter Beitrag: 22-08-15, 15:46
-
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
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks