[NEWSboard IBMi Forum]

Thema: DatFmt in UDF

Hybrid View

  1. #1
    Registriert seit
    Aug 2001
    Beiträge
    2.982
    Die Funktion funktioniert korrekt.
    SQL arbeitet bei dem Datum immer mit der Scaliger No (einer internen laufenden Nr.).
    Das Datums-Format wird nur zur (lesbaren) Anzeige der Scaliger No verwendet.
    Welches Format verwendet wird, hängt von dem Datums-Format, das im Job/Verbindung verwendet wird.

    Ich vermute, in deiner Umgebung wird ein Datums-Format mit einem 2-stelligen Jahr verwendet. Ändere das Datums-Format im Job/Verbindung und Du wirst sehen, dass alles korrekt funktioniert.

    Wenn Du ++++++++ siehts bedeutet das lediglich, dass das Datum im aktuellen Format nicht angezeigt werden kann.

    NULL-Werte werden entweder mit einem - oder null oder überhaupt nicht angezeigt.

    Wenn Du Deine UDF debugst wirst Du feststellen, dass bei einem Datum vor 1940 oder nach 2039 der Handler nicht aktiviert wird.

    Ich habe eine ähnliche Funktion (außer, dass ich im Fehler-Fall keine NULL-Werte, sonder echte Datums-Werte ausgebe).

    Click image for larger version. 

Name:	Datum.jpg 
Views:	205 
Size:	163,0 KB 
ID:	589



    Birgitta
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 6. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.973
    Wie Birgitta schon ausführte, die SQL-Funktion selber interessiert sich für kein Datumformat, da der Inhalt immer vom Typ DATE ist.
    Entscheidend ist hier das Datumformat deiner Programme!

    Wenn du in RPGLE als DATFMT kein EUR oder ISO verwendest sondern normal YMD oder DMY, kann dein RPG nur den eingeschränkten Datenbereich.
    Der Fehler passier dann nicht unbeding im SQL-Bereich.

    Es nützt also nichts, wenn du per "set option datfmt=*ISO" verwendest, dein RPG aber nur mit 6-stelligem Datum arbeitet. Die SQL-Variablen werden korrekt definiert (10-stellig), allerdings wird vom Precompiler ja eine Zuweisung "MyRpgDate = SQLnnnn;" generiert und da bekommst du dann einen Fehler.

    Du kannst es ganz einfach auch mit STRSQL ausprobieren.
    Setze per F13 ein Format wie DMY dann siehst die die Ausgabe als ++++++.
    Setze *ISO oder *EUR dann kommt das Format korrekt.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

Similar Threads

  1. DATFMT bei CREATE TABLE
    By lorenzen in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 21-03-01, 14:44

Tags for this Thread

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •