Zitat Zitat von Fuerchau Beitrag anzeigen
Das ist korrekt.
"cd pfad" wirkt nur für das IFS. Wenn der Pfad nicht existiert, passiert auch nichts. FTP macht mit dem nächsten Befehl weiter.
Wenn die LIB in der QUSRLIBL steht, klappt auch der CALL.
Wofür aber noch RCMD? "Quote CALL" oder "Quote SBMCMD" sollte doch reichen.
nur ungefähr!
- was cd macht, hängt vom namefmt ab und das wiederum vom eingestellten home des users
-- bei namefmt 1 wirkt cd im ifs, wie Baldur bemerkt
-- bei namefmt 0 wirkt cd wie chgcurlib, was in dem Beispiel wohl erwünscht ist
-- namefmt wechseln kann man, wenn das aktulle Verzeichhnis im QSYS.LIB auf einer Bibliothek verweist
-- der Wechsel geht dann mit: quote site namefmt 0
-- quote site namefmt 1 geht immer

wenn ich denn das aufzurufende PGM im libl habe
- ohne quote werden FTP Befehle auf dem client ausgeführt
- bewirkt quote lediglich, dass der folgende FTP (!!!) Befehl auf dem Server ausgeführt wird
- quote rcmd call myPgm ruft dann also auf dem server über den FTP command rcmd mein Programm auf
- lasse ich das rcmd weg,wird ein ftp befehl erwartet => quote call irgendwas geht nicht!!!

natürlich sollte man noch sicherstellen, dass das ganze auch bei mehrfachen Aufrufen funzt, auch wenn bereits das nächste gesendet wird, bevor die Verarbeitung des ersten fertig ist und wenn es schief geht, sollte man noch alle Informationen haben, was da eigentlich gesendet wurde!

Vorwärts synchronisieren, wie Ludger das macht, ist immer besser als HKGP (Haufenkacker-Graber-Prinzip), am besten ist es immer, wenn man den Übertragungen eine ID verpasst (Suffix oder Präfix im Dateinamen) und diese ID als Parameter im Aufruf mitgibt (dazu müsste man das FTP Skript dynamisch erzeugen.

Ludgers Variante würde ich verschlanken: die stored Procedure und das CL sind überflüssig, wenn man einen externen Trigger mit ADDPFTRG anhängt. So umständlich fände ich das dann nicht mehr - wobei ich mich natürlich frage, warum man nicht gleich wo und was schreibt, wo es hin soll.

D*B