Your Browser is not longer supported

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

{{viewport.spaceProperty.prod}}

VALUE-Klausel

&pagelevel(4)&pagelevel

Funktion

In der WORKING-STORAGE SECTION und der LOCAL-STORAGE SECTION bestimmt die VALUE-Klausel den Anfangswert eines Datenfeldes. In der REPORT SECTION
bestimmt die VALUE-Klausel den Wert eines druckfähigen Datenfeldes. In der WORKING-STORAGE SECTION, der LOCAL-STORAGE SECTION sowie in der FILE SECTION und der LINKAGE SECTION haben die VALUE-Klauseln bei der Ausführung einer INITIALIZE-Anweisung mit der BY VALUE-Angabe eine Bedeutung.

Bei Bedingungsnamen bestimmt die VALUE-Klausel den Wert oder einen Bereich von Werten, die diesem Bedingungsnamen zugeordnet sind.

Format 1

der VALUE-Klausel wird angegeben, um den Anfangswert eines Datenfeldes oder den Wert eines druckfähigen Datenfeldes zu bestimmen oder den Wert des Sendefelds für die INITIALIZE-Anweisung mit der BY VALUE Angabe festzulegen.

Format 2

der VALUE-Klausel wird nur angegeben, um den Wert oder einen Bereich von Werten, der einem Bedingungsnamen zugeordnet ist, zu bestimmen. Durch den wahlweisen Zusatz „WHEN SET TO FALSE IS LITERAL-4“ wird der Wert festgelegt, auf den das zugehörige Datum bei Ausführung der Anweisung „SET bedingungsname TO FALSE“ gesetzt wird.

Format 3

dient dazu, Tabellenelemente mit Anfangswerten zu versehen.

Format 1


VALUE IS literal


Syntaxregeln

  1. Das angegebene Literal kann durch eine figurative Konstante ersetzt werden.

  2. Ein numerisches Literal muss eine Größe haben, die innerhalb der in der PICTURE-Klausel angegebenen Stellenanzahl liegt, und darf keinen Wert haben, der das Abschneiden von Ziffern ungleich Null erfordern würde.

  3. Ein nichtnumerisches Literal darf die in der PICTURE-Klausel angegebene Größe nicht überschreiten.

  4. Ist die Kategorie des Datenfeldes alphabetisch, alphanumerisch, alphanumerisch druckaufbereitet oder numerisch druckaufbereitet, muss das Literal in der VALUE-Klausel alphanumerisch sein.
    Die Länge alphanumerischer Literale in der VALUE-Klausel eines Datenelements darf nicht größer sein als die Länge, die durch eine explizit angegebene PICTURE-Klausel festgelegt ist.
    Die Länge alphanumerischer Literale in der VALUE-Klausel einer alphanumerischen Gruppe darf nicht größer sein als die Länge der Gruppe.

  5. Ein numerisches Literal mit Vorzeichen muss einer PICTURE-Klausel mit numerischer Maskenzeichenfolge mit Vorzeichen zugeordnet sein.

  6. Ist die Kategorie des Datenfeldes numerisch, muss das Literal in der VALUE-Klausel numerisch sein. Der Wert des Literals muss im Bereich der durch die PICTURE-Klausel beschriebenen Werte liegen. Alle Ziffern an Stellen, die einem Maskenzeichensymbol P entsprechen, müssen 0 sein.

  7. Wird die VALUE-Klausel in einer Erklärung auf Gruppenebene angegeben, so muss das Literal eine figurative Konstante oder ein nichtnumerisches Literal sein. Innerhalb der Datengruppe darf die VALUE-Klausel für keine der untergeordneten Stufen angegeben werden.

  8. Die VALUE-Klausel darf nicht für eine Datengruppe angegeben werden, deren Datenfelder mit JUSTIFIED, SYNCHRONIZED oder USAGE (außer USAGE DISPLAY oder USAGE NATIONAL) beschrieben sind.

  9. Für eine stark typisierte Datengruppe darf keine VALUE-Klausel angegeben werden.

  10. Die VALUE-Klausel darf für externe Gleitpunktdatenfelder nicht angegeben werden.

  11. Ist die Kategorie des Datenfeldes national, müssen alle Literale in der VALUE-Klausel national sein.
    Die Länge nationaler Literale in der VALUE-Klausel eines Datenelements darf nicht größer sein als die Länge, die durch eine explizit angegebene PICTURE-Klausel festgelegt ist.
    Die Länge nationaler Literale in der VALUE-Klausel einer nationalen Gruppe darf nicht größer sein als die Länge der Gruppe.

Allgemeine Regeln

  1. Wenn eine VALUE-Klausel in der Erklärung eines Datenfeldes angegeben ist, das mit einem Datenfeld variabler Länge verknüpft ist, wird beim Setzen des Anfangswertes so vorgegangen, als hätte das Datenfeld der DEPENDING ON-Angabe der OCCURS-Klausel für das Datenfeld variabler Länge den maximalen Wert. Ein Datenfeld ist mit einem Datenfeld variabler Länge verknüpft, wenn einer der folgenden Fälle vorliegt:

    1. Es ist ein Gruppenfeld, das ein Datenfeld variabler Länge enthält.

    2. Es ist ein Datenfeld variabler Länge.

    3. Es ist ein Datenfeld, das einem Datenfeld variabler Länge untergeordnet ist.

  2. Wird die VALUE-Klausel in einer Erklärung auf Gruppenebene angegeben, wird der ganze Bereich der Datengruppe auf den Anfangswert gesetzt, ohne Rücksicht auf die einzelnen Datenelemente oder Datengruppen, die in der Datengruppe enthalten sind.

  3. Das Literal wird so in dem Datenfeld ausgerichtet, als wäre das Datenfeld alphanumerisch beschrieben worden. Dabei hat die JUSTIFIED-Klausel keinen Einfluss und es findet keine Editierung statt.

  4. Ein Datenfeld wird auf einen Anfangswert gesetzt, unabhängig davon, ob eine BLANK WHEN ZERO-Klausel oder JUSTIFIED-Klausel angegeben wurde.

  5. Eine VALUE-Klausel in einer Datenerklärung, die eine OCCURS-Klausel enthält oder einer solchen Datenerklärung untergeordnet ist, bewirkt, dass jede Wiederholung des Datenfeldes den angegebenen Anfangswert erhält.

  6. In der WORKING-STORAGE SECTION und in der LOCAL-STORAGE SECTION kann die VALUE-Klausel angegeben werden, um den Anfangswert irgendeines Datenfeldes zu bestimmen; in diesem Fall bewirkt die Klausel, dass das Datenfeld zu Beginn des Programmablaufs den angegebenen Wert annimmt. Wird die VALUE-Klausel in der Beschreibung eines Datenfeldes nicht angegeben, so ist der Anfangswert dieses Datenfeldes undefiniert.

  7. Ein Datenfeld der Klassen objekt oder zeiger darf keine VALUE-Klausel haben; es ist immer mit NULL (undefiniert) initialisiert.

Beispiel 7-33

77 FELD PICTURE IS AA VALUE IS "AA"

Der Inhalt von FELD ist hier auf den Anfangswert AA gesetzt.

Format 2


{VALUE | VALUES} {IS | ARE} {literal-1 [{THRU | THROUGH} literal-2]} ...

[WHEN SET TO FALSE IS literal-4]


Syntaxregeln

  1. Die VALUE-Klausel im Format 2 darf nur in Verbindung mit Bedingungsnamen (Stufennummer 88) verwendet werden.

  2. Die Stufennummer 88 gilt für Erklärungen von Bedingungsnamen, die einer Bedingungsvariablen zugeordnet sind; diese Erklärungen nennt man Bedingungsnamenerklärungen. Eine Bedingungsvariable ist ein Datenfeld, das von einer oder mehreren Bedingungsnamenerklärungen gefolgt ist. Ein Bedingungsname beschreibt einen Wert oder einen Bereich von Werten, die zur Ausführungszeit des Programms als Inhalt der Bedingungsvariable abgefragt werden sollen. Ein Bedingungsname kann während der Programmausführung „wahr“ oder „falsch“ sein.
    Ein Bedingungsname ist kein Datenfeld und benötigt keinen Speicherplatz (siehe „Bedingungsnamen-Bedingung").

    Bedingungsnamen dürfen nicht auf ein Datenfeld folgen, für das eine ANY LENGTH- Klausel angegeben ist.
    Bedingungsnamen dürfen nicht auf eine Typdefinition mit der Angabe STRONG oder auf eine Datengruppe, die einer Typdefinition mit der Angabe STRONG untergeordnet ist, folgen.

  3. Die angegebenen Literale können durch figurative Konstanten ersetzt werden.

  4. Alle numerischen Literale müssen die Größe haben, die innerhalb der in der PICTURE-Klausel des zugehörigen Datenelements (Bedingungsvariable) angegebenen Stellenzahl liegt und dürfen keinen Wert haben, der das Abschneiden von Ziffern ungleich Null erfordern würde.

  5. Nichtnumerische Literale dürfen die in der PICTURE-Klausel des zugehörigen Datenelements (Bedingungsvariable) angegebene Größe nicht überschreiten.

  6. Ist die Kategorie des Datenfeldes alphabetisch, alphanumerisch, alphanumerisch druckaufbereitet oder numerisch druckaufbereitet müssen alle Literale in der VALUE-Klausel alphanumerisch sein.

    Die Länge alphanumerischer Literale in der VALUE-Klausel eines Datenelements darf nicht größer sein als die Länge, die durch eine explizit angegebene PICTURE-Klausel festgelegt ist.

  7. Ist die Kategorie des Datenfeldes numerisch, müssen alle Literale in der VALUE-Klau-sel numerisch sein. Der Wert des Literals muss im Bereich der durch die PICTURE-Klausel beschriebenen Werte liegen. Alle Ziffern an Stellen, die einem Maskenzeichensymbol P entsprechen, müssen 0 sein.

  8. Ein numerisches Literal mit Vorzeichen muss einer PICTURE-Klausel mit numerischer Maskenzeichenfolge mit Vorzeichen zugeordnet sein.

  9. Wird die THRU-/THROUGH-Angabe verwendet, muss das Literal vor THRU/THROUGH kleiner als das Literal nach THRU/THROUGH sein.

  10. Die THRU-/THROUGH-Angabe weist dem angegebenen Bedingungsnamen einen Bereich von Werten zu.

  11. literal-4 darf keinem literal-1 gleich sein.

  12. Für jedes Paar literal-1 und literal-2 muss gelten: literal-4 muss kleiner als literal-1 oder  größer als literal-2 sein.

  13. Ist die Kategorie des Datenfeldes national, müssen alle Literale in der VALUE-Klausel  national sein.
    Die Länge nationaler Literale in der VALUE-Klausel eines Datenelements darf nicht größer sein als die Länge, die durch eine explizit angegebene PICTURE-Klausel festgelegt ist.

Allgemeine Regeln

  1. Die VALUE-Klausel darf für externe Gleitpunktdatenfelder und für Daten der Klassen objekt oder zeiger nicht angegeben werden.

  2. Die VALUE-Klausel darf nicht für Datenfelder angegeben werden, deren Größe explizit oder implizit variabel ist.

  3. Die VALUE-Klausel darf nicht im Widerspruch zu den sonstigen Klauseln in der Datenerklärung eines Datenfeldes oder in der Datenerklärung innerhalb der Hierarchie eines Datenfeldes stehen. Folgende Regeln gelten:

  4. Der Wert wird so in dem Datenfeld ausgerichtet, als wäre das Datenfeld alphanumerisch beschrieben worden.

  5. Format 2 der VALUE-Klausel darf nur in der FILE SECTION, WORKING-STORAGE SECTION, LOCAL-STORAGE SECTION und in der LINKAGE SECTION angegeben werden. Sie darf nicht in der REPORT SECTION angegeben werden.

  6. Die FALSE-Angabe in der VALUE-Klausel ist nur dann von Bedeutung, wenn der Bedingungsname in einer SET-TO-FALSE-Anweisung benutzt wird.

Beispiel 7-34

02 STAEDTE PICTURE 9.
   88  BERLIN VALUE 1.
   88  HAMBURG VALUE 2.
   88  MUENCHEN VALUE 3.
   88  KOELN VALUE 4.

STAEDTE ist hier die Bedingungsvariable, und BERLIN, HAMBURG, MUENCHEN und KOELN sind die Bedingungsnamen.
Würde die Anweisung IF MUENCHEN GO TO TEST-C im Befehlsteil geschrieben werden, so würde der Wert der Bedingungsvariablen STAEDTE mit 3 verglichen werden; diese Anweisung wäre gleichbedeutend mit der Anweisung
IF STAEDTE IS EQUAL TO 3 GO TO TEST-C.

Beispiel 7-35

02  ZEITALTER PICTURE 99.
    88  ZWANZIGER VALUE 20 THRU 29.
    88  DREISSIGER VALUE 30 THRU 39.

Würde die Anweisung IF ZWANZIGER... im Befehlsteil geschrieben werden, so würde der Wert der Bedingungsvariablen ZEITALTER auf ≥ 20 und ≤ 29 verglichen werden. Diese Anweisung wäre gleichbedeutend mit IF ZEITALTER NOT < 20 AND NOT > 29...

Beispiel 7-36

02 WOCHEN-TAG PIC X(3).
   88  ANFANG-WOCHE VALUE "MON" "DIE" "MIT".
   88  ENDE-WOCHE   VALUE "DON" "FRE".
   88  FREIER-TAG   VALUE "SAM" "SON".

Wird die Anweisung IF ANFANG-WOCHE... im Befehlsteil geschrieben, dann wird die Bedingungsvariable WOCHEN-TAG mit „MON“, „DIE“ und „MIT“ verglichen. Diese Anweisung wäre gleichbedeutend mit IF WOCHEN-TAG IS EQUAL TO "MON" OR "DIE" OR "MIT" ...

Format 3


{{VALUE | VALUES} [FROM ({subskript-1}...)] [IS | ARE]
       {literal-2}... [REPEATED {ganzzahl-1 TIMES | TO END}]} ...


Syntaxregeln

  1. Alle numerischen Literale in der VALUE-KLausel eines Datenfeldes müssen die Größe haben, die innerhalb der in der PICTURE-Klausel angegebenen Stellenanzahl liegt, und dürfen keinen Wert haben, der das Abschneiden von Ziffern ungleich Null erfordern würde.

  2. Nichtnumerische Literale in der VALUE-Klausel eines Datenfeldes dürfen die in der PICTURE-Klausel angegebene Größe nicht überschreiten.

  3. Ist die Kategorie des Datenfeldes alphabetisch, alphanumerisch, alphanumerisch druckaufbereitet oder numerisch druckaufbereitet, müssen alle Literale in der VALUE-Klausel alphanumerische Literale sein.
    Die Länge alphanumerischer Literale in der VALUE-Klausel eines Datenelements darf nicht größer sein als die Länge, die durch eine explizit angegebene PICTURE-Klausel festgelegt ist.
    Die Länge alphanumerischer Literale in der VALUE-Klausel einer alphanumerischen Gruppe darf nicht größer sein als die Länge der Gruppe.

  4. Wird die VALUE-Klausel in einer Erklärung auf Gruppenebene angegeben, so muss das Literal eine figurative Konstante oder ein nichtnumerisches Literal sein; in diesem Fall ist der ganze Bereich der Datengruppe auf den Anfangswert gesetzt, ohne Rücksicht auf die einzelnen Datenelemente oder Datengruppen, die in der Datengruppe enthalten sind. Innerhalb der Datengruppe darf die VALUE-Klausel für keine der untergeordneten Stufen angegeben werden.

  5. Die VALUE-Klausel darf nicht für eine Datengruppe angegeben werden, deren Daten felder mit JUSTIFIED, SYNCHRONIZED oder USAGE (außer USAGE DISPLAY oder USAGE NATIONAL) beschrieben sind. -

  6. Die Datenerklärung muss eine OCCURS-Klausel enthalten oder muss einer Datener klärung untergeordnet sein, die eine OCCURS-Klausel enthält.

  7. Subskript-1 muss ein ganzzahliges Literal sein. Wenn alle Subskripte den Wert 1 haben, brauchen sie nicht angegeben zu werden; andernfalls müssen alle Subskripte, die sich auf ein einzelnes Tabellenelement beziehen, angegeben werden. -

  8. Die Anzahl der mit Anfangswerten zu versehenden Tabellenelemente ist wie folgt fest gelegt:

    1. Wenn ganzzahl-1 nicht angegeben ist, gilt die Anzahl der Wiederholungen von literal-2.

    2. Wenn ganzzahl-1 angegeben ist, gilt die Anzahl der Wiederholungen von literal-2 multipliziert mit ganzzahl-1.

    Die Anzahl der mit Anfangswerten zu versehenden Tabellenelemente darf nicht die maximale Anzahl der Elemente vom Bezugspunkt bis zum Tabellenende überschreiten. -
  9. Wenn mehrere VALUE-Klauseln vom Format 3 in einer Datenerklärung verwendet werden, gilt:

    1. Die TO END-Angabe darf nur einmal gemacht werden.

    2. Ein spezifiziertes Tabellenelement darf nur einmal berücksichtigt werden.

  10. Ist die Kategorie des Datenfeldes national, müssen alle Literale in der VALUE-Klausel national sein.
    Die Länge nationaler Literale in der VALUE-Klausel eines Datenelements darf nicht größer sein als die Länge, die durch eine explizit angegebene PICTURE-Klausel festgelegt ist.
    Die Länge nationaler Literale in der VALUE-Klausel einer nationalen Gruppe darf nicht größer sein als die Länge der Gruppe.

Allgemeine Regeln

  1. In einer Tabelle können alle Formate der VALUE-Klausel verwendet werden.

  2. Wenn mehr als eine VALUE-Klausel sich auf dasselbe Tabellenelement beziehen, wird - innerhalb derselben Datenerklärung - derjenige Wert dem Tabellenelement zugewiesen, der von der letzten VALUE-Klausel der Datenerklärung vorgegeben wurde.

  3. Eine VALUE-Klausel vom Format 3 belegt ein Tabellenelement mit dem Wert von literal-2. Das mit dem Anfangswert belegte Tabellenelement ist bezeichnet durch subskript-1. Zusammenhängende Tabellenelemente werden der Reihe nach initialisiert, je nach den aufeinanderfolgenden Werten von literal-2. Zusammenhängende Tabellenelemente beziehen sich auf das durch 1 inkrementierte Subskript, das die kleinste Tabellendimension repräsentiert.Wenn ein Bezug auf ein Subskript, bevor es inkrementiert wird, gleich ist mit der größten Anzahl von Bezügen, die in der zugehörigen OCCURS-Klausel angegeben wurde, wird dieses Subskript auf 1 gesetzt, und das Subskript für die nächste Tabellendimension wird um 1 vergrößert.

  4. Wird REPEATED angegeben, werden alle Werte von literal-2 wiederverwendet in der Reihenfolge, in der sie angegeben wurden.Wird TO END angegeben, wird die Wiederverwendung durchgeführt, bis das Ende der Tabelle erreicht ist. Wenn ganzzahl-1 TIMES angegeben ist, werden alle Werte von literal-2 der Reihe nach wiederverwendet, abhängig von ganzzahl-1.Ist REPEATED nicht angegeben, werden die Werte von literal-2 nur einmal der Reihe nach verwendet.

  5. Wenn eine VALUE-Klausel in der Erklärung eines Datenfeldes angegeben ist, das mit einem Datenfeld variabler Wiederholungen verknüpft ist, wird beim Setzen des Anfangswertes so vorgegangen, als hätte das Datenfeld der DEPENDING ON-Angabe der OCCURS-Klausel für das Datenfeld variable Wiederholung den Wert maximaler Wiederholungen. Ein Datenfeld ist mit einem Datenfeld variabler Wiederholungen verknüpft, wenn einer der folgenden Fälle gilt:

    1. Es ist ein Gruppenfeld, das ein Datenfeld variabler Wiederholungen enthält.

    2. Es ist ein Datenfeld variabler Wiederholungen.

    3. Es ist ein Datenfeld, das einem Datenfeld variabler Wiederholungen untergeordnet ist.

  6. Die VALUE-Klausel darf nicht im Widerspruch zu den sonstigen Klauseln in der Datenerklärung eines Datenfeldes oder in der Datenerklärung innerhalb der Hierarchie eines Datenfeldes stehen. Folgende Regeln gelten: 

    Ist die Kategorie des Datenfeldes numerisch, müssen alle Literale in der VALUE-Klau sel numerisch sein.

    Das Literal wird standardmäßig in dem Datenfeld ausgerichtet. Das Literal wird so in das Datenfeld ausgerichtet, als wäre das Datenfeld alphanume- risch beschrieben worden. Dabei hat die JUSTIFIED-Klausel keinen Einfluss und es findet keine Editierung statt.

    Ein Datenfeld wird auf einen Anfangswert gesetzt, unabhängig davon, ob eine BLANK WHEN ZERO-Klausel oder JUSTIFIED-Klausel angegeben wurde.

Example 7-37

IDENTIFICATION DIVISION.
  PROGRAM-ID. TAB.
  ENVIRONMENT DIVISION.
  CONFIGURATION SECTION.
  SPECIAL-NAMES.
      TERMINAL IS T.
  DATA DIVISION.
 *****
  WORKING-STORAGE SECTION.
  01 FIELD1.
     02 A OCCURS 20.
       03 B OCCURS 4.
         49 PIC X(01)
            VALUE FROM (5 2) IS "1" "2" "3"
            REPEATED 4.
 *
  01 FIELD2.
     02 Z PIC 99.
     02 A OCCURS 1 TO 78 DEPENDING ON Z.
        49 PIC X VALUE "x".
 *
  01 FIELD3.
     02 A OCCURS 20
          VALUE FROM (1) IS "ab" "c"
          REPEATED 10 TIMES.
        03 B OCCURS 4.
           49 PIC X.
  PROCEDURE DIVISION.
  MAIN SECTION.
  P1.
      MOVE 78 TO Z.
      DISPLAY FIELD1 UPON T.
      DISPLAY FIELD2 UPON T.
      DISPLAY FIELD3 UPON T.
      STOP RUN.

Es ergibt sich folgende Belegung:

FIELD1:

B(5,2) = "1"

B(5,3) = "2"

B(5,4) = "3"

B(6,1) = "1"

B(6,2) = "2"

B(6,3) = "3"

B(6,4) = "1"

B(7,1) = "2"

B(7,2) = "3"

B(7,3) = "1"

B(7,4) = "2"

B(8,1) = "3"


Alle anderen Tabellenelemente sind nicht belegt.

FIELD2

78 mal "x"

FIELD3:

A(1) = "ab'BLANK''BLANK'"

A(3) = "ab'BLANK''BLANK'"

...

A(19) = "ab'BLANK''BLANK'"

A(2) = "c'BLANK''BLANK''BLANK'"

A(4) = "c'BLANK''BLANK''BLANK'"

...

A(20) = "c'BLANK''BLANK''BLANK'"