PDA

View Full Version : Felder prüfen mit TEST(D E)



Rincewind
05-12-03, 14:46
Hallo zusammen,

ich arbeite erst seit kurzer Zeit mit ILE (und allem was dazu gehört)

Nun haben wir viele Datenfelder die Numerisch sind (6 Stellig mit einem Extra Century Feld).

Um alles möglichst leicht zu prüfen hatten wir früher ein RPG Programm das das Datum prüft.

Dank TEST(D) ist das ja nun nicht mehr nötig.
Syntax:
Format (z.b. *DMY oder *YMD) TEST(D E) Numerisches Feld

Jetzt habe ich aber ein weiteres Problem:
Ich möchte gerne das Format des Numerischen Feldes mittels einer Variablen vorgeben.
Leider akzeptiert Ile das nicht so ohne weiteres (habe es mit Alphafeldern probiert).

Hat jemand eine einfache Lösung dafür?

Danke

Rince

B.Hauser
05-12-03, 16:51
Hallo Rince,

wie Du bereits festgestellt hast, kann das Format nicht als Variable angegeben werden.
Da das Format ja bekannt sein muss, hast Du nur die Möglichkeit das Datum über eine Select-Anweisung zu prüfen, oder Du schreibst Dir Deine eigene Funktion.

Hier ein Beispiel einer solchen Funktion (Relese V5R1 und höher):


* Prototyp
D ChkDate6N PR N
D PPDate 6P 0 const
D PPFmt 4A value

* Funktion
P ChkDate6N B Export

D ChkDate6N PI N
D PPDate 6P 0 const
D PPFmt 4A value

D Gross C const('DMY')
D Klein C const('dmy')
D FmtMDY C const('*MDY')
D FmtDMY C const('*DMY')
D FmtYMD C const('*YMD')

D MyDate S D

/Free
PPFMT = %Xlate(Klein: Gross: PPFmt);
Monitor;
Select;
When PPFmt = FmtDMY;
MyDate = %Date(PPDate: *DMY);
When PPFmt = FmtMDY;
MyDate = %Date(PPDate: *MDY);
When PPFmt = FmtYMD;
MyDate = %Date(PPDate: *YMD);
other;
Return *Off;
EndSL;
On-Error;
Return *Off;
EndMon;

Return *On;
/End-Free
P ChkDate6N E


Aufruf:


/Free
If ChkDate6N(311299: '*DMY');
Dsply 'Gültiges Datum';
EndIf;

If Not ChkDate6N(MyDate: FmtYMD);
Dsply 'Fehlerhaftes Datum';
Endif
/End-Free


Birgitta

Rincewind
09-12-03, 15:21
3ter Versuch auf den Beitrag zu antworten.

Danke für die Antwort!

Habe es auch so gemacht, nur ist es nicht so flexibel wie eine Variable.

Naja wird schon ne Weile dauern bis wir ein neues Datumsformat haben ;) (zumindest länger als V5R3)


Rince

Fuerchau
09-12-03, 15:40
Schau dir mal das API QWCCVTDT an. Hier kannst du von einem Format in das andere ändern (was auch das selbe sein kann). Dies schließt eine Gültigkeitsprüfung ein.