Array- und Tabellen-Definitionen

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:


Array-Definition

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:
Wenn Sie einen Starting from-Wert aus einem Array entfernen, hat dies zur Folge, dass auch die Variable aus der Maske entfernt wird, es sei denn, sie ist ein Maskenfeld oder sie ist mit einem anderen Maskenfeld als Starting from-Wert oder als Hilfe-Parameter verbunden. Um Starting from-Werte zu bearbeiten, müssen Sie PF9 im Bildschirm Field and Variable Definitions - Summary drücken.

Spacing Die Anzahl der Leerzeilen (bei vertikalen Dimensionen) oder Leerspalten (bei horizontalen Dimensionen), die zwischen jeder Ausprägung einer Dimension eingefügt werden soll.

Top Dim ändern

Wenn Sie die obere Dimension eines Array ändern müssen, beispielsweise um mehr Zeilen auf einer Maske zuzulassen, können Sie folgendermaßen vorgehen:

  1. 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.

  2. Aktualisieren Sie nun jede obere Dimension: Da es keine Beziehung mehr zu einer Definition gibt, sollte dieses Feld für Änderungen zugänglich sein.

  3. 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.

  4. Vergessen Sie nicht, die Programme anzupassen, die die Größen dieser Felder definieren.

Beispiele für Array-Definitionen

Beispiel 1:

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   
  

Beispiel 2:

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   
  

Beispiel 3:

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   
  

Beispiel 4:

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   
  

Beispiel 5:

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   
  

Beispiel 6:

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   
  

Beispiel 7:

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

Array-Tabellen-Definition

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.

Beispiel einer Tabellen-Definition

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

Tabellen-Definition:

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.

Tabellen-Layout:

graphics/map_mf_arrays.png

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.