[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Aug 2001
    Beiträge
    2.942
    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

  2. #2
    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?

  3. #3
    Registriert seit
    Aug 2001
    Beiträge
    2.942
    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

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.785
    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

  5. #5
    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
  •