Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

Satz-Eintrag

RECORD NAME IS satzname

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.

[LOCATION MODE IS {
   {DIRECT | DIRECT-LONG} {feldname-1 {IN | OF} satzname | bezeichner-1} |
  CALC[ hashroutine] USING feldname-2,... DUPLICATES ARE[ NOT] ALLOWED}]

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

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!

WITHIN realmname-1[,realmname-2,... AREA-ID IS bezeichner-2]

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.

 [SEARCH KEY IS feldname-3,...
    USING { CALC[ hashroutine] | INDEX} [ NAME IS name]
    DUPLICATES ARE[ NOT] ALLOWED] ... .

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

  • CALC -> INDEX:
    BALTER baut eine mehrstufige SEARCH-Key-Tabelle auf und gibt den Speicherplatz des indirekten Hashbereichs frei.

  • INDEX -> CALC:
    BALTER legt die SEARCH-Key-Tabelle als einen indirekten Hashbereich an und gibt den ursprünglich belegten Speicherplatz frei.

  • Andere Hashroutine:
    BALTER richtet einen neuen Hashbereich ein und gibt den Speicherplatz des ursprünglichen Hashbereichs frei.

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.

{[stufennummer] satzelementname
   {PICTURE IS {maskenzeichenkette |
                LX (ganzzahl-1) DEPENDING ON feldname-4}

    TYPE IS {FIXED REAL {BINARY {15 | 31 | 63} |
                         DECIMAL[ ganzzahl-2[,ganzzahl-3]]} |
             CHARACTER[ ganzzahl-4[ DEPENDING ON feldname-5]] |
             DATABASE-KEY |
             DATABASE-KEY-LONG }

   [OCCURS ganzzahl-5 TIMES].}...

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

     Mit der FILL-Anweisung können Sie benutzerdefinierte Werte für die Initialisierung festlegen.
  • 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:

    1. 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.

    2. 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.


    Beispiele


    Ausgangsfeld
    (ungepacktes numerisches Feld)


    Zielfeld
    (alphanumerisches Feld)


    Felddefinition

    Feldinhalt
    (sedezimal)


    Felddefinition

    Feldinhalt
    (sedezimal)

    1)

    PIC 9999

    F8 F1 F2 C3

    ->

    PIC  XXXX

    F8 F1 F2 F3

    2)

    PIC S999PP

    F5 F2 D3

    ->

    PIC  XXXXX

    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  XXXXXX

    F5 F2 F3 F0 40 40

    6)

    PIC S999V99

    F0 F2 F3 F4 D5

    ->

    PIC  XXXXXX

    F0 F2 F3 F4 F5 40

    7)

    PIC SV999

    F0 F2 B3

    ->

    PIC  XX

    F0 F2

    8)

    PIC V999

    F7 F2 A3

    ->

    PIC  XX

    F7 F2

    9)

    PIC S999PP

    F0 F2 B3

    ->

    PIC  X

    F0

    10)

    PIC 999PP

    F8 F2 F3

    ->

    PIC  X

    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