PDA

View Full Version : Datei aus IFS verarbeiten



Joe
05-08-15, 14:53
Hallo Forum.

Eine PC-Anwendung kommuniziert mit der Telebox und stellt EDI-Orders
ins IFS auf der AS400 (V5R3).
Laufzeit: 5.8.2015 11:00
In der STMF: Datum/Uhrzeit der Datenänderung . . . : 05.08.15 11:00:58
Datei wird im Windows-explorer mit Änderungsdatum 13:00 Uhr angezeigt

Über JOBSCDE wird stündlich ein Job aufgerufen um Daten aus dem IFS zu verarbeiten.
1. um 11:10 negativ
2. um 12:10 negativ
3. um 13:10 Daten gefunden und verarbeitet

Kann das mit dem lt. explorer angezeigtem Änderungsdatum 13:00 Uhr zusammenhängen
oder hat sonst jemand eine Idee?

Gruß Joe

Pikachu
05-08-15, 16:07
Vielleicht GMT+2 ?

Fuerchau
05-08-15, 17:37
Genau das ist das Problem.
In Windows/Linux wird eine Datei immer mit GMT angelegt.
Je nach Zeitzone sieht man dann die eigene Zeit.
Damit ist gewährleistet, dass die Zeitmarke weltweit identisch ist und auch sortierbar bleibt.

Leider ist das auf der AS/400 nicht so!
Die AS/400 führt generell nur die Systemzeit.
Für die Zeitzone gibt es zwar QUTCOFFSET, wird aber (außer von IFS-API's) im gesamten System nicht berücksichtigt.
SQL Current_Time, %Time(), usw. liefern immer aktuell die Systemzeit.
Möchte man GMT muss man die Zone selber addieren/Subtrahieren.
Beim Ablegen einer Datei im IFS von der AS/400 aus wird daher generell die Systemzeit genommen.

Beim Kopieren über den Windowsexplorer liegt es nun in Windows, dass hier generell GMT-Zeiten (UTC) übergeben werden um eben die Sortierung beizubehalten.
Die AS/400 zeigt daher 11:00 Uhr an obwohl es schon 13:00 Uhr GMT ist.

Deshalb gibt es in vielen Sprachen halt die diversen Funktionen für gmttime() oder eben localtime().
Es gab mal eine Zeit, da konnte man Lotus-Notes nicht dazu bringen, die Mailzeiten entsprechend der Sommer/Winterzeit des PC's zu nehmen. Die haben immer die Zeitzone selber noch mal draufgerechnet.
Ich bekam daher z.B. von meinen Kunden Mails aus der Zukunft:).

Joe
06-08-15, 09:52
Genau das ist das Problem.
In Windows/Linux wird eine Datei immer mit GMT angelegt.
Je nach Zeitzone sieht man dann die eigene Zeit.
Damit ist gewährleistet, dass die Zeitmarke weltweit identisch ist und auch sortierbar bleibt.

Leider ist das auf der AS/400 nicht so!
Die AS/400 führt generell nur die Systemzeit.
Für die Zeitzone gibt es zwar QUTCOFFSET, wird aber (außer von IFS-API's) im gesamten System nicht berücksichtigt.
SQL Current_Time, %Time(), usw. liefern immer aktuell die Systemzeit.
Möchte man GMT muss man die Zone selber addieren/Subtrahieren.
Beim Ablegen einer Datei im IFS von der AS/400 aus wird daher generell die Systemzeit genommen.

Beim Kopieren über den Windowsexplorer liegt es nun in Windows, dass hier generell GMT-Zeiten (UTC) übergeben werden um eben die Sortierung beizubehalten.
Die AS/400 zeigt daher 11:00 Uhr an obwohl es schon 13:00 Uhr GMT ist.

Deshalb gibt es in vielen Sprachen halt die diversen Funktionen für gmttime() oder eben localtime().
Es gab mal eine Zeit, da konnte man Lotus-Notes nicht dazu bringen, die Mailzeiten entsprechend der Sommer/Winterzeit des PC's zu nehmen. Die haben immer die Zeitzone selber noch mal draufgerechnet.
Ich bekam daher z.B. von meinen Kunden Mails aus der Zukunft:).

Vielen Dank für die ausführlichen Informationen.

Aktuelle habe ich die Verarbeitung noch einmal überprüft.
Dabei fiel mir folgendes auf:

Wie in meiner ursprünglichen Anfrage vermerkt, wurden die Daten erst ab einer bestimmten Uhrzeit gefunden:

1. um 11:10 negativ
2. um 12:10 negativ
3. um 13:10 Daten gefunden und verarbeitet
Hier wurden aber auch Daten verarbeitet, die im IFS standen und im Windows-explorer mit Uhrzeit 15:01
angezeigt wurden.

Die Daten werden mit DSPLNK und anschl. CPYSPLF in eine Datei kopiert und dann verarbeitet.
Wo (AS400 oder PC) kann ich denn drehen, damit die vorhandenen Daten erkannt werden?

Gruß Joe

Fuerchau
06-08-15, 10:01
DSPLNK ist eher die unübliche Art.
Du kannst IFS-Inhalte immer mit der QSH auflisten:

CRTPF MYOUT RCDLEN(256) <= Einmalig
OVRDBF FILE(STDOUT) TOFILE(MYOUT)
QSH CMD('cd /path;ls')

Natürlich gibt es 1000 andere Möglichkeiten.

Fuerchau
06-08-15, 10:45
Ach ja, kleines Rechenexempel:
Die Datei kommt mit Local-Time 13:00 Uhr ins System und wird mit GMT 11:00 Uhr ins IFS gestellt.
Die AS/400 berücksichtigt aber QUTCOFFSET nicht!

Also ist die Datei erst ab 13:00 Uhr tatsächlich verfügbar!