PDA

View Full Version : Verwendung einer MSGF im Serviceprogramm



claudia_669
09-07-12, 09:48
Hallo zusammen!

Ich habe in zwei Nachrichtendateien (LNGENG(englisch) und LNGGER (deutsch)) die entsprechenden Texte für eine Bildschirmanzeige hinterlegt.
In der DSPF sind folgende Zeilen:
LNGMSGF 10A P TEXT('MESSAGEFILE')
F1TPGMNAM 34A O 2 22MSGID(XXX 0026 &LNGMSGF)
In meinem Programm fülle ich die Variable LNGMSGF entsprechend und alles funktioniert bestens.
Jetzt mein Problem:
Wenn ich das genauso in einem Serviceprogramm hinterlege (das ich z.B. aus verschiedenen Programmen heraus als Suchfunktion o.ä. benutze) funktioniert die Übergabe der Variable an die DSPF nicht - im Joblog erscheint die Meldung
Nachrichtendatei in *LIBL nicht gefunden.
Nachrichten-ID XXX0026 in Nachrichtendatei in *LIBL nicht gefunden.
Wo ist hier der Unterschied zu einem "normalen" Programm?
Wäre prima, wenn mir hier jemand helfen könnte!

Vielen Dank!
Claudia

mk
09-07-12, 10:17
Hallo,

dann hat der Job in dem das Serviceprogramm
läuft eine andere Bibliotheksliste.

Du kannst die Bibliohtheklsliste mit der
Option 13 des Jobs prüfen.

Gruß
Michael

claudia_669
09-07-12, 10:36
Hallo Michael,

nein, daran liegt es nicht, die Bibliotheksliste ist i.O. Das aufrufende Programm kann die MSGF umsetzen, das Serviveprogramm (gleiche Umgebung, gleiche LIBL) aber nicht?!
Und in der Fehlernachricht des Joblogs ist die Variable ja auch leer, daher vermute ich eher, daß die Übergabe in die "P"-definierte Variable zum DSPF nicht klappt. Aber warum und wie muss ich es stattdessen machen?

Grüße
Claudia

mk
09-07-12, 11:30
Hallo Michael,

nein, daran liegt es nicht, die Bibliotheksliste ist i.O. Das aufrufende Programm kann die MSGF umsetzen, das Serviveprogramm (gleiche Umgebung, gleiche LIBL) aber nicht?!
Und in der Fehlernachricht des Joblogs ist die Variable ja auch leer, daher vermute ich eher, daß die Übergabe in die "P"-definierte Variable zum DSPF nicht klappt. Aber warum und wie muss ich es stattdessen machen?

Grüße
Claudia

Hi,

ich glaube da wären ein paar Codeschnipsel schon hilfreich.

gruß
Michael

B.Hauser
09-07-12, 11:38
Erfolgt irgenwo ein OVRMSGF und Programm und Service-Programm laufen in unterschiedlichen Aktivierungsgruppen?

Unglücklicherweise kann man beim OVRMSGF den Override Scope (Default Aktivierungsgruppe) nicht setzten (zumindest habe ich es noch nicht gefunden!)

Birgitta

claudia_669
09-07-12, 13:41
Ein OVRMSGF kann ich nicht finden. Es wird eine reine Zuweisung in die Variable LNGMSGF über eine Funktion (Zugriff auf User-Datenbank mit hinterlegter Sprache) vorgenommen
(die danach lt. Debugger auch korrekt gefüllt ist).
Das Serviceprogramm wurde mit Aktivierungsgruppe *CALLER erstellt - das sollte dann doch die gleiche sein wie beim aufrufenden Programm, oder?

Fuerchau
09-07-12, 14:36
Die Meldungen des Systems sind da auf jeden Fall eindeutig:

Prüfe bitte den Inhalt der Variablen mal mit "eval MYVAR:X", der Name muss in Großbuchstaben sein und muss ggf. mit Leerzeichen gefüllt sein.

Wenn du den Debugger an der Stelle anhältst, kannst du mit ich glaube F21 eine Kommandozeile öffnen und mal mit
WRKMSGF MYMSGF
prüfen ob die tatsächlich über *LIBL gefunden wird.
Mittels WRKMSGD kannst du dann auch prüfen, ob die Nachricht tatsächlich vorhanden ist.

Es gibt wirklich da keinen Unterschied zwischen Programm oder Serviceprogramm.

claudia_669
10-07-12, 07:37
Das ist ja das seltsame, genau das habe ich alles schon überprüft:
Libl ist korrekt, MSGF darin vorhanden, MSGD ebenfalls, Variable mit Großbuchstaben und ergänzenden Blanks richtig gefüllt, ABER der Inhalt kommt im DSPF in der P-Variablen offensichtlich nicht an! Das aufrufende Programm setzt alles korrekt um, dann drücke ich F4 für meinen Matchcode (-> Serviceprogramm) und die Nachrichten sind nur noch Fragezeichen... :(

Noch irgendeine Idee?

Aber vielen Dank schon einmal für die Hilfestellungen!
Claudia

Noch ein Nachtrag: mein Serviceprogramm ist übrigens in SQLRPG - könnte es damit etwas zu tun haben, gibt es da einen Unterschied?

B.Hauser
10-07-12, 08:03
Auf welchem Release seid Ihr?
Ist die Display-File global oder lokal (innerhalb einer Prozedur definiert)?

Birgitta

claudia_669
10-07-12, 08:11
Release ist V6.1

Habe jetzt mehr aus Spielerei die DSPF mal mit SHARE *YES umgewandelt und nun geht es plötzlich.
Die Erklärung dazu ist mir schleierhaft, aber immerhin....

Also danke nochmal!