1.2.25 BufAddParam – speichert zusätzliche Steuerparameter bei einem Buffer
BufAddParam(strBufName, strParameter);
|
Argumente
|
strBufName
Name des Buffers, für den die angegebenen Steuerparameter gespeichert werden sollen.
|
|
|
strParameter
Zeichenkette mit Steuerparametern, die beim angegebenen Buffer gespeichert werden.
|
|
Beschreibung
|
Diese Funktion speichert die angegebene Zeichenkette in einer Parameterliste des jeweiligen (Datensatz-)Buffers.
Die Bedeutung der zu speichernden Parameter ist dabei abhängig von den jeweiligen Funktionen, die anschließend auf den Buffer und die gespeicherten Parameter zugreifen.
Zu einem Buffer können beliebig viele Parameter gespeichert werden. Jeder weitere Parameter wird durch BufAddParam an die Liste der Parameter angehängt. In der Regel werden die Parameter dann durch die jeweilige Funktion, die diese Parameter auswerten kann, in der Reihenfolge verarbeitet, wie sie dem Buffer zugeordnet wurden.
Eine Übersicht der Verfügbaren Steuerparameter befindet sich weiter unten.
|
|
Funktionsart
|
Bufferfunction
|
|
Beispiel
|
// bei Reorganisation von Datei 6 soll das Feld „Werkstoff“
// aus Feld „Zeichnung“ kopiert und Feld „Werkstoff“
// auf „Blank“ gesetzt werden
BufAddParam("REORG:MOVE,173,15,1214,15, " \"");
|
|
Siehe auch
|
StpDBreorg
|
Steuerparameter
Die einem Buffer zugeordneten Steuerparameter werden durch die Funktionen, für die Steuerparameter hinterlegt werden können, beim Verarbeiten des jeweiligen Buffers ausgewertet. Der erste Teil einer Parameterzeichnkette bestimmt dabei die Funktion, für die der Steuerparameter bestimmt ist.
Steuerparameter für StpDBreorg
Ein Steuerparameter, der bei der Reorganisation einer Datenbankdatei ausgewertet werden soll, beginnt mit dem Schlüsselwort „REORG:“. Es können beliebig viele Steuerparameter mit BufAddParam für einen Satzbuffer hinterlegt werden. Alle für einen Satzbuffer hinterlegten Steuerparameter werden bei der nächsten Reorganisation der Datenbankdatei des jeweiligen Satzbuffers in der Reihenfolge abgearbeitet, in der sie mit BufAddParam angegeben wurden. Die Reorganisation kann zu einem definierten Zeitpunkt per StpDBreorg veranlasst werden oder automatisch durch Setzen des jeweiligen Steuerflags in der globalen Setup-Variable „g_str_Sub_ReorgFlag“.
Folgende Steuerparameter können bei der Reorganisation ausgewertet werden:
REORG:FILL – Füllen eines Datensatzbereichs
REORG:FILL,PIS,Len,Text
|
Argumente
|
PIS
Position im Datensatz, ab der der angegebene Text in die Datensätze geschrieben werden soll.
|
|
|
Len
Maximale Länge, in der der angegebene Text in die Datensätze geschrieben werden soll.
|
|
|
Text
Zeichenkette, die an der angegebenen Position in der maximal angegebenen Länge in die Datensätze geschrieben werden soll. Texte mit führenden oder abschließenden Leerzeichen sollten zusätzlich in doppelte Hochkommata gefasst werden (\“ abc \“).
|
|
Beschreibung
|
Bei der nächsten Reorganisation der zum jeweiligen Satzbuffer gehörigen Datenbankdatei wird der angegebene feste Text an der angegebenen Position in jeden Datensatz der Datenbankdatei geschrieben.
|
|
Beispiel
|
// bei Reorganisation von Datei 6 soll das Feld „Werkstoff“
// mit dem Text „unbekannt“ gefüllt werden
BufAddParam("REORG:FILL,1214,15,\"unbekannt \"");
|
REORG:MOVE – Kopieren/Verschieben eines Datensatzbereichs
REORG:MOVE,PIS_from,Len_from,PIS_to,Len_to,InitText
|
Argumente
|
PIS_from
Position im Datensatz, ab der der Inhalt kopiert bzw. verschoben werden soll.
|
|
|
Len_from
Maximale Länge, in der der Inhalt eines Datensatzes ab „PIS_from“ kopiert bzw. verschoben werden soll.
|
|
|
PIS_to
Position im Datensatz, an die der Inhalt des Bereichs aus „PIS_from“ kopiert werden soll.
|
|
|
Len_from
Maximale Länge, in der der Inhalt des Bereichs aus „PIS_from“ an die Position „PIS_to“ kopiert werden soll.
|
|
|
InitText (optional)
Zeichenkette, die nach dem Kopieren des Inhalts ab „PIS_from“ in der maximalen Länge „Len_from“ in den Datensatz geschrieben werden soll. Durch die Angabe von Leerzeichen, kann so der alte Inhalt des Ursprungsfeldes gelöscht werden, wodurch letztlich ein echtes Verschieben des ursprünglichen Inhalts erreicht wird. Texte mit führenden oder abschließenden Leerzeichen sollten zusätzlich in doppelte Hochkommata gefasst werden (\“ abc \“).
|
|
Beschreibung
|
Bei der nächsten Reorganisation der zum jeweiligen Satzbuffer gehörigen Datenbankdatei wird der Inhalt aller Datensätze ab der angegebenen Position an eine neue Position kopiert und ggf. der Ursprungsbereich mit einer festen Zeichenkette „initialisiert“.
|
|
Beispiel
|
// bei Reorganisation von Datei 6 soll das Feld „Index“
// von Position 615 an Position 1183 verschoben werden
BufAddParam("REORG:MOVE, 615,5,1183,5,\" \"");
|
REORG:MOVEIF – bedingtes Kopieren/Verschieben eines Datensatzbereichs
REORG:MOVEIF,condition,PIS_from,Len_from,PIS_to,Len_to,InitText
|
Argumente
|
condition
Bedingung, die erfüllt sein muss, damit – wie bei REORG:MOVE – der Bereich eines Datensatzes verschoben wird.
Eine Bedingung besteht aus 3 Teilen: einer Position im Datensatz, einem Vergleichsoperator und einer Vergleichszeichenkette.
Die Position im Datensatz gibt an, ab welcher Stelle im jeweiligen Datensatz mit der angegebenen Vergleichszeichenkette verglichen werden soll. Verglichen wird dabei immer in der Gesamtlänge der Vergleichszeichenkette. Als Vergleichsoperatoren sind folgende Operatoren zulässig:
| ||||||||||||
|
|
PIS_from
Position im Datensatz, ab der der Inhalt kopiert bzw. verschoben werden soll.
| ||||||||||||
|
|
Len_from
Maximale Länge, in der der Inhalt eines Datensatzes ab „PIS_from“ kopiert bzw. verschoben werden soll.
| ||||||||||||
|
|
PIS_to
Position im Datensatz, an die der Inhalt des Bereichs aus „PIS_from“ kopiert werden soll.
| ||||||||||||
|
|
Len_from
Maximale Länge, in der der Inhalt des Bereichs aus „PIS_from“ an die Position „PIS_to“ kopiert werden soll.
| ||||||||||||
|
|
InitText (optional)
Zeichenkette, die nach dem Kopieren des Inhalts ab „PIS_from“ in der maximalen Länge „Len_from“ in den Datensatz geschrieben werden soll. Durch die Angabe von Leerzeichen, kann so der alte Inhalt des Ursprungsfeldes gelöscht werden, wodurch letztlich ein echtes Verschieben des ursprünglichen Inhalts erreicht wird. Texte mit führenden oder abschließenden Leerzeichen sollten zusätzlich in doppelte Hochkommata gefasst werden (\“ abc \“).
| ||||||||||||
|
Beschreibung
|
Bei der nächsten Reorganisation der zum jeweiligen Satzbuffer gehörigen Datenbankdatei wird der Inhalt aller Datensätze, für die die angegebene Bedingung zutrifft, ab der angegebenen Position an eine neue Position kopiert und ggf. der Ursprungsbereich mit einer festen Zeichenkette „initialisiert“.
| ||||||||||||
|
Beispiel 1
|
// bei Reorganisation von Datei 86 soll Feld 19 nach
// Feld 15 kopiert werden, aber nur wenn Feld 14 leer ist
BufAddParam("086","REORG:MOVEIF,131==\" \",158,10,134,10");
| ||||||||||||
|
Beispiel 2
FormatierenD
27F57.stp
|
// …\SETUP\BEISPIELE\FormatierenD27F57.stp
// Falls Feldinhalt = SPACE (" "),
// dann wird als neuer Feldinhalt "00000000" geschrieben)
BufAddParam("027","REORG:MOVEIF,364==\" \",364,8,364,8,\"00000000\"");
|
REORG:STARTPARAM – Setzen eines Parameters unmittelbar vor der Reorganisation
REORG:STARTPARAM,KeyValue,PIS,Text
|
Argumente
|
KeyValue
Schlüssel des Parameters in der Parameterdatei (001), der aktualisiert werden soll. Der Schlüssel wird als Zeichenkette angegeben und kann zusätzlich in doppelte Hochkommata gefasst werden. Wenn der angegeben Datensatz noch nicht existiert, wird er automatisch angelegt.
|
|
|
PIS
Position im Parametersatz, an die der angegebene Text geschrieben werden soll.
|
|
|
Text
Zeichenkette, die unmittelbar vor der Durchführung der Reorganisation an Position „PIS“ des Datensatzes aus der Parameterdatei geschrieben werden soll. Texte mit führenden oder abschließenden Leerzeichen sollten zusätzlich in doppelte Hochkommata gefasst werden (\“ abc \“).
|
|
Beschreibung
|
Bei der nächsten Reorganisation der zum jeweiligen Satzbuffer gehörigen Datenbankdatei wird dann, unmittelbar bevor die Reorganisation gestartet wird, eine feste Zeichenkette an eine vorgegeben Position eines Parameterdatensatzes geschrieben. Falls der angegebene Parameterdatensatz noch nicht existiert, wird er neu angelegt. Zusammen mit „REORG:ENDPARAM“ kann so anhand entsprechend gesetzter Parameter später erkannt werden, ob eine Anpassung gestartet und erfolgreich durchgeführt oder vorzeitig (durch Fehler) abgebrochen wurde. Bei vorzeitigem Abbruch wurde dann nur der durch „REORG:STARTPARAM“ angegebene Parameter gesetzt. Ein ggf. vorhandener „REORG:ENDPARAM“ wird in diesem Fall nicht ausgewertet.
|
|
Beispiel
|
// beim Start der Reorganisation von Datei 134 soll
// an Position 9 des Parameters „7003BP“ der Wert „1“
// geschrieben werden und nach erfolgreicher Durchführung
// der Wert „2“
BufAddParam("134","REORG:STARTPARAM,\"7003BP\",9,\"1\"");
BufAddParam("134","REORG:ENDPARAM,\"7003BP\",9,\"2\"");
|
Hinweis: Die durch REORG:STARTPARAM und REORG:ENDPARAM zu setzenden Parameter werden bei der Reorganisation (schnellen Konvertierung) nicht automatisch ausgewertet, d.h. eine Konvertierung kann unter Umständen beliebig oft ausgeführt werden. Um das zu verhindern, muss explizit im Installationsskript geprüft werden, ob die jeweiligen Parameter bereits gesetzt sind und entsprechend reagiert werden (Beispiel dazu bei REORG:ENDPARAM).
REORG:ENDPARAM – Setzen eines Parameters nach erfolgreicher Reorganisation
REORG:ENDPARAM,KeyValue,PIS,Text
|
Argumente
|
KeyValue
Schlüssel des Parameters in der Parameterdatei (001), der aktualisiert werden soll. Der Schlüssel wird als Zeichenkette angegeben und kann zusätzlich in doppelte Hochkommata gefasst werden. Wenn der angegeben Datensatz noch nicht existiert, wird er automatisch angelegt.
|
|
|
PIS
Position im Parametersatz, an die der angegebene Text geschrieben werden soll.
|
|
|
Text
Zeichenkette, die nach erfolgreicher Reorganisation an Position „PIS“ des Datensatzes aus der Parameterdatei geschrieben werden soll. Texte mit führenden oder abschließenden Leerzeichen sollten zusätzlich in doppelte Hochkommata gefasst werden (\“ abc \“).
|
|
Beschreibung
|
Bei der nächsten Reorganisation der zum jeweiligen Satzbuffer gehörigen Datenbankdatei wird dann, wenn die Reorganisation vollständig und ohne Fehler durchgeführt wurde, eine festen Zeichenkette an eine vorgegeben Position eines Parameterdatensatzes geschrieben. Falls der angegebene Parameterdatensatz noch nicht existiert, wird er neu angelegt.
|
|
Beispiel
|
// nach erfolgreicher Reorganisation von Datei 134 soll
// an Position 9 des Parameters „7003BP“ der Wert „2“
// geschrieben werden
BufAddParam("134","REORG:ENDPARAM,\"7003BP\",9,\"2\"");
|
Hinweis: Die durch REORG:STARTPARAM und REORG:ENDPARAM zu setzenden Parameter werden bei der Reorganisation (schnellen Konvertierung) nicht automatisch ausgewertet, d.h. eine Konvertierung kann unter Umständen beliebig oft ausgeführt werden. Um das zu verhindern, muss explizit im Installationsskript geprüft werden, ob die jeweiligen Parameter bereits gesetzt sind und entsprechend reagiert werden.
Beispiel:
// beim Start der Reorganisation von Datei 134 soll
// an Position 9 des Parameters „7003BP“ der Wert „1“
// geschrieben werden und nach erfolgreicher Durchführung
// der Wert „2“
// Zuvor wird geprüft, ob der Parameter ggf, mit Eintrag „1“ oder
// 2“ existiert. Bei „2“ wird der REORG mit Konvertierung nicht
// durchgeführt, bei „1“ ebenfalls nicht, und es wird ein Fehler
// protokolliert
StpSelect("7003BP ","001",1);
if (StpRc == 0)
{
BufQueryStringFromPIS("001",9,1,strTMP);
if (strTmp == "2")
{
StpWriteLog( "Hinweis", "Datei 134 wurde bereits konvertiert" );
Jump(KNV_134);
}
if (strTmp == "1")
{
StpWriteLog( "*** FEHLER ***", "Konvertierung Datei 134 abgebrochen !" );
Jump(KNV_134);
}
}
BufAddParam("134","REORG:STARTPARAM,\"7003BP\",9,\"1\"");
BufAddParam("134","REORG:ENDPARAM,\"7003BP\",9,\"2\"");
SetStringAt(g_str_Sub_ReorgFlag,134,1,"3");
KNV_134:
…
