[NEWSboard IBMi Forum]

Thema: Datumsproblem

Hybrid View

  1. #1
    Registriert seit
    Aug 2001
    Beiträge
    309
    und wie bekomm ich das (im RPG) in das entsprechende Format?

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

  3. #3
    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 

  4. #4
    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

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

  6. #6
    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


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

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

  9. #9
    Registriert seit
    Aug 2001
    Beiträge
    309
    hab mir die SQL-Fehlermeldung SQL0187 (WRKMSGF QSQLMSG) mal etwas genauer angeschaut:
    PHP-Code:
                                                                 System:   BHSWHR  
     Nachrichten
    -ID . . . . . . . :   SQL0187                                      
     Nachrichtendatei 
    . . . . . . :   QSQLMSG                                      
       Bibliothek 
    . . . . . . . . :     QSYS                                       
                                                                                   
     Nachricht 
    . . . :   Verwendung der gekennzeichneten Dauer ungültig.           
     
    Ursache  . . . . :  Einer der folgenden Fehler trat auf:                      
         -- 
    Eine gekennzeichnete Dauer ist angegebenist aber nicht der Operand   
       des Additions
    oder Subtraktionsoperators.                                  
         -- 
    Eine gekennzeichnete Dauer von JahrenMonaten oder Tagen ist als      
       Additions
    oder Subtraktionsoperand angegebender andere Operand ist jedoch
       kein Datum und keine Zeitmarke
    .                                             
         -- 
    Eine gekennzeichnete Dauer von Mikrosekunden ist als Additionsoder   
       Subtraktionsoperand angegeben
    der andere Operand ist jedoch keine Uhrzeit  
       und keine Zeitmarke
    .                                                        
         -- 
    Eine gekennzeichnete Dauer von Stunden Minuten oder Sekunden ist als   
       Additions
    oder Subtraktionsoperand angegebender andere Operand ist jedoch
       keine Zeitmarke
    .
         -- 
    Eine gekennzeichnete Dauer ist als linker Operand einer Subtraktion   
       angegeben
    .                                                                 
         -- 
    Der für die gekennzeichnete Dauer angegebene Wert ist nicht numerisch.
     
    Fehlerbeseitigung:  Verwendung der gekennzeichneten Dauer korrigieren. Die   
       
    Anforderung wiederholen
    Kann es sein, daß das SQL-Statmant (Addition von 1 Tag) in einem SQLRPG womöglich gar nicht funkt?

  10. #10
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    Hallo,

    hättest dir mal besser die Postings von Baldur oder Kampi4 ansehen sollen

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

    Dieter Bender,

    der auch froh ist, dass heute Freitag ist

    edit: und jetzt das DAYS gesehen hat


    Zitat Zitat von muadeep
    hab mir die SQL-Fehlermeldung SQL0187 (WRKMSGF QSQLMSG) mal etwas genauer angeschaut:
    PHP-Code:
                                                                 System:   BHSWHR  
     Nachrichten
    -ID . . . . . . . :   SQL0187                                      
     Nachrichtendatei 
    . . . . . . :   QSQLMSG                                      
       Bibliothek 
    . . . . . . . . :     QSYS                                       
                                                                                   
     Nachricht 
    . . . :   Verwendung der gekennzeichneten Dauer ungültig.           
     
    Ursache  . . . . :  Einer der folgenden Fehler trat auf:                      
         -- 
    Eine gekennzeichnete Dauer ist angegebenist aber nicht der Operand   
       des Additions
    oder Subtraktionsoperators.                                  
         -- 
    Eine gekennzeichnete Dauer von JahrenMonaten oder Tagen ist als      
       Additions
    oder Subtraktionsoperand angegebender andere Operand ist jedoch
       kein Datum und keine Zeitmarke
    .                                             
         -- 
    Eine gekennzeichnete Dauer von Mikrosekunden ist als Additionsoder   
       Subtraktionsoperand angegeben
    der andere Operand ist jedoch keine Uhrzeit  
       und keine Zeitmarke
    .                                                        
         -- 
    Eine gekennzeichnete Dauer von Stunden Minuten oder Sekunden ist als   
       Additions
    oder Subtraktionsoperand angegebender andere Operand ist jedoch
       keine Zeitmarke
    .
         -- 
    Eine gekennzeichnete Dauer ist als linker Operand einer Subtraktion   
       angegeben
    .                                                                 
         -- 
    Der für die gekennzeichnete Dauer angegebene Wert ist nicht numerisch.
     
    Fehlerbeseitigung:  Verwendung der gekennzeichneten Dauer korrigieren. Die   
       
    Anforderung wiederholen
    Kann es sein, daß das SQL-Statmant (Addition von 1 Tag) in einem SQLRPG womöglich gar nicht funkt?
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  11. #11
    Registriert seit
    Aug 2001
    Beiträge
    309
    die Posting der beiden (Baldur & Kampi4) habe ich gelesen und das Statment wurde auch korrigiert! :-)

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

    sorry,
    aber die obige Fehlermeldung "SQL0187" kommt nach der Korrektur!

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
  •