View Full Version : Programmaufruf auf der AS400
Hallo zusammen,
kann ich von der WINDOWS-Welt aus auf der AS400 ein Programm aufrufen ?
Wenn ja, wie säh das aus ?
Für Infos wäre ich wie immer dankbar.
Schönen Abend.
A.
Bei uns läuft das AS400 Pgm in der QBATCH und horcht auf eine Dataq
Das PC pgm schreibt diese und bekommt auch Ergebnisse auf diesem Weg
Dafür gibts die WinAPI des ACS.
Es werden direkte Calls über eigene API's unterstützt, alternativ kann man jedes Programm mit einfachen Parametern auch in SQL direkt aufrufen.
Man muss da nur die richtigen Parameter genau in der korrekten Länge definieren.
Am Einfachsten ist da jedoch der CALL QCMDEXC, da der nur 2 Parameter hat.
Das obige API unterstützt sogar Returnparameter.
Du kannst natürlich auch per SQL eigene Prozeduren und Funktionen entwickeln, die dann Programmaufrufe noch kapseln können.
Der Overhead mit DTAQ ist da nicht mehr nötig.
Wenn der PC Mensch keine Dataq schreiben kann geht auch eine Datei via odbc/jdbc.
Wenn es dann zeitkritisch ist, schreibt ein Trigger auf der Datei die dataq ...
Schon mal einen direkten "CALL MYPROG (P1, P2)" via SQL probiert?
Einen Create Procedure benötigst du dafür nicht.
vielen Dank an alle, ich probiere mal aus !!
könnte man von Windows aus auch folgenden Aufruf absetzen:
/QSYS.LIB/EUREXC.CSJ.LIB/EXCCSJCALL.PGM "CALL EUREXC/XRCSJCLRSB PARM('$P01' '$P02' '$P03' '$P04' '$P05' '$P07' 'ORDERS')"
Nein, IFS-Notation geht generell nicht.
Wie gesagt, per SQL via ODBC/JDBC, z.B. per ACS-SQL-Script:
CALL QCMDEXC ('CALL .....', 1234567890,00000)
Der erste Prameter ist dein Befehl (Hochkomma sind zu verdoppeln!), der 2. Parameter ist die Länge des Befehls, aufbereitet mit Vornullen (10 Stellig). Die Nachkommata konstant 5 Nullen.
SQL macht dann ein packed(15, 5)-Parameter daraus.
Wenn du nicht auf die Ausführung warten willst, kannst du auf dieselbe Weise auch einen "SBMJOB ..." absetzen.
da gibt es noch mehr:
ftp rcmd, rexec, rsh habe ich noch nicht probiert, müsste auch gehen. Bei den Unix Varianten müssen dann AS/400 Programme über system ausgeführt werden. Was da sinnvoll sein mag, kann man nur im Lichte der konkreten Anforderungen einschätzen. Eigene Dienste (DataQ, Datei mit Trigger , SQL stored procedure sind frühere Würgdrumherums und nicht mehr erforderlich.
D*B
Eigene Dienste (DataQ, Datei mit Trigger , SQL stored procedure sind frühere Würgdrumherums und nicht mehr erforderlich.
Andererseits sind sie lange erprobt, laufen stabil, können so gestaltet werden, das Sie auch funktionieren wenn mal eins der Systeme nicht zur Verfügung steht.
Etwas funktionierendes ändern wir nicht, nur damit es hinterher 'modern' ist.
Wir ändern nur, wenn das 'moderne' Vorteile hat, die wir benötigen.
Jeder was er mag ...