PDA

View Full Version : RPG-Pgm innerhalb CL-Pgm wird aus Java nicht aufgerufen



Seiten : [1] 2

hartmuth
29-08-12, 18:17
Stehe vor großem Rätsel und hoffe auf eure Hilfe.
Ich rufe aus Java ein CL-Pgm auf.
Dieses CL-Pgm enthält seinerseits ein RPG-Programm.
Wenn Aufruf aus Java erfolgt , wird dieses RPG-Pgm nicht aufgerufen ?!?!
Wenn Aufruf aus Befehlszeile erfolgt, dann schon. ?!?!
Das CL-Pgm wird in Java aber sehr wohl aufgerufen, das ist über DMPCLPGM beweisbar.

Hier die java-Zeilen für RPG-Aufruf.
(Java läuft übrigens am PC, nicht auf AS400)
------------------------------------------
// Create the path to the program.
programName = new QSYSObjectPathName("STONESOBJ",
"STONEPRLGC", "PGM");

// Create the program call object.
programCall = new ProgramCall(host);

// Create the parameter list (array).


programCall.setProgram(programName.getPath(), parmlist);
log.info("Programm wird aufgerufen:" + programName.getPath()); // findet sich im Log - siehe unten
if (programCall.run() != true)
{
AS400Message[] msgList = programCall.getMessageList();
String as400Msg = msgList[0].toString();
log.error("Fehler bei Verarbeitung:" + as400Msg); // kein Eintrag im Log
}
host.disconnectService(AS400.COMMAND);
}
------------------------------------------
Eintrag aus Log:
Programm wird aufgerufen:/QSYS.LIB/STONESOBJ.LIB/STONEPRLGC.PGM

Das CL-Programm STONEPRLGC besteht aus folgenden Zeilen

(Es findet sich im Log, wie erwähnt kein Hinweis auf Fehler bei Aufruf. )


ADDLIBLE LIB(STEINE_TST) POSITION(*AFTER STONESOBJ)
ADDLIBLE LIB(STEINE_95T) POSITION(*AFTER STONESOBJ)
ADDLIBLE LIB(QS36_TST) POSITION(*AFTER STONESOBJ)
ENDDO /* PMODE *EQ 'T' */

CALL PGM(STONEPROLG)

DMPCLPGM

ENDE: ENDPGM

Alles scheinbar so einfach.
Ich konnte es kaum glauben, als ich das "Phänomen" bemerkte.
?!?!?!
Vielen Dank im Voraus für Unterstützung

Fuerchau
29-08-12, 18:34
Nach dem DMPCLPGM würde ich malnoch einen DSPJOBLOG machen.
Dann kannst du die Fehler besser nachsehen.
Im aktuellen Job läuft dein Programm nämlich nicht.

BenderD
29-08-12, 18:46
... ich verfolge mit Interesse die diversen Fragen, scheinbar zum selben Problem: was soll dieser Wackelhaufen mal bezwecken, wenn er denn nicht mehr umfällt???

Fuerchau
30-08-12, 08:16
Das Neuprogrammieren denke ich mal.

B.Hauser
30-08-12, 08:48
Ist denn die Bibliotheksliste richtig gesetzt?

Birgitta

ExAzubi
30-08-12, 08:51
Ich würde mal ganz stark darauf tippen das die LIBL nicht sauber ist, da wahrscheinlich eine andere JOBD verwendet wird.

Fuerchau
30-08-12, 09:13
Die Libl wird im CLP ja geändert, der Aufruf direkt funktioniert ja auch.

Das problem ist, dass Java in einem eigenen Job läuft.
Da hilft dann nur das Joblog des Javajob's.

camouflage
30-08-12, 10:06
Stellt sich die Frage ob der Job-Aufruf überhaupt auf der AS400 ankommt, da wie erwähnt, das Java-Programm auf dem PC läuft.

Fuerchau
30-08-12, 12:37
So wie beschrieben wurde das CLP ja ausgeführt da der enthaltene Dump vorhanden ist.
Daran kann es also nicht scheitern.

Der Fehler muss in dem aufgerufenen RPG liegen.
Vielleicht wird es ja aufgerufen macht aber nicht das was es soll (z.B. Prüfungen auf User, Mandant u.ä.).

Dies kann man ggf. per
STRSRVJOB auf den Javajob
STRDBG auf das CLP und RPG
analysieren.

tfroehlich
30-08-12, 16:44
Hallo zusammen,

sollte man nicht den addlible genauer definieren.
In seinem CL steht immer after stonesobj.

addlible lib(stonesobj)
addlible lib(steine_95) position(*after stonesobj)
addlible lib(steine_96) position(*after steine_95)
etc.
call pgm(stonesobj/stoneprlog)

vielleicht liegt es daran, dass die Libl nicht ganz sauber ist.

Gruss
Thomas
---------------------------------------------------------





Stehe vor großem Rätsel und hoffe auf eure Hilfe.
Ich rufe aus Java ein CL-Pgm auf.
Dieses CL-Pgm enthält seinerseits ein RPG-Programm.
Wenn Aufruf aus Java erfolgt , wird dieses RPG-Pgm nicht aufgerufen ?!?!
Wenn Aufruf aus Befehlszeile erfolgt, dann schon. ?!?!
Das CL-Pgm wird in Java aber sehr wohl aufgerufen, das ist über DMPCLPGM beweisbar.

Hier die java-Zeilen für RPG-Aufruf.
(Java läuft übrigens am PC, nicht auf AS400)
------------------------------------------
// Create the path to the program.
programName = new QSYSObjectPathName("STONESOBJ",
"STONEPRLGC", "PGM");

// Create the program call object.
programCall = new ProgramCall(host);

// Create the parameter list (array).


programCall.setProgram(programName.getPath(), parmlist);
log.info("Programm wird aufgerufen:" + programName.getPath()); // findet sich im Log - siehe unten
if (programCall.run() != true)
{
AS400Message[] msgList = programCall.getMessageList();
String as400Msg = msgList[0].toString();
log.error("Fehler bei Verarbeitung:" + as400Msg); // kein Eintrag im Log
}
host.disconnectService(AS400.COMMAND);
}
------------------------------------------
Eintrag aus Log:
Programm wird aufgerufen:/QSYS.LIB/STONESOBJ.LIB/STONEPRLGC.PGM

Das CL-Programm STONEPRLGC besteht aus folgenden Zeilen

(Es findet sich im Log, wie erwähnt kein Hinweis auf Fehler bei Aufruf. )


ADDLIBLE LIB(STEINE_TST) POSITION(*AFTER STONESOBJ)
ADDLIBLE LIB(STEINE_95T) POSITION(*AFTER STONESOBJ)
ADDLIBLE LIB(QS36_TST) POSITION(*AFTER STONESOBJ)
ENDDO /* PMODE *EQ 'T' */

CALL PGM(STONEPROLG)

DMPCLPGM

ENDE: ENDPGM

Alles scheinbar so einfach.
Ich konnte es kaum glauben, als ich das "Phänomen" bemerkte.
?!?!?!
Vielen Dank im Voraus für Unterstützung