Anmelden

View Full Version : embedded SQL in RPG



muadeep
03-08-06, 10:49
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)

skipper_k
03-08-06, 11:08
Datum in ein Datumsformat bringen.

(TT.MM.JHJJ) z. B. mit %SUBST-Funktion

Dann: Select WEEK('TT.MM.JHJJ') from xxxx

MfG

Klaus

muadeep
03-08-06, 11:21
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!)

skipper_k
03-08-06, 11:37
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.

B.Hauser
03-08-06, 13:25
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