PDA

View Full Version : QMHRTVM - replacement data



Seiten : [1] 2

kr05
16-08-07, 16:43
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

Pikachu
17-08-07, 09:22
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.

kr05
17-08-07, 10:06
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

Fuerchau
17-08-07, 10:13
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.

kr05
17-08-07, 10:34
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?

Fuerchau
17-08-07, 10:38
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))

kr05
17-08-07, 12:04
jau, dat isset - vielen Dank.

kr05
20-08-07, 11:13
...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?

Fuerchau
20-08-07, 11:56
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.

kr05
20-08-07, 14:02
o.k, ich brauche nur bereits fertige Nachrichten anzeigen und glaube die angedeutete API könnte mir helfen - werde mal danach suchen.