[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Aug 2001
    Beiträge
    309

    Datumsprobleme

    Hallo zusammen! ;-)

    Vieleicht weiss jemand Rat!

    D TageS DS
    D Tag1 d DatFmt(*ISO) Inz(d'2000-01-01')
    D Tag2 d DatFmt(*ISO) Inz(d'2000-01-06')
    D Tag3 d DatFmt(*ISO) Inz(d'2000-04-21')

    D TageXX d Dim(16) Overlay(TageS)

    D BaseDate S d Inz(d'2004-01-02')
    D Today S d DatFmt(*EUR)
    D Jahr S 4S 0

    jetzt würde ich gerne in der "DS" oder aber in die Feldgruppe "TageXX" mit der Jahreszahl aus "BaseDate" (=2004) bzw. der Jahreszahl(=2004) aus "Today" überschreiben!
    Die Monate und Tage sollen in der "DS" bzw. der Feldgruppe
    so wie sie sind erhalten bleiben!

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    D JahrXX 4 overlay(Tagexx)

    Du erhältst ein Array von JahrXX(1) bis JahrXX(16), also nicht noch mal DIM(n).

    Ich würde allerdings nicht zwischen *ISO und *EUR wechseln.
    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

  3. #3
    Registriert seit
    Aug 2001
    Beiträge
    309
    vielen Dank für die schnell Antwort!

    mir ist aber immer noch nicht ganz klar, wie ich jetzt das
    Datum in der "JahrXX" mit 2004 überschreiben kann?

    geht das dann nur mit "MoveL" oder auch mit "Eval" bzw. mit BIF's?

    Ist es auch möglich, für z.B. "Text2" das Monat und den Tag zu ändern?

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

    automatisch kann man das Datum nicht ersetzen, da sind schon ein paar Statements notwendig

    Hier ein Beispiel:
    Code:
    D DSTage          DS                                                   
    D  Tag1                           D   DatFmt(*ISO) inz(D'2000-01-01')  
    D  Tag2                           D   DatFmt(*ISO) inz(D'2000-01-06')  
    D  Tag3                           D   DatFmt(*ISO) inz(D'2000-04-21')  
    D  ArrayTag                       D   overlay(DsTage) dim(3)           
                                                                           
    D Today           S               D   inz(*sys)                        
    D BaseDate        S               D   inz(D'2003-01-01')               
                                                                           
    D Year            S              5U 0                                  
    D ArrYear         S              5U 0 Dim(%elem(ArrayTag))             
     /Free                                                                
      Year = %SubDt(Tag1: *Y);                                           
      Tag1 = Tag1 + %Years(%SubDt(Today: *Y)) - %Years(year);            
                                                                         
      ArrYear = %SubDt(ArrayTag: *Y);                                    
      ArrayTag = ArrayTag + %Years(%Subdt(Today: *Y)) - %Years(ArrYear); 
                                                                         
     /End-Free
    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

  5. #5
    Registriert seit
    Aug 2001
    Beiträge
    309
    hab gleich dazu nochmal eine Frage:

    D TageS DS
    D Tag1 d DatFmt(*ISO) Inz(d'2000-01-01')
    D Tag2 d DatFmt(*ISO) Inz(d'2000-01-06')
    D Tag3 d DatFmt(*ISO) Inz(d'2000-04-21')

    D TageXX d Dim(16) Overlay(TageS)
    D JahrXX 4 overlay(TageXX)

    D BaseDate S d Inz(d'2004-01-02')
    D Today S d DatFmt(*EUR)
    D Jahr S 4S 0

    D DS Inz
    D WorkDate 1 10d DatFmt(*ISO)
    D WorkDay 9 10 0

    Ich möchte jetzt mit dem Feld "WorkDate" über %Lookup prüfen, ob das Datum in der Feldgruppe "TageXX" vorhanden ist!

    C If %Lookup(WorkDate:TageXX) = *null
    :
    C EndIf

    Leider bekomme ich jetzt immer beim Umwandeln des Programm's folgende Fehlermeldung:

    1 Operanden sind mit der Art des Operators nicht kompatibel

    wie muß das SuchArgument "WorkDate" aufgebaut sein, über %lookup in der Feldgruppe zu suchen?

  6. #6
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    Die Built-in-Function %Lookup() liefert bei nicht gefunden *Zeros und nicht *NULL zurück!

    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

  7. #7
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Für Monat und Tag kannst du auch entsprechende Overlays definieren:
    d MonatX 2 overlay(TageXX:6)
    d TagX 2 overlay(TageXX:9)

    die Felder können dann ganz normal referiert und gesetzt werden (eval, move).
    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

  8. #8
    Registriert seit
    Aug 2001
    Beiträge
    309
    Vielen dank für eure schnell Hilfe!

    mfg

Berechtigungen

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