PDA

View Full Version : FTP-Immer aktuellstes File "Get"n



prsbrc
19-07-07, 13:53
Hi!

Ich habe eine Frage an euch, vieleicht kennt ja jemand die Antwort :D

Ich soll von einem Server im Internet mehrere .csv Dateien per FTP auf unsere iSeries holen und dann weiterverarbeiten.
Das weiterverarbeiten funktioniert schon recht gut (CPYFRMIMPF etc) nur ich möchte es automatisieren das die .csv Datei geholt wird. Das Problem ist die Namensgebung der files:

Zum Beispiel:


firma-ekpreis-Jul18_23Uhr30.csv

Kann ich per CLP irgendwie so eine *LIKE abfrage machen und das neueste damit rausfinden?

Hat da jemand eine Idee?

Danke im Voraus!

Mfg

kuempi von stein
19-07-07, 14:41
mh...
wie gross ist denn da das Mengengerüst ungefähr?
Gibt es da alle 30 Minuten eine neue Datei? Sprich gibt es:
firma-ekpreis-Jul18_21Uhr30.csv
firma-ekpreis-Jul18_22Uhr00.csv
firma-ekpreis-Jul18_22Uhr30.csv
firma-ekpreis-Jul18_23Uhr00.csv
firma-ekpreis-Jul18_23Uhr30.csv

Und heissen die immer so?
oder gibt es auch
firma-ekpreis-Jul18_23Uhr29.csv ?

Also die Frage ist wie genau ist das Schema und mit was muss man rechen dort zu finden/nicht zu finden.

Wenn der Name immer gleich ist und z.B. die Uhrzeit immer im 30 Minutentakt geht, könnte man sich den Namen für den GET ja zusammenbasteln und zuerst versuchen 23:30 zu GETn und wnn nicht gefunden dann 23:00 uns.. immer rückwärts gezählt.

Andere Variante:
Ein Inhaltverzeichnis ausgeben (LS DIR oder so) und das in nem eigenen Programm einlesen und verarbeiten und dann per Programmlogik selber entscheiden.
Letztere Möglichkeit ist nicht schwer zu proggen denke ich. (Hab sowas ähnliches mal gemacht sprich Verzeichnis als Text rüberholen und dann auslesen)

k.

Nachtrag:
Habs gefunden. Einfach im CL nen OVRDBF FILE(OUTPUT) auf ne Datei machen, dann im FTP nen DIR und dann per selbstgestricktes RPG die OUTFILE auswerten.

k.

Hängt eben nun von den Antworten auf meine Fragen ab, was einfacher zu realisieren ist denke ich.

prsbrc
19-07-07, 14:50
Der Name ändert sich immer.
Es gibt so ca fast jeden Tag 1 oder 2 neue Dateien die ich einlesen soll ...

ZB:
......Jul17_11Uhr10.csv
......Jul18_11Uhr30.csv
......Jul18_23Uhr30.csv
etc, etc, etc ...

Ich werde beide varianten mal testen.

Vielen Dank! :cool:

MfG :)

Fuerchau
19-07-07, 19:29
Jede Datei hat ein Erstellungsdatum, nimm dieses doch.

kuempi von stein
20-07-07, 08:18
hihi,

genau das habe ich bewusst nicht vorgeschlagen.
Der Teufel ist ein Eichhörnchen oder wie das heisst.
Dann fummelt da jemand manuell rum, die Datei ist ne alte und hat trotzdem das aktuellste Datum....
nee nee... Regel Nummer eins -> dont trust!

kuempi

Fuerchau
20-07-07, 08:48
Deswegen verschiebe ich verarbeitete Dateien immer in ein anderes Verzeichnis. Dann stellt sich die Frage erst gar nicht.

BenderD
20-07-07, 09:44
jaja, das HK Graber Prinzip und seine Tücken, wer vor Eichhörnchen sicher sein will, muss vorwärts gerichtet synchronisieren, entweder stößt der, der die Dateien erzeugt die Folgeverarbeitung direkt an (per RPC oder FTP remote Command) oder man journalisiert das IFS Verzeichnis (dafür gibt es das !!!) und auf das event, dass ein neuer Eintrag auftaucht, wird automatisch die Weiterverarbeitung angestoßen (RCVJRNE ist dein Freund), die dann auch den Dateinamen kennt und alles damit machen kann, was sie für nötig hält.

mfg

Dieter Bender


hihi,

genau das habe ich bewusst nicht vorgeschlagen.
Der Teufel ist ein Eichhörnchen oder wie das heisst.
Dann fummelt da jemand manuell rum, die Datei ist ne alte und hat trotzdem das aktuellste Datum....
nee nee... Regel Nummer eins -> dont trust!

kuempi

prsbrc
20-07-07, 10:13
Hi!
Ich machs jetzt folgendermaßen:

Ich hole mir per FTP/LS die liste der Dateien im Ordner in eine lokale temporäre Tabelle.
Per RPG lese ich diese Tabelle aus, stöpsle mir aus dem dateinamen das Datum zusammen, vergleiche es mit dem heutigem Datum und mit einer weiteren Tabelle die alle Dateinamen enthält welche schon daowngeloadet wurden und hole mir das aktuelle File.
Ist zwar etwas kompliziert aber funktioniert :D

Danke nochmals für die Hinweise!

MfG