1.3.13 StpDDFfield – Felddefinitionen in DDFDF.DAT
StpDDFfield( strBufName, nlDateiindex, strMask, strValue );
|
Argumente
|
StrBufName
Buffer der Datei DDFDF.DAT (standard: strDDF)
| ||||||||||||
|
|
nlDateiindex:
Aus diesem Parameter wird zusammen mit dem Feldindex (Bytes 1-3 von strValue) der Key für den Datensatz (DDFDF), in dem die Felddefinition hinterlegt wird, gebildet:
„F“ + nlDateiindex (4 Bytes rechtsbündig mit führenden Leerzeichen) + lfd.Nummer (1-15, wird aus strValue errechnet)).
| ||||||||||||
|
|
StrMask
Maskierungszeichen. Wird das Zeichen in strValue eingesetzt, wird an dieser Stelle der Wert nicht überschrieben.
| ||||||||||||
|
|
StrValue
Definition des Feldes, die neu eingetragen oder geändert wird.
Byte 1-3 dieses Strings enthalten rechtsbündig mit führenden Leerzeichen den Feldindex.
Dieser ergibt die Position im Datensatz (DDFDF) mit dem Key laut nlDateiindex, an die die 100 Byte Feldinformation geschrieben werden:
| ||||||||||||
|
Rückgabewert:
|
StpRc:
| ||||||||||||
|
Fehlerarten:
|
Analog StpUpp
| ||||||||||||
|
Beschreibung
|
Diese Funktion ändert oder fügt eine Felddefinition ein. Eine Prüfung wird durchgeführt, ob der Feldindex >= der Anzahl Felder im Dateibeschreibungssatz für diese Datei ist.
Es wird außerdem geprüft, ob das Vorgängerfeld im DDFDF definiert ist. Weitere Besonderheiten siehe unten.
Zuerst wird der DDFDF-Satz lt. nlDateiindex und Feldindex (aus strValue) gelesen, also der Satz mit dem Key „F“ + Dateiindex (4 Byte rechtsbündig mit führenden Leerzeichen) + lfd.Nr (4 Byte rechtsbündig mit führenden Leerzeichen).
Wenn es diesen Satz nicht gibt, wird er neu geschrieben: Key + Rest Leerzeichen.
Die Dateibeschreibung mit der richtigen Anzahl Felder muss angelegt sein.
Siehe auch Kapitel „Satzaufbau der DDFDF.DAT für die StpDDF-Befehle“.
| ||||||||||||
|
Funktionsart
|
STPFunktion
| ||||||||||||
|
Beispiele
|
StpDDFfield("060",100,"°"," 961067C6 10 Zusatz
PLZ 6
0");
StpDDFfield("060",nlDateiindex,"°","1351228C15 15 BIC
15 0");
|
StpDDFfield verhindert die versehentliche Änderung individuell angepasster Felder gemäß den folgenden Kriterien:
-
Formatverkleinerungen werden nicht zugelassen (z.B. Feld ist „C4“ und soll auf „C2“ geändert werden)
-
Formatänderungen bei gleicher Feldlänge werden nicht zugelassen (Außnahmen: „C8“->“d“ oder „Nx.y“->“nx.y“)
-
Felder, die die Bezeichnung „Anwenderfeld“ im aktuellen DDFDF haben, werden nicht geändert
-
Folgende Felder werden durch StpDDFfield ebenfalls nicht geändert:
-
Datei 6, Feld 70-84 „Merkmal…“
-
Datei 6, Feld 171-190 „Symbol…“
-
im DDFDF als „individuell“ markierte Felder (9955) werden nicht verändert
Um ohne Prüfung ein Feld zu ändern ist StpDDFfieldEx zu verwenden.
Feldverschiebung
Erkennt StpDDFfield bei einer Feld-Änderung eine neue Position im Datensatz für dieses Feld, wird automatisch eine Feldverschiebung vorbereitet. Nach erfolgreicher Prüfung der Zulässigkeit (keine Überlappung mit bereits vorhandenen oder neu definierten Feldern), werden die notwendigen Verschiebe-Parameter in der PARAMET-Datei generiert, die dann bei der nächsten Reorganisation ausgewertet werden.

Im jeweiligen Parameter wird folgendes hinterlegt:
-
State:0-2 (0=bei nächstem Reorg durchführen, 1=gerade in Arbeit oder es gab ein Problem bei der Durchführung, 2=erfolgreich durchgeführt)
-
PISfrom: alte Position im Datensatz
-
PISto: neue Position im Datensatz
-
LENold: alte Feldlänge
-
LENnew: neue Feldlänge
-
Datum und Uhrzeit der Parameter-Generierung
-
Aktuelle Dateiversion gemäß DDFDF zum Zeitpunkt der Parameter-Generierung
Achtung:
Selbst erstellte MOVE-Parameter dürfen nicht mehr in Kombination mit StpDDFfield verwendet werden!
Hinweis: StpDDFfield erkennt, wenn die maximale Länge eines Feldes vergrößert, aber keine neue Position im Datensatz vergeben wurde.
DD-Generierung, Reorganisation
Wird StpDDFfield im Kontext von infra-Setup verwendet, setzt es selbstständig die für eine DD-Generierung oder Reorganisation notwendigen Flags in „g_str_Sub_ReorgFlag“, so dass Setup automatisch abhängig von der jeweiligen Feldänderung nur eine DD-Generierung oder eine Reorganisation der jeweiligen Datenbankdatei anstößt.