[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Jul 2007
    Beiträge
    29

    Datumsberechnung

    Hallo zusammen,
    ich möchte ein Feld (Num, 8 Stellen, 20080930) 14 Tage aufaddieren. Wie mache ich das am besten, damit auch der Monat etc. richtig addiert wird.

    Kann mir dabei jemand helfen?

    Wie sieht es mit ADDDUR aus?

    Danke im voraus..

    Carsten

  2. #2
    Registriert seit
    Feb 2008
    Beiträge
    104
    geht am besten mit den built in functions, etwa:

    d isodate s d datfmt(*iso)

    und dann zur Berechnung:

    isodate = %date(numdat:*iso);
    isodate = Isodate + %days(zahl);
    numdat = %dec(%xlate('-':' ':%char(isodate)):8:0));

    Karl-Heinz

  3. #3
    Registriert seit
    Nov 2003
    Beiträge
    2.403
    In etwa so.
    Code:
    D DATUM           S              8P 0 INZ(20080925)                    
    D DATUM1          S               D   DATFMT(*ISO)                     
    D                                                                      
    C     *ISO          MOVE      DATUM         DATUM1                     
    C                   ADDDUR    14:*DAYS      DATUM1                     
    C     *ISO          MOVE      DATUM1        DATUM                      
    C                                                                      
    C                   SETON                                        LR

  4. #4
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    ... oder (ab V5R3)

    PHP-Code:
     /Free
        NewDatNum 
    = %Dec(%Date(DatNum:*ISO
                          + %
    Days(Zahl): *ISO);
     /
    End-Free 
    ADDDUR wird im RPG free format nicht unterstützt, deshalb wurden in Release V5R1 eine Reihe von neuen Built-In-Functions (u.a. auch %Days()) zur Datumsrechnung bereitgestellt.

    @Karl-Heinz
    %XLATE kann man sich auch vor V5R3 sparen, in dem man beim Konvertieren in eine alphanumerische Darstellung das Format angibt. Die folgende 0 im Format bedeutet ohne Datumstrennzeichen.

    PHP-Code:
     /Free
        numdat 
    = %dec(%char(isodate: *ISO0):8:0);
     /
    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

Similar Threads

  1. SQL Datum
    By steven_r in forum NEWSboard Programmierung
    Antworten: 6
    Letzter Beitrag: 04-12-06, 12:16

Berechtigungen

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