Your Browser is not longer supported

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

{{viewport.spaceProperty.prod}}

Lokale und globale Namen

&pagelevel(5)&pagelevel

Die in einem geschachtelten Programm verwendeten Namen lassen sich unterscheiden in „lokale“ und „globale“ Namen.

Lokale Namen

Lokale Namen sind nur innerhalb des Programms gültig, in dem die zugehörigen Daten beschrieben sind. Die meisten standardmäßig lokalen Namen können als global vereinbart werden. Stets lokale Namen sind:

  • Paragrafennamen

  • Kapitelnamen

Globale Namen

Globale Namen sind nicht nur in dem Programm gültig, in dem sie definiert sind, sondern darüberhinaus auch in dessen inneren Programmen. Stets globale Namen sind:

  • Namen, die in der CONFIGURATION SECTION vereinbart werden:

    Rechenanlagenname
    Alphabetnamen
    Klassennamen
    Bedingungsnamen (SPECIAL-NAMES-Paragraf)
    Merknamen
    symbolische Zeichen
    CURRENCY SIGN-Zeichen
    DECIMAL-POINT

  • COBOL-Sonderregister:

    TALLY
    PRINT-SWITCH
    SORT-Register
    RETURN-CODE

Die folgenden Namenstypen sind standardmäßig lokal und können in geschachtelten Programmen explizit als global vereinbart werden:

  • Bedingungsnamen

  • Datennamen

  • Dateinamen

  • Indexnamen

  • Datensatznamen

  • Listennamen

  • Typnamen

Die Vereinbarung eines Namens als global erfolgt mit der GLOBAL-Klausel (siehe "GLOBAL-Klausel " und "GLOBAL-Klausel ").

Bei Typnamen bezieht sich die Angabe GLOBAL auf die Definition des Typs und nicht auf die mit Hilfe der Typdefinition erzeugten Datenbeschreibung.

Bestimmung des gültigen Namens

Wird ein Name referenziert, so wird der gültige Name aus der Menge aller in dem geschachtelten Programm definierten Namen nach folgenden Präzedenzregeln ausgewählt:

  1. Der referenzierte Name ist im selben Programm definiert.

  2. Wenn 1. nicht zutrifft, ist der referenzierte Name im direkt übergeordneten (nächstäußeren) Programm als globaler Name definiert.

  3. Wenn weder 1. noch 2. zutrifft, ist der referenzierte Name im indirekt übergeordneten Programm als globaler Name definiert. 

    Bedingung 3. wird solange geprüft, bis die Datenerklärung des referenzierten Namens in einem der weiteren indirekt übergeordneten Programme gefunden ist, ggf. erst im äußersten Programm.

Beispiel 12-6

Beispiel 12-7

PROGRAM-ID. A-PROG.
...
01 T1 TYPEDEF STRONG GLOBAL. 
   02 NAME PIC X(30).
   02 STRASSE PIC X(80).
...
01 A1 TYPE T1.                1)
01 B1 TYPE T1 GLOBAL.
...
PROGRAM-ID. B-PROG.
...
01 T1 TYPEDEF STRONG.         2)
   02 UNTERSTRUKTUR.
     05 NAME-3 PIC X(30).
     05 STRASSE-3 PIC X(80).
...
01 C1 TYPE T1.                3)
...
MOVE B1 TO C1.                4)
...
END PROGRAM B-PROG.
END PROGRAM A-PROG.
  1. verwendet Typdefinition T1 aus A-PROG;
    Definition A1 ist lokal in A-Prog, Definition B1 ist global
  2. Typ T1 ist lokal in B-PROG
  3. verwendet Typdefinition T1 aus B-PROG
  4. Zuweisung ist zulässig, da T1 in A-PROG äquivalent zu T1 in B-PROG