Die Funktion zur Array-Definition wird verwendet, um die Ausprägungen und das Layout eines Array zu definieren (X-Arrays werden nicht unterstützt).
Eingeleitet wird die Array-Definition durch das Feld-Kommando
.A
oder durch Absetzen des Zeilenkommandos
..E
und durch anschließendes Markieren des
betreffenden Feldes mit dem Funktionscode A
.
Die Funktion zur Tabellendefinition wird verwendet, um die Ausprägungen und das Layout von mehr als einem Array gleichzeitig zu definieren. Die Arrays müssen in derselben Maskenzeile beginnen.
Aufgerufen wird die Tabellendefinition mit dem Zeilenkommando
..A
.
Dieser Abschnitt behandelt folgende Themen:
Im oberen Bereich des folgenden Beispiel-Bildschirms kann die Array-Definition vorgenommen werden:
Name #001 Top Dim 1__________ 1__________ 1__________ ------------------------------------------------------------------------------- Dimensions Occurrences Starting from Spacing 0 . Index vertical 1__ ___________ 0 Lines 0 . Index horizontal 1__ ___________ 1 Columns 0 . Index (h/v) V 1__ ___________ 0 Cls/Ls 001 --010---+----+----+---030---+----+----+---050---+----+----+---070---+---- .AXXXXX Please enter starting name .AXXXXXXXXXXXXXXXXXXX Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12--- Help Mset Exit -- - + < > Let |
Folgende Angaben sind möglich:
Feld | Erläuterung |
---|---|
Top Dim | Zeigt die obere Dimension eines Array, d.h. die höchste
Ausprägung (von links nach rechts) in der ersten, zweiten und dritten
Dimension.
Wenn zum Definieren des Masken-Array eine Felddefinition in einem Programm verwendet wird, werden, so wie im Programm definiert, die oberen Begrenzungen dieses Feldes (Benutzervariable oder Datenbankfeld) verwendet. Diese können im Array-Definitionsbildschirm nicht überschrieben werden. Siehe auch Hinweis in Top Dim ändern weiter unten. Wenn Sie eine Masken-Array-Definition aus einer Datendefinition in einem anderen Natural-Objekt wählen, dürfen die Dimensionen des Masken-Array nicht die Dimensionen überschreiten, die in diesem Feld gezeigt werden. Wenn Sie keine Masken-Array-Definition aus einer Datendefinition wählen, dürfen die Dimensionen des Masken-Array nicht die Dimensionen überschreiten, die in dem Natural-Programm definiert sind. |
Dimensions | Ein Array kann bis zu drei Dimensionen haben. Die Reihenfolge, in der die Dimensionen das Array im Masken-Layout abgebildet werden, wird durch die Werte bestimmt, die links von den Index-Operanden eingegeben werden. |
Occurrences | Die Anzahl der zu einer Dimension zu definierenden Ausprägungen. |
Starting from | Der Start-Indexwert für eine Dimension. Sie können
einen numerischen Wert benutzen, oder Sie können einen Variablennamen
verwenden, um anzugeben, dass der tatsächliche Wert in dem Natural-Programm
geliefert wird, das die Masken-Definition aufruft.
Falls die Variable nicht anderweitig als ein Feld in der Maske definiert ist, wird davon ausgegangen, dass es Natural-Datenformat/Länge N7 hat. Falls dem so ist, können Sie sie nach Drücken von PF9 im Bildschirm Field and Parameter Definition bearbeiten. Anmerkung: |
Spacing | Die Anzahl der Leerzeilen (bei vertikalen Dimensionen) oder Leerspalten (bei horizontalen Dimensionen), die zwischen jeder Ausprägung einer Dimension eingefügt werden soll. |
Wenn Sie die obere Dimension eines Array ändern müssen, beispielsweise um mehr Zeilen auf einer Maske zuzulassen, können Sie folgendermaßen vorgehen:
Benennen Sie jedes Feld, dessen Größe geändert werden soll, so
um, dass es in keinem der Quellcodes in der aktuellen Library eine solche
Deklaration gibt. Überschreiben Sie z.B. das erste Zeichen mit
X
.
Aktualisieren Sie nun jede obere Dimension: Da es keine Beziehung mehr zu einer Definition gibt, sollte dieses Feld für Änderungen zugänglich sein.
Benennen Sie jedes Array-Feld wieder so um, wie es vor Schritt 1 war. D.h. machen Sie die Umbenennung jedes Array-Feldes rückgängig.
Vergessen Sie nicht, die Programme anzupassen, die die Größen dieser Felder definieren.
Ein eindimensionales Array, bestehend aus 10 vertikalen Ausprägungen mit zwei Leerzeilen, die zwischen den benachbarten Ausprägungen eingefügt werden sollen.
Name #001 Top Dim 10_________ 1__________ 1__________ ------------------------------------------------------------------------------- Dimensions Occurrences Starting from Spacing 1 . Index vertical 10_ ________ 2 Lines 0 . Index horizontal 1__ ________ 1 Columns 0 . Index (h/v) V 1__ ________ 0 Cls/Ls |
Wie bei Beispiel 1, jedoch soll das Array horizontal ausgerichtet sein.
Name #001 Top Dim 10_________ 1__________ 1__________ ------------------------------------------------------------------------------- Dimensions Occurrences Starting from Spacing 0 . Index vertical 1__ ________ 0 Lines 1 . Index horizontal 10_ ________ 1 Columns 0 . Index (h/v) V 1__ ________ 0 Cls/Ls |
Ein zweidimensionales Array. Die erste Dimension besteht aus 10 vertikalen Ausprägungen mit einer Leerzeile zwischen den benachbarten Ausprägungen. Die zweite Dimension besteht aus 5 horizontalen Ausprägungen mit zwei Leerspalten zwischen den benachbarten Ausprägungen.
Name #001 Top Dim 10_________ 5__________ 1__________ ------------------------------------------------------------------------------- Dimensions Occurrences Starting from Spacing 1 . Index vertical 10_ ________ 1 Lines 2 . Index horizontal 5__ ________ 2 Columns 0 . Index (h/v) V 1__ ________ 0 Cls/Ls |
Wie bei Beispiel 3, jedoch ist die Reihenfolge der Dimensionen umgekehrt.
Name #001 Top Dim 5_________ 10__________ 1__________ ------------------------------------------------------------------------------- Dimensions Occurrences Starting from Spacing 2 . Index vertical 10_ ________ 1 Lines 1 . Index horizontal 5__ ________ 2 Columns 0 . Index (h/v) V 1__ ________ 0 Cls/Ls |
Ein dreidimensionales Array. Die erste Dimension besteht aus 3 vertikalen Ausprägungen mit einer Leerzeile zwischen den benachbarten Ausprägungen. Die zweite Dimension besteht aus 5 horizontalen Ausprägungen mit zwei Leerspalten zwischen den benachbarten Ausprägungen. Die dritte Dimension besteht aus zwei Ausprägungen, die innerhalb jeder Ausprägung der ersten Dimension vertikal erweitert sind.
Name #001 Top Dim 3__________ 5__________ 2__________ ------------------------------------------------------------------------------- Dimensions Occurrences Starting from Spacing 1 . Index vertical 3__ ________ 1 Lines 2 . Index horizontal 5__ ________ 2 Columns 3 . Index (h/v) V 2__ ________ 0 Cls/Ls |
Ein Beispiel für die Verwendung von Starting
from. Die erste Dimension besteht aus 10 vertikalen Ausprägungen,
die ab dem Index I
beginnen. I
ist im Masken-Editor
standardmäßig mit Natural-Datenformat/Länge N7 definiert. Die zweite Dimension
besteht aus 5 horizontalen Ausprägungen, die ab dem Index I
beginnen.
Name #001 Top Dim 10_________ 5__________ 1__________ ------------------------------------------------------------------------------- Dimensions Occurrences Starting from Spacing 1 . Index vertical 10_ I_______ 1 Lines 2 . Index horizontal 5__ 3_______ 2 Columns 0 . Index (h/v) V 1__ ________ 0 Cls/Ls |
Ein Beispiel, wie man aus einem eindimensionalen ein
zweidimensionales Array macht. Das Array besteht aus 40 Elementen. Angezeigt
wird es in zwei Spalten mit jeweils 20 Zeilen. Das wird dadurch erreicht, dass
man 0
als horizontalen Index angibt.
Name #001 Top Dim 40_________ 1__________ 1__________ ------------------------------------------------------------------------------- Dimensions Occurrences Starting from Spacing 1 . Index vertical 20_ ________ 0 Lines 0 . Index horizontal 2__ ________ 10 Columns 0 . Index (h/v) V 1__ ________ 0 Cls/Ls |
Eine Tabelle mit einem oder mehreren Arrays, die alle in derselben
Maskenzeile beginnen, können Sie erstellen, indem Sie das Zeilenkommando
..A
benutzen. Nach Eingabe des Kommandos wird
folgender Bildschirm angezeigt (Beispiel):
14:41:47 ***** NATURAL MAP EDITOR ***** 2007-10-22 - Array Table Definition - Main Index: Vert. Occur. 1 Starting from ___________ Spacing 0 Lines Second Index: Direction(H/V) V ___________ 0 Cls/Ls Third Index: Direction(H/V) V ___________ 0 Cls/Ls ------------------------------------------------------------------------------- Name of Variable Col Dimension Size Order 2. 3. (truncated) Pos Ind1 Ind2 Ind3 M S T Occ Occ ------------------------------------------------------------------------------- #001 2 1 1 1 #002 25 1 1 1 Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12--- Help Mset Exit -- - + Let |
Vorsicht:
Wenn Sie das Zeilenkommando ..A
bei Arrays anwenden, die nicht mit einem
..A
-Kommando, sondern mit einem
.A
-Kommando definiert wurden, kann das zu einer
Veränderung oder sogar zu einer Zerstörung dieser Arrays führen.
Der obige Beispiel-Bildschirm enthält folgende Felder:
Feld | Erläuterung |
---|---|
Main Index | Die Anzahl der vertikalen Ausprägungen, die Start-Position und die Anzahl an Zeilen, die zwischen den Ausprägungen der Dimensionen übersprungen werden sollen. |
Second Index | Die Richtung (horizontal oder vertikal), die
Start-Position und die Anzahl an Zeilen/Spalten, die zwischen den Ausprägungen
der Dimensionen übersprungen werden sollen.
Die zweite Dimension gilt nur, wenn eines der Arrays mehr als eine Dimension hat. In diesem Fall kann die zweite Dimension entweder horizontal oder vertikal angezeigt werden. Bei horizontaler Anzeige muss in der Zeile genügend Platz für alle gewählten Ausprägungen vorhanden sein. Bei vertikaler Anzeige müssen in der Maske genügend Zeilen vorhanden sein, um die Anzeige der Hauptdimension mal der zweiten Dimension, einschließlich der Zeilenabstände, zu ermöglichen. |
Third Index | Die Richtung (horizontal oder vertikal), die
Start-Position und die Anzahl an Zeilen/Spalten, die zwischen den Ausprägungen
der Dimensionen übersprungen werden sollen.
Die dritte Dimension gilt nur, wenn eines der Arrays mehr als zwei Dimensionen hat. In diesem Fall kann die dritte Dimension entweder horizontal oder vertikal angezeigt werden. Bei horizontaler Anzeige muss in der Zeile genügend Platz für alle gewählten Ausprägungen vorhanden sein. Bei vertikaler Anzeige müssen in der Maske genügend Zeilen vorhanden sein, um die Anzeige der Hauptdimension mal der dritten Dimension, einschließlich der Zeilenabstände, zu ermöglichen. |
Name of Variable | Alle Namen von Feld-Arrays, die in der Tabelle enthalten sind, werden hier angezeigt. |
Col Pos | Die Spaltenposition, in der sich das Feld befindet. Wird nur zur Information angezeigt. |
Dimension Size | Die oberen Begrenzungen Ind1,
Ind2 und Ind3 eines Array.
Die Dimensionen des in der Maske definierten Array dürfen nicht größer sein als die Dimensionen des entsprechenden Array, das in dem Natural-Objekt definiert ist, das die Maske aufruft. |
Order | Die Reihenfolge, in der die Dimensionen definiert werden sollen: M, S und T entsprechen Main (Hauptdimension), Second (zweite) und Third (dritte Dimension). |
2. Occ. | Die Anzahl der Ausprägungen, die für den zweiten Index definiert werden sollen. |
3. Occ. | Die Anzahl der Ausprägungen, die für den dritten Index definiert werden sollen. |
Dies ist ein Beispiel für die Definition von Maskenfeldern, die der folgenden Programmdefinition entsprechen:
DEFINE DATA 1 ARRAY1 (A3/1:10) 1 ARRAY2 (A5/1:10,1:2) 1 ARRAY3 (A7/1:10,1:2,1:3) END-DEFINE
14:41:47 ***** NATURAL MAP EDITOR ***** 2006-07-24 - Array Table Definition - Main Index: Vert. Occur. 1 Starting from ___________ Spacing 0 Lines Second Index: Direction(H/V) V ___________ 0 Cls/Ls Third Index: Direction(H/V) V ___________ 0 Cls/Ls ------------------------------------------------------------------------------- Name of Variable Col Dimension Size Order 2. 3. (truncated) Pos Ind1 Ind2 Ind3 M S T Occ Occ ------------------------------------------------------------------------------- ARRAY1 3 10 1 1 1 ARRAY2 32 10 2 1 1 2 2 ARRAY3 58 10 2 3 1 2 3 2 3 Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12--- Help Mset Exit -- - + Let |
ARRAY1
ist ein eindimensionales Array mit 10
Ausprägungen. Die ersten zwei Ausprägungen sind in der Tabelle erweitert.
ARRAY2
ist zweidimensionales Array. Der erste Index
besteht aus 10 Ausprägungen, der zweite Index aus zwei Ausprägungen. Die ersten
zwei Ausprägungen des ersten Index und beide Ausprägungen des zweiten Index
sind in der Tabelle erweitert.
ARRAY3
ist dreidimensionales Array. Der erste Index
besteht aus 10 Ausprägungen, der zweite Index aus zwei Ausprägungen, der dritte
Index aus drei Ausprägungen. Die ersten zwei Ausprägungen des ersten Index und
beide Ausprägungen des zweiten Index und alle drei Ausprägungen des dritten
Index sind in der Tabelle erweitert.
Die Tabelle ist als eine Zusammenstellung von Arrays definiert, die die folgenden Eigenschaften gemeinsam haben:
Die Anzahl der Ausprägungen für den Hauptindex muss bei jedem Array der Tabelle gleich sein. Der Hauptindex wird immer vertikal erweitert.
Alle Elemente eines bestimmten Index müssen in derselben Zeile platziert werden. Dadurch hängt der Abstand zwischen den Elementen eines bestimmten Index von dem Array mit der größten Dimension ab.