PDA

View Full Version : FTP erstellt Datei auf fernem System - aber ohne Datenbankfelder



msost
20-01-14, 16:45
Hallo,

wir haben eine Funktion im Einsatz, die Workfiles erstellt und diese per FTP an einen anderen Rechner schickt (konsolidiert per Append). Die Ergebnisdatei wird neu erstellt. FTP baut aber jeweils eine Datei mit nur einem Feld, also keine Feldbeschreibungen.

Gibt es einen möglichst kurzen Weg auf dem Zielsystem zu schauen, ob die Datei schon da ist, und wenn nicht diese zu erstellen?

DDM Files kann ich nicht nehmen, da das Security System mir dazwischenhageln würde.

Kann ich z.B. mit RUNRMTCMD checken ob die Datei da ist, und wenn nicht direkt einen CRTDUPOBJ machen?

Gruß

Matthias

Fuerchau
20-01-14, 16:56
Per "!SYS" (o.Ä.) kann man direkt ein AS/400-Kommando ausführen.
Wenn du dein CRTDUPOBJ machst, wird falls nicht vorhanden, das Objekt erstellt.
Der FTP macht aber trotzdem mit dem nächsten Befehl weiter, wenn der CRTDUPOBJ fehlschlägt.

msost
20-01-14, 17:31
Kann leider zu "!SYS" nichts finden. Ist das ein FTP Subcommand? Das einzige was mir passend erscheint wäre im FTP "QUOte RCMD CL-Command".

Aber wie müsste ich dann den CRTDUPOBJ angeben, damit er bei von-Objekt auf die lokale und bei Nach-Objekt auf die Remote-Maschine geht? Oder war das mit "!SYS" gemeint?

Fuerchau
20-01-14, 17:57
CRTDUPOBJ geht natürlich nur innerhalb eines Systems.
Du musst dann also eine Basisdatei zum duplizieren bereits auf dem Zielsystem haben.
SYSCMD = lokal
QUOTE SYSCMD = remote

RCMD wartet, glaube ich, nicht auf das Ende.

msost
21-01-14, 09:27
OK, danke.

Da ich im Vorwege nicht weiß welche Datei genau erstellt werden, kann ich die Basisdatei nicht vorher erstellen (wird alles innerhalb von SQL Statements gebaut, die sich auch ändern können).

Bleibt mir also wohl nur, die erstellten Dateien in eine Datei zu retrieven,die zu lesen, und die Dateien per SNDNETF zu schicken.

Fuerchau
21-01-14, 11:31
SAVRSTxxx wäre dann auch eine Option.

Die Alternative ist mein SQLCPY.
Per WRKRDBDIRE kannst du das/die Zielsystem(e) eintragen.
Mit SQLCPY kannst du Daten von einem System auswählen (Select, join, where, group, having) und in ein anderes System ändern/schreiben/löschen.
Falls das Ziel nicht vorhanden ist, kannst du es automatisch per Create Table, ggf. mit Index, anlegen lassen.