PDA

View Full Version : QZDASOINIT-Job EXE aufrufen



Dschainers
25-08-15, 09:04
Hallo,
kann ich von einem QZDASOINIT-Job eine Win-EXE aufrufen.

Ich möchte von einem CL Programm, das im obigen Job abläuft eine Windows-EXE Datei aufrufen, das CL Programm sollte aber erst weiterlaufen, wenn die EXE beendet ist.

Geht das überhaupt, wenn ja wie?

Danke im Voraus

Fuerchau
25-08-15, 09:38
Dies geht nur, wenn du auf dem PC einen REXEC-Server startest.
Per SQL kannst du einen CALL auf ein Programm machen dem du z.B. deine eigene IP übergibst.
Das Programm macht dann einen REXEC (RUNRMTCMD) auf deinen PC mit Warten.
Zu bedenken ist natürlich folgendes:
Der RUNRMTCMD benötigt einen User und ein Kennwort im Klartext um sich an deinem PC anzumelden.
Meist muss dies auch ein lokaler User sein da es mit Netzusern/Domänusern nicht klappen kann.
Zusätzlich läuft diese Anmeldung im Hintergrund, du merkst davon nichts und das Programm kann auf Netzwerkressourcen ohne eigenen "net use" nicht zugreifen.

Ggf. schlägt dann noch ein Ausführungstimeout in der SQL-Ebene zu.

Aber wozu soll das gut sein, da du doch bereits auf dem Remote-PC bist?

dschroeder
25-08-15, 09:45
Ich denke, dass dein Problem nichts mit dem QZDASOINIT Job zu tun hat. Wie würdest du denn aus einem "normalen" Job ein PC-Programm aufrufen? Das geht ja nicht so ohne weiteres. Dafür benötigst du ja irgendeine Software. Wir haben bei uns so etwas selber geschrieben. (In unserem Fall in Java). Auf dem PC gibt es einen (selbstgeschriebenen) Listener, der per IP wartet, ob eine Anforderung kommt. Der iSeries Job sendet dann per IP die Anforderung. Wenn man das dann noch synchronisieren will, muss man im iSeries Job eine Warteschleife programmieren, die auf ein "Fertig" Signal des PC wartet.

Dieter

Fuerchau
25-08-15, 10:01
Für 5250-User geht das doch sehr einfach ohne weitere Software.
Einfach STRPCO im Dialogjob starten und denn beliebig STRPCCMD ausführen.
Viele 5250-Emulatoren unterstützen das.

Ansonsten gibt es noch das sehr einfache Konzept der DTAQ's.
Hier kann man per ActiveX auf dem PC mittels C++/VB/VBA/.NET/Java (Java hat sogar eigene Klassen) Daten zwischen AS/400 und PC austauschen. Auch hierzu benötigt man keine TCP-/Socket-Kenntnisse.
Auf der AS/400 reicht ein QRCVDTAQ/QSNDDTAQ, das schafft auch ein RPG-Programmierer.
Per Keyd-DTAQ kann man dann sogar über eine DTAQ mehrere Jobs bearbeiten.
Für die Performance kann man dann auf der AS/400 mehrere Jobs die selbe DTAQ überwachen lassen. Die Anfragen werden dann dynamisch an den nächsten freien Job verteilt.

Bei IP-Programmierung wird es da ohne Threading schon etwas schwieriger eine Lastverteilung zu programmieren. Hier eignet sich allenfalls Java auf der AS/400 dazu.

Dschainers
25-08-15, 10:28
@fuerchau
Ich habe mich soeben mit meinen Kollegen unterhalten und wir sind zum gleichen Ergebnis gekommen, wir werden dies mit DTAQ's abhandeln.
Wir werden einen Dienst an einem virt. PC einstellen der die DTAQ abfrägt und dann was tut und hinterher eine Antwort in eine DTAQ gibt.

Vielen Dank (auch an DSCHROEDER)