Your Browser is not longer supported

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

{{viewport.spaceProperty.prod}}

BEGIN-STRUCTURE Statische Struktur deklarieren

&pagelevel(4)&pagelevel

Anwendungsgebiet: PROCEDURE

Kommandobeschreibung

Wenn ein Strukturlayout deklariert wird, kennzeichnet BEGIN-STRUCTURE den Beginn der Deklaration des Strukturlayouts. Das Strukturlayout muss vor den statischen Strukturen, die sich darauf beziehen sollen, deklariert werden. Das Kommando END-STRUCTURE beendet die Deklaration des Strukturlayouts.

Wenn eine statische Struktur mit der Angabe *BY-SYSCMD deklariert wird , muss direkt auf das Kommando DECLARE-VARIABLE, in dem die Struktur deklariert wird, das Kommando BEGIN-STRUCTURE folgen. Es leitet die Elementdeklarationen ein.

(Zur Deklaration von Strukturen siehe Abschnitt „Variablendeklaration“.)

Format

BEGIN-STRUCTURE

NAME = *NONE / <structured-name 1..20>(...)

<structured-name 1..20>(...)

SCOPE = *CURRENT / *PROCEDURE / *TASK(...)

*TASK(...)

STATE = *ANY / *NEW

Operandenbeschreibung

NAME =
Kennzeichnet den Beginn der Deklaration eines Strukturlayouts oder den Beginn der Elementdeklaration einer statischen Struktur.

NAME = *NONE
Kennzeichnet den Beginn der Elementdeklaration der statischen Struktur, die im Kommando DECLARE-VARIABLE mit TYPE = *STRUCTURE(*BY-SYSCMD) eingeleitet wurde.

NAME = <structured-name 1..20>(...)
Name eines Strukturlayouts.
Mit NAME kann im Kommando DECLARE-VARIABLE mit TYPE = *STRUCTURE(DEFINITION = <structured-name 1..20>) auf das Strukturlayout Bezug genommen werden. Der dort angegebene Name für ein Strukturlayout muss mit dem übereinstimmen, der hier im Operanden NAME angegeben wird. Auf diese Weise wird der Struktur eindeutig ein Strukturlayout zugeordnet.

SCOPE =
Definiert den Geltungsbereich für das Strukturlayout.

SCOPE = *CURRENT
Entspricht in CALL-Prozeduren der Angabe PROCEDURE.
In INCLUDE-Prozeduren bedeutet CURRENT, dass das Strukturlayout in der aktuellen INCLUDE-Prozedur angelegt wird. Das Strukturlayout ist dann in dieser Include-Prozedur sichtbar (und in allen tiefergeschachtelten INCLUDE-Prozeduren).
Das Strukturlayout verschwindet mit dem (dynamischen) Ende der CALL- bzw. INCLUDE-Prozedur.

SCOPE = *PROCEDURE
Das Strukturlayout wird in der aktuellen CALL-Prozedur angelegt. In einer Include-Prozedur ist die aktuelle Prozedur immer die aufrufende CALL-Prozedur.
Das Strukturlayout ist in der aktuellen CALL-Prozedur sichtbar sowie in allen Prozeduren, die in der aktuellen CALL-Prozedur mit INCLUDE-PROCEDURE aufgerufen werden. Das Layout wird in der aktuellen CALL-Prozedur angelegt. Es bleibt daher bis zum Ende dieser Prozedur bestehen, auch wenn es in einer INCLUDE-Prozedur deklariert wurde, die in der aktuellen CALL-Prozedur aufgerufen wurde.

SCOPE = *TASK(...)
Die Lebensdauer des Strukturlayouts wird durch die Lebensdauer der Task bestimmt. Das Strukturlayout ist sichtbar in allen Prozeduren, in denen keine Struktur mit dem selben Namen und mit anderem Geltungsbereich (d.h. *CURRENT oder *PROCEDURE) deklariert wurde.

STATE = *ANY
Wenn in der Task bereits ein Strukturlayout dieses Namens existiert, so wird das bereits bestehende Strukturlayout genommen. Es wird kein neues Strukturlayout angelegt. Bei solchen Mehrfachdeklarationen gilt die Regel, dass das hier deklarierte Strukturlayout mit dem schon vorhandenen übereinstimmen muss. Wenn in der Task noch kein Strukturlayout dieses Namens existiert, wird ein neues Strukturlayout definiert.

STATE = *NEW
Das Strukturlayout darf in der Task noch nicht vorhanden sein. Es wird ein neues Strukturlayout deklariert.

Kommando-Returncode

(SC2)

SC1

Maincode

Bedeutung


0CMD0001Ohne Fehler

1CMD0202Syntaxfehler

1SDP0118Kommando im falschen Kontext

3CMD2203Falsche Syntaxdatei

32CMD0221Systemfehler (interner Fehler)

64SDP0091Semantikfehler

130SDP0099Kein Adressraum mehr verfügbar

Beispiel

Siehe Kommando DECLARE-ELEMENT, "DECLARE-ELEMENT Strukturelement deklarieren ".