View Full Version : QMHRTVM - replacement data
Moin, Moin Forum,
ich stehe auf der Leitung und bräuchte etwas Hilfe beim Ersetzen von Variablen in Messagetexten.
Ich hole mir die Texte mit der API QMHRTVM und kann sie mir inkl. der &_ Variablen anzeigen. Leider gelingt es mir nicht diese durch echte Daten zu ersetzen. Ich habe bisher auch keine Stelle gefunden in der beschrieben wird wie die korrekte Syntax lautet.
Beispiel:
Ist: '&1 Hallo &2 Welt!'
Soll: '99 Hallo ganze Welt!'
Das müßte doch über die Struktur 'replacment data' lösbar sein - oder?
Danke im Voraus und viele Grüße aus dem Nordland
Welche Felddaten hast du denn für die Meldung definiert? Sieh' dir zum Beispiel einmal mit Hilfe des Befehls DSPMSGD CPC1221 die Felddaten der Meldung CPC1221 an.
Welche Felddaten hast du denn für die Meldung definiert? Sieh' dir zum Beispiel einmal mit Hilfe des Befehls DSPMSGD CPC1221 die Felddaten der Meldung CPC1221 an.
Meine Datendefinitionen sehen so aus:
Feld Datenart Länge Dump
&1 *CHAR 10 *NO
&2 *CHAR 50 *NO
Retrieve Message (QMHRTVM) API (http://publib.boulder.ibm.com/infocenter/iseries/v5r4/topic/apis/QMHRTVM.htm?resultof=%22%71%6d%68%72%74%76%6d%22%2 0)
Schau dir das API genau an.
Für Replace musst du *YES angeben.
Die Länge der daten und das Format muss stimmen.
Danke für Deinen Tipp - muss man dran denken.
Aber was mich richtig quält, wie muß ich die Daten in 'Replacment data' einstellen. Einfach hintereinander rein ala Replacement = StringA + StringB?
Gibt es evt. irgendwo ein Beispiel?
Stelle dir die Parameterdefinition der Nachricht als Struktur vor.
Genau in dieser Struktur müssen die Daten übergeben werden:
Laut deinem Beispiel:
D MyFields DS
D Field1 10
D Field2 50
D MyFieldsLen S 10I 0 INZ(%size(MyFields))
jau, dat isset - vielen Dank.
...aber, es ist natürlich blöd das man für jede Message wissen muß wie die eingebundenen Varibalen definiert sind. Hat jemand Ahnung wie man sowas automatisieren kann? Wo kann man in dieser Richtung etwas nachlesen?
Mit Nachrichten ist es wie mit allen Übergabeparametern. Es gibt da nichts allgemeingültiges, da die Struktur je nach MSGID beliebig definiert sein kann.
Bekommt man eine Meldung mit z.B. RCVMSG, kann man die Daten ja auch empfangen und an einen RTVMSG durchrouten.
Ansonsten gibts natürlich wieder mal ein API, in der man die Feldliste erfragen kann.
Allerdings ist das dynamische Aufbauen nicht ganz unproblematisch.
Aber warum soll man das denn generalisieren ?
Bei Programm- und Funktionsaufrufen gibts ja auch keine "General"-Schnittstelle.
Je nach Bedeutung einer Nachricht baut man eben die Daten auf.
Ansonsten gibts in der QCPFMSG 2 Standard-Nachrichten, die genau jeweils 1 Feld beinhalten (512 Zeichen):
CPF9897
CPF9898
die ich auch schon mal (z.B. für Statusnachrichten) verwende.
o.k, ich brauche nur bereits fertige Nachrichten anzeigen und glaube die angedeutete API könnte mir helfen - werde mal danach suchen.