Your Browser is not longer supported

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

{{viewport.spaceProperty.prod}}

BLOCK CONTAINS-Klausel

&pagelevel(4)&pagelevel

Funktion

Die BLOCK CONTAINS-Klausel gibt die maximale Größe eines physischen Blockes an.

Format


BLOCK CONTAINS [ganzzahl-1 TO ] ganzzahl-2 {CHARACTERS | RECORDS }


Syntaxregeln

  1. Ein Block muss mindestens 20 und darf höchstens 32763 Bytes enthalten.

  2. Die Angabe von CHARACTERS oder RECORDS zeigt an, ob die Blocklänge als Vielfaches von Bytes oder logischen Datensätzen angegeben ist.

  3. Wenn weder CHARACTERS noch RECORDS angegeben ist, wird CHARACTERS angenommen.

  4. ganzzahl-1 TO ganzzahl-2 gibt die Anzahl der Bytes oder Datensätze in einem Block an, abhängig von der verwendeten Angabe CHARACTERS oder RECORDS.

  5. Falls nur ganzzahl-2 angegeben ist, so bezieht sich diese Angabe auf die maximale Blocklänge. Sind ganzzahl-1 und ganzzahl-2 angegeben, so beziehen sie sich auf die minimale bzw. maximale Blocklänge.
    Die Angabe von ganzzahl-1 dient jedoch nur zu Dokumentationszwecken und wird vom Compiler als Kommentar behandelt.

    Die maximale Blocklänge, die durch diese Klausel angegeben wird, hat folgende Bedeutung:

    Die Blöcke dürfen nicht größer, können aber kleiner als die angegebene Länge sein; dies kommt besonders bei ungeblockten oder geblockten Datensätzen mit variabler Datensatzlänge vor.

  6. Wird die Angabe CHARACTERS verwendet, so ist die Blocklänge als Anzahl der im Block enthaltenen Bytes anzugeben. In diesem Fall müssen ganzzahl-1 und ganzzahl2 Füllzeichen und 4 Bytes für das Satzlängenfeld eines jeden Datensatzes des Blockes einschließen.

  7. Wird die Angabe CHARACTERS verwendet und ist nur ganzzahl-2 angegeben, stellt ganzzahl-2 die Länge des physischen Blockes dar. Sind ganzzahl-1 und ganzzahl-2 angegeben, so beziehen sie sich auf die minimale bzw. maximale physische Blocklänge.

  8. Wird die Angabe RECORDS verwendet, so wird die Blocklänge als Anzahl logischer Datensätze angegeben. In diesem Fall berechnet der Compiler die Blocklänge, indem er die Anzahl der Bytes der maximalen Satzlänge mit dem in ganzzahl-2 angegebenen Wert multipliziert. Bei Datensätzen variabler Länge kommen noch 4 Bytes für das Satzlängenfeld hinzu.

  9. Wenn die BLOCK CONTAINS-Klausel nicht angegeben ist, dann nimmt der Compiler an, dass die Datensätze nicht geblockt sind, d.h. BLOCK CONTAINS 1 RECORDS wird angenommen.

    Anmerkung:
    Die BLOCK CONTAINS-Klausel kann daher weggelassen werden, wenn alle Blöcke nur einen einzigen Datensatz enthalten.

Allgemeine Regeln

  1. Die folgende Tabelle zeigt, in welcher Weise der Compiler die Blocklängen im Sinne von Bytes berechnet und welche Angaben die BLOCK CONTAINS-Klausel dazu enthält.

    Die in Tabelle 10 verwendeten Bezeichnungen bedeuten:

    F= Datensätze fester Länge

    V

    = Datensätze variabler Länge

    BL

    = Blocklänge

    SL

    = Datensatzlänge

    SLmax

    = maximale Datensatzlänge

    BLF

    = Blocklängenfeld (hat den Wert 4)

    SLF

    = Datensatzlängenfeld (hat den Wert 4)

    n= ganze Zahl

    Satzformat

    BLOCK CONTAINS [ganzzahl-1 TO] ganzzahl-2

    CHARACTERS

    RECORDS

    feste Länge

    BL = ganzzahl-2 (ganzzahl-2 = n * SL)

    BL = ganzzahl-2 * SL

    variable Länge

    BL = ganzzahl-2 + BLF

    BL = ganzzahl-2 *(SLmax + SLF) + BLF

    Tabelle 10: Berechnung der maximalen Blocklänge

  2. Wenn für eine externe Datei die BLOCK CONTAINS-Klausel angegeben ist, muss in allen Programmen, die diese externe Datei beschreiben, die BLOCK CONTAINS-Klausel angegeben sein, wobei die aus den Angaben in der BLOCK CONTAINS-Klausel errechnete Blockgröße gleich sein muss, unabhängig davon, ob sie sich aus der Anzahl „RECORDS“ oder der Anzahl „CHARACTERS“ ergibt.

Anmerkung:
Die Angabe CHARACTERS sollte verwendet werden, wenn die RECORDS-Angabe eine zu ungenaue Blocklänge ergeben würde.
Enthält z.B. ein Block vier Sätze, einer 50 Bytes lang und drei 100 Bytes lang, so berechnet der Compiler - variable Satzlänge mit maximal 100 Bytes vorausgesetzt - bei  BLOCK CONTAINS 4 RECORDS eine Blocklänge (einschließlich Blocklängenfeld) von 4*(100+4)+4 = 420 Bytes. Da der Block tatsächlich (ohne Blocklängenfeld) nur (50+4)+3*(100+4) = 366 Bytes benötigt, kann mit der Angabe von BLOCKCONTAINS 366 CHARACTERS die erforderliche Blockgröße exakt bestimmt werden.