Integration eines Shell-Skripts in ein AS400 RPG-Programm

© Tierney – stock.adobe.com

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.