View Full Version : embedded SQL in RPG
Brauche Hilfe
Habe im Rpg (nicht ILE) ein 8 ste. nummerisches Feld welches
ein Datum beinhaltet z.B. "03082006"
wie kann ich mit embedded SQL daraus die Kalenderwoche
berechnen?
(wie gesagt, nicht ILE, da funkt's)
Datum in ein Datumsformat bringen.
(TT.MM.JHJJ) z. B. mit %SUBST-Funktion
Dann: Select WEEK('TT.MM.JHJJ') from xxxx
MfG
Klaus
kann keine bif's benutzen, da das Pgm kein ILE-Pgm ist sondern leider noch ein RPG-Pgm.
(dieses kann leider aus bestimmten Gründen auch nicht auf ILE-Umgestellt werdern!)
Wie wär's damit?
select week(substr(25102006, 1, 2)||'.'||
substr(25102006, 3, 2)||'.'||
substr(25102006, 5, 4))
from sysibm/sysdummy1
kuempi von stein
03-08-06, 12:07
Hello,
coole Sach.
Den Sysdummy1 habe ich bisher noch nie beachtet.
Soweit funzt das ja gut, nur ist das doch week und nicht week_iso?
Ich sag nur 4.1.1970 oder 29.12.2003!
k.
Achtung!
Die Skalare Funktion WEEK ermittelt nicht die Kalenderwoche nach ISO, sondern setzt mit dem ersten Januar als erstem Tag des Jahres in Kalenderwoche 1 auf und Sonntag ist der erste Tag der Woche!
Die Definition der Kalenderwoche nach ISO ist wie folgt:
1. Die Kalenderwoche beginnt immer mit einem Montag
2. Die erste Kalenderwoche muss immer mindestens 4 Tage des neuen Jahres beinhalten.
--> der 4. Januar ist immer in KW1 oder der erste Donnerstag des Jahres ist in KW1
Um die Kalenderwoche nach ISO zu berechnen muss die skalare Funktion WEEK_ISO verwendet werden.
Ausserdem ist es nicht zwingend notwendig auf eine Datei zuzugreifen. Mit einem einfachen SET-Statement kann man skalare Funktionen ausführen, ohne Datei-Zugriff
In embedded SQL mit numerischem Datum kann die KW wie folgt ermittelt werden:
C/EXEC SQL
C+ Set :KW = Week_Iso((Substr(Digits(:DatNum), 5, 4) concat '-' concat
C+ Substr(Digits(:DatNum), 3, 2) concat '-' concat
C+ Substr(Digits(:DatNum), 1, 2)))
C/END-EXEC
Übrigens in der iNN - eNews 7/2006 hatten wir unter Tekki-Corner einen Artikel zu genau diesem Thema.
(Leider ist diese iNN - eNews z.Z. nicht online, da wir sie gestern Abend durch die August-Ausgabe ersetzt haben)
Aber bei Intresse einfach nachschauen unter:
www.iNN-online.de (http://iNN-Online.de)
Birgitta