|
satzname
Satzarten dürfen Sie hinzufügen oder löschen, oder ihre Definition ändern.
Eine Satzart, die Sie löschen wollen, müssen Sie vorher nicht entladen; BALTER löscht alle zugehörigen Informationen wie Sätze, Hashbereiche, DBTT, und Tabellen, mit einer Ausnahme:
Komprimiert gespeicherte Sätze oder Sätze mit variablen Feldern müssen Sie vor der Umstrukturierung entladen, da BALTER sie nicht verarbeiten, also auch nicht löschen kann.
|
Die LOCATION MODE-Klausel dürfen Sie beliebig verändern, hinzufügen oder weglassen.
CALC/DIRECT bzw. CALC/DIRECT-LONG
Umwandeln der Angabe DIRECT bzw. DIRECT-LONG in CALC und umgekehrt sowie das Weglassen oder Hinzufügen der LOCATION MODE-Klausel mit einer dieser Angaben ist zugelassen.
Auswirkung auf den Datenbestand
- DIRECT bzw. DIRECT-LONG
->
CALC:
BALTER legt einen neuen Hashbereich an und verlagert die Datensätze in den neu angelegten Hashbereich.
Wenn die Satzart Membersatzart einer Liste ist, wird ein indirekter CALC angelegt. Bei einer verteilbaren Liste liegt der Hashbereich für alle Sätze in einem Realm. - CALC
->
DIRECT bzw. DIRECT-LONG:
BALTER löscht alle für das Hashverfahren notwendigen Systeminformationen, verlagert aber nicht die bereits gespeicherten Sätze dieser Satzart in der Datenbank. - Hinzufügen/Weglassen von LOCATION MODE IS CALC:
Diese Änderung wirkt sich auf den Datenbestand genauso aus wie das Umwandeln der Angabe DIRECT bzw. DIRECT-LONG in CALC und umgekehrt. - Hinzufügen/Weglassen von LOCATION MODE IS DIRECT/DIRECT-LONG:Diese Änderung wirkt sich auf den Datenbestand nicht aus; lediglich in den Anwenderprogrammen müssen Sie die Änderung berücksichtigen.
- DIRECT bzw. DIRECT-LONG
DIRECT bzw. DIRECT-LONG
feldname-1:
das Schlüsselfeld dürfen Sie nach Belieben ändern
bezeichner-1:
darf geändert werden
Auswirkung auf den Datenbestand
Auf den Datenbestand wirken sich diese Änderungen nicht aus;
lediglich in den Anwenderprogrammen müssen Sie die Änderung berücksichtigen.
CALC
hashroutine: dürfen Sie ändern;
dabei ist es erlaubt, von der Standard-Hashroutine von UDS/SQL zu einer eigenen Hashroutine zu wechseln oder umgekehrt, oder die eigene Hashroutine gegen eine neue eigene Hashroutine auszutauschen
feldname-2,..:
jede beliebige Änderung der Schlüsselfelder ist zugelassen
DUPLICATES...:
Duplikate dürfen Sie beliebig zulassen oder verbieten.
Auswirkung auf den Datenbestand
- Ändern Sie die Schlüsselfelder oder die Hashroutine, so richtet BALTER einen neuen Hashbereich ein und speichert die Datensätze um.
- Ändern Sie die Angabe DUPLICATES in NOT ALLOWED, so müssen Sie beachten, dass BALTER den Datenbestand auf vorhandene Duplikate nur in den Fällen prüft, in denen er die Schlüssel auf Grund weiterer Änderungen bearbeiten muss.
- Findet BALTER Datensätze mit doppelten Schlüsselwerten, so eliminiert er sie nicht. Verbieten Sie Duplikate, müssen Sie daher selber prüfen, ob Datensätze mit doppelten Schlüsselwerten vorkommen und wenn ja, den Datenbestand vor dem Umstrukturieren bereinigen.
- Doppelte Schlüsselwerte protokolliert BALTER nur in der EXECUTION-Phase, nicht im Analyseprotokoll; die Umstrukturierung setzt er anschließend fort.
- Diese Behandlung von Duplikaten gilt für alle Klauseln, die den Eintrag DUPLICATES enthalten!
|
realmname
Die Zuordnung von Satzarten zu bestimmten Realms dürfen Sie ändern.
Auswirkung auf den Datenbestand
- Wenn Sie einen Realm bei einer Satzart hinzufügen, die mit LOCATION MODE IS CALC definiert ist, so richtet BALTER - außer bei verteilbaren Listen - in diesem Realm einen Hashbereich für die Satzart ein.
- Wenn die Satzart Membersatzart einer verteilbaren Liste ist und diese mit LOCATION MODE IS CALC definiert ist, dann wird in einem Realm ein indirekter CALC-Bereich genutzt, der explizit durch die DETACHED WITHIN-Klausel der MODE IS LIST-Anweisung in der SSL oder ersatzweise durch den ersten Realmnamen der obigen WITHIN-Klausel bestimmt ist. Eine entsprechende Änderung bewirkt ein Neuanlegen des CALC-Bereiches.
Wenn Sie ausschließlich einen oder mehrere Realms für eine Membersatzart einer verteilbaren Liste hinzufügen, bleibt die vorhandene Liste unverändert. Wenn Sie realmname-1 ändern, so verlagert BALTER die DBTT der Satzart in den neu angegebenen Realm, falls dem nicht eine SSL-Angabe entgegen steht.
Wenn Sie einen Realm in der WITHIN-Klausel weglassen, so dürfen in diesem Realm keine Sätze der betroffenen Satzart gespeichert sein. Sonst bricht BALTER - außer bei verteilbaren Listen - die Umstrukturierung ab, selbst wenn Sie einen anderen Realm für diese Sätze zur Verfügung stellen!
Wenn Sie bei verteilbaren Listen einen Realm weglassen, führt dies zu einem Neuaufbau der Liste, auch wenn dieser Realm keine Sätze enthält.
Wenn Sie eine verteilbare Liste entfernen, etwa durch Änderung der MODE-Klausel in POINTER-ARRAY, bleiben die Sätze der Membersatzart in dem Realm, in dem sie in der verteilbaren Liste gespeichert waren. Sofern Sie auf diese Sätze mit LOCATION MODE IS CALC zugreifen, müssen Sie dafür sorgen, daß nach Wegfall der Liste die AREA-ID jeweils korrekt versorgt ist. Um dabei entstehende Zugriffsprobleme zu vermeiden, können Sie vor der Um strukturierung mit der Online-Utility alle Seiten der Liste in einen Realm verlagern und mit dem Wegfall der Liste auch nur noch einen Realm für die Satzart deklarieren.
Um Laufzeitverbesserungen des BALTER bei großen Datenbanken zu erreichen, können Sie folgendermaßen vorgehen:
Wenn Sie die Realmzuordung einer Ownersatzart von einem auf zwei oder mehrere Realms erweitern, so sollten Sie in einem ersten Umstrukturierungsschritt die DETACHED-Angaben (auch die Standardwerte) auf DETACHED WITHIN realmname abändern für die Tabellen, die von der Ownersatzart abhängig sind. realmname bezeichnet den Realm, in dem die Ownersätze zurzeit gespeichert sind. Im zweiten Umstrukturierungsschritt nehmen Sie die auf einen Realm eingrenzenden DETACHED-Angaben wieder zurück.
bezeichner-2
dürfen Sie jederzeit ändern
Auswirkung auf den Datenbestand
Eine Änderung wirkt sich auf den Datenbestand nicht aus; lediglich in den Anwenderprogrammen müssen Sie sie berücksichtigen.
|
Bei der SEARCH-KEY Klausel sind alle Änderungen zugelassen; es ist erlaubt:
bestehende SEARCH-Keys zu ändern
neue SEARCH-Keys zu definieren
nicht mehr benötigte SEARCH-Keys wegzulassen
feldname-3,... | |
Welches Datenfeld Sie als SEARCH-Key verwenden bzw. aus welchen Datenfeldern Sie den SEARCH-Key zusammensetzen, können Sie ohne Einschränkungen neu festlegen. | |
USING ... | |
alle Änderungen sind erlaubt Auswirkung auf den Datenbestand
| |
name | diese Angabe können Sie weglassen, hinzufügen oder ändern |
DUPLICATES... | |
für Duplikate gilt hier dasselbe wie für die LOCATION MODE-Klausel (siehe Abschnitt „Satz-Eintrag") BALTER prüft nur dann auf unzulässig doppelt vorhandene Schlüsselwerte und protokolliert diese, wenn er eine mehrstufige SEARCH-Key-Tabelle oder einen indirekten Hashbereich aufbauen muss. |
|
Den Aufbau von Satzarten dürfen Sie beliebig modifizieren. Beachten Sie dabei Folgendes:
Länge der Satzart
Satzarten, die in einer einstufigen Liste gespeichert sind, dürfen Sie nicht verlängern! Eine einstufige Liste bedeutet ORDER IS LAST, FIRST, PRIOR oder IMMATERIAL und MODE IS LIST.Anzahl und Reihenfolge der Felder
Die Reihenfolge von Feldern dürfen Sie ändern, ebenso dürfen Sie Felder löschen.
Neu definierte Felder initialisiert BALTER abhängig von Feldtyp:alphanumerische Felder mit Leerzeichen
nationale Felder mit nationalen Leerzeichen (Unicode)
numerische Felder mit dem Wert Null
- Länge der Felder
Die Felder können Sie verlängern oder verkürzen; abhängig vom Feldtyp geht BALTER folgendermaßen vor:
alphanumerische Felder:
Beim Verlängern der Felder füllt BALTER rechts mit Leerzeichen auf, beim Verkürzen der Felder schneidet BALTER rechts entsprechend viele Zeichen ab.
nationale Felder:
Beim Verlängern der Felder füllt BALTER rechts mit Leerzeichen (Unicode) auf, beim Verkürzen der Felder schneidet BALTER rechts entsprechend viele Zeichen ab.
numerische Felder:
Unter Beachtung der Stellung des Dezimalpunkts füllt BALTER beim Verlängern der Felder links mit dem Wert Null auf und schneidet beim Verkürzen der Felder links entsprechend viele Zeichen ab, wobei relevante Ziffern verloren gehen können. Ein evtl. vorhandenes Vorzeichen bleibt erhalten, sofern die neue Feldbeschreibung ein Vorzeichen erlaubt.
Database-Key-Felder
Bei Database-Key-Feldern können Sie den Typ ändern von DATABASE-KEY in DATABASE-KEY-LONG und umgekehrt.Bild 25: Typ von Database-Key-Feldern ändern
TYPE IS DATABASE-KEY
->
TYPE IS DATABASE-KEY-LONG:
BALTER überträgt die 1 Byte lange Satzartnummer (REC-REF) des DATABASE-KEY-Feldes rechtsbündig in den entsprechenden 2 Byte langen Bereich des DATABASE-KEY-LONG-Feldes. Die 3 Byte lange Satzfolgenummer (RSQ) des DATABASE-KEY-Feldes wird rechtsbündig in den entsprechenden 4 Byte langen Bereich des DATABASE-KEY-LONG-Feldes übertragen.TYPE IS DATABASE-KEY-LONG
->
TYPE IS DATABASE-KEY:
BALTER überträgt das rechte Byte der 2 Byte langen Satzartnummer (REC-REF) des DATABASE-KEY-LONG-Feldes rechtsbündig in den entsprechenden 1 Byte langen Bereich des DATABASE-KEY-Feldes. Die rechten 3 Bytes der 4 Byte langen Satzfolgenummer (RSQ) des DATABASE-KEY-LONG-Feldes werden rechtsbündig in den entsprechenden 3 Byte langen Bereich des DATABASE-KEY-Feldes übertragen.Da bei der Änderung von TYPE IS DATABASE-KEY-LONG in TYPE IS DATABASE-KEY bei REC-REF und RSQ links jeweils Stellen abgeschnitten werden, kommt es zu Datenverlust, falls REC-REF > 254 und/oder RSQ > 224-1. Bei Datenverlust gibt BALTER eine Warnung aus, die den ursprünglichen DATABASE-KEY-LONG-Wert enthält; der BALTER-Lauf wird nicht abgebrochen. Die Datenbank ist weiterhin physisch konsistent (siehe Handbuch „Sichern, Informieren und Reorganisieren“, BCHECK). Die logische Konsistenz, d.h die Konsistenz der Anwenderdaten, muss von Ihnen überprüft und sichergestellt werden.
Typ der Felder
Wenn Sie den Typ eines numerischen Feldes in einen anderen numerischen Typ ändern (z.B. TYPE IS DECIMAL->
TYPE IS BINARY), konvertiert BALTER die Daten. Wenn Sie den Typ eines ungepackten numerischen Feldes in alphanumerisch (fester Länge) ändern, verfährt BALTER wie nachfolgend beschrieben.
Bei allen anderen Typänderungen belegt BALTER das Feld entsprechend dem neuen Typ mit Leerzeichen oder dem Wert Null. Dies gilt insbesondere auch für alle Typänderungen von oder nach national.ungepackt numerisch
->
alphanumerisch (feste Länge):
Sofern erforderlich, konvertiert BALTER die Daten. Dabei verfährt BALTER wie folgt:BALTER überträgt die numerische Ziffernfolge linksbündig in das alphanumerische Zielfeld; führende Nullen bleiben erhalten.
Ein evtl. vorhandenes Symbol „V“ (Dezimalpunkt) in der Definition des Ausgangsfeldes wird von BALTER ignoriert, d.h. übertragen werden der ganzzahlige Anteil und die Dezimalstellen.
In der Definition des Ausgangsfeldes vorhandene Symbole „P“ (implizite Multiplikation mit 10) werden von BALTER so weit wie möglich berücksichtigt.Je nach Größe des alphanumerischen Zielfeldes verfährt BALTER wie folgt:
Enthält das Zielfeld weniger Stellen als die zu übertragende Ziffernfolge (inklusive berücksichtigter Symbole „P“), so werden von der Ziffernfolge rechts die überzähligen Stellen abgeschnitten.
Enthält das Zielfeld mehr Stellen als die zu übertragende Ziffernfolge (inklusive berücksichtigter Symbole „P“), so wird die Ziffernfolge rechts mit X‘40‘ auf Zielfeldlänge aufgefüllt.
In der sedezimalen Darstellung der gemäß 1) erhaltenen Ziffernfolge wandelt BALTER das vorletzte Halbbyte (Vorzeichen) um in sedezimal „F“. Dies gilt insbesondere auch dann, wenn die Definition des Ausgangsfeldes das Symbol „S“ (Vorzeichen) enthält.
BeispieleAusgangsfeld
(ungepacktes numerisches Feld)Zielfeld
(alphanumerisches Feld)Felddefinition
Feldinhalt
(sedezimal)Felddefinition
Feldinhalt
(sedezimal)1)
PIC 9999
F8 F1 F2 C3
->
PIC
F8 F1 F2 F3
2)
PIC S999PP
F5 F2 D3
->
PIC
F5 F2 F3 F0 F0
3)
PIC S99V99
F1 F4 F3 D5
->
PIC XXXX
F1 F4 F3 F5
4)
PIC 9999
F1 F2 F3 F4
->
PIC XXX
F1 F2 F3
5)
PIC 999P
F5 F2 E3
->
PIC
F5 F2 F3 F0 40 40
6)
PIC S999V99
F0 F2 F3 F4 D5
->
PIC
F0 F2 F3 F4 F5 40
7)
PIC SV999
F0 F2 B3
->
PIC
F0 F2
8)
PIC V999
F7 F2 A3
->
PIC
F7 F2
9)
PIC S999PP
F0 F2 B3
->
PIC
F0
10)
PIC 999PP
F8 F2 F3
->
PIC
F8
variables Feld
In Satzarten dürfen Sie nur dann ein variables Feld hinzufügen oder ändern, wenn keine Sätze dieser Satzart in der Datenbank gespeichert sind (siehe "Zusammenfassung der Einschränkungen"). Sie können aber in Sätzen mit einem variablen Feld Felder fester Länge hinzufügen oder weglassen, wenn Sätze gespeichert sind. Auch können Sie die Länge solcher Felder ändern.
Außerdem dürfen Sie alle Änderungen im Schema vornehmen, die zu einer Änderung des Systemteiles (SCD) führen.Stellung des Dezimalpunktes
Ändern Sie die Stellung des Dezimalpunktes oder des Skalenfaktors, so verschiebt BALTER die Ziffern innerhalb des Feldes so, dass der alte Wert erhalten bleibt. Rechts oder links herausgeschobene Ziffern gehen verloren; BALTER rundet nicht.Wiederholungsfaktor
Beim Verringern des Wiederholungsfaktors von Vektoren oder von Wiederholungsgruppen schneidet BALTER die Felder am Ende des Vektors bzw. der Wiederholungsgruppe ab. Beim Erhöhen des Wiederholungsfaktors initialisiert BALTER neu hinzukommende Felder typgerecht mit dem Wert Null bzw. Leerzeichen.
Ob BALTER bei einer Änderung des Wiederholungsfaktors den Inhalt der Felder übernimmt, initialisiert oder wegfallen lässt, können Sie leicht nachprüfen:
Die Umwandlungsroutine von BALTER verwendet bei indizierten Feldern sowohl für die alte als auch für die neue Definition eine dreistufige Indizierung. Stellen Sie das alte und das neue Feld jeweils mit einer dreistufigen Indizierung dar, so können Sie beide gut vergleichen.VORSICHT!
Verringern des Wiederholungsfaktors von Vektoren oder Wiederholungsgruppen kann den Verlust von Daten bedeuten.
Bild 26: Veränderungen der Feldinhalte gespeicherter Sätze durch Modifizieren des Wiederholungsfaktors