Benutzereingaben

#### Search Results

Search

# 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:

Dieses Dokument enthält die folgenden Übungen:

- Benutzereingaben ermöglichen

- Map für die Benutzereingabe gestalten

- Map aus dem Programm aufrufen

- Immer einen Endnamen benutzen

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

Eingabefelder 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 Programm-Editor 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

- Textfelder definieren

- Datenfelder definieren

- Namen für Datenfelder definieren

- Systemvariablen einfügen

- Felder verschieben

- Map testen

- Map mit STOW speichern

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

Das Menü Edit Map aufrufen

1. Geben Sie in der Kommandozeile des Programm-Editors 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

Eine 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 Programm-Editor 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.

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

Datenfeld 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

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

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

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

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

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

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

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

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

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

Map aus dem Programm aufrufen

1. Kehren Sie zum Programm-Editor 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 Programm-Editor 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.

Den 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 Programm-Editor zurückzukehren.

6. Speichern Sie das Programm mit `STOW`.

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

### On this page

- Benutzereingaben ermöglichen
- Map für die Benutzereingabe gestalten
- Map aus dem Programm aufrufen
- Immer einen Endnamen benutzen