[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Oct 2003
    Beiträge
    192

    Felder prüfen mit TEST(D E)

    Hallo zusammen,

    ich arbeite erst seit kurzer Zeit mit ILE (und allem was dazu gehört)

    Nun haben wir viele Datenfelder die Numerisch sind (6 Stellig mit einem Extra Century Feld).

    Um alles möglichst leicht zu prüfen hatten wir früher ein RPG Programm das das Datum prüft.

    Dank TEST(D) ist das ja nun nicht mehr nötig.
    Syntax:
    Format (z.b. *DMY oder *YMD) TEST(D E) Numerisches Feld

    Jetzt habe ich aber ein weiteres Problem:
    Ich möchte gerne das Format des Numerischen Feldes mittels einer Variablen vorgeben.
    Leider akzeptiert Ile das nicht so ohne weiteres (habe es mit Alphafeldern probiert).

    Hat jemand eine einfache Lösung dafür?

    Danke

    Rince

  2. #2
    Registriert seit
    Aug 2001
    Beiträge
    2.873

    Datums-Prüfung

    Hallo Rince,

    wie Du bereits festgestellt hast, kann das Format nicht als Variable angegeben werden.
    Da das Format ja bekannt sein muss, hast Du nur die Möglichkeit das Datum über eine Select-Anweisung zu prüfen, oder Du schreibst Dir Deine eigene Funktion.

    Hier ein Beispiel einer solchen Funktion (Relese V5R1 und höher):
    PHP-Code:
     Prototyp
    D ChkDate6N       PR              N               
    D   PPDate                       6P 0 
    const       
    D   PPFmt                        4A   value       
     
     
    Funktion
    P ChkDate6N       B                   Export         
     
    D ChkDate6N       PI              N                  
    D   PPDate                       6P 0 
    const          
    D   PPFmt                        4A   value          
                                                         
    D Gross           C                   
    const('DMY')   
    D Klein           C                   const('dmy')   
    D FmtMDY          C                   const('*MDY')  
    D FmtDMY          C                   const('*DMY')  
    D FmtYMD          C                   const('*YMD')  
                                                         
    D MyDate          S               D                  
                                                         
     
    /Free                                               
       PPFMT 
    = %Xlate(KleinGrossPPFmt);              
       
    Monitor;                                          
          
    Select;                                        
          
    When PPFmt FmtDMY;                           
               
    MyDate = %Date(PPDate: *DMY);             
          
    When PPFmt FmtMDY;                           
               
    MyDate = %Date(PPDate: *MDY);
          
    When PPFmt FmtYMD;              
               
    MyDate = %Date(PPDate: *YMD);
          
    other;                            
          Return *
    Off;                      
          
    EndSL;                            
       
    On-Error;                            
          Return *
    Off;                      
       
    EndMon;                              
                                            
       Return *
    On;                          
     /
    End-Free                              
    P ChkDate6N       E 
    Aufruf:
    PHP-Code:
     /Free
         
    If ChkDate6N(311299'*DMY');
             
    Dsply 'Gültiges Datum';
         EndIf;

         If  
    Not ChkDate6N(MyDateFmtYMD);
             
    Dsply 'Fehlerhaftes Datum';
         Endif
     /
    End-Free 
    Birgitta
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 4. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  3. #3
    Registriert seit
    Oct 2003
    Beiträge
    192

    Test(D E)

    3ter Versuch auf den Beitrag zu antworten.

    Danke für die Antwort!

    Habe es auch so gemacht, nur ist es nicht so flexibel wie eine Variable.

    Naja wird schon ne Weile dauern bis wir ein neues Datumsformat haben (zumindest länger als V5R3)


    Rince

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Schau dir mal das API QWCCVTDT an. Hier kannst du von einem Format in das andere ändern (was auch das selbe sein kann). Dies schließt eine Gültigkeitsprüfung ein.
    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

Similar Threads

  1. DDMF prüfen
    By Christian.Hesse in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 03-01-07, 11:53
  2. FETCH n ROws in einzelne Felder einer DS
    By pedro-zapata in forum NEWSboard Programmierung
    Antworten: 6
    Letzter Beitrag: 11-09-06, 12:34
  3. Numerische Felder in Alfa-Feldgruppe ausgeben
    By dino in forum NEWSboard Drucker
    Antworten: 4
    Letzter Beitrag: 01-09-06, 12:54
  4. Gezonte Felder aus Bildschirm-/Druckdateien intern gepackt
    By Xanas in forum NEWSboard Programmierung
    Antworten: 4
    Letzter Beitrag: 13-06-06, 14:38
  5. User vor Sicherung prüfen
    By linguin in forum IBM i Hauptforum
    Antworten: 10
    Letzter Beitrag: 16-05-06, 12:14

Berechtigungen

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