Integration eines Shell-Skripts in ein AS400 RPG-Programm
Einleitung
Im letzten Beitrag haben wir gesehen, wie man ein Shell-Skript auf einer AS400-Maschine ausführt, um eine Java-Anwendung zu starten. Heute schauen wir uns an, wie dieses Skript nahtlos in ein RPG-Programm integriert werden kann. Bitte beachten Sie, dass Pfad und JobQ entsprechend Ihres Systems angepasst werden müssen. ihruser
ist nur ein Platzhalter.
Das RPG-Programm
Programmheader und Prozedur-Prototypen
Die Header-Anweisungen und die Prozedur-Prototypen sind weitgehend selbst erklärend
D entry PR ExtPgm('ENVPRINT')
D paKey 30a options(*nopass)
D entry PI
D paKey 30a options(*nopass)
Globale Variablen und Kommandozeile-Prototyp
D QSHCommand S 1024A varying
D ExecCmd Pr ExtPgm('QCMDEXC')
D Cmd 2048a Const
D CmdLen 15 5 Const
D CmdString s 2048a
D CmdLength s 15 5
Die Hauptlogik
/free
exSr execQSH;
*Inlr = *On;
begsr execQSH;
QSHCommand = 'QSH CMD(''/home/ihruser/startEnvPrinter.sh';
if (%Parms() > 0 and %Trim(paKey) <> '');
QSHCommand += ' ' + %Trim(paKey);
endif;
QSHCommand += ''')';
CmdString = 'SBMJOB CMD('+QSHCommand+') JOBQ(IHRUSER)';
CmdLength = %Len(%Trim(CmdString));
ExecCmd(CmdString:cmdLength);
endsr;
/end-free
Der eigentliche "Magie" passiert in der Subroutine `execQSH`. Hier wird der Befehl `QSH CMD('...')` konstruiert, der unser Shell-Skript aufruft.
Warum ist das nützlich?
Durch diese Integration ist es nun möglich, die Javia-Anwendung direkt aus dem RPG-Programm heraus zu starten. So können komplexe Aufgaben, die besser in Java gelöst werden können, direkt in Ihre AS400-Umgebung eingebunden werden.
Fazit
Die Integration eines Shell-Skripts in ein RPG-Programm erweitert die Funktionalität und Flexibilität Ihres Systems. Das gezeigte Beispiel sollte es Ihnen ermöglichen, eigene Skripte nahtlos in Ihre AS400-Umgebung einzufügen.
GITHUB
Beispiele stehen im Repo RPG4J on GitHub zum Download zur Verfügung.
Java-Methoden aus RPGLE aufrufen →