[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    Hallo,

    hier einige Erklärungen:

    1. Wie wird ein Datums- oder Zeit-Feld definiert?
    1.1. im DDS mit L für Datum, T für Zeit und Z für Zeitmarke jeweils ohne Längenangabe
    1.2. in RPG mit D für Datum, T für Zeit und Z für Zeitmarke jeweils ohne Längenangabe

    2. Welches Datums-Format wird in RPG verwendet?
    2.1. Das Format, das in den D-Bestimmungen bei der Definition des Datums- oder Zeitfeldes im Schlüssel-Wort DATFMT angegeben wurde.
    2.2. Wurde in den D-Bestimmungen das Schlüssel-Wort DATFMT nicht angegeben, gilt das Datumsformat, das im Schlüssel-Wort DATFMT in den H-Bestimmungen angegeben wurde.
    2.3. Wurde das Schlüssel-Wort DATFMT weder in den D- noch in den H-Bestimmungen angegeben, wird das Datums-Format *ISO verwendet.

    Für die Zeit gilt das Ganze analog nur mit dem Schlüssel-Wort TIMFMT.

    Für Zeitmarken gibt es im Moment nur das ISO-Format.

    3. Wie wird ein Datums-Feld initialisiert?
    Im Gegensatz zu SQL kann RPG eine alphanumerische Repräsentation eines Datums oder einer Zeit als Datum oder Zeit erkennen und verwenden.

    Aber es ist nicht notwendig Built-in-Funktionen zu benutzen.
    Bei Datums-Feldern genügt ein D vor das Literal zu stellen. Der String muss allerdings das Format, das in den H-Bestimmungen angegeben wurde oder ,sofern das Schlüssel-Wort DATFMT nicht in den H-Bestimmungen angegeben wurde, im Format *ISO aufbereitet sein.

    Beispiel:
    PHP-Code:
    H DATEDIT(*DMYDatFmt(*Eur)             
     *--------------------------------------------------------
    D DateIso         S               D   DatFmt(*Isoinz(D'30.10.2004')  
    D DateDMY         S               D   DatFmt(*DMY-)
     *--------------------------------------------------------
      /
    Free                                            
         
    If DateIso >= D'15.10.2004';                 
            
    Dsply DateIso;                            
         EndIf;    
                                       
         
    DateDMY D'30.10.2004';    
                     
         If 
    DateDMY DateIso;                        
            
    Dsply DateDMY;                            
         EndIf;
                                           
         *
    InLR = *On;                                 
     /
    End-Free 
    Das gilt analog auch für die Zeit-Felder. Bei Zeit-Literalen muss ein T vorangestellt werden.

    PHP-Code:
     /Free
         MyTime 
    T'23:47:17';
     /
    End-Free 
    Werden Zeitmarken-Literale verwendet, muss ein Z vorangestellt werden:
    PHP-Code:
     /Free
        MyTimeStamp 
    Z'2004-10-30-11.33.44.000000';
     /
    End-Free 
    Birgitta
    Birgitta Hauser

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

  2. #2
    Registriert seit
    Sep 2004
    Beiträge
    23

    Thumbs up Kaum macht man's richtig - dann klappt's!

    Danke vielmals, Birgitta!

    1. Es ist also das dem Literal vorangestellte D, das den Unterschied ausmacht.

    2. Jetzt muß ich doch auch einmal PHP testen, aber wie verhindere ich, daß die Leerzeichen aus meinem mit Ctrl-V eingefügten Code komprimiert werden, und warum mischt er mir die Farben so durcheinander ?
    PHP-Code:
       1 H DatFmt(*Eur.) DatEdiT(*DMY.)
    Eingabebestimmungen
    DSPF
     274
    =*EUR.D 18 27 F2AUDT Auftragsdatum
     124 D W1MIEU D DatFmt
    (*Eur.) Inz(D'01.01.1990')
     
    125 D W1MXEU D DatFmt(*Eur.) Inz(D'31.12.2049')
    1001 CDatumsprüfungAuftragsdatum
    1004 C 
    If F2AUDT <> *Loval
    1005 C 
    and (F2AUDT W1MIEU or
    1006 C F2AUDT W1MXEU)
    1007 C Eval M0MSGT = %Trim(M0MSGT) +
    1008 C ' * Auftragsdatum!'
    1009 C Eval *In81 = *On
    1000 C 
    EndIf 
    Beste Grüße
    Werner.
    Werner Kakuschky

  3. #3
    Registriert seit
    May 2002
    Beiträge
    1.121
    hmm, ich muss das thema noch einmal auf nehmen.

    ich habe eine Datei mit SQL erstellt. Diese beinhaltet ein Datumsfeld.
    PHP-Code:
    Create Table LARS/EHStammdaten   (
    ....
    "EINDATUM" for Column EHS1BEL    date     not Null,
    .... 
    In einem RPG-Proggi wird diese Datei aus einer anderen befüllt. In dieser ist das Datum 8stellig num angelegt und das Datum steht in der Form JJJJMMTT darin.

    Wie bekomme ich nun diese Feld elegant in das Datumsfeld ??

    Gruß Ronald

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    mydate = %date(yydate:*CYMD0);
    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

  5. #5
    Registriert seit
    May 2002
    Beiträge
    1.121
    hm, konnte ich so nicht wandeln. nur mit einem %EditC
    PHP-Code:
    Eval      EHS1BEL   = %Date(%EditC(kd1bel:'X'):*CYMD0 
    nun bekomme ich einen Datums-/Zeitmarkenfehler.
    im feld kd1bel steht 19900520

  6. #6
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Dann mach es mit %editw:
    EHS1BEL = %Date(%EditW(kd1bel:'0____-__-__'):*ISO)
    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

  7. #7
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    So klappt es:

    d TestNum s 8 0 inz(19900522)
    d TestDate s d

    c/free
    TestDate = %date(TestNum);
    return;
    /end-free

    Der 2. Parameter von %date gibt das Ziel- und nicht das Quellformat an !!
    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. RPG: Client Infos lesen?
    By robertki in forum NEWSboard Programmierung
    Antworten: 25
    Letzter Beitrag: 19-01-07, 08:42
  2. Problem mit Java-Methoden Aufruf aus ILE RPG?
    By Stoeberl in forum NEWSboard Programmierung
    Antworten: 8
    Letzter Beitrag: 10-01-07, 10:58
  3. RPG goes Web
    By jth in forum NEWSboard Programmierung
    Antworten: 1
    Letzter Beitrag: 21-12-06, 11:13
  4. Keine Probleme mit Parametern
    By harkne in forum NEWSboard Programmierung
    Antworten: 5
    Letzter Beitrag: 01-06-06, 12:42
  5. SQL .. for update of (RPG embedded SQL)
    By loeweadolf in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 01-06-06, 09:43

Berechtigungen

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