[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Mar 2011
    Beiträge
    94

    clear auf Datumsfeld mit DFT in DDS

    Hallo zusammen,

    ich habe Feld in DDS mit DFT(01.01.1999) definiert.
    Wenn ich dieses Feld z.B. mit CLEAR oder RESTET im RPG anspreche wir das Feld der Datei mit 01.01.0001 belegt.
    Schreibe ich einen Satz z.B. mit DFU in die Datei wird das DFT Datum aus der Dateibeschreibung in das Feld übertragen.

    Gibt es in RPG einen Befehl um den DFT Wert in das Dateifeld zu übertragen?

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Nur, wenn du in der INZSR-Routine das Feld mit einem Wert initialisierst.
    Clear = Löschen auf Runtime-Default (*zero, *Blank, 1.1.0001).
    Reset = Reinit mit dem Wert aus der INZSR.

    Also:

    begsr *INZSR;
    Eval MyDate = %date('01.01.1999');
    endsr;
    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
    Mar 2011
    Beiträge
    94
    Hallo Fuerchau,
    besten Dank für die schnelle Antwort.
    Wofür ist denn dann das Schlüsselwort DFT in der DDS Beschreibung?

  4. #4
    Registriert seit
    Aug 2001
    Beiträge
    2.869
    RPG erstellt intern I/O-Anweisungen, die alle Spalten aus den angegebenen Dateien beinhalten.
    Sofern Felder nicht explizit gesetzt werden, steht in diesen I/O-Anweisungen der Default-Wert des Datentypen.

    Wird der Satz geschrieben, so wird dieser Default-Wert übernommen, da das Feld ja übergeben wurde.

    Wenn Du dagegen den Datensatz z.B. mit SQL schreibst und die Felder, die Du benötigst explizit angibst, wird für die fehlenden Felder der jeweilige Default-Wert aus dem DDS bzw. SQL (bei SQL beschriebenen Tabellen) übernommen.
    Wenn Du zum Schreiben eine logische Datei, in der das Datums-Feld fehlt verwenden würdest, würde ebenfalls der Default-Wert aus dem DDS ziehen.

    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

  5. #5
    Registriert seit
    Mar 2011
    Beiträge
    94
    @Birgitta: Danke für die Info.

  6. #6
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Das DFT gab es schon bevor es SQL auf der AS/400 gab.
    Nur in diesem Fall wurde es ausschließlich von DSPF's interpretiert.
    D.h., wenn man in der DSPF auf eine PF referiert und dort ein paar Schlüsselwörter wie DFT, COLOR, hinterlegt, wurden diese automatisch zur Compilezeit übernommen und bei der Anzeige am Terminal wurden diese Attribute dann verwendet.
    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

  7. #7
    Registriert seit
    Nov 2003
    Beiträge
    2.304
    Vielleicht über eine externe Datenstuktur mit INZ(*EXTDFT)?

  8. #8
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Dies ist so wie mit allen INZ-Anweisungen. Diese initialisieren die Felder per MI-Definition als Template zur Compilezeit.
    Beim Fehlen einer *INZSR-Routine löscht RESET genauso wie CLEAR auf den Typ-Grundzustand.
    Hat das Programm eine *INZSR, kann auch leer sein, dann baut der Compiler beim Auftauchen einer RESET-Anweisung für diese Struktur/das Feld eine Kopie, die in der *INZSR gespeichert wird und somit für RESET verfügbar ist.
    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

  9. #9
    Registriert seit
    Nov 2003
    Beiträge
    2.304
    Ein INZ-Wert genügt dem RESET aber auch...

    The RESET operation is used to restore a variable to the value held at the end of the *INIT phase. This value is called the reset value. If there is no *INZSR subroutine, the reset value is the same as the initial value (either the value specified by the INZ{(initial value)}, or the default value). If there is a *INZSR subroutine, the reset value is the value the variable holds when the *INZSR subroutine has completed. - (Quelle)

  10. #10
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    OK, das ist mir auch noch neu.
    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. Frage zu SAVACT CLEAR(*ALL)
    By hs in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 28-01-16, 11:50
  2. Clear *all
    By malzusrex in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 11-11-14, 07:30
  3. MC Access - ODBC - Datumsfeld
    By Henrik Motzkus in forum IBM i Hauptforum
    Antworten: 8
    Letzter Beitrag: 04-06-02, 09:11

Berechtigungen

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