Benutzereingaben

Sie lernen nun, wie Sie einen Benutzer zur Eingabe von Daten auffordern (d.h. der Benutzer soll einen Start- und Endnamen für die Ausgabe eingeben).

Wenn Sie mit den Übungen in diesem Dokument fertig sind, wird Ihre Beispielanwendung aus den folgenden Modulen bestehen:

Anwendungsstruktur

Dieses Dokument enthält die folgenden Übungen:


Benutzereingaben ermöglichen

Sie werden Ihr Programm jetzt so verändern, dass Eingabefelder für die Start- und Endnamen in der Ausgabe angezeigt werden. Hierzu benutzen Sie das INPUT-Statement.

Beginn der AnweisungslisteEingabefelder definieren

  1. Geben Sie Folgendes unter END-DEFINE ein:

    INPUT (AD=MT)
      "Start:" #NAME-START /
      "End:  " #NAME-END

    Der Session-Parameter AD steht für "Attribute Definition" (Attributdefinition). Sein Wert "M" steht für "Modifiable output field" (modifizierbares Ausgabefeld) und der Wert "T" steht für "translate lowercase to uppercase" (Übersetzen von Kleinbuchstaben in Großbuchstaben).

    Der Wert "M" in AD=MT bedeutet, dass die mit INIT definierten Vorgabewerte (d.h.: "ADKINSON" und "BENNETT") in den Eingabefeldern angezeigt werden. Der Benutzer kann andere Werte eingeben. Wenn Sie den Wert "M" weglassen, bleiben die Eingabefelder leer, obwohl Vorgabewerte definiert wurden.

    Der Wert "T" in AD=MT bedeutet, dass jede Eingabe, die in Kleinbuchstaben gemacht wurde, vor der weiteren Verarbeitung in Großbuchstaben übersetzt wird. Dies ist wichtig, weil die Namen in der Demodatenbank komplett in Großbuchstaben definiert wurden. Wenn Sie den Wert "T" weglassen, müssen Sie alle Namen komplett in Großbuchstaben angeben. Andernfalls wird der angegebene Name nicht gefunden.

    "Start:" und "End:" sind Textfelder (Bezeichnungen). Sie werden in Anführungszeichen eingegeben.

    #NAME-START und #NAME-END sind Datenfelder (Eingabefelder), in denen der Benutzer den gewünschten Start- und Endnamen eingeben kann.

    Der Schrägstrich (/) bedeutet, dass die nachfolgenden Felder in einer neuen Zeile angezeigt werden sollen.

    Ihr Programm sollte nun folgendermaßen aussehen:

    DEFINE DATA
    LOCAL
      1 #NAME-START        (A20) INIT <"ADKINSON">
      1 #NAME-END          (A20) INIT <"BENNETT">
      1 EMPLOYEES-VIEW VIEW OF EMPLOYEES
        2 FULL-NAME
          3 NAME (A20)
        2 DEPT (A6)
        2 LEAVE-DATA
          3 LEAVE-DUE (N2)
    END-DEFINE
    *
    INPUT (AD=MT)
      "Start:" #NAME-START /
      "End:  " #NAME-END
    *
    READ EMPLOYEES-VIEW BY NAME
      STARTING FROM #NAME-START
      ENDING AT #NAME-END
    *
      DISPLAY NAME 3X DEPT 3X LEAVE-DUE
    *
    END-READ
    *
    END
  2. Führen Sie das Programm mit RUN aus.

    Die Ausgabe enthält die Felder, die Sie gerade definiert haben.

     Start: ADKINSON                                                                
     End:   BENNETT
                                                                     
    
  3. Behalten Sie die Vorgabewerte bei und drücken Sie EINGABE.

    Die Liste der Mitarbeiter wird nun angezeigt.

  4. Drücken Sie wiederholt EINGABE bis Sie wieder im Programmeditor sind, oder geben Sie EDIT in der MORE-Zeile ein.

  5. Speichern Sie das Programm mit STOW.

Map für die Benutzereingabe gestalten

Sie lernen jetzt eine weitere Möglichkeit kennen, den Benutzer zur Eingabe aufzufordern. Sie werden mit dem Map-Editor eine Map erstellen, die dieselben Felder enthält, die Sie vorher in Ihrem Programm definiert haben. Eine Map ist ein separates Objekt; sie wird benutzt, um das Layout der Benutzeroberfläche von der Geschäftslogik der Anwendung zu trennen.

Die Map, die Sie jetzt erstellen werden, wird folgendermaßen aussehen:

Ob _                                    Ob D CLS ATT  DEL    CLS ATT  DEL      
.                                       .     T  D    Blnk    T  I    ?        
.                                       .     A  D    _       A  I    )        
.                                       .     A  N    ^       M  D    &        
.                                       .     M  I    :       O  D    +        
.                                       .     O  I    (                        
.                                       .                                      
001   --010---+----+----+---030---+----+----+---050---+----+----+---070---+----
(XXXXXXXXXX                                                         (XXXXXXXX  
                                                                               
                                                                               
                          Start :XXXXXXXXXXXXXXXXXXXX                          
                                                                               
                            End :XXXXXXXXXXXXXXXXXXXX                          
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12---
      Help  Mset  Exit  Test  Edit  --    -     +     Full  <     >     Let   

Die erste Zeile der Map enthält Systemvariablen für das aktuelle Datum und die aktuelle Uhrzeit. Es gibt zwei Datenfelder (Eingabefelder), in denen der Benutzer einen Startnamen und einen Endnamen eingeben kann. Vor den Datenfeldern befinden sich Textfelder (Bezeichnungen).

Die Länge eines Feldes wird durch eine Reihe von "X"-Zeichen dargestellt. Für die Unterscheidung der verschiedenen Feldtypen werden Delimiter-Zeichen benutzt. In unserer Beispiel-Map werden die folgenden Delimiter-Zeichen verwendet:

Delimiter Feldtyp
( Systemvariable.
: Datenfeld.

Für die oben gezeigte Map sind die folgenden Schritte erforderlich:

Map erstellen

Sie werden jetzt den Map-Editor aufrufen, mit dem Sie das Layout Ihrer Map gestalten. Der Map-Editor kann über das Menü Edit Map aufgerufen werden.

Beginn der AnweisungslisteDas Menü Edit Map aufrufen

  1. Geben Sie in der Kommandozeile des Programmeditors einen Punkt (.) ein, um zum Menü Development Functions zurückzukehren.

  2. Geben Sie unten im Menü Development Functions die folgenden Informationen ein und drücken Sie EINGABE:

         Code .. E    Type .. M   Name .. ________________________________         
                                                                                   
                                                                                   
                                                                                   
    Command ===>                                                                   
    Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12---
          Help  Menu  Exit                                                  Canc

    "E" steht für die Funktion Edit Object (Objekt editieren), und "M" steht für den Objekttyp Map.

    Anmerkung:
    Es wäre auch möglich gewesen, den Code "C" für Create Object (Objekt erstellen) einzugeben. In diesem Fall wären Sie aber dazu aufgefordert worden, einen Objektnamen anzugeben.

    Das Menü Edit Map erscheint.

    16:43:41                ***** NATURAL MAP EDITOR *****               2009-06-30
    User SAG                         - Edit Map -                  Library TUTORIAL 
                                                                                   
                       Code    Function                                            
                       ----    ---------------------------------                   
                         D     Field and Variable Definitions                      
                         E     Edit Map                                            
                         I     Initialize new Map                                  
                         H     Initialize a new Help Map                           
                         M     Maintenance of Profiles & Devices                   
                         S     Save Map                                            
                         T     Test Map                                            
                         W     Stow Map                                            
                         ?     Help                                                
                         .     Exit                                                
                                                                                   
                                                                                   
                                                                                   
                 Code .. I     Name .. ________       Profile .. SYSPROF_          
                                                                                   
    Command ===>                                                                   
    Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12---
          Help        Exit  Test  Edit                                             

Beginn der AnweisungslisteEine neue Map initialisieren

  1. Geben Sie unten im Menü Edit Map die folgenden Informationen ein und drücken Sie EINGABE:

                                                                                   
                 Code .. I     Name .. MAP01___       Profile .. SYSPROF_          
                                                                                   
    Command ===>                                                                   
    Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12---
          Help        Exit  Test  Edit                                             

    Der Bildschirm Define Map Settings erscheint.

    16:43:42               Define Map Settings for MAP                   2012-07-17
                                                                                   
     Delimiters           Format                         Context                   
     -----------------    ---------------------------    --------------------------
     Cls Att CD  Del      Page Size ...... 23            Device Check .... ________
      T   D      BLANK    Line Size ...... 79            WRITE Statement   _       
      T   I      ?        Column Shift ... 0 (0/1)       INPUT Statement   X       
      A   D      _        Layout ......... ________      Help  ____________________
      A   I      )         dynamic ....... N (Y/N)        as field default N (Y/N) 
      A   N      ^        Zero Print ..... N (Y/N)                                 
      M   D      &        Case Default ... UC (UC/LC)                              
      M   I      :        Manual Skip .... N (Y/N)       Automatic Rule Rank  1    
      O   D      +        Decimal Char ... .             Profile Name .... SYSPROF 
      O   I      (        Standard Keys .. N (Y/N)                                 
                          Justification .. L (L/R)       Filler Characters         
                          Print Mode ..... __            ------------------------  
                                                         Optional, Partial ....    
                          Control Var .... ________      Required, Partial ....    
                                                         Optional, Complete ...    
                                                         Required, Complete ...    
                                                                                   
    Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12---
          Help        Exit                                                  Let

    In diesem Bildschirm definieren Sie die Standardeinstellungen einer Map (zum Beispiel, die Größe der Map). Es ist auch möglich, die Delimiter-Zeichen in diesem Bildschirm zu ändern. Für dieses Tutorial werden Sie jedoch die Standard-Delimiter-Zeichen verwenden. Sie werden nur die Füllzeichen (Filler Characters) definieren (siehe den nächsten Schritt).

    Ein Delimiter-Zeichen steht für eine Kombination aus Klasse und Attribut, die einem Feld zugeordnet ist. In diesem Tutorial werden die fett dargestellten Delimiter-Zeichen verwendet:

     Delimiters        
     ----------------- 
     Cls Att CD  Del   
      T   D      BLANK 
      T   I      ?     
      A   D      _     
      A   I      )     
      A   N      ^     
      M   D      &     
      M   I      :     
      O   D      +     
      O   I      (     
    • Der Doppelpunkt bedeutet, dass ein Feld ein modifizierbares Ein- und Ausgabefeld ist ("M" in der Spalte Cls) und dass es hervorgehoben (intensiviert) ist ("I" in der Spalte Att).

    • Die öffnende Klammer bedeutet, dass ein Feld nur zur Ausgabe (Output) dient ("O" in der Spalte Cls) und dass es hervorgehoben (intensiviert) ist ("I" in der Spalte Att).

    • Wenn kein Delimiter-Zeichen benutzt wird (dies ist im Bildschirm mit "BLANK" angegeben), so bedeutet das, dass das Feld eine Textkonstante ("T" in der Spalte Cls) mit Standardattributen (Default Attributes) ist ("D" in der Spalte Att).

  2. Geben Sie für jede Füllzeichenoption einen Unterstrich (_) ein, so wie es unten dargestellt ist:

     Filler Characters        
     ------------------------ 
     Optional, Partial .... _ 
     Required, Partial .... _ 
     Optional, Complete ... _ 
     Required, Complete ... _ 

    Füllzeichen werden in der Map benutzt, um leere Positionen in den Eingabefeldern zu füllen, damit der Benutzer bei der Dateneingabe die exakte Position und Länge eines Feldes erkennen kann.

  3. Drücken Sie EINGABE um die Änderungen zu speichern.

  4. Drücken Sie noch einmal EINGABE, um den Editierbereich der Map aufzurufen.

    Der Editierbereich der Map wird im Split-Screen-Modus angezeigt.

    Ob _                                    Ob D CLS ATT  DEL    CLS ATT  DEL      
    .                                       .     T  D    Blnk    T  I    ?        
    .                                       .     A  D    _       A  I    )        
    .                                       .     A  N    ^       M  D    &        
    .                                       .     M  I    :       O  D    +        
    .                                       .     O  I    (                        
    .                                       .                                      
    001   --010---+----+----+---030---+----+----+---050---+----+----+---070---+----
                                                                                   
                                                                                   
                                                                                   
                                                                                   
                                                                                   
                                                                                   
                                                                                   
                                                                                   
                                                                                   
                                                                                   
                                                                                   
                                                                                   
                                                                                   
    Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12---
          Help  Mset  Exit  Test  Edit  --    -     +     Full  <     >     Let    

    Anmerkung:
    Der Bildschirm Define Map Settings erscheint nur, wenn Sie eine neue Map initialisieren. Wenn Sie eine Map editieren, können Sie den Bildschirm Define Map Settings aufrufen, indem Sie im Editierbereich der Map (siehe den Bildschirm oben) PF2 (Mset) drücken.

    Im Split-Screen-Modus werden in der oberen Bildschirmhälfte die gültigen Delimiter-Zeichen angezeigt. In der unteren Bildschirmhälfte befindet sich der Editierbereich, in dem Sie die Map erstellen werden.

    Anders als im Programmeditor und Data-Area-Editor (der später in diesem Tutorial beschrieben wird), gibt es beim Map-Editor keine Kommandozeile oder Aufforderung für die Eingabe von Natural-Systemkommandos. Viele Funktionen im Map-Editor werden mit Zeilen- oder Feldkommandos ausgeführt (siehe unten) oder mit PF-Tasten.

    Mit PF9 schalten Sie um zwischen Split-Screen-Modus und ungeteiltem Bildschirm, in dem der Editierbereich in voller Größe angezeigt wird.

Textfelder definieren

Sie werden jetzt zwei Textfelder (auch Konstanten oder Bezeichnungen genannt) in der Map definieren.

Beginn der AnweisungslisteTextfelder definieren

  1. Stellen Sie den Cursor im Editierbereich der Map auf die erste Position der vierten Zeile und geben Sie Folgendes ein:

    Start
  2. Stellen Sie den Cursor auf die erste Position der nächsten Zeile und geben Sie Folgendes ein:

    End

    Ihre Map sollte nun folgendermaßen aussehen:

    Ob _                                    Ob D CLS ATT  DEL    CLS ATT  DEL      
    .                                       .     T  D    Blnk    T  I    ?        
    .                                       .     A  D    _       A  I    )        
    .                                       .     A  N    ^       M  D    &        
    .                                       .     M  I    :       O  D    +        
    .                                       .     O  I    (                        
    .                                       .                                      
    001   --010---+----+----+---030---+----+----+---050---+----+----+---070---+----
                                                                                   
                                                                                   
                                                                                   
    Start                                                                         
    End                                                                           
                                                                                   
                                                                                   
                                                                                   
                                                                                   
                                                                                   
                                                                                   
                                                                                   
                                                                                   
    Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12---
          Help  Mset  Exit  Test  Edit  --    -     +     Full  <     >     Let    

    Anmerkung:
    Wenn Sie Ihre letzten Änderungen rückgängig machen wollen, drücken Sie PF12 bevor Sie EINGABE drücken.

Datenfelder definieren

Sie werden jetzt zwei Datenfelder in der Map definieren. Dies sind die Eingabefelder, in denen der Benutzer den Start- und Endnamen eingeben kann.

Sie können die Datenfelder auf zwei verschiedene Arten definieren: auf die herkömmliche Art, wobei es in Ihrer Verantwortung liegt, die Länge des Datenfelds korrekt anzugeben, oder auf eine benutzerfreundliche Art, wobei Sie das Datenfeld einfach aus einer Liste auswählen und die Länge bereits korrekt definiert ist. Diese beiden Arten sind unten beschrieben.

Beginn der AnweisungslisteDatenfeld definieren und dabei die Länge selbst angeben

  1. Geben Sie Folgendes hinter dem Textfeld Start ein (lassen Sie ein Leerzeichen zwischen dem Textfeld und dem Datenfeld):

    :X(20)

    Der Doppelpunkt (:) ist das Delimiter-Zeichen, das das Datenfeld als modifizierbar und intensiviert kennzeichnet. Das Datenfeld wird mit einer Länge von 20 Zeichen definiert. Die Länge des Feldes wird durch die "X"-Zeichen dargestellt.

  2. Drücken Sie EINGABE.

    Ihre Map sollte nun folgendermaßen aussehen:

    Ob _                                    Ob D CLS ATT  DEL    CLS ATT  DEL      
    .                                       .     T  D    Blnk    T  I    ?        
    .                                       .     A  D    _       A  I    )        
    .                                       .     A  N    ^       M  D    &        
    .                                       .     M  I    :       O  D    +        
    .                                       .     O  I    (                        
    .                                       .                                      
    001   --010---+----+----+---030---+----+----+---050---+----+----+---070---+----
                                                                                   
                                                                                   
                                                                                   
    Start :XXXXXXXXXXXXXXXXXXXX                                                    
    End                                                      
                                                                                   
                                                                                   
                                                                                   
                                                                                   
                                                                                   
                                                                                   
                                                                                   
                                                                                   
    Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12---
          Help  Mset  Exit  Test  Edit  --    -     +     Full  <     >     Let    

Beginn der AnweisungslisteDatenfeld aus einer Liste auswählen

  1. Geben Sie Folgendes im Feld Ob ein (dieses Feld befindet sich oben links im Bildschirm) und drücken Sie EINGABE:

    P PGM01

    Die Datenfelder, die zurzeit vom Programm PGM01 benutzt werden, werden jetzt im Bildschirm angezeigt. Vor den Feldern, die in der Map benutzt werden können, steht eine Nummer.

    Ob P PGM01                              Ob D CLS ATT  DEL    CLS ATT  DEL      
    1 #NAME-START               A20         .     T  D    Blnk    T  I    ?        
    2 #NAME-END                 A20         .     A  D    _       A  I    )        
    . EMPLOYEES-VIEW            *V1         .     A  N    ^       M  D    &        
    . FULL-NAME                 *2          .     M  I    :       O  D    +        
    3 NAME                      A20         .     O  I    (                        
    4 DEPT                      A6          .                                      
    001   --010---+----+----+---030---+----+----+---050---+----+----+---070---+----
                                                                                   
                                                                                   
                                                                                   
    Start :XXXXXXXXXXXXXXXXXXXX                                                    
    End                                                                            
                                                                                   
                                                                                   
                                                                                   
                                                                                   
                                                                                   
                                                                                   
                                                                                   
                                                                                   
    Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12---
          Help  Mset  Exit  Test  Edit  --    -     +     Full  <     >     Let    

    Nicht alle im Programm PGM01 definierten Datenfelder werden im Bildschirm angezeigt. Um die Liste der Datenfelder durchzublättern, geben Sie eines der folgendes Kommandos im Feld Ob ein (d.h. im dem Feld, das zurzeit den Buchstaben "P" enthält).

    Kommando Beschreibung
    + In der Liste nach vorne blättern.
    - In der Liste nach hinten blättern.
    ++ An das Ende der Liste gehen.
    -- An den Anfang der Liste gehen.
  2. Geben Sie Folgendes hinter dem Textfeld End ein (lassen Sie ein Leerzeichen zwischen dem Textfeld und dem Datenfeld) und drücken Sie EINGABE:

    :2

    Der Doppelpunkt (:) ist das Delimiter-Zeichen, das das Datenfeld als modifizierbar und intensiviert kennzeichnet. Die Nummer 2 ist #NAME-END zugeordnet.

    Das Datenfeld ist automatisch mit der korrekten Länge definiert (20 Zeichen in diesem Fall). Die Länge des Feldes wird durch die "X"-Zeichen dargestellt.

Namen für Datenfelder definieren

Folgendes gilt nur für das Datenfeld für den Startnamen, das Sie manuell definiert haben. Es gilt nicht für das Datenfeld für den Endnamen, das Sie aus einer Liste ausgewählt haben: Wenn Sie ein neues Datenfeld für eine Benutzervariable erstellen, wird von Natural ein Name für dieses Feld vergeben. Dieser Feldname enthält eine Nummer. Sie müssen die Namen der neu erstellten Felder an die Namen anpassen, die in Ihrem Programm definiert wurden.

Sie werden jetzt dafür sorgen, dass dieselben Namen wie in Ihrem Programm benutzt werden: #NAME-START und #NAME-END. Die Ausgabe dieser Felder (d.h. die Benutzereingabe) wird an die entsprechenden Benutzervariablen in Ihrem Programm übergeben.

Beginn der AnweisungslisteNamen für Datenfelder definieren

  1. Geben Sie Folgendes ab der ersten Position des Datenfeldes für den Startnamen ein und drücken Sie EINGABE:

    .E

    Oder:
    Stellen Sie den Cursor im Datenfeld an eine beliebige Position und drücken Sie PF5.

    Für das markierte Feld werden erweiterte Feldinformationen angezeigt:

    Fld #001                                                        Fmt A20        
    -------------------------------------------------------------------------------
    AD= MIT'_'____     ZP=         SG=        HE= _____________________   Rls 0    
    AL= _____          CD= __      CV= ________________________________   Mod Undef
    PM= __  DF=                    DY= ______________________________              
    EM= __________________________ SB= ________________________________            
                                                                                   
    001   --010---+----+----+---030---+----+----+---050---+----+----+---070---+----
                                                                                   
                                                                                   
                                                                                   
    Start .EXXXXXXXXXXXXXXXXXXX                                                    
    End :XXXXXXXXXXXXXXXXXXXX                                                      
                                                                                   
                                                                                   
                                                                                   
                                                                                   
                                                                                   
                                                                                   
                                                                                   
                                                                                   
    Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12---
          HELP  Mset  Exit  <---  --->  --    -     +           <     >     Let 

    Das Feld Fld in der oberen linken Bildschirmecke enthält den Feldnamen, der von Natural vergeben wurde: "#001".

  2. Geben Sie "#NAME-START" im Feld Fld ein.

  3. Drücken Sie PF3, um die Funktion zu beenden.

    Da das Datenfeld für den Endname in der vorherigen Übung aus einer Liste ausgewählt wurde, ist es nicht erforderlich, die Schritte oben für den Endnamen zu wiederholen. In diesem Fall ist #NAME-END bereits definiert. Wenn Sie möchten, können Sie dies mit dem Kommando .E wie oben beschrieben überprüfen.

    Anmerkung:
    Bei #NAME-END hat der Session-Parameter AD den zusätzlichen Wert "L", der bei #NAME-START nicht definiert ist. "L" bedeutet, dass der Wert dieses Feldes linksbündig angezeigt wird. Da dies bei alphanumerischen Feldern die Vorgabe ist, ist es nicht nötig, dies für #NAME-START zu definieren.

Systemvariablen einfügen

Natural-Systemvariablen enthalten Information über die aktuelle Natural-Session, wie zum Beispiel die aktuelle Library, Benutzer, oder Datum und Uhrzeit. Diese Informationen können an jedem beliebigen Punkt in einem Natural-Programm referenziert werden. Alle Systemvariablen beginnen mit einem Stern (*).

Sie werden jetzt Systemvariablen für Datum und Uhrzeit in der Map einfügen. Wenn das Programm mit RUN ausgeführt wird, werden das aktuelle Datum und die aktuelle Uhrzeit in der Map angezeigt.

Beginn der AnweisungslisteSystemvariablen einfügen

  1. Stellen Sie den Cursor an die erste Position der ersten Zeile und geben Sie Folgendes ein:

    (*DAT4I

    Die öffnende Klammer ist das Delimiter-Zeichen, das die Systemvariable als intensiviertes Ausgabefeld kennzeichnet.

  2. Stellen Sie den Cursor an die erste Position der zweiten Zeile und geben Sie Folgendes ein:

    (*TIMX

    Ihre Map sollte nun folgendermaßen aussehen:

    001   --010---+----+----+---030---+----+----+---050---+----+----+---070---+----
    (*DAT4I                                                                        
    (*TIMX                                                                         
                                                                                   
    Start :XXXXXXXXXXXXXXXXXXXX                                                    
    End :XXXXXXXXXXXXXXXXXXXX                                                      
  3. Drücken Sie EINGABE.

    "X"-Zeichen werden jetzt statt der Systemvariablennamen angezeigt.

Felder verschieben

Sie werden die Felder, die Sie eingegeben haben, jetzt mit Zeilenkommandos und Feldkommandos verschieben.

Beginn der AnweisungslisteEin Feld verschieben

  1. Geben Sie das folgende Feldkommando beginnend in der ersten Position der Systemvariablen in der zweiten Zeile ein:

    .M

    Beispiel:

    001   --010---+----+----+---030---+----+----+---050---+----+----+---070---+----
    (XXXXXXXXXX                                                                    
    .MXXXXXXX                                                                      
                                                                                   
    Start :XXXXXXXXXXXXXXXXXXXX                                                    
    End :XXXXXXXXXXXXXXXXXXXX                                                      

    Ein Feldkommando wird am Anfang eines Feldes eingegeben. Es gilt nur für das Feld, in dem Sie es eingeben.

  2. Stellen Sie den Cursor an die Position, an die Sie die Systemvariable verschieben möchten (Spalte 70 in der ersten Zeile).

  3. Drücken Sie EINGABE.

    Die Systemvariable wird an die Cursorposition verschoben.

Beginn der AnweisungslisteLeerzeile einfügen

  1. Geben Sie das folgende Zeilenkommando beginnend in der ersten Position der vierten Zeile (Startname) ein:

    ..I(1)

    Beispiel:

    001   --010---+----+----+---030---+----+----+---050---+----+----+---070---+----
    (XXXXXXXXXX                                                         (XXXXXXXX  
                                                                                   
                                                                                   
    ..I(1):XXXXXXXXXXXXXXXXXXXX                                                    
    End :XXXXXXXXXXXXXXXXXXXX   

    Ein Zeilenkommando wird am Anfang einer Zeile eingegeben. Es gilt für die komplette Zeile, in der Sie es eingeben.

  2. Drücken Sie EINGABE.

    Eine Leerzeile wird unter der Zeile eingefügt, in der Sie das Zeilenkommando eingegeben haben.

Beginn der AnweisungslisteZeile zentrieren

  1. Geben Sie das folgende Zeilenkommando beginnend in der ersten Position der vierten Zeile (Startname) ein:

    ..C

    Beispiel:

    001   --010---+----+----+---030---+----+----+---050---+----+----+---070---+----
    (XXXXXXXXXX                                                         (XXXXXXXX  
                                                                                   
                                                                                   
    ..Crt :XXXXXXXXXXXXXXXXXXXX                                                    
                                                                                   
    End :XXXXXXXXXXXXXXXXXXXX 
  2. Drücken Sie EINGABE.

    Die Zeile wird zentriert.

Beginn der AnweisungslisteMehrere Felder verschieben

  1. Geben Sie das folgende Feldkommando beginnend in der ersten Position des Textfeldes in der sechsten Zeile (End) ein und in der ersten Position des Datenfeldes in dieser Zeile:

    .M

    Beispiel:

    001   --010---+----+----+---030---+----+----+---050---+----+----+---070---+----
    (XXXXXXXXXX                                                         (XXXXXXXX  
                                                                                   
                                                                                   
                              Start :XXXXXXXXXXXXXXXXXXXX                          
                                                                                   
    .Md .MXXXXXXXXXXXXXXXXXXX   
  2. Stellen Sie den Cursor an die Position, an der das Textfeld beginnen soll (Spalte 30 in der sechsten Zeile).

  3. Drücken Sie EINGABE.

    Beide Felder werden verschoben.

    Die Map sollte jetzt so aussehen wie am Anfang dieses Abschnitts.

Map testen

Um zu überprüfen, ob Ihre Map wie beabsichtigt funktioniert, werden Sie sie jetzt testen.

Beginn der AnweisungslisteMap testen

  1. Drücken Sie PF4.

    Die folgende Ausgabe wird angezeigt.

      2009-06-30                                                          13:39:55  
                                                                                    
                                                                                    
                               Start  ____________________                          
                                                                                    
                                 End  ____________________                          
                                                                                    
                                                                                    
                                                                                    
                                                                                    
                                                                                    
                                                                                    
                                                                                    
                                                                                    
                                                                                    
                                                                                    
                                                                                    
                                                                                    
                                                                                    
                                                                                    
                                                                                    
                                                                                    
                                                                                    
                                                                                    

    Das Eingabefeld für den Startnamen ist automatisch markiert, da es das erste Eingabefeld in der Map ist. Beide Eingabefelder enthalten Füllzeichen.

    Anmerkung:
    Wenn der Einfügemodus aktiv ist, muss der Benutzer die Füllzeichen löschen, damit die Eingabe von Text möglich ist. Im Überschreibemodus, der standardmäßig aktiv ist, ist dies nicht erforderlich.

  2. Drücken Sie EINGABE, um zum Map-Editor zurückzukehren.

Map mit STOW speichern

Wenn die Map erfolgreich getestet wurde, müssen Sie sie mit STOW speichern, damit sie von Ihrem Programm gefunden werden kann.

Beginn der AnweisungslisteMap mit STOW speichern

  1. Drücken Sie PF3, um zum Menü Edit Map zurückzukehren.

  2. Geben Sie Folgendes im Feld Code ein und drücken Sie EINGABE:

    W

Map aus dem Programm aufrufen

Sobald eine Map mit STOW gespeichert wurde, kann Sie mit einem WRITE- oder INPUT-Statement aus einem Natural-Programm heraus aufgerufen werden.

Beginn der AnweisungslisteMap aus dem Programm aufrufen

  1. Kehren Sie zum Programmeditor zurück, indem Sie eines der folgenden Kommandos in der Kommandozeile des Menüs Edit Map eingeben.

    EDIT PGM01
    E PGM01
  2. Ersetzen Sie die vorher definierten INPUT-Zeilen durch die folgende Zeile:

    INPUT USING MAP 'MAP01'

    Hiermit wird die von Ihnen erstellte Map aufgerufen.

    Der Name der Map muss in einfache Anführungszeichen gesetzt werden, um die Map von einer Benutzervariablen zu unterscheiden.

    Ihr Programm sollte nun folgendermaßen aussehen:

    DEFINE DATA
    LOCAL
      1 #NAME-START        (A20) INIT <"ADKINSON">
      1 #NAME-END          (A20) INIT <"BENNETT">
      1 EMPLOYEES-VIEW VIEW OF EMPLOYEES
        2 FULL-NAME
          3 NAME (A20)
        2 DEPT (A6)
        2 LEAVE-DATA
          3 LEAVE-DUE (N2)
    END-DEFINE
    *
    INPUT USING MAP 'MAP01'
    *
    READ EMPLOYEES-VIEW BY NAME
      STARTING FROM #NAME-START
      ENDING AT #NAME-END
    *
      DISPLAY NAME 3X DEPT 3X LEAVE-DUE
    *
    END-READ
    *
    END
  3. Führen Sie das Programm mit RUN aus.

    Ihre Map wird nun angezeigt.

  4. Drücken Sie wiederholt EINGABE bis Sie zum Programmeditor zurückkehren, oder geben Sie EDIT in der MORE-Zeile ein.

  5. Speichern Sie das Programm mit STOW.

Immer einen Endnamen benutzen

So wie Ihr Programm jetzt kodiert ist, werden keine Daten gefunden, wenn kein Endname angegeben wird.

Sie werden jetzt die Anfangswerte für Start- und Endname entfernen; danach müssen diese Namen immer vom Benutzer angegeben werden. Um zu gewährleisten, dass ein Endname immer benutzt wird, auch wenn er vom Benutzer nicht eingegeben wurde, werden Sie Ihrem Programm nun ein entsprechendes Statement hinzufügen.

Beginn der AnweisungslisteDen Endnamen benutzen

  1. Gehen Sie zum DEFINE DATA-Block und entfernen Sie die Anfangswerte (INIT) für die Felder #NAME-START und #NAME-END, so dass die entsprechenden Zeilen folgendermaßen aussehen:

    1 #NAME-START        (A20)
    1 #NAME-END          (A20)
  2. Geben Sie Folgendes unter INPUT USING MAP 'MAP01' ein:

    IF #NAME-END = ' ' THEN
        MOVE #NAME-START TO #NAME-END
    END-IF

    Wenn das Feld #NAME-END leer ist (d.h. wenn der Benutzer keinen Endnamen angibt), wird der Startname automatisch als Endname benutzt.

    Anmerkung:
    Statt des Statements MOVE #NAME-START TO #NAME-END können Sie auch die folgende Variante des ASSIGN- oder COMPUTE-Statements benutzen: #NAME-END := #NAME-START.

    Ihr Programm sollte nun folgendermaßen aussehen:

    DEFINE DATA
    LOCAL
      1 #NAME-START        (A20)
      1 #NAME-END          (A20)
      1 EMPLOYEES-VIEW VIEW OF EMPLOYEES
        2 FULL-NAME
          3 NAME (A20)
        2 DEPT (A6)
        2 LEAVE-DATA
          3 LEAVE-DUE (N2)
    END-DEFINE
    *
    INPUT USING MAP 'MAP01'
    *
    IF #NAME-END = ' ' THEN
      MOVE #NAME-START TO #NAME-END
    END-IF
    *
    READ EMPLOYEES-VIEW BY NAME
      STARTING FROM #NAME-START
      ENDING AT #NAME-END
    *
      DISPLAY NAME 3X DEPT 3X LEAVE-DUE
    *
    END-READ
    *
    END
  3. Führen Sie das Programm mit RUN aus.

  4. Geben Sie in der daraufhin erscheinenden Map "JONES" in dem Feld für den Startnamen ein und drücken Sie EINGABE.

    In der daraufhin erscheinenden Liste werden jetzt nur die Mitarbeiter mit dem Namen "Jones" angezeigt.

  5. Drücken Sie EINGABE, um zum Programmeditor zurückzukehren.

  6. Speichern Sie das Programm mit STOW.

Sie können nun mit den nächsten Übungen fortfahren: Verarbeitungsschleifen und Labels.