-
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?
-
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;
-
Hallo Fuerchau,
besten Dank für die schnelle Antwort.
Wofür ist denn dann das Schlüsselwort DFT in der DDS Beschreibung?
-
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: Danke für die Info.
-
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.
-
Vielleicht über eine externe Datenstuktur mit INZ(*EXTDFT)?
-
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.
-
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)
-
OK, das ist mir auch noch neu.
Similar Threads
-
By hs in forum IBM i Hauptforum
Antworten: 3
Letzter Beitrag: 28-01-16, 10:50
-
By malzusrex in forum IBM i Hauptforum
Antworten: 1
Letzter Beitrag: 11-11-14, 06:30
-
By Henrik Motzkus in forum IBM i Hauptforum
Antworten: 8
Letzter Beitrag: 04-06-02, 08:11
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks