[NEWSboard IBMi Forum]

Thema: Datumsproblem

Hybrid View

  1. #1
    Registriert seit
    Aug 2001
    Beiträge
    309

    Datumsproblem

    Hallo *all

    Ist es möglich in einem RPG (nicht RPGLE) ein 8 stelliges Feld (in dem ein Datum "31012006" o. auch "20060131") um einen Tag zu erhöhen, so daß dann dementsprechend auf Februar geändert wird!

    (vielleicht mit SQL in einem "SQLRPG")

    RPGLE (ILE) bzw. SQLRPGLE wär mir klar nur bei RPG bzw. SQLRPG weiß ich leider nicht weiter!

    Fals ja, wie?

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Native RPG gehts nur mit der alten bekannten Rechenmethode:
    Tag = Tag+1
    If Tag>Tage(Monat)
    :
    :

    In SQL:

    set :mynewdate = :olddate + 1 days

    newdate und olddate sind vorher in ISO-Format zu bringen (YYYY-MM-DD) und hinterher kannst du das ja wieder in eine Zahl umformatieren.
    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
    und wie bekomm ich das (im RPG) in das entsprechende Format?

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Also eine Zahl im RPG in eine Struktur zu stellen ist doch wohlnicht das Problem:

    IMYDATE DS
    I 1 40MYYEAR
    I I '-' 5 5
    I 6 7 20MYMON
    I I '-' 8 8
    I 9 10 MYDAY

    Nun nur noch das Datum in diese Struktur zerlegen und hinterher wieder mit Einzelbefehlen zusammenbauen:

    MyNumDate = MYYEAR * 10000 + MYMON * 100 + MYDAY

    Diese Berechnung überlasse ich nun dir.
    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
    das mit der Struktur war mir schon klar!

    Nur beim Umwandeln bekomme ich leider immer diesen Fehler:

    PHP-Code:
    Satz    *...+... ...+... ...+... ...+... ...+... ...+... ...+... ...+... 8
      362        C
    SET :NEWDAT MYDATE 1 DAYS                                           
    5722ST1 V5R3M0 040528           SQL
    -RPG-Programm erstellen         SIBESMLAUX           
                                                 DIAGNOSENACHRICHTEN                        
    MSG ID  WTK  SATZ  TEXT                                                                 
    SQL0104  30     362  Position 23 Token MYDATE ungültig
    Gültige Token: :.               
                        
    Nachrichtenzusammenfassung                                          
      Gesamt    Info   Warnung      Fehler  Wertigk
    Beendigung                             
          1        0         0          0        1         0 
    Die Anweisungen in meinem Programm schauen so aus:

    PHP-Code:
    IMYDATE      DS                                   
    I                                        1   40YY 
    I I 
    '-'                                  5   5    
    I                                        6   70MM 
    I I 
    '-'                                  8   8    
    I                                        9  100DD 

    C                     MOVEL
    *YEAR     YY      4
    C                     MOVEL
    *MONTH    MM      2
    C                     MOVEL
    *DAY      DD      2

    C
    /EXEC SQL                      
    C
    SET :NEWDAT MYDATE 1 DAYS
    C
    /END-EXEC 

  6. #6
    Registriert seit
    Sep 2005
    Beiträge
    54
    Ich würde sagen, dass vor das "mydate" noch ein Doppelpunkt muss. Also so:

    PHP-Code:
    C/EXEC SQL                       
    C
    SET :NEWDAT = :MYDATE 1 DAYS 
    C
    /END-EXEC 
    Mfg KAMPI

  7. #7
    Registriert seit
    Sep 2006
    Beiträge
    162
    Wie wäre es mit eine RPGLE Routine die das Datum um so viele Tage erhöht wie du Lust hast ??


    PHP-Code:
    d rtncde s 7 
    d tage s 7 0 
    d datum_parm s 8 0 
    d datum_d s d 
    d zeit_parm s 6 0 
    d zeit_t s t 
    d timestamp s z 
     
    *entry plist 
    c parm rtncde 
    c parm tage 
    c parm datum_parm 
     
    eval rtncde = *blanks 
    *iso test(d edatum_parm 
    if not %error 
    *iso move datum_parm datum_d 
    else 
    eval rtncde '*Error' 
    endif 
     
     
    if rtncde ' ' 
    c adddur tage:*d datum_d 
    c movel datum_d datum_parm 
    endif 
     
    return 
    Gruß
    DVE

  8. #8
    Registriert seit
    Aug 2001
    Beiträge
    309
    zu DVE

    wenn ich es mit RPGLE machen könnte/dürfte würde ich es mit
    SQL machen und da wär es mir klar bzw. wärs kein Problem!

    zu Kampi4:

    das hatte ich auch schon und da gibt's dann folgenden Fehler:

    PHP-Code:
    Satz    *...+... ...+... ...+... ...+... ...+... ...+... ...+... ...+... 8
      362        C
    SET :NEWDAT = :MYDATE 1 DAYS                                          
    5722ST1 V5R3M0 040528           SQL
    -RPG-Programm erstellen         SIBESMLAUX           
                                                 DIAGNOSENACHRICHTEN                        
    MSG ID  WTK  SATZ  TEXT                                                                 
    SQL0312  30     362  Position 24 Variable MYDATE nicht definiert oder nicht             
                         verwendbar
    .                                                        
                        
    Nachrichtenzusammenfassung                                          
      Gesamt    Info   Warnung      Fehler  Wertigk
    Beendigung                             
          1        0         0          0        1         0                                
    Fehler der Wertigkeitsstufe 30 in Quelle gefunden


  9. #9
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Definiere dazu folgendes:

    I DS
    I 1 10 MYDATE

    Ich denke, dass der SQL-Compiler in diesem Fall die Struktur ablehnt, da es sich nicht um eine Single-Variable handelt.
    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

  10. #10
    Registriert seit
    Aug 2001
    Beiträge
    309
    stimmt daß war die Fehlermeldung!

    Aber jetzt bekomme ich folgende Meldung:
    PHP-Code:
    Satz    *...+... ...+... ...+... ...+... ...+... ...+... ...+... ...+... 8
      363        C
    SET :NEWDAT = :MYDATE 1 DAYS                                          
    5722ST1 V5R3M0 040528           SQL
    -RPG-Programm erstellen         SIBESMLAUX           
                                                 DIAGNOSENACHRICHTEN                        
    MSG ID  WTK  SATZ  TEXT                                                                 
    SQL0187  30     363  Position 35 Verwendung der gekennzeichneten Dauer                  
                         ungültig
    .                                                          
                        
    Nachrichtenzusammenfassung                                          
      Gesamt    Info   Warnung      Fehler  Wertigk
    Beendigung                             
          1        0         0          0        1         0 
    Wie muß den das Feld NEWDAT definiert sein als 10 alpha oder 10 num. oder auch als DS?

Similar Threads

  1. Datumsproblem
    By Joe in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 26-08-05, 09:11

Berechtigungen

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