PDA

View Full Version : Parameterübergabe über QSH mit SH möglich?



kuempi von stein
28-02-07, 12:33
Hello,

ich rufe aus nem CLP ein JAVA auf.
Der CLP-Code im Groben:


QSH CMD '/HOME/KUEMPI/KUEMPI.SH')


Der SH-Code im Groben:


cd /home/kuempi
java -cp ELLENLANGEBEFEHLSZEILEMITLIBUNDJARZEUCHS Meinjava dummy dummy dummy


Gibt es eine Möglichkeit die drei "dummy" Parametergesteuert mit Leben zu füllen um dem Programm "Meinjava" diese zu übermitteln?

kuempi

KM
28-02-07, 12:54
Hallo Kuempi,

ich verstehe den Sinn davon nicht so ganz. Warum erstellst Du überhaupt eine SH-Datei und führst das Ganze nicht direkt im CLP aus ?

Gruß,
KM

kuempi von stein
28-02-07, 13:07
Na ja, warum?
Weil ichs nicht besser weiss... :D

Mir ist schon klar, dass ich im CLP auch direkt:


QSH CMD 'java -cp ELLENLANGEBEFEHLSZEILEMITLIBUNDJARZEUCHS Meinjava dummy dummy dummy'


oder so ähnlich zusammenbasteln könnte...
Aber dann fehlt mir ja der CD Befehl davor.
Der Umweg uber die .SH-Datei war ganz nett um eine Kette von Befehlen abzuarbeiten...

Wie müsste denn dafür die CLP-Lösung aussehen?

Wäre ich durchaus mit eiverstanden, das auch so zu lösen, wenn ich wüsste wie.
Diese .SH-Geschichte stört mich eh schon lange...

kuempi

Fuerchau
28-02-07, 13:40
An QSH kann eine ganze Reihe von Befehlen übergeben werden (wie ein Script:

CMD('Befehl1;Befehl2;...')

Das Semikolon gilt als Befehlstrenner, für dich also:

cmd('cd /MyPath;java ....')

Ansonsten empfängt ein Script seine Parameter in $1, $2, ... $9 als Pseudovariablen.

KM
28-02-07, 13:41
Ich glaube jetzt hab ich's verstanden. Dadurch, dass Du QSH benutzt und dabei für die QSH-Sitzung ein neuer Job gestartet wird, funktioniert das mit einem vorher abgesetzten CD im CLP nicht, da sich der ja nur auf den Job bezieht.

Hast Du's schon mal mit der Shell von PASE versucht ? Der Aufruf startet glaube ich keinen neuen Job und somit könntest Du im CLP vorher einfach einen CD ausführen. Dann würdest Du nicht QSH aufrufen, sondern QP2SHELL.

Das müsste eigentlich so ähnlich funktionieren.

Gruß,
KM


DCL VAR(&CMD) TYPE(*CHAR) LEN(30)
DCL VAR(&PARM1) TYPE(*CHAR) LEN(30)
DCL VAR(&PARM2) TYPE(*CHAR) LEN(300)
DCL VAR(&PARM3) TYPE(*CHAR) LEN(30)
DCL VAR(&PARM4) TYPE(*CHAR) LEN(5)
DCL VAR(&PARM5) TYPE(*CHAR) LEN(5)
DCL VAR(&PARM6) TYPE(*CHAR) LEN(5)
DCL VAR(&NULL) TYPE(*CHAR) LEN(1) VALUE(X'00')

CHGVAR VAR(&CMD) VALUE('/QOpenSys/usr/bin/java')
CHGVAR VAR(&CMD) VALUE(&CMD *TCAT &NULL)

CHGVAR VAR(&PARM1) VALUE('-classpath')
CHGVAR VAR(&PARM1) VALUE(&PARM1 *TCAT &NULL)

CHGVAR VAR(&PARM2) +
VALUE('/DeinClasspath/')
CHGVAR VAR(&PARM2) VALUE(&PARM2 *TCAT &NULL)

CHGVAR VAR(&PARM3) VALUE('DeinJavaProgramm')
CHGVAR VAR(&PARM3) VALUE(&PARM3 *TCAT &NULL)

CHGVAR VAR(&PARM4) VALUE(&Parameter1)
CHGVAR VAR(&PARM4) VALUE(&PARM4 *TCAT &NULL)

CHGVAR VAR(&PARM5) VALUE(&Parameter2)
CHGVAR VAR(&PARM5) VALUE(&PARM5 *TCAT &NULL)

CHGVAR VAR(&PARM6) VALUE(&Parameter3)
CHGVAR VAR(&PARM6) VALUE(&PARM5 *TCAT &NULL)

CALL PGM(QP2SHELL) PARM(&CMD &PARM1 &PARM2 +
&PARM3 &PARM4 &PARM5 &PARM6)

Nili
28-02-07, 13:59
Moin!

Aber warum benutzt Du nicht einfach das OS/400 Command
JAVA? Drückst F4 und trägst da Deine Parameter ein!

kuempi von stein
28-02-07, 15:18
Jo,

erst mal Danke der vielen Antworten.
Ich werde das prüfen und ne Rückmeldung geben dann.

Ist eben so, dass das ne übernommene Altanwendung ist von der ich nicht wirklich weiss, was ich da mache anscheinend.
Motto: "Denn Sie Wissen Nicht Was Sie Tun"... :cool:

Man lernt doch nie aus...

k.

kuempi von stein
01-03-07, 08:23
Also vielen Dank nochmal an Alle!

Habe als erstes die Variante von Fuerchau gewählt und gleich im zweiten Versuch Erfolg gehabt (Fehlte noch beginnend und abschliessend ein Hochkomma jeweils).

Coole Sach.
Schönen Tag noch.

kuempi