home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC Treasures, Inc.
/
pctreasures.mdf
/
WINDOWS
/
adabas
/
f_0001
/
env
/
form.deh
< prev
next >
Wrap
Text File
|
1999-11-01
|
143KB
|
1,948 lines
DEU|05 | 0 FORM.deh 10.05.01 1998-04-24
DEU|05 | 1| | Masken
DEU|05 | 2| | ------
DEU|05 | 4| M| #01Beispiele fⁿr Maskendefinitionen
DEU|05 | 5| M| #05Struktur einer Maske
DEU|05 | 6| M| #03Maskenfelder
DEU|05 | 7| M| #04Verarbeitungsanweisungen in Masken
DEU|05 | 8| M| #06Optionen beim Maskenaufruf
DEU|05 | 9| M| #07Parameter beim Maskenaufruf
DEU|05 | 10| M| #08Optionen fⁿr den FORM-Compiler
DEU|05 | 11|RM| #10Menⁿzeile und Pulldown-Menⁿs
DEU|0501 | 1| | Beispiel 1 : LAYOUT-Zeichnung
DEU|0501 | 3| |
DEU|0501 | 4| E| FORM kunde.stammkarte
DEU|0501 | 5| E| LAYOUT
DEU|0501 | 6| E| <benutzer KUNDEN-KARTE <datum
DEU|0501 | 7| E| ------------------------------------
DEU|0501 | 8| E| Kunden-Nr : _knr
DEU|0501 | 9| E| Vorname : _kvname
DEU|0501 | 10| E| Nachname : _kname
DEU|0501 | 12| E| Kontostand : _(konto)
DEU|0501 | 14| E| ------------------------------------
DEU|0501 | 15| E| <MESSAGE
DEU|0501 | 16| E| ENDLAYOUT
DEU|0501 | 17|S |
DEU|0501 | 19| | Beispiel 2 : LAYOUT und Optionen
DEU|0501 | 20| | --------------------------------
DEU|0501 | 22| | FORM kunde.aenderung;
DEU|0501 | 23| | LAYOUT HIGH = % LOW = + PROMPT = .
DEU|0501 | 24| | <benutzer %<kopftext +<datum
DEU|0501 | 25| | -------------------------------------------------------
DEU|0501 | 27| | Kunde : % <knr>> <kanr>> <kname>> <kvname
DEU|0501 | 28| | alte Anschrift % neue Anschrift
DEU|0501 | 29| | -------------- % --------------
DEU|0501 | 30| | PLZ : <kplz % PLZ : _neuplz
DEU|0501 | 31| | Wohnort : <kort + % Wohnort : _neuort +
DEU|0501 | 32| | <" + _" +
DEU|0501 | 34| | -------------------------------------------------------
DEU|0501 | 35|S | <MESSAGE
DEU|0501 | 37| | ENDLAYOUT
DEU|0501 | 39| | ACCEPT ( F1='AENDERE', F9='ZURUECK' );
DEU|0501 | 41| | FIELD MESSAGE INIT 'Angaben ggf. berichtigen';
DEU|0501 | 43| | FIELD neuplz INIT NULL SIZE 4
DEU|0501 | 44| | CHECK BETWEEN 1000 AND 9999
DEU|0501 | 45| | ELSE 'Bitte 4-stellig numerisch';
DEU|0501 | 47| | FIELD neuort INIT NULL
DEU|0501 | 48| | CHECK IS ALPHA;
DEU|0501 | 50| | IGNORE neuort, neuplz WHEN $KEY = F9;
DEU|0501 | 52| | CONTROL CASE $KEY OF
DEU|0501 | 53|S | F1 : CALL PROC aendern;
DEU|0501 | 55| | F9 : RETURN;
DEU|0501 | 56|R | END;
DEU|0503 | 1| | Maskenfelder
DEU|0503 | 2| | ------------
DEU|0503 | 4| M| #01Einfache Maskenfelder
DEU|0503 | 5| M| #02Mehrzeilige Maskenfelder
DEU|0503 | 6| M| #03Variabel lange Maskenfelder
DEU|0503 | 7| M| #04Vektorvariablen (indizierte Variablen) in Masken
DEU|0503 | 8| M| #05Vektorbereiche als verkⁿrzte Schreibweise
DEU|0503 | 9| M| #06Feldnummern an Stelle von Variablennamen
DEU|0503 | 10| M| #07Vektorvariablen mit dynamischem Index
DEU|0503 | 11|RI| ##051160->^Syntax
DEU|050301 | 1| | Einfache Maskenfelder
DEU|050301 | 3| | <datum -> Ausgabefeld : hier wird der aktuelle Wert der Variablen
DEU|050301 | 4| | 'datum' angezeigt; er kann n i c h t ⁿberschrieben werden
DEU|050301 | 6| | _knr -> Eingabefeld : hier wird der aktuelle Wert der Variablen
DEU|050301 | 7| | 'knr' angezeigt; er k a n n ⁿberschrieben werden
DEU|050301 | 9| | _(passw) -> Eingabefeld ohne Anzeige und Echo (Passwort-Eingabe)
DEU|050301 | 11| | <MESSAGE -> Die Variable MESSAGE dient zur Ausgabe von Systemmeldungen.
DEU|050301 | 12| | Wenn die Maske kein MESSAGE-Feld enthΣlt, wird die letzte
DEU|050301 | 13| | Bildschirmzeile fⁿr die Meldung reserviert.
DEU|050301 | 14| | Nach der Anzeige wird MESSAGE implizit auf NULL gesetzt.
DEU|050301 | 16| | Unmittelbar vor Ein- und Ausgabefeldern kann entweder ein Leerzeichen,
DEU|050301 | 17|R | ein Helligkeitssteuerzeichen oder ein Ein- oder Ausgabefeld stehen.
DEU|050302 | 1| | Mehrzeilige Maskenfelder
DEU|050302 | 3| | <kort + -> mehrzeiliges Ausgabefeld _neuort +
DEU|050302 | 4| | <" + mehrzeiliges Eingabefeld -> _" +
DEU|050302 | 6| | Die Feldabschnitte der mehrzeiligen Felder mⁿssen unmittelbar
DEU|050302 | 7| | untereinander in der gleichen Spalte beginnen, sie dⁿrfen aber
DEU|050302 | 8| | unterschiedlich lang sein.
DEU|050302 | 10| | Definition:
DEU|050302 | 11| |
DEU|050302 | 12| E| FORM test.m_ln
DEU|050302 | 13| E| LAYOUT PROMPT = .
DEU|050302 | 14| E| _neuort +
DEU|050302 | 15| E| _" +
DEU|050302 | 16| E| ENDLAYOUT
DEU|050302 | 17|S |
DEU|050302 | 19| | Eingabe: | Kantstra▀e 110... |
DEU|050302 | 20| | | 1000 Berlin 12.... |
DEU|050302 | 22| | Werte von neuort
DEU|050302 | 23|R | nach der Eingabe: 'Kantstra▀e 110 1000 Berlin 12'
DEU|050303 | 1| | Variabel lange Maskenfelder
DEU|050303 | 3| | <art_nr>> -> variabel langes Ausgabefeld
DEU|050303 | 5| | Durch '>>' wird bewirkt, da▀ nachfolgende Maskenfelder an die variabel
DEU|050303 | 6| | lange Partie herangezogen werden.
DEU|050303 | 8| | art_nr := '4711'; art_bez := 'Schraube';
DEU|050303 | 10| | Definition:
DEU|050303 | 11| | LAYOUT
DEU|050303 | 12| | ... Artikel <art_nr>>, <art_bez>>, ist nicht lieferbar...
DEU|050303 | 13| | ENDLAYOUT
DEU|050303 | 15| | Ausgabe:
DEU|050303 | 16|R | ... Artikel 4711 , Schraube , ist nicht lieferbar...
DEU|050304 | 1| | Indizierte Variablen in Masken (Vektorvariablen)
DEU|050304 | 3| | K.Nr. | Vorname | Nachname
DEU|050304 | 4| | -----------|---------------|--------------
DEU|050304 | 5| | _knr(1) | _vorname(1) | _nachname(1) + -> Tabellenverarbeitung
DEU|050304 | 6| | _knr(2) | _vorname(2) | _nachname(2) + -> mit Hilfe von
DEU|050304 | 7| | ... | ... | ... + -> indizierten
DEU|050304 | 8| | _knr(8) | _vorname(8) | _nachname(8) + -> Variablen
DEU|050304 | 10|R | Eine Vektorvariable kann aus bis zu 255 Komponenten bestehen.
DEU|050305 | 1| | Vektorbereiche als verkⁿrzte Schreibweise
DEU|050305 | 3| | K.Nr. | Vorname | Nachname
DEU|050305 | 4| | -----------|---------------|--------------
DEU|050305 | 5| | _knr(1..8) | _vorname(1..8)| _nachname(1..8)+
DEU|050305 | 6| | _ | _ | _ +
DEU|050305 | 7| | ... | ... | ... +
DEU|050305 | 8| | _ | _ | _ +
DEU|050305 | 10| | Vektorkomponenten, die untereinander stehen, k÷nnen verkⁿrzt durch
DEU|050305 | 11|R | Vektorbereiche beschrieben werden.
DEU|050306 | 1| | Feldnummern an Stelle von Variablennamen
DEU|050306 | 3| |
DEU|050306 | 4| E| FORM test.fld_nr
DEU|050306 | 5| E| LAYOUT GRAPHIC = *
DEU|050306 | 6| E| K.Nr. * Vorname
DEU|050306 | 7| E| ***************************
DEU|050306 | 8| E| _1 * _vorname(1..4) *
DEU|050306 | 9| E| _ * _ *
DEU|050306 | 10| E| _ * _ *
DEU|050306 | 11| E| _ * _ *
DEU|050306 | 12| E| ENDLAYOUT
DEU|050306 | 13| E| FIELD 1:knr(1..4)
DEU|050306 | 14| |
DEU|050306 | 16| | - Ein Maskenfeld kann durch eine Feldnummer dargestellt werden.
DEU|050306 | 17|S | Dadurch ist die LΣnge des Feldes unabhΣngig von der LΣnge des
DEU|050306 | 19| | Variablennamens.
DEU|050306 | 21| | - Die Zuordnung zwischen Feldnummer und Variable findet in der
DEU|050306 | 22|R | FIELD-Anweisung statt.
DEU|050307 | 1| | Vektorvariablen mit dynamischem Index
DEU|050307 | 2| |
DEU|050307 | 3| E| FORM test.vec_fld
DEU|050307 | 4| E| LAYOUT GRAPHIC = *
DEU|050307 | 5| E| ****************************
DEU|050307 | 6| E| _1 * _vorname(1..4) *
DEU|050307 | 7| E| _ * _ *
DEU|050307 | 8| E| _ * _ *
DEU|050307 | 9| E| _ * _ *
DEU|050307 | 10| E| ENDLAYOUT
DEU|050307 | 11| E| FIELD 1:knr(1..4), vorname(1..4) OFFSET x;
DEU|050307 | 12| |
DEU|050307 | 14| | - Wenn die Variable hinter OFFSET (also hier x) einen Wert hat, der
DEU|050307 | 15| | gr÷▀er als 0 ist, dann erscheint im Maskenfeld der Vektorkomponente
DEU|050307 | 16|S | vorname(1) der Wert der Vektorkomponente vorname(1+x).
DEU|050307 | 19| | - Diese Regel gilt entsprechend fⁿr alle Vektorkomponenten, die in
DEU|050307 | 20| | dieser FIELD-Anweisung angesprochen sind.
DEU|050307 | 22|R | - An Stelle der Variablen x sind auch numerische Ausdrⁿcke m÷glich.
DEU|0504 | 1| | Verarbeitungsanweisungen in Masken
DEU|0504 | 2| | ----------------------------------
DEU|0504 | 4| M| #01PROMPT : Darstellung eines nullwertigen Feldes
DEU|0504 | 5| M| #02ATTR1,... : Anzeigeattribute
DEU|0504 | 6| M| #03IN^und^OUT : Bezeichner fⁿr Ein-/Ausgabefelder
DEU|0504 | 7| M| #14GRAPHIC : Graphische Zeichen in Masken
DEU|0504 | 8| M| #04FIELD/... : Optionen bei der FIELD - Anweisung
DEU|0504 | 9| M| #08ACCEPT : Ausl÷setaste aktivieren
DEU|0504 | 10| M| #15MARK : Initialisierung der Cursorposition
DEU|0504 | 11| M| #09IGNORE : Unterdrⁿckung der Eingabeprⁿfung
DEU|0504 | 12| M| #10KEYSWAP : Vertauschen der Tastenfunktionen
DEU|0504 | 13| M| #18SPECIALATTR : SituationsabhΣngige Anzeigeattribute
DEU|0504 | 14| M| #19INSERTMODE : Anzeige des Eingabemodus
DEU|0504 | 15| M| #11CONTROL : Die Maske als steuernder Modul
DEU|0504 | 16| M| #16RETURNONLAST : Verlassen der Maske mit Returntaste
DEU|0504 | 17|SM| #06PICK/PUT : PICK/PUT Mechanismus
DEU|0504 | 19| M| #05AUTOPAGE : BlΣtterunterstⁿtzung
DEU|0504 | 20| M| #17HEADERLINES/
DEU|0504 | 21| M| #17BOTTOMLINES : Titelzeilen und Fu▀zeilen
DEU|0504 | 23| M| #22BEFORE^FIELD/
DEU|0504 | 24| M| #22AFTER^FIELD : Was beim Feld-Ein- und Austritt zu tun ist
DEU|0504 | 25| M| #23GROUP : Mehrere Felder k÷nnen eine Guppe bilden
DEU|0504 | 26| M| #24BEFORE^GROUP/
DEU|0504 | 27| M| #24AFTER^GROUP : Was beim Gruppen-Ein- und Austritt zu tun ist
DEU|0504 | 28| M| #25NEXTFIELD : Mit einem anderen Feld der Gruppe fortsetzen
DEU|0504 | 29| M| #26NEXTGROUP : Mit einer anderen Gruppe fortsetzen
DEU|0504 | 30| M| #27NOAUTONEXT : Mit nΣchstem Feld fortsetzen
DEU|0504 | 31| M| #28SCROLLFIELD : Verschieben von Vektorbereichen
DEU|0504 | 32| M| #29KEYS : Tastenzuordnung
DEU|0504 | 33|RI| ##051138->^Syntax
DEU|050401 | 1| | PROMPT : Darstellung eines nullwertigen Feldes
DEU|050401 | 3| |
DEU|050401 | 4| E| FORM test.fld_prompt
DEU|050401 | 5| E| LAYOUT PROMPT = .
DEU|050401 | 6| E| ...
DEU|050401 | 7| E| Vorname : _kvname
DEU|050401 | 8| E| ...
DEU|050401 | 9| E| ENDLAYOUT
DEU|050401 | 10| E| FIELD kvname INIT NULL SIZE 20;
DEU|050401 | 11| |
DEU|050401 | 13| | Durch die PROMPT-Option in der LAYOUT-Zeile werden Felder, deren
DEU|050401 | 14| | Variablen NULL sind, in ihrer ganzen LΣnge mit dem angegebenen Zeichen
DEU|050401 | 15| | aufgefⁿllt.
DEU|050401 | 17|S | Nach der Benutzereingabe werden die Prompt-Zeichen links und rechts von
DEU|050401 | 19| | der Eingabe abgeschnitten ( wie TRIM (kvname,'.') ).
DEU|050401 | 21|RI| ##051103->^Syntax
DEU|050402 | 1| | ATTR1,...ATTR16, HIGH, LOW, INV, BLK, UNDERL : Anzeigeattribute
DEU|050402 | 3| |
DEU|050402 | 4| E| FORM test.lopt_attr
DEU|050402 | 5| E| LAYOUT HIGH = % LOW = + ATTR16 = *
DEU|050402 | 6| E| <benutzer KUNDEN-KARTE *<datum
DEU|050402 | 7| E| -------------------------------------
DEU|050402 | 8| E| %Kunden-Nr. : +_knr
DEU|050402 | 9| E| ENDLAYOUT
DEU|050402 | 10| E| FIELD benutzer INIT $USER;
DEU|050402 | 11| E| FIELD datum INIT DATE(DD.MM.YY);
DEU|050402 | 12| E| FIELD knr INIT '.'(6);
DEU|050402 | 13| |
DEU|050402 | 15| | Durch die ATTR1-,...ATTR16-Optionen (HIGH, LOW, INV, BLK, UNDERL)
DEU|050402 | 16| | k÷nnen Sonderzeichen zur Steuerung der Anzeige-IntensitΣt definiert
DEU|050402 | 17|S | werden.
DEU|050402 | 19| | Normalerweise werden Ausgabefelder und Textpartien dunkel und
DEU|050402 | 20| | Eingabefelder hell angezeigt (SET-Parameter ATTR2/HI und ATTR1/LOW).
DEU|050402 | 21| | Tritt eines der Sonderzeichen auf, so wird die Zeile ab dem
DEU|050402 | 22| | Sonderzeichen bis zum Zeilenende oder bis zum nΣchsten Sonderzeichen
DEU|050402 | 23| | mit der definierten IntensitΣt ausgegeben.
DEU|050402 | 25| | Im Bsp.: erscheinen '<benutzer' und '_knr' dunkel, 'Kunden-Nr.' hell
DEU|050402 | 26| | erscheint '<datum' entsprechend der Einstellung ATTR16
DEU|050402 | 27| | der SET-Parameter.
DEU|050402 | 29|RI| ##051103->^Syntax
DEU|050403 | 1| | IN und OUT : Bezeichner fⁿr Ein- und Ausgabefelder
DEU|050403 | 3| |
DEU|050403 | 4| E| FORM bsp_form.l_in_out
DEU|050403 | 5| E| LAYOUT IN = & OUT = @
DEU|050403 | 6| E| @benutzer KUNDEN-KARTE @datum
DEU|050403 | 7| E| -------------------------------------
DEU|050403 | 8| E| Kunden-Nr. : &knr
DEU|050403 | 9| E| ....
DEU|050403 | 10| E| ENDLAYOUT
DEU|050403 | 11| E| FIELD benutzer INIT $USER;
DEU|050403 | 12| E| FIELD datum INIT DATE(DD.MM.YY);
DEU|050403 | 13| E| FIELD knr INIT '.'(6);
DEU|050403 | 14| |
DEU|050403 | 16| | Durch IN und OUT k÷nnen explizit andere Zeichen als die vorgegebenen
DEU|050403 | 17|S | '_' (Unterstrich) und '<' (Kleiner) zur Markierung des Beginns eines
DEU|050403 | 19| | Eingabe- bzw. Ausgabefelds gewΣhlt werden.
DEU|050403 | 21| | So sind in diesem Beispiel benutzer und datum Ausgabefelder, wΣhrend
DEU|050403 | 22| | knr ein Eingabefeld ist.
DEU|050403 | 24|RI| ##051103->^Syntax
DEU|050404 | 1| | Optionen der FIELD - Anweisung
DEU|050404 | 2| | ------------------------------
DEU|050404 | 4| M| #02FIELD/INIT^^^^^^: Initialisierungen
DEU|050404 | 5| M| #01FIELD/SIZE^^^^^^: Explizite Feldbegrenzung
DEU|050404 | 6| M| #06FIELD/WIDTH^^^^^: Feldbegrenzung bei mehrzeiligen Feldern
DEU|050404 | 7| | fⁿr Maskenfelder
DEU|050404 | 8| M| #04FIELD/CHECK^^^^^: Prⁿfung der Eingabe
DEU|050404 | 9| M| #07FIELD/DOMAIN^^^^: Nutzung von DOMAIN-Definitionen
DEU|050404 | 10| M| #03FIELD/HELP^FORM^: Ausgabe von HELP-Masken
DEU|050404 | 11| M| #08FIELD/HELP^MSG^^: Ausgabe von HELP-Meldungen
DEU|050404 | 12| M| #05FIELD/DISPLAY^^^: Aufbereitung der Anzeige
DEU|050404 | 13| M| #09FIELD/OFFSET^^^^: Vektorkomponenten mit dynamischem Index
DEU|050404 | 14| M| #10FIELD/ATTR^^^^^^: Zuordnung von Feldattributen
DEU|050404 | 15| M| #11FIELD/NOINPUT^^^: Nicht ⁿberschreibbares Eingabefeld
DEU|050404 | 16|RI| ##051105->^Syntax
DEU|05040401 | 1| | FIELD/SIZE : Feldbegrenzung
DEU|05040401 | 3| |
DEU|05040401 | 4| E| FORM test.fld_size
DEU|05040401 | 5| E| LAYOUT PROMPT = . HIGH = % LOW = +
DEU|05040401 | 6| E| Betrag1 : _betrag1
DEU|05040401 | 7| E| ................................................
DEU|05040401 | 8| E| Betrag2 : _betrag2 DM
DEU|05040401 | 9| E| ........
DEU|05040401 | 10| E| Betrag3 : _betrag3 +
DEU|05040401 | 11| E| ...........
DEU|05040401 | 12| E| Betrag4 : _betrag4
DEU|05040401 | 13| E| ..........
DEU|05040401 | 14| E| ENDLAYOUT
DEU|05040401 | 16| E| FIELD betrag4 SIZE 10;
DEU|05040401 | 17|S |
DEU|05040401 | 19| | Das Beispiel zeigt die verschiedenen M÷glichkeiten, ein Feld genau zu
DEU|05040401 | 20| | begrenzen. Die Punkte markieren die LΣnge der Eingabebereiche.
DEU|05040401 | 22|RI| ##051107->^Syntax
DEU|05040402 | 1| | FIELD/INIT : Initialisierungen
DEU|05040402 | 3| |
DEU|05040402 | 4| E| FORM test.fld_init
DEU|05040402 | 5| E| LAYOUT
DEU|05040402 | 6| E| <benutzer KUNDEN-KARTE <datum
DEU|05040402 | 7| E| ------------------------------------
DEU|05040402 | 8| E| Kunden-Nr : _knr
DEU|05040402 | 9| E| ...
DEU|05040402 | 10| E| ENDLAYOUT
DEU|05040402 | 12| E| FIELD benutzer INIT $USER;
DEU|05040402 | 13| E| FIELD datum INIT DATE(DD.MM.YY);
DEU|05040402 | 14| E| FIELD knr INIT '.'(6);
DEU|05040402 | 15| |
DEU|05040402 | 17|S | Immer wenn die Maske aufgerufen wird, werden die Variablen 'benutzer',
DEU|05040402 | 19| | 'datum' und 'knr' laut INIT-Option initialisiert.
DEU|05040402 | 20| | Die Initialisierungen k÷nnen zur Laufzeit dynamisch unterdrⁿckt werden,
DEU|05040402 | 21| | indem die Maske mit der NOINIT-Option aufgerufen wird :
DEU|05040402 | 23| | CALL FORM stammkarte ( NOINIT );
DEU|05040402 | 25| | In diesem Fall erscheinen in den Feldern die aktuellen Werte der
DEU|05040402 | 26| | Variablen.
DEU|05040402 | 28| | In Feldern, fⁿr die keine INIT-Option angegeben wurde, werden immer die
DEU|05040402 | 29| | aktuellen Werte der Variablen angezeigt. Falls deren Wert NULL ist, so
DEU|05040402 | 30| | werden auch sie mit dem Prompt-Zeichen aufgefⁿllt.
DEU|05040402 | 32|RI| ##051106->^Syntax
DEU|05040403 | 1| | FIELD/HELP FORM : Ausgabe von HELP-Masken
DEU|05040403 | 3| | Mit der FIELD/HELP-Anweisung kann man einem Maskenfeld oder einer
DEU|05040403 | 4| | Gruppe von Maskenfeldern eine HELP-Information in Form einer HELP-Maske
DEU|05040403 | 5| I| bzw. ##05040408HELP-Meldung zuordnen.
DEU|05040403 | 6| | Eine HELP-Maske ist eine spezielle Maske, die mit dem Schlⁿsselwort
DEU|05040403 | 7| | 'HELPFORM' beginnt. In einer HELP-Maske dⁿrfen nur lokale Variablen
DEU|05040403 | 8| | verwendet werden und in der CONTROL-Anweisung sind keine CALL-, SWITCH-
DEU|05040403 | 9| | bzw. SWITCHCALL- Anweisungen zugelassen.
DEU|05040403 | 10| |
DEU|05040403 | 11| E| HELPFORM kunde.helpinfo
DEU|05040403 | 12| E| LAYOUT
DEU|05040403 | 13| E| Kunden_Nr : 5stellig numerisch
DEU|05040403 | 14| E| ENDLAYOUT
DEU|05040403 | 15| E| FIELD message INIT 'Weiter mit ENTER';
DEU|05040403 | 16|S |
DEU|05040403 | 19| | Beispiel fⁿr den Aufruf der HELP-Maske:
DEU|05040403 | 21| | FORM kunde.stammkarte
DEU|05040403 | 22| | LAYOUT
DEU|05040403 | 23| | Kundennr : _knr
DEU|05040403 | 24| | ENDLAYOUT
DEU|05040403 | 26| | ACCEPT( F10='INFO', ENTER, F3='ZURUECK' );
DEU|05040403 | 27| | FIELD knr
DEU|05040403 | 28| | HELP FORM helpinfo;
DEU|05040403 | 30| | Wird beim Ausfⁿllen der Maske stammkarte zur Laufzeit die F10-Taste
DEU|05040403 | 31| | (HELP-Taste) betΣtigt, wΣhrend der Cursor auf dem Feld knr steht, so
DEU|05040403 | 32| | erscheint die HELP-Maske helpinfo. Dabei wird die HELP-Maske
DEU|05040403 | 33| | automatisch so auf der aktuellen Maske plaziert, da▀ das Feld knr
DEU|05040403 | 34|S | m÷glichst sichtbar bleibt.
DEU|05040403 | 37| | Man kann Position, Gr÷▀e und Ausschnitt der HELP-Maske auch explizit
DEU|05040403 | 38| | als Aufrufoption angeben (siehe SCREENPOS, SCREENSIZE und FORMPOS).
DEU|05040403 | 40| | Steht der Cursor beim Ausl÷sen der HELP-Maske auf einem Maskenfeld, fⁿr
DEU|05040403 | 41| | welches keine HELP-Option definiert wurde, so wirkt die F10-Taste
DEU|05040403 | 42| | (HELP-Taste) wie jede andere Taste.
DEU|05040403 | 44|RI| ##051111->^Syntax
DEU|05040404 | 1| | FIELD/CHECK : Prⁿfung der Eingabe
DEU|05040404 | 3| | Pro Eingabefeld k÷nnen ⁿber die CHECK-Option der FIELD Anweisungen eine
DEU|05040404 | 4| | Bedingung und eine dazugeh÷rige Meldung spezifiziert werden.
DEU|05040404 | 6| | Erfⁿllt ein Eingabewert die geforderte Bedingung nicht, wird der Cursor
DEU|05040404 | 7| | auf das betreffende Feld gesetzt und ⁿber MESSAGE die in der CHECK-
DEU|05040404 | 8| | Option hinter ELSE stehende Meldung angezeigt. Der Benutzer kann die
DEU|05040404 | 9| | Eingabe dann sofort korrigieren.
DEU|05040404 | 11| | Wurde hinter ELSE kein Meldungstext angegeben, wird eine Ersatzmeldung
DEU|05040404 | 12| | angezeigt.
DEU|05040404 | 14| | Die CHECK-Bedingungen werden in der Reihenfolge ihrer Definition
DEU|05040404 | 15| | abgearbeitet.
DEU|05040404 | 17|S | Wird keine CHECK-Bedingung verletzt, setzt FORM die MESSAGE Variable
DEU|05040404 | 19| | auf NULL und gibt die Kontrolle an die aufrufende Umgebung zurⁿck.
DEU|05040404 | 21| | Es gibt mehrere M÷glichkeiten eine CHECK-Bedingung zu formulieren
DEU|05040404 | 23| M| 1. die Liste der zu prⁿfenden Felder beinhaltet nur #01einfache^Variablen
DEU|05040404 | 24| | (keine Vektorbereiche)
DEU|05040404 | 26| M| 2. die Liste der zu prⁿfenden Felder beinhaltet nur #02Vektorbereiche
DEU|05040404 | 28| M| 3. #03sonstige^Bedingungen
DEU|05040404 | 30|RI| ##051109->^Syntax
DEU|0504040401 | 1| | Die Liste der zu prⁿfenden Felder beinhaltet nur einfache Variablen
DEU|0504040401 | 3| I| - hinter CHECK kann eine ##0203040148<check^cond> verwendet werden, ohne
DEU|0504040401 | 4| | nochmalige Verwendung des Feldnamens. Die <check cond>
DEU|0504040401 | 5| | Bedingung kann auch aus beliebigen mit AND oder OR
DEU|0504040401 | 6| | verknⁿpften Teilbedingungen bestehen. Als Teilbedingungen
DEU|0504040401 | 7| | sind alle IS-, IN-, BETWEEN- oder LIKE-Bedingungen und ihre
DEU|0504040401 | 8| | Negationen zugelassen. Die formulierte Bedingung gilt fⁿr alle
DEU|0504040401 | 9| | Variablen der Feldliste.
DEU|0504040401 | 11| I| - hinter CHECK kann ##0203040136<expr> gefolgt von <check cond> verwendet
DEU|0504040401 | 12| | werden. Dabei kann durch <expr> z.B. ein Funktionswert des
DEU|0504040401 | 13| | Feldes ⁿberprⁿft werden.
DEU|0504040401 | 15| | Achtung : 'FIELD a, b CHECK UPPER (a) in (....)'
DEU|0504040401 | 16| | ⁿberprⁿft die bzgl. Feld a formulierte Bedingung
DEU|0504040401 | 17|S | sowohl beim Feld a als auch beim Feld b.
DEU|0504040401 | 19| |
DEU|0504040401 | 20| E| FORM kunde.stammkarte
DEU|0504040401 | 21| E| ...
DEU|0504040401 | 22| E| ENDLAYOUT
DEU|0504040401 | 24| E| FIELD plz SIZE 5
DEU|0504040401 | 25| E| CHECK BETWEEN 1000 AND 9999
DEU|0504040401 | 26| E| AND IS NOT NULL OR IS BLANK;
DEU|0504040401 | 28| E| FIELD knr SIZE 5
DEU|0504040401 | 29| E| CHECK LIKE '(a-Z)(0-9)(0-9)(0-9)(0-9)'
DEU|0504040401 | 30| E| ELSE 'Buchstabe gefolgt von 4 Ziffern';
DEU|0504040401 | 32| E| FIELD kanr
DEU|0504040401 | 33| E| CHECK UPPER(kanr) IN ('FRAU','HERR','FIRMA')
DEU|0504040401 | 34|SE| ELSE 'entweder Frau, Herr oder Firma angeben';
DEU|0504040401 | 37| E| FIELD kvname, kname INIT NULL
DEU|0504040401 | 38| E| CHECK IS NOT NULL AND IS ALPHA
DEU|0504040401 | 39| E| ELSE 'bitte Namen vollstΣndig angeben';
DEU|0504040401 | 40| |
DEU|0504040401 | 42|RI| ##051109->^Syntax
DEU|0504040402 | 1| | Die Liste der zu prⁿfenden Felder beinhaltet nur Vektorbereiche
DEU|0504040402 | 3| | Es mⁿssen die PrΣdikate ALL, ANY und ONE zur genauen Formulierung
DEU|0504040402 | 4| | verwendet werden. Hinter CHECK und einem PrΣdikat kann eine
DEU|0504040402 | 5| I| ##0203040148<check^cond> angegeben werden.
DEU|0504040402 | 7| |
DEU|0504040402 | 8| E| FORM kunde.liste
DEU|0504040402 | 9| E| LAYOUT
DEU|0504040402 | 10| E| _1 _2
DEU|0504040402 | 11| E| _ _
DEU|0504040402 | 12| E| _ _
DEU|0504040402 | 13| E| ...
DEU|0504040402 | 14| E| ENDLAYOUT
DEU|0504040402 | 16| E| FIELD 1:knr_alt(1..3), 2:knr_neu(1..3)
DEU|0504040402 | 17|SE| CHECK ANY BETWEEN 1000 and 9999 OR IS BLANK
DEU|0504040402 | 19| E| ELSE 'mindestens eine 4 stellige Nummer pro Spalte angeben';
DEU|0504040402 | 20| |
DEU|0504040402 | 22|RI| ##051109->^Syntax
DEU|0504040403 | 1| | Weitere Bedingungen bei CHECK
DEU|0504040403 | 3| I| Hinter CHECK k÷nnen beliebige ##0203040146<boolean^expr> angegeben werden. Als
DEU|0504040403 | 4| | Variablen-Liste der zu prⁿfenden Felder ist eine Mischung aus einfachen
DEU|0504040403 | 5| | Variablen und Vektorbereichen erlaubt, dennoch wird es in den meisten
DEU|0504040403 | 6| | FΣllen sinnvoll sein mit dieser Varianten nur ein bestimmtes Feld und
DEU|0504040403 | 7| | keine Feldliste zu ⁿberprⁿfen.
DEU|0504040403 | 9| | FIELD knr CHECK knr > 1000 ...
DEU|0504040403 | 10| | ELSE 'Kundennummern fangen bei 1000 an';
DEU|0504040403 | 11| | oder
DEU|0504040403 | 12| | FIELD knr CHECK ( knr DIV 2 ) * 2 = knr
DEU|0504040403 | 13| | ELSE 'alle Kundenummern mⁿssen gerade sein';
DEU|0504040403 | 15| | Beispiel zur ▄berprⁿfung von Datumswerten:
DEU|0504040403 | 17|S | Datumsformat von bis
DEU|0504040403 | 19| | ------------ ---------- ----------
DEU|0504040403 | 20| | ---------- mm/dd/yyyy 01/01/1991 30/06/1991
DEU|0504040403 | 23| | Bitte ein Datum im angegebenen Datumsformat und Intervall
DEU|0504040403 | 24| | eingeben
DEU|0504040403 | 26| |
DEU|0504040403 | 27| E| FORM datums.eingabe
DEU|0504040403 | 28| E| LAYOUT LOW=+ PROMPT = -
DEU|0504040403 | 29| E| Datumsformat von bis
DEU|0504040403 | 30| E| ------------ ---------- ----------
DEU|0504040403 | 31| E| _datum <datformat <von_datum <bis_datum
DEU|0504040403 | 33| E| ENDLAYOUT
DEU|0504040403 | 35|SE| FIELD message INIT 'Bitte ein Datum im angegebenen Datumsformat '
DEU|0504040403 | 37| E| & 'und Intervall eingeben';
DEU|0504040403 | 39| E| FIELD datformat INIT SET(23);
DEU|0504040403 | 40| E| FIELD von_datum INIT DATE ( , '19910101', yyyymmdd );
DEU|0504040403 | 41| E| FIELD bis_datum INIT DATE ( , '19910630', yyyymmdd );
DEU|0504040403 | 43| E| FIELD datum SIZE 10
DEU|0504040403 | 44| E| CHECK
DEU|0504040403 | 45| E| DATE (yyyymmdd,datum ) BETWEEN 19910101 AND 19910630
DEU|0504040403 | 46| E| ELSE 'Datum muss im angegebenen Bereich liegen'
DEU|0504040403 | 47| E| & 'und im angezeigten Format notiert sein';
DEU|0504040403 | 48| |
DEU|0504040403 | 50| | In diesem Beispiel wird ⁿberprⁿft, ob ein eingegebenes Datum (Feld
DEU|0504040403 | 51| | 'datum') in einem bestimmten Intervall liegt. Der Test, ob ein Wert in
DEU|0504040403 | 52| | einem bestimmten Intervall liegt, ist bei Datumswerten nur mit der
DEU|0504040403 | 53|S | Interndarstellung der Datumswerte m÷glich. Die Funktion DATE (yyyymmdd,
DEU|0504040403 | 55| | datum) wandelt den Variablenwert 'datum' vom in den SET-Parametern
DEU|0504040403 | 56| | eingestellten Format in das interne Datumsformat um.
DEU|0504040403 | 58| | Das anschlie▀ende BETWEEN-PrΣdikat prⁿft schlie▀lich, ob der Wert im
DEU|0504040403 | 59| | angebenen Intervall liegt.
DEU|0504040403 | 61| | Da die DATE-Funktion nur dann einen gⁿltigen Wert liefert, wenn der
DEU|0504040403 | 62| | Eingabewert das erwartete Format der SET-Parameter hat, wird auf diese
DEU|0504040403 | 63| | Weise automatisch auch das Datumsformat des eingegebenen Datums
DEU|0504040403 | 64| | ⁿberprⁿft.
DEU|0504040403 | 66|RI| ##051109->^Syntax
DEU|05040405 | 1| | FIELD/DISPLAY : Aufbereitung der Anzeige
DEU|05040405 | 3| | Das FIELD/DISPLAY-Statement erm÷glicht es, die Werte der Variablen fⁿr
DEU|05040405 | 4| | die Anzeige zu formatieren. Numerische Werten k÷nnen mit Hilfe der
DEU|05040405 | 5| | FORMAT-Anweisung formatiert und zusΣtzlich nach rechts oder links
DEU|05040405 | 6| | ausgerichtet werden.
DEU|05040405 | 8| | FIELD betrag DISPLAY FORMAT ('+999.999,99');
DEU|05040405 | 9| | FIELD betrag DISPLAY FORMAT ('+999.999,99') RIGHT;
DEU|05040405 | 11| | Alphanumerische Werte k÷nnen gro▀- oder kleingeschrieben aufbereitet
DEU|05040405 | 12| | und nach rechts oder links ausgerichtet werden.
DEU|05040405 | 14|S | FIELD nachname DISPLAY UPPER;
DEU|05040405 | 19| | Beispiel zur Formatierung von numerischen Werten
DEU|05040405 | 21| | Maskendefinition
DEU|05040405 | 22| | ----------------
DEU|05040405 | 23| |
DEU|05040405 | 24| E| FORM konto.anzeige
DEU|05040405 | 25| E| LAYOUT LOW=+
DEU|05040405 | 26| E| ...
DEU|05040405 | 27| E| Kontostand: <betrag + <datum
DEU|05040405 | 28| E| ...
DEU|05040405 | 29| E| ENDLAYOUT
DEU|05040405 | 31| E| FIELD betrag INIT 12345678 DISPLAY FORMAT ('-999.999.999,99') RIGHT;
DEU|05040405 | 32| E| FIELD datum INIT DATE(dd/mm/yy);
DEU|05040405 | 33| |
DEU|05040405 | 35|RI| ##051112->^Syntax
DEU|05040406 | 1| | FIELD/WIDTH : Feldbegrenzung bei mehrzeiligen Feldern
DEU|05040406 | 3| | Bei mehrzeiligen Feldern ist es wⁿnschenswert angeben zu k÷nnen, wie
DEU|05040406 | 4| | lang das Feld insgesamt sein soll und welche LΣnge dabei jedes einzelne
DEU|05040406 | 5| | Feld haben soll. Die GesamtlΣnge des mehrzeiligen Feldes wird mit
DEU|05040406 | 6| | FIELD/SIZE festgelegt. Die Breite der einzelnen Teilfelder wird mit
DEU|05040406 | 7| | FIELD/WIDTH festgelegt.
DEU|05040406 | 9| | Diese Funktionen machen es leichter, Tools zu schreiben, die fⁿr ein in
DEU|05040406 | 10| | der Datenbank vorkommendes Tabellenfeld das passende Maskenfeld
DEU|05040406 | 11| | generieren.
DEU|05040406 | 13|RI| ##051108->^Syntax
DEU|05040407 | 1| | FIELD/DOMAIN : Nutzung von DOMAIN-Definitionen fⁿr Maskenfelder
DEU|05040407 | 3| | Sind DOMAIN-Objekte definiert, k÷nnen diese bei der Definition eines
DEU|05040407 | 4| | Maskenfeldes benutzt werden. Die FIELD/DOMAIN-Angabe bewirkt, da▀ FORM
DEU|05040407 | 5| | auf die in der Datenbank befindliche DOMAIN-Definition zugreift und sie
DEU|05040407 | 6| | zur Definition von SIZE, WIDTH, INIT und CHECK verwendet.
DEU|05040407 | 8| | Die in der DOMAIN-Definition unter LENGTH angegebene LΣnge wirkt wie
DEU|05040407 | 9| | eine explizit angegebene FIELD/SIZE-Angabe. Die unter COLS in der
DEU|05040407 | 10| | DOMAIN-Definition angegebene Breite des Feldes wirkt wie FIELD/WIDTH.
DEU|05040407 | 11| | Der DEFAULT-Wert der DOMAIN-Definition bewirkt das gleiche wie eine
DEU|05040407 | 12| | FIELD/INIT-Angabe mit dem gleichen Wert. Au▀erdem wirkt die RANGE-
DEU|05040407 | 13| | Angabe der DOMAIN-Definition wie eine explizit definierte FIELD/CHECK-
DEU|05040407 | 14| | Angabe.
DEU|05040407 | 17|S | Ein DOMAIN sei wie folgt in der Datenbank definiert (Zur Definition
DEU|05040407 | 19| | sollte immer die Dialogkomponente DOMAIN verwendet werden.):
DEU|05040407 | 21| | Domainname : ANREDE
DEU|05040407 | 22| | LΣnge (length) : 5
DEU|05040407 | 23| | Datentyp : char
DEU|05040407 | 24| | Range : IN ('Herr','Frau','Firma')
DEU|05040407 | 25| | Default : Firma
DEU|05040407 | 27| | Dann ist ...
DEU|05040407 | 29| | FIELD anr SIZE 5
DEU|05040407 | 30| | INIT 'Firma'
DEU|05040407 | 31| | CHECK IN ('Herr','Frau','Firma')
DEU|05040407 | 33| | gleichbedeutend mit...
DEU|05040407 | 35|S | FIELD anr DOMAIN anrede
DEU|05040407 | 37| | In manchen FΣllen kann es erwⁿnscht sein, da▀ nur ein Teil der beim
DEU|05040407 | 38| | Objekt DOMAIN vereinbarten Gr÷▀en verwendet wird. Dafⁿr gibt es die
DEU|05040407 | 39| | M÷glichkeit, mit Hilfe der Schlⁿsselw÷rter SIZE, WIDTH, INIT und CHECK
DEU|05040407 | 40| | hinter dem Domainnamen die Teile aus der DOMAIN-Definition anzugeben,
DEU|05040407 | 41| | die fⁿr dieses Feld wirken sollen.
DEU|05040407 | 43| | FIELD anr DOMAIN anr ( SIZE, CHECK );
DEU|05040407 | 45| | bewirkt dasselbe wie:
DEU|05040407 | 47| | FIELD anr SIZE 5
DEU|05040407 | 48| | CHECK IN ('Herr','Frau','Firma')
DEU|05040407 | 50|RI| ##051110->^Syntax
DEU|05040408 | 1| | FIELD/HELP MSG : Ausgabe von HELP-Meldungen in der MESSAGE-Zeile
DEU|05040408 | 3| | Die Anweisung FIELD a HELP MSG <str expr> bewirkt, da▀ bei BetΣtigung
DEU|05040408 | 4| | der F10-Taste (HELP-Taste) die angegebene Meldung in der Meldungszeile
DEU|05040408 | 5| I| erscheint. Werden beide HELP-Informationen (HELP MSG und ##05040403HELP^FORM )
DEU|05040408 | 6| | angegeben, wird nach BetΣtigung der F10-Taste (HELP-Taste) die Meldung
DEU|05040408 | 7| | und bei einer weiteren BetΣtigung der F10-Taste (HELP-Taste) die Maske
DEU|05040408 | 8| | angezeigt.
DEU|05040408 | 10| |
DEU|05040408 | 11| E| FORM test.help_msg
DEU|05040408 | 12| E| LAYOUT
DEU|05040408 | 13| E| ...
DEU|05040408 | 14| E| _func
DEU|05040408 | 15| E| ENDLAYOUT
DEU|05040408 | 16| E| ACCEPT ( ENTER, F10='HILFE');
DEU|05040408 | 17|SE| FIELD func
DEU|05040408 | 19| E| HELP MSG
DEU|05040408 | 20| E| 'Die Menⁿpunkte beschreiben die m÷glichen AktivitΣten'
DEU|05040408 | 21| E| HELP FORM
DEU|05040408 | 22| E| menue_info;
DEU|05040408 | 23| |
DEU|05040408 | 25|RI| ##051111->^Syntax
DEU|05040409 | 1| | FIELD/OFFSET : Vektorkomponenten mit dynamischem Index
DEU|05040409 | 3| |
DEU|05040409 | 4| E| FORM kunde.name
DEU|05040409 | 5| E| LAYOUT GRAPHIC = *
DEU|05040409 | 6| E| Knr * Nachname *
DEU|05040409 | 7| E| *****************************
DEU|05040409 | 8| E| _1 * _nachname(1..4) *
DEU|05040409 | 9| E| _ * _ *
DEU|05040409 | 10| E| _ * _ *
DEU|05040409 | 11| E| _ * _ *
DEU|05040409 | 13| E| ENDLAYOUT
DEU|05040409 | 15| E| FIELD 1:knr(1..4), nachname(1..4) OFFSET x;
DEU|05040409 | 16| |
DEU|05040409 | 17|S | Wenn der Ausdruck hinter OFFSET (also hier die Variable x) einen Wert
DEU|05040409 | 19| | hat, der gr÷▀er als 0 ist, dann erscheint im Maskenfeld der
DEU|05040409 | 20| | Vektorkomponente 'nachname(1)' der Wert der Vektorkomponente
DEU|05040409 | 21| | 'nachname(1+x)'.
DEU|05040409 | 23| | Diese Regel gilt entsprechend fⁿr alle Vektorkomponenten, die in dieser
DEU|05040409 | 24| | FIELD-Anweisung angesprochen sind.
DEU|05040409 | 26| | An Stelle der Variablen x sind auch numerische Ausdrⁿcke m÷glich.
DEU|05040409 | 28|RI| ##051113->^Syntax
DEU|05040410 | 1| | FIELD/ATTR : Zuordnung von Feldattributen
DEU|05040410 | 3| | Mit Hilfe der FIELD/ATTR-Anweisung lΣ▀t sich jedem Ein- oder Ausgabe-
DEU|05040410 | 4| | Feld explizit ein Attribut zuordnen, ohne da▀ ein weiters Zeichen vor
DEU|05040410 | 5| | das Feld im LAYOUT plaziert werden mu▀. Die Textfelder innerhalb einer
DEU|05040410 | 6| | Maske k÷nnen jedoch weiterhin nur mit Hilfe der Steuerzeichen mit
DEU|05040410 | 7| | bestimmten Attributen ausgegeben werden.
DEU|05040410 | 8| |
DEU|05040410 | 9| E| LAYOUT UNDERL=+
DEU|05040410 | 10| E| ..
DEU|05040410 | 11| E| +Nachname : <nachname
DEU|05040410 | 12| E| ..
DEU|05040410 | 13| E| ENDLAYOUT
DEU|05040410 | 15| E| FIELD nachname SIZE 18 ATTR INV;
DEU|05040410 | 16|S |
DEU|05040410 | 19|RI| ##051114->^Syntax
DEU|05040411 | 1| | FIELD/NOINPUT : Nicht ⁿberschreibbares Eingabefeld
DEU|05040411 | 3| | Eine hΣufige Anwendung von Masken ist es, innerhalb einer Liste von
DEU|05040411 | 4| | Feldern mit Hilfe des Cursors ein bestimmtes Feld auszuwΣhlen, ohne
DEU|05040411 | 5| | dabei das Feld ⁿberschreiben zu wollen.
DEU|05040411 | 7| | Die Option NOINPUT sorgt dafⁿr, da▀ das im Layout als Eingabefeld
DEU|05040411 | 8| | definierte Feld nicht ⁿberschreibbar ist, jedoch durch den Cursor
DEU|05040411 | 9| | ausgewΣhlt werden kann.
DEU|05040411 | 10| |
DEU|05040411 | 11| E| FORM test.noinp
DEU|05040411 | 12| E| LAYOUT
DEU|05040411 | 14| E| _Z(1..5)
DEU|05040411 | 15| E| _
DEU|05040411 | 16| E| _
DEU|05040411 | 17|SE| _
DEU|05040411 | 19| E| _
DEU|05040411 | 21| E| ENDLAYOUT
DEU|05040411 | 22| E| ACCEPT ( ENTER, F3= 'END' );
DEU|05040411 | 24| E| SPECIALATTR CURSORLINE INV;
DEU|05040411 | 25| E| FIELD Z(1..5) NOINPUT;
DEU|05040411 | 26| E| CONTROL CASE $KEY OF
DEU|05040411 | 27| E| ENTER : CALL PROC anzeigen (Z($CURSOR));
DEU|05040411 | 28| E| F3 : RETURN;
DEU|05040411 | 29| E| END;
DEU|05040411 | 30| |
DEU|05040411 | 32|RI| ##051184->^Syntax
DEU|050405 | 1| | AUTOPAGE, PAGE : BlΣtterunterstⁿtzung
DEU|050405 | 3| | Das BlΣttern in Masken ist dann n÷tig, wenn eine Maske gr÷▀er ist als
DEU|050405 | 4| | der Bildschirmausschnitt, in dem sie angezeigt wird. Es gibt folgende
DEU|050405 | 5| | M÷glichkeiten, in Masken zu blΣttern:
DEU|050405 | 7| | 1. Man verwendet in der CONTROL-Anweisung der Maske die Anweisung PAGE
DEU|050405 | 8| | UP, PAGE DOWN, PAGE LEFT und PAGE RIGHT.
DEU|050405 | 10| |
DEU|050405 | 11| E| CONTROL
DEU|050405 | 12| E| CASE $KEY OF
DEU|050405 | 13| E| UP : PAGE UP; (* eine Seite nach oben *)
DEU|050405 | 14| E| DOWN : PAGE DOWN n; (* n Zeilen nach unten *)
DEU|050405 | 15| E| ...
DEU|050405 | 16| E| END;
DEU|050405 | 17|S |
DEU|050405 | 19| | 2. Man verwendet die Anweisung AUTOPAGE, die selbstΣndig die Tasten mit
DEU|050405 | 20| | den BlΣtterfunktionen belegt und das BlΣttern abhΣngig von der Gr÷▀e
DEU|050405 | 21| | des Bildschirmausschnittes nach allen Richtungen unterstⁿtzt.
DEU|050405 | 23| | ...
DEU|050405 | 24| | ENDLAYOUT
DEU|050405 | 25| | ACCEPT ( ... );
DEU|050405 | 26| | AUTOPAGE;
DEU|050405 | 27| | FIELD ...
DEU|050405 | 28| | ...
DEU|050405 | 30| | FORM belegt fⁿr das BlΣttern mit AUTOPAGE ganz bestimmte Tasten. Werden
DEU|050405 | 31| | diese bereits vom Programm belegt, kann FORM die Tasten nicht zum
DEU|050405 | 32| | BlΣttern verwenden. Die Funktion ist dadurch ausgeschaltet.
DEU|050405 | 34| | Bei Tastaturen mit hartgravierten BlΣttertasten werden diese von FORM
DEU|050405 | 35|S | zum BlΣttern aktiviert; dies gilt fⁿr alle BlΣtterrichtungen.
DEU|050405 | 37| | Bei Tastaturen, die nur neun Funktionstasten haben, mu▀ es
DEU|050405 | 38| | hartgravierte BlΣttertasten geben, die FORM bei AUTOPAGE dann
DEU|050405 | 39| | automatisch aktiviert. In Masken mit expliziter Message oder Masken mit
DEU|050405 | 40| | Menⁿleiste ist eine BlΣtterunterstⁿtzung durch AUTOPAGE nicht m÷glich.
DEU|050405 | 43| I| ##051119AUTOPAGE-Syntax
DEU|050405 | 44|RI| ##051124PAGE-Syntax
DEU|050406 | 1| | PICK/PUT-Mechanismus in Masken
DEU|050406 | 3| | Mit Hilfe der PICK/PUT-Anweisungen lassen sich Masken definieren, aus
DEU|050406 | 4| | denen die Beispielwerte fⁿr Eingabefelder herausgepickt werden k÷nnen.
DEU|050406 | 5| | PICK und PUT sind nur im CONTROL-Block von Masken m÷glich.
DEU|050406 | 7| | Funktion von PICK ohne Argument:
DEU|050406 | 8| | speichert den Wert des Feldes, auf welchem der Cursor positioniert
DEU|050406 | 9| | ist, in den PICK-Puffer. Steht der Cursor nicht auf einem
DEU|050406 | 10| | Eingabefeld, dann wird eine Fehlermeldung ausgegeben.
DEU|050406 | 12| | Funktion von PICK mit Argument:
DEU|050406 | 13| | speichert das Argument in den PICK-Puffer ab. ▄blicherweise wird das
DEU|050406 | 14| | Argument in AbhΣngigkeit von der Cursorposition formuliert sein.
DEU|050406 | 15| | Steht der Cursor nicht auf einem Eingabefeld, dann wird eine
DEU|050406 | 16|S | Fehlermeldung ausgegeben.
DEU|050406 | 19| |
DEU|050406 | 20| E| HELPFORM tpick.test
DEU|050406 | 21| E| LAYOUT
DEU|050406 | 22| E| _1 <@menu(1)
DEU|050406 | 23| E| _ <@menu(2)
DEU|050406 | 24| E| _ <@menu(3)
DEU|050406 | 25| E| ENDLAYOUT
DEU|050406 | 26| E| FIELD 1:@choice(1..3);
DEU|050406 | 27| E| FIELD @menu(1) INIT 'Einfⁿgen';
DEU|050406 | 28| E| FIELD @menu(2) INIT '─ndern';
DEU|050406 | 29| E| FIELD @menu(3) INIT 'L÷schen';
DEU|050406 | 30| E| ACCEPT ( ENTER, F3='ende' );
DEU|050406 | 31| E| CONTROL CASE $KEY OF
DEU|050406 | 32| E| ENTER: PICK(@menu($CURSOR));
DEU|050406 | 33| E| ELSE : RETURN;
DEU|050406 | 34| E| END;
DEU|050406 | 35|S |
DEU|050406 | 37| | Funktion von PUT ohne Argument :
DEU|050406 | 39| | speichert den PICK-Puffer-Inhalt als Wert des Feldes, auf welchem der
DEU|050406 | 40| | Cursor positioniert ist, ab. Steht der Cursor nicht auf einem
DEU|050406 | 41| | Eingabefeld, dann wird eine Fehlermeldung ausgegeben.
DEU|050406 | 44| | Funktion von PUT mit Argument :
DEU|050406 | 46| | speichert den PICK-Puffer-Inhalt als Wert der gegebenen Variablen ab.
DEU|050406 | 47| | Diese Variante wird dann ben÷tigt, wenn ein Ausgabefeld mit einem
DEU|050406 | 48|S | gepickten Wert belegt werden soll.
DEU|050406 | 55| | FORM tpick.m1
DEU|050406 | 56| | LAYOUT
DEU|050406 | 57| | _1 _2
DEU|050406 | 58| | _ _
DEU|050406 | 59| | _ _
DEU|050406 | 60| | _ _
DEU|050406 | 61| | ENDLAYOUT
DEU|050406 | 62| | ACCEPT ( enter, f5='PUT',f10='PICK MASKE' );
DEU|050406 | 63| | FIELD 1:anrede(1..4) HELP FORM p_anrede ( frame );
DEU|050406 | 64| | FIELD 2:ort(1..4) HELP FORM p_ort ( frame );
DEU|050406 | 65| | CONTROL
DEU|050406 | 66| | CASE $KEY of
DEU|050406 | 67| | F5: PUT;
DEU|050406 | 68| | END;
DEU|050406 | 70| | Um die Handhabung von PICK in Masken zu vereinfachen, kann eine Maske
DEU|050406 | 71|SI| mit der ##050610AUTOPUT-Option aufgerufen werden.
DEU|050406 | 73|RI| ##051123->^Syntax
DEU|050408 | 1| | ACCEPT : Ausl÷setaste aktivieren
DEU|050408 | 3| | Mit Hilfe der ACCEPT-Anweisung kann man die Ausl÷setasten bestimmen,
DEU|050408 | 4| | die von der Maske akzeptiert werden sollen.
DEU|050408 | 6| | Die zulΣssigen Ausl÷setasten sind :
DEU|050408 | 7| | ENTER, F1, ..., F12, HELP, UP, DOWN
DEU|050408 | 9| | Die ACCEPT-Option kann sowohl in der Maskendefinition wie auch als
DEU|050408 | 10| | Aufrufoption angegeben werden.
DEU|050408 | 12| | Dabei gilt, da▀ ACCEPT als Aufrufoption die ACCEPT-Definition in der
DEU|050408 | 13| | Maske ⁿbersteuert.
DEU|050408 | 15| | Wurde keine ACCEPT-Option gesetzt, dann akzeptiert die Maske nur ENTER.
DEU|050408 | 17|S | Im folgenden ein Beispiel:
DEU|050408 | 19| | Maskendefinition:
DEU|050408 | 20| | -----------------
DEU|050408 | 21| |
DEU|050408 | 22| E| FORM test.acc_msk
DEU|050408 | 23| E| LAYOUT
DEU|050408 | 24| E| ...
DEU|050408 | 25| E| ENDLAYOUT
DEU|050408 | 26| E| ACCEPT (ENTER,F3='ENDE',F4='EINTRAG',F5='SUCHEN',F6='AENDERN' );
DEU|050408 | 27| |
DEU|050408 | 29| | Aufruf:
DEU|050408 | 30| | -------
DEU|050408 | 31| | CALL FORM ...( ACCEPT (ENTER, F3='ZURUECK', F5, F6 ));
DEU|050408 | 34| | Resultierendes Tasten-Menⁿ:
DEU|050408 | 35|S | ---------------------------
DEU|050408 | 37| | 3=ZURUECK 5=SUCHE 6=AENDERN
DEU|050408 | 38| | ZusΣtzlich zu den soweit beschriebenen Tasten, die FORM unabhΣngig vom
DEU|050408 | 39| | Typ der Hardware voraussetzt, gibt es die M÷glichkeit weitere von der
DEU|050408 | 40| | Installation abhΣngige Tasten zu bedienen.
DEU|050408 | 42| | Maximal sind folgende zusΣtzliche Tastenliterale bedienbar: ENDKEY,
DEU|050408 | 43| | CMDKEY, LEFTKEY und RIGHTKEY.
DEU|050408 | 45|RI| ##051117->^Syntax
DEU|050409 | 1| | IGNORE : Unterdrⁿckung der Eingabeprⁿfung
DEU|050409 | 3| |
DEU|050409 | 4| E| FORM test.ignore_form
DEU|050409 | 5| E| LAYOUT
DEU|050409 | 6| E| ... _knr... _kvname ... _kname
DEU|050409 | 7| E| ENDLAYOUT
DEU|050409 | 9| E| ACCEPT ( F1='EINTRAG', F3='ZURUECK' );
DEU|050409 | 11| E| FIELD knr, kvname, kname INIT NULL
DEU|050409 | 12| E| CHECK IS NOT NULL ELSE 'Eingabe ist unvollstΣndig';
DEU|050409 | 14| E| IGNORE kvname, kname WHEN ( $KEY = F3 )
DEU|050409 | 15| |
DEU|050409 | 17|S | Falls der Benutzer nach der Eingabe die F3-Taste drⁿckt, wird die
DEU|050409 | 19| | Eingabeprⁿfung der FIELD/CHECK-Option fⁿr die Variablen 'kvname' und
DEU|050409 | 20| | 'kname' unterdrⁿckt.
DEU|050409 | 22| | Bei vielen zu ignorierenden Feldern kann man auch die folgenden IGNORE-
DEU|050409 | 23| | Varianten wΣhlen :
DEU|050409 | 25| | IGNORE ALL WHEN ( $KEY = F3 )
DEU|050409 | 27| | Hier wird kein Eingabefeld geprⁿft, wenn F3 betΣtigt wurde.
DEU|050409 | 29| | Oder:
DEU|050409 | 30| | IGNORE ALL EXCEPT knr, kname WHEN ( $KEY = F3 )
DEU|050409 | 31| | Hier wird die Eingabeprⁿfung fⁿr alle Felder au▀er knr und kname
DEU|050409 | 32| | unterdrⁿckt, wenn F3 betΣtigt wurde.
DEU|050409 | 34|RI| ##051115->^Syntax
DEU|050410 | 1| | KEYSWAP : Vertauschen der Tastenfunktionen
DEU|050410 | 3| | Durch die KEYSWAP-Option lassen sich die Funktionen von je zwei Tasten
DEU|050410 | 4| | miteinander vertauschen.
DEU|050410 | 6| | So ist es m÷glich, die Tastenbelegung ohne zusΣtzliche ─nderungen an
DEU|050410 | 7| | Masken und Routinen zu verΣndern.
DEU|050410 | 9| | Die KEYSWAP-Option wirkt bis zum Ende des Programms oder bis zur
DEU|050410 | 10| | nΣchsten KEYSWAP-Option.
DEU|050410 | 12| | KEYSWAP wird entweder in der Maske hinter dem Layout-Teil oder als
DEU|050410 | 13|S | Routinenoption hinter dem Routinennamen angegeben.
DEU|050410 | 19| | Beispiel 1:
DEU|050410 | 21| | Ohne KEYSWAP
DEU|050410 | 22| | ------------
DEU|050410 | 23| | ACCEPT ( F10='HELP', F3='ENDE', F4='EINTRAG', F5='SUCHE' );
DEU|050410 | 25| | liefert:
DEU|050410 | 26| | 3=ENDE 4=EINTRAG 5=SUCHE 10=HELP
DEU|050410 | 28| | mit KEYSWAP:
DEU|050410 | 29| | ------------
DEU|050410 | 30| | ACCEPT ( F10='HELP', F3='ENDE', F4='EINTRAG', F5='SUCHE' );
DEU|050410 | 31| | KEYSWAP ( F10<->F1 )
DEU|050410 | 33| | liefert:
DEU|050410 | 34|S | 1=HELP 3=ENDE 4=EINTRAG 5=SUCHE
DEU|050410 | 37| | Beispiel 2:
DEU|050410 | 39| | mit KEYSWAP:
DEU|050410 | 40| | ------------
DEU|050410 | 41| | ACCEPT ( F10='HELP', F3='ENDE', F4='EINTRAG', F5='SUCHE' );
DEU|050410 | 42| | KEYSWAP ( F10<->F1, F2<->F3, F3<->F4, F4<->F5 )
DEU|050410 | 44| | liefert:
DEU|050410 | 45| | 1=HELP 2=ENDE 3=EINTRAG 4=SUCHE
DEU|050410 | 47|RI| ##051155->^Syntax
DEU|050411 | 1| | CONTROL : Die Maske als steuernder Modul
DEU|050411 | 3| |
DEU|050411 | 4| E| FORM kunde.stammkarte
DEU|050411 | 5| E| LAYOUT
DEU|050411 | 6| E| ...
DEU|050411 | 7| E| ENDLAYOUT
DEU|050411 | 9| E| ACCEPT ( F3='ZURUECK',F4='EINTRAG',F5='AENDERN' );
DEU|050411 | 10| E| CONTROL CASE $KEY OF
DEU|050411 | 11| E| F3 : RETURN;
DEU|050411 | 12| E| F4 : CALL PROC einfuegen;
DEU|050411 | 13| E| F5 : CALL PROC aendern;
DEU|050411 | 14| E| END;
DEU|050411 | 15| |
DEU|050411 | 17|S | Wenn der Benutzer nach der Eingabe die F4-Taste drⁿckt, wird von der
DEU|050411 | 19| | Maske aus die SQL-PL Routine 'kunde.einfuegen' aufgerufen.
DEU|050411 | 21| | Innerhalb der CASE-Anweisung dⁿrfen RETURN-, CALL-, SWITCH-,
DEU|050411 | 22| | SWITCHCALL-, PICK-, PUT- und weitere CASE-Anweisungen stehen.
DEU|050411 | 24| | Der Effekt der CONTROL-Anweisung soll durch die folgende Σquivalente
DEU|050411 | 25| | SQL-PL Routine verdeutlicht werden.
DEU|050411 | 27| | PROC kunde.start
DEU|050411 | 28| | ...
DEU|050411 | 29| | REPEAT
DEU|050411 | 30| | CALL FORM kunde.stammkarte;
DEU|050411 | 31| | CASE $KEY OF
DEU|050411 | 32| | F3 : RETURN;
DEU|050411 | 33| | F4 : CALL PROC einfuegen;
DEU|050411 | 34| | F5 : CALL PROC aendern;
DEU|050411 | 35|S | END
DEU|050411 | 37| | UNTIL $KEY = F3;
DEU|050411 | 40|RI| ##051122->^Syntax
DEU|050414 | 1| | GRAPHIC : Graphikzeichen in Masken
DEU|050414 | 3| | In FORM kann bestimmt werden, ob eine Folge von Zeichen (senkrecht oder
DEU|050414 | 4| | waagrecht) als durchgezogene Linie dargestellt werden soll oder nicht.
DEU|050414 | 6| |
DEU|050414 | 7| E| FORM box.test
DEU|050414 | 8| E| LAYOUT GRAPHIC=*
DEU|050414 | 9| E| **************
DEU|050414 | 10| E| * *
DEU|050414 | 11| E| * *
DEU|050414 | 12| E| * *
DEU|050414 | 13| E| * *
DEU|050414 | 14| E| **************
DEU|050414 | 15| E| ENDLAYOUT
DEU|050414 | 16|S |
DEU|050414 | 19| | Das im Beispiel definierte Rechteck wird auf graphikfΣhigen Terminals
DEU|050414 | 20| | mit durchgezogenen Linien dargestellt. Auf Terminals ohne
DEU|050414 | 21| | GraphikfΣhigkeit erscheint die waagrechte Linie als Folge von '-'
DEU|050414 | 22| | (Bindestrichen), die senkrechte Linie als Folge von '|' (senkrechten
DEU|050414 | 23| | Strichen) und die Ecken als '*'.
DEU|050414 | 25|RI| ##051103->^Syntax
DEU|050415 | 1| | MARK : Initialisierung der Cursorposition
DEU|050415 | 3| | Normalerweise steht beim Aufruf einer Maske der Cursor auf dem ersten
DEU|050415 | 4| | Eingabefeld der Maske. Hat die Maske keine Eingabefelder, positioniert
DEU|050415 | 5| | FORM den Cursor auf die linke, obere Ecke der Maske. Soll der Cursor
DEU|050415 | 6| | auf einem anderen als dem ersten Eingabefeld positioniert werden, kann
DEU|050415 | 7| | neben der Aufrufoption MARK die MARK-Anweisung innerhalb der Maske zur
DEU|050415 | 8| | Positionierung des Cursors verwendet werden.
DEU|050415 | 10| | Die beim Aufruf angegebene MARK-Option ⁿbersteuert die MARK-Anweisung
DEU|050415 | 11| | in der Maske.
DEU|050415 | 12| |
DEU|050415 | 13| E| ENDLAYOUT
DEU|050415 | 14| E| ...
DEU|050415 | 15| E| MARK ( 3 );
DEU|050415 | 16|S |
DEU|050415 | 19|RI| ##051116->^Syntax
DEU|050416 | 1| | RETURNONLAST : Verlassen der Maske mit der Returntaste
DEU|050416 | 3| | Eine Maske wird normalerweise durch BetΣtigung einer Funktionstaste
DEU|050416 | 4| | verlassen.
DEU|050416 | 6| | Die Anweisung (Direktive) RETURNONLAST bewirkt, da▀ die Maske verlassen
DEU|050416 | 7| | wird, wenn der Cursor auf dem letzten Feld der Maske steht und die TAB-
DEU|050416 | 8| | Taste (oder falls vorhanden die NEXTFIELD-Taste) betΣtigt wird. In
DEU|050416 | 9| | diesem Fall liefert die Maske ENTER als Wert von $KEY.
DEU|050416 | 11|RI| ##051118->^Syntax
DEU|050417 | 1| | HEADERLINES, BOTTOMLINES : Kopf- und Fu▀zeilen
DEU|050417 | 3| | In Masken, die geblΣttert werden sollen, k÷nnen die ersten und letzten
DEU|050417 | 4| | Zeilen des Masken-Layouts als Rahmenzeilen definiert werden.
DEU|050417 | 6| | Die Angabe von HEADERLINES bzw. BOTTOMLINES bestimmt die Anzahl der
DEU|050417 | 7| | Kopf- bzw. Fu▀zeilen, die zu dem festen Rahmen geh÷ren sollen. Der
DEU|050417 | 8| | ⁿbrige Bereich der Maske wird fⁿr das BlΣttern verwendet.
DEU|050417 | 11| | ...
DEU|050417 | 12| | ENDLAYOUT
DEU|050417 | 13| |
DEU|050417 | 14| E| HEADERLINES (2);
DEU|050417 | 15| E| BOTTOMLINES (1);
DEU|050417 | 16|S |
DEU|050417 | 19|RI| ##051120->^Syntax
DEU|050418 | 1| | SPECIALATTR : SituationsabhΣngige Anzeigeattribute
DEU|050418 | 3| | Mit Hilfe der Maskenverarbeitungsanweisung SPECIALATTR kann ein Feld
DEU|050418 | 4| | situationsabhΣngig mit einem bestimmten Anzeigeattribut angezeigt
DEU|050418 | 5| | werden.
DEU|050418 | 7| | Die Anweisung SPECIALATTR CHECK bewirkt, da▀ das Feld, dessen CHECK-
DEU|050418 | 8| | Bedingung nicht erfⁿllt ist, mit dem angegebenen Attribut dargestellt
DEU|050418 | 9| | wird.
DEU|050418 | 11| | Die Anweisung SPECIALATTR INPUT bewirkt, da▀ alle momentan aktiven
DEU|050418 | 12| | Eingabefelder mit dem angegebenen Anzeigeattribut angezeigt werden.
DEU|050418 | 14| | Die Anweisung SPECIALATTR MSG bewirkt, da▀ die automatisch angezeigte
DEU|050418 | 15| | Meldungszeile mit dem gewⁿnschten Anzeigeattribut erscheint.
DEU|050418 | 17|S | Die Anweisung SPECIALATTR CURSORLINE bewirkt, da▀ die Maskenzeile, in
DEU|050418 | 19| | der der Cursor positioniert ist, in dem definierten Attribut angezeigt
DEU|050418 | 20| | wird.
DEU|050418 | 22| | Die SPECIALATTR-Anweisung gilt fⁿr alle Felder der Maske und kann nur
DEU|050418 | 23| | ein Mal pro Maske spezifiert werden. So k÷nnen die oben beschriebenen
DEU|050418 | 24| | Beispiele in einer SPECIALATTR-Anweisung wie folgt definiert werden:
DEU|050418 | 26| |
DEU|050418 | 27| E| FORM kunde.stammkarte
DEU|050418 | 28| E| LAYOUT PROMPT = .
DEU|050418 | 30| E| KUNDEN-NR : _knr
DEU|050418 | 31| E| ...
DEU|050418 | 32| E| ENDLAYOUT
DEU|050418 | 34|SE| FIELD knr CHECK BETWEEN 1000 and 9999;
DEU|050418 | 37| E| SPECIALATTR INPUT underl
DEU|050418 | 38| E| CHECK inv
DEU|050418 | 39| E| MSG ATTR12;
DEU|050418 | 40| |
DEU|050418 | 42|RI| ##051121->^Syntax
DEU|050419 | 1| | INSERTMODE : Anzeige des Eingabemodus
DEU|050419 | 3| | Mit der Anweisung INSERTMODUS ist es m÷glich in der Maske anzeigen zu
DEU|050419 | 4| | lassen, in welchem Eingabemodus (▄berschreiben bzw. Einfⁿgen) sich die
DEU|050419 | 5| | Tastatur befindet.
DEU|050419 | 7| | Stellt man durch Drⁿcken der INSERT-Taste den Eingabemodus auf
DEU|050419 | 8| | Einfⁿgen, so wird an der fⁿr POS angegebenen Position der durch LABEL
DEU|050419 | 9| | definierte Ausdruck (Default:INSERT) im Attribut ATTR (Default:ATTR5)
DEU|050419 | 10| | ausgegeben. Beim Zurⁿckschalten in der ▄berschreibmodus wird das Label
DEU|050419 | 11| | ausgeblendet.
DEU|050419 | 13| |
DEU|050419 | 14| E| FORM kunde.stammkarte
DEU|050419 | 15| E| LAYOUT
DEU|050419 | 16| E| <benutzer KUNDEN-KARTE <datum
DEU|050419 | 17|SE| ------------------------------------
DEU|050419 | 19| E| Kunden-Nr : _knr
DEU|050419 | 20| E| Vorname : _kvname
DEU|050419 | 21| E| Nachname : _kname
DEU|050419 | 23| E| Kontostand : _(konto)
DEU|050419 | 25| E| ------------------------------------
DEU|050419 | 26| E| <MESSAGE
DEU|050419 | 27| E| ENDLAYOUT
DEU|050419 | 29| E| INSERTMODE ( POS (9,26), label ('EINFUEGE') );
DEU|050419 | 30| |
DEU|050419 | 32|RI| ##051156->^Syntax
DEU|050422 | 1| | BEFORE/AFTER FIELD
DEU|050422 | 3| | Zur Bearbeitung der Felder stehen bei den Masken, neben den schon
DEU|050422 | 4| | bekannten Anweisungen INIT, HELP MSG, HELP FORM, CHECK und DISPLAY, die
DEU|050422 | 5| | Anweisungen BEFORE und AFTER FIELD zur Verfⁿgung.
DEU|050422 | 7| | BEFORE FIELD und AFTER FIELD leiten einen Block von SQL-PL Anweisungen
DEU|050422 | 8| | ein.
DEU|050422 | 10| | Die Anweisungen, die hinter BEFORE FIELD formuliert sind, werden dann
DEU|050422 | 11| | ausgefⁿhrt, wenn das entsprechende Feld aktiviert wurde und somit fⁿr
DEU|050422 | 12| | den Benutzer zum Schreiben freigegeben wird.
DEU|050422 | 14| | In der Praxis werden hier hauptsΣchlich Fⁿhrungstexte fⁿr das jeweilige
DEU|050422 | 15| | Feld spezifiziert werden.
DEU|050422 | 17|S | FIELD vorname BEFORE FIELD message := 'Vorname des Kunden';
DEU|050422 | 19| | Es k÷nnen aber auch alle anderen in SQL-PL zulΣssigen Anweisungen
DEU|050422 | 20| | verwendet werden. Hier stehen dem Anwendungsprogrammierer alle
DEU|050422 | 21| | M÷glichkeiten offen, sogar eine REPORT- oder SQL-Anweisung.
DEU|050422 | 23| | Wie bei BEFORE FIELD sind bei AFTER FIELD auch alle in SQL-PL
DEU|050422 | 24| | zulΣssigen Anweisungen angebbar. Die hinter AFTER FIELD formulierten
DEU|050422 | 25| | Anweisungen werden dann ausgefⁿhrt, wenn das jeweilige Feld verlassen
DEU|050422 | 26| | werden soll und die CHECK-Bedingung - falls vorhanden - erfⁿllt worden
DEU|050422 | 27| | ist.
DEU|050422 | 29| | Die Anweisungen AFTER FIELD werden nicht ausgefⁿhrt, wenn das Feld
DEU|050422 | 30| | ⁿbersprungen wird. Ein Feld kann ⁿbersprungen werden, wenn der Benutzer
DEU|050422 | 31| | es nicht ausgefⁿllt und statt dessen die NEXTFIELD-Taste betΣtigt hat.
DEU|050422 | 33|RI| ##051140->^Syntax
DEU|050423 | 1| | GROUP : Einteilung in Feldgruppen
DEU|050423 | 3| | In Masken k÷nnen Felder zu Gruppen zusammengefa▀t werden. Dies
DEU|050423 | 4| | erleichtert es, die Felder einer Maske verschiedenen Tabellen
DEU|050423 | 5| | zuzuordnen. Eine Maske ohne GROUP-Anweisung wirkt wie eine Maske mit
DEU|050423 | 6| | genau einer GROUP-Anweisung, in der alle Felder der Maske aufgefⁿhrt
DEU|050423 | 7| | sind.
DEU|050423 | 9| | Wird in einer Maske eine GROUP-Anweisung formuliert, so erwartet FORM
DEU|050423 | 10| | fⁿr jedes Feld die Zuordnung zu einer Gruppe. Die Felder, die nicht
DEU|050423 | 11| | explizit in GROUP-Anweisungen aufgefⁿhrt sind, werden von FORM implizit
DEU|050423 | 12| | einer Restgruppe zugeordnet, die als erste der Gruppen ausgefⁿhrt wird.
DEU|050423 | 14| | Eine Feldgruppe wird verlassen, wenn alle Felder der Gruppe
DEU|050423 | 15| | abgearbeitet sind. Dies hΣngt natⁿrlich von den einzelnen
DEU|050423 | 16|S | Feldanweisungen ab, die definiert wurden.
DEU|050423 | 19|RI| ##051141->^Syntax
DEU|050424 | 1| | BEFORE/AFTER GROUP
DEU|050424 | 3| | Entsprechend der Anweisungen BEFORE/AFTER FIELD k÷nnen fⁿr die
DEU|050424 | 4| | Feldgruppen die Anweisungen BEFORE GROUP und AFTER GROUP formuliert
DEU|050424 | 5| | werden.
DEU|050424 | 7| | Dabei gilt die EinschrΣnkung, da▀ ein Gruppenname h÷chstens in einer
DEU|050424 | 8| | Anweisung BEFORE GROUP und in einer Anweisung AFTER GROUP vorkommen
DEU|050424 | 9| | darf.
DEU|050424 | 12|RI| ##051141->^Syntax
DEU|050425 | 1| | Die NEXTFIELD-Anweisung
DEU|050425 | 3| | Die Reihenfolge, in der die Felder ausgefⁿhrt werden, wird entweder
DEU|050425 | 4| | durch ihre Anordnung im Layout oder durch die Feld-Anweisungen
DEU|050425 | 5| | bestimmt. Mit der NEXTFIELD-Anweisung, die in Masken an Stelle einer
DEU|050425 | 6| | beliebigen SQL-PL Anweisung auftreten kann, ist es m÷glich, die
DEU|050425 | 7| | Abarbeitungsreihenfolge noch zusΣtzlich dynamisch zu verΣndern.
DEU|050425 | 10| |
DEU|050425 | 11| E| FORM test.nxt_fld
DEU|050425 | 12| E| LAYOUT
DEU|050425 | 13| E| Kontonr : _knr
DEU|050425 | 14| E| Nachname: _n_name
DEU|050425 | 15| E| Vorname : _v_name
DEU|050425 | 17|SE| Kontostand : _konto
DEU|050425 | 19| E| ENDLAYOUT
DEU|050425 | 20| E| GROUP a
DEU|050425 | 21| E| FIELD knr
DEU|050425 | 22| E| BEFORE FIELD
DEU|050425 | 23| E| message := 'Nummer des Kunden, falls bekannt'
DEU|050425 | 24| E| AFTER FIELD
DEU|050425 | 25| E| BEGIN
DEU|050425 | 26| E| SQL ( SELECT DIRECT name, vorname INTO :n_name, :v_name
DEU|050425 | 27| E| FROM kunde
DEU|050425 | 28| E| key knr = :knr );
DEU|050425 | 29| E| NEXTFIELD konto;
DEU|050425 | 30| E| END;
DEU|050425 | 31| E| FIELD n_name ...
DEU|050425 | 32| E| FIELD v_name ...
DEU|050425 | 33| E| FIELD konto ...
DEU|050425 | 34| E| END;
DEU|050425 | 35|S |
DEU|050425 | 37| | Der Feldname, der in der NEXTFIELD-Anweisung verwendet wird, mu▀ ein
DEU|050425 | 38| | Feld der Maske bezeichnen.
DEU|050425 | 40| | Die Anweisung NEXTFIELD bewirkt, da▀ das angegebene Feld beim Verlassen
DEU|050425 | 41| | den Feldes als Folgefeld angesprungen wird, unabhΣngig davon ob die
DEU|050425 | 42| | NEXTFIELD Anweisung bei BEFORE FIELD oder bei AFTER FIELD definiert
DEU|050425 | 43| | wurde.
DEU|050425 | 45|RI| ##051144->^Syntax
DEU|050426 | 1| | Die NEXTGROUP-Anweisung
DEU|050426 | 3| | Die Reihenfolge, in der die Gruppen ausgefⁿhrt werden, wird durch die
DEU|050426 | 4| | Reihenfolge der GROUP-Anweisungen bestimmt. Die NEXTGROUP-Anweisung
DEU|050426 | 5| | dient dem Fall, da▀ diese Reihenfolge z. B. abhΣngig von einer
DEU|050426 | 6| | Bedingung geΣndert werden soll. Ebenso wie die NEXTFIELD-Anweisung kann
DEU|050426 | 7| | auch die NEXTGROUP-Anweisung an beliebiger Stelle stehen.
DEU|050426 | 9| | Der Gruppenname, der in der NEXTGROUP-Anweisung verwendet wird, mu▀ mit
DEU|050426 | 10| | der GROUP-Anweisung in derselben Maske definiert sein, sonst meldet
DEU|050426 | 11| | FORM beim Abspeichern einen ▄bersetzungsfehler.
DEU|050426 | 13|RI| ##051145->^Syntax
DEU|050427 | 1| | NOAUTONEXT-Felder
DEU|050427 | 3| | FIELD name NOAUTONEXT
DEU|050427 | 5| | Diese Option gibt an, da▀ der Cursor beim Vollschreiben des Feldes
DEU|050427 | 6| | 'name' nicht automatisch auf das nΣchste Eingabefeld positioniert wird.
DEU|050427 | 9|RI| ##051146->^Syntax
DEU|050428 | 1| | SCROLLFIELD : Verschieben von Vektorbereichen
DEU|050428 | 3| | Fⁿr jeden Vektorbereich mit OFFSET-Option, der als Eingabefeld im
DEU|050428 | 4| | Layout definiert ist und durch BetΣtigung der Cursor-Tasten verschoben
DEU|050428 | 5| | werden soll, wird die SCROLLFIELD-Anweisung innerhalb der Anweisung
DEU|050428 | 6| | AFTER FIELD definiert.
DEU|050428 | 8| | Die SCROLLFIELD-Anweisung erwartet als erstes Argument die Variable,
DEU|050428 | 9| | die bei der OFFSET-Option angegeben wurde.
DEU|050428 | 11| | Als zweites - optionales - Argument der SCROLLFIELD-Anweisung kann die
DEU|050428 | 12| | maximale Anzahl der Werte angegeben werden. Sonst wird 255 als
DEU|050428 | 13| | Listenende angenommen.
DEU|050428 | 15| | Als drittes optionales Argument kann die Anzahl der Zeilen angegeben
DEU|050428 | 16|S | werden, die als BlΣttereinheit bei der -Taste verwendet werden soll.
DEU|050428 | 19| | Will man innerhalb der EintrΣge direkt ans Ende oder an den Anfang
DEU|050428 | 20| | gelangen, so kann man in der zweiten Klammer der SCROLLFIELD-Anweisung
DEU|050428 | 21| | hinter den Schlⁿsselworten TOPKEY und BOTTOMKEY die Tasten hierfⁿr
DEU|050428 | 22| | definieren.
DEU|050428 | 24| |
DEU|050428 | 25| E| FORM kunde.auswahl
DEU|050428 | 26| E| LAYOUT
DEU|050428 | 27| E| _auswahl(1..5)
DEU|050428 | 28| E| _
DEU|050428 | 29| E| _
DEU|050428 | 30| E| _
DEU|050428 | 31| E| _
DEU|050428 | 32| E| ENDLAYOUT
DEU|050428 | 33| E| SPECIALATTR INPUT INV;
DEU|050428 | 35|SE| FIELD auswahl(1..5)
DEU|050428 | 37| E| OFFSET x
DEU|050428 | 38| E| AFTER FIELD SCROLLFIELD ( x, max_anzahl, $screenlns
DEU|050428 | 39| E| ( TOPKEY F7, BOTTOMKEY F8 );
DEU|050428 | 40| |
DEU|050428 | 42|RI| ##051185->^Syntax
DEU|050429 | 1| | KEYS : Tastenzuordnung
DEU|050429 | 3| | In FORM werden einer Reihe von Tasten bestimmte Funktionen zugeordnet.
DEU|050429 | 4| | Beispielsweise l÷st die HELP-Taste die Ausfⁿhrung der FIELD/HELP-
DEU|050429 | 5| | Anweisung aus. Auch bei der AUTOPAGE-Anweisung werden bestimmten Tasten
DEU|050429 | 6| | die BlΣtterfunktionen zugeordnet.
DEU|050429 | 8| | Die KEYS-Anweisung erm÷glicht es, den Funktionen HELP, MENU, UP, DOWN,
DEU|050429 | 9| | LEFT und RIGHT eine oder mehrere Tasten als Ausl÷setasten zuzuordnen.
DEU|050429 | 10| | Die Funktion MENU bezeichnet die Taste, die den Wechsel zwischen
DEU|050429 | 11| | Menⁿleiste und Maske ausl÷st.
DEU|050429 | 13| |
DEU|050429 | 14| E| KEYS ( UP = F7 | UPKEY
DEU|050429 | 15| E| DOWN = F8 | DOWNKEY
DEU|050429 | 16| E| HELP = F1 | HELPKEY )
DEU|050429 | 17|S |
DEU|050429 | 19|RI| ##051186->^Syntax
DEU|0505 | 1| | Struktur einer Maske
DEU|0505 | 3| | FORM kunde.stammkarte -> Dies ist die Maske 'stammkarte',
DEU|0505 | 4| | -> die Maske geh÷rt zum Programm 'kunde'
DEU|0505 | 5| | LAYOUT -> Hier beginnt die Layoutzeichnung.
DEU|0505 | 6| | ... -> Hier werden Ein-/Ausgabefelder
DEU|0505 | 7| | ... -> und beliebige Texte definiert.
DEU|0505 | 8| | ENDLAYOUT -> Hier endet die Layoutzeichnung.
DEU|0505 | 10| | GROUP ..
DEU|0505 | 11| | FIELD -> Bei BEFORE/AFTER bestimmt man, was beim
DEU|0505 | 12| | BEFORE FIELD ... -> Ein- und Austritt eines Feldes oder einer
DEU|0505 | 13| | AFTER FIELD ... -> Gruppe zu geschehen hat.
DEU|0505 | 14| | FIELD ...; -> Alle anderen Maskenanweisungen sind auch
DEU|0505 | 15| | END; -> verwendbar ( IGNORE, ACCEPT oder ACTIONBAR,
DEU|0505 | 16| | -> HEADERLINES, BOTTOMLINES ...).
DEU|0505 | 17|S | AFTER GROUP .. -> In allen BEFORE/AFTER -Anweisungen sind
DEU|0505 | 19| | BEGIN ... END; -> beliebige SQL-PL Anweisungen m÷glich.
DEU|0505 | 20|RI| ##051102->^Syntax
DEU|0506 | 1| | Aurufoptionen bei Masken :
DEU|0506 | 2| | -------------------------
DEU|0506 | 4| M| #01ACCEPT^^^^^: EinschrΣnkung der erlaubten Ausl÷setasten
DEU|0506 | 5| M| #02ATTR^^^^^^^: ▄bersteuerung der Attribute von Feldern
DEU|0506 | 6| M| #10AUTOPUT^^^^: Kopieren des PICK-Pufferinhalts
DEU|0506 | 7| M| #08BACKGROUND^: Maske als Hintergrund speichern
DEU|0506 | 8| M| #03CLEAR^^^^^^: Hintergrund l÷schen
DEU|0506 | 9| M| #03FORMPOS^^^^: Linke obere Ecke des Maskenausschnitts
DEU|0506 | 10| M| #03FRAME^^^^^^: Maske in einem Rahmen ausgeben
DEU|0506 | 11| M| #04INPUT^^^^^^: Bestimmte Eingabefelder aktiv setzen
DEU|0506 | 12| M| #05MARK^^^^^^^: Cursorpositionierung
DEU|0506 | 13| M| #06NOINIT^^^^^: Unterdrⁿckung der FIELD/INIT-Option
DEU|0506 | 14| M| #04NOINPUT^^^^: Bestimmte Eingabefelder inaktiv setzen
DEU|0506 | 15| M| #07PRINT^^^^^^: Druckausgabe der Maske
DEU|0506 | 16| M| #03SCREENPOS^^: Linke obere Ecke der Maske auf dem Bildschirm
DEU|0506 | 17|SM| #03SCREENSIZE^: LΣnge und Breite des Ausschnitts
DEU|0506 | 19| M| #09RESTORE^^^^: Wiederherstellung des Maskenhintergrunds
DEU|0506 | 20| M| #11ACTION^^^^^: Aktivieren der Menⁿzeile
DEU|0506 | 21|RI| ##051125->^Syntax
DEU|050601 | 1| | ACCEPT (ENTER,F1=<label>,...) bewirkt, da▀ nur die angegebenen Tasten
DEU|050601 | 2| | mit den zugeh÷rigen Labels angezeigt werden.
DEU|050601 | 4| | Falls in der Maske bereits eine ACCEPT-Option definiert ist, so wird
DEU|050601 | 5| | diese Menge der erlaubten Ausl÷setasten ⁿbersteuert. (m÷gliche
DEU|050601 | 6| | Ausl÷setasten: ENTER, F1 ... F12).
DEU|050601 | 8| | Allen Tasten au▀er ENTER k÷nnen Labels zugeordnet werden.
DEU|050601 | 10| | ACCEPT() bewirkt, da▀ die Maske ausgegeben wird, ohne da▀ eine
DEU|050601 | 11| | Benutzer-Interaktion erwartet wird.
DEU|050601 | 13| |
DEU|050601 | 14| E| CALL FORM maske1 OPTIONS (ACCEPT (F1,F3='STOP',ENTER) );
DEU|050601 | 15| |
DEU|050601 | 17|RI| ##051128->^Syntax
DEU|050602 | 1| | CALL FORM kunde ( ATTR ( name, INV ) );
DEU|050602 | 3| | CALL FORM kunde ( ATTR ( knr, ATTR15 ) );
DEU|050602 | 5| | ATTR verΣndert die Anzeigeattribute des angegebenen Maskenfeldes fⁿr
DEU|050602 | 6| | diesen Maskenaufruf.
DEU|050602 | 8| | M÷gliche Attribute sind ATTR1,...,ATTR16 (HIGH, HI, LOW, INV, BLK,
DEU|050602 | 9| | UNDERL).
DEU|050602 | 11|RI| ##051129->^Syntax
DEU|050603 | 1| | FORMPOS (Z,S) bestimmt die Anfangsposition des Ausschnitts
DEU|050603 | 2| | aus einer Maske (Z)eile , (S)palte
DEU|050603 | 3| | Diese Option dient der abschnittsweisen Ausgabe der Maske.
DEU|050603 | 5| I| ##051131->^Syntax
DEU|050603 | 8| | SCREENSIZE (L,B) bestimmt die Gr÷▀e eines Fensters am Bildschirm
DEU|050603 | 9| | (L)Σnge , (B)reite
DEU|050603 | 11| | SCREENPOS (Z,S) bestimmt die Position eines Fensters am Bildschirm
DEU|050603 | 12| | (Z)eile , (S)palte
DEU|050603 | 14| | CLEAR bewirkt, da▀ der Maskenhintergrund gel÷scht wird.
DEU|050603 | 16|SI| ##051130->^Syntax
DEU|050603 | 19| | FRAME bewirkt, da▀ um die Maske ein Rahmen ausgegeben wird.
DEU|050603 | 20| | FRAME ( titel ) bewirkt, da▀ der Wert der Variablen titel
DEU|050603 | 21| | in die Mitte der oberen Linie des Rahmens eingeblendet wird.
DEU|050603 | 23|RI| ##051132->^Syntax
DEU|050604 | 1| | INPUT (fld,...) bewirkt, da▀ nur die spezifizierten Felder
DEU|050604 | 2| | beschreibbar sind. Es k÷nnen Feldfolgenummern, Variablen und
DEU|050604 | 3| | Vektorbereiche angegeben werden.
DEU|050604 | 5| | INPUT() Wird bei Input eine leere Liste angegeben, dann erscheinen
DEU|050604 | 6| | alle Felder der Maske als Ausgabefelder.
DEU|050604 | 8| | NOINPUT (fld,...) bewirkt, da▀ die spezifizierten Felder
DEU|050604 | 9| | N I C H T beschreibbar sind. Es k÷nnen Feldfolgenummern, Variablen
DEU|050604 | 10| | und Vektorbereiche angegeben werden.
DEU|050604 | 12| | NOINPUT() ist nicht sinnvoll, da alle Eingabefelder unverΣndert
DEU|050604 | 13| | aktiv bleiben.
DEU|050604 | 15| | CALL FORM stammkarte ( INPUT (knr, ort(1..4), 10, 11 ));
DEU|050604 | 17|RI| ##051136->^Syntax
DEU|050605 | 1| | MARK (n) setzt die Schreibmarke beim Ausgeben der Maske auf das
DEU|050605 | 2| | n-te Eingabefeld in der Reihenfolge von links oben nach rechts unten.
DEU|050605 | 4| | CALL FORM eingabe OPTIONS ( MARK(4), INPUT(3,4,5) );
DEU|050605 | 7| | MARK(v) setzt die Schreibmarke beim Erscheinen der Maske auf das
DEU|050605 | 8| | Feld der Variablen v. Falls die Variable v nicht in der
DEU|050605 | 9| | Maske vorkommt, wird der Wert von v als Feldfolgenummer
DEU|050605 | 10| | interpretiert.
DEU|050605 | 12| | CALL FORM stammkarte OPTIONS ( MARK(knr) );
DEU|050605 | 14| | Nach dem Maskenaufruf gibt $CURSOR die Feldfolgenummer des
DEU|050605 | 15| | Eingabefeldes an, auf dem die Schreibmarke zuletzt stand.
DEU|050605 | 17|RI| ##051127->^Syntax
DEU|050606 | 1| | Die Option NOINIT unterdrⁿckt in der Maske definierte Variablen-
DEU|050606 | 2| | Initialisierungen. Dadurch erscheinen in den Feldern die aktuellen
DEU|050606 | 3| | Werte der Variablen.
DEU|050606 | 6| | CALL FORM stammkarte OPTIONS ( NOINIT );
DEU|050606 | 8| | oder kⁿrzer
DEU|050606 | 10| | CALL FORM stammkarte ( NOINIT );
DEU|050606 | 12|RI| ##051126->^Syntax
DEU|050607 | 1| | PRINT ⁿbertrΣgt die aufgerufene Maske in den Spool-Bereich des
DEU|050607 | 2| | Druckers. Am Programmende wird die Druckausgabe gestartet. Durch PRINT
DEU|050607 | 3| | ( opt1 , opt2 , ... ) kann die Druckausgabe noch zusΣtzlich beeinflu▀t
DEU|050607 | 4| | werden. Dabei bewirkt :
DEU|050607 | 6| | CLOSE die sofortige Ausgabe ⁿber den Drucker,
DEU|050607 | 7| | LINEFEED das Erzeugen von Leerzeilen vor der Druckausgabe,
DEU|050607 | 8| | LINESPACE das Schreiben von Leerzeilen zwischen Druckzeilen,
DEU|050607 | 9| | NEWPAGE die Ausgabe auf einer neuen Seite,
DEU|050607 | 10| | CPAGE einen Seitenvorschub, abhΣngig von der Anzahl der
DEU|050607 | 11| | freien Zeilen.
DEU|050607 | 12| | 'X' Aktiviert die Druckereinstellung 'X' der Setparameter
DEU|050607 | 13| | fⁿr diesen Ausdruck
DEU|050607 | 16| | CALL FORM maske3 OPTIONS ( PRINT (LINEFEED 2, NEWPAGE));
DEU|050607 | 17|S | CALL FORM maske4 ( PRINT ('X',LINESPACE 2));
DEU|050607 | 19|RI| ##051135->^Syntax
DEU|050608 | 1| | Die Option BACKGROUND bewirkt, da▀ die Maske n i c h t sofort auf dem
DEU|050608 | 2| | Bildschirm erscheint, sondern vielmehr als Hintergrund gespeichert
DEU|050608 | 3| | wird.
DEU|050608 | 5| | Es k÷nnen beliebig viele Masken hintereinander mit der BACKGROUNDOption
DEU|050608 | 6| | ⁿberlagert werden. Die Bildschirmausgabe findet erst dann statt, wenn
DEU|050608 | 7| | eine Maske o h n e BACKGROUND-Option aufgerufen wird oder wenn eine
DEU|050608 | 8| | Bildschirmausgabe durch READ oder WRITE ausgel÷st wird.
DEU|050608 | 10| | Ebenso kann die Bildschirmausgabe durch den anschlie▀enden Aufruf einer
DEU|050608 | 11| | REPORT-Ausgabe ausgel÷st werden. Dieser sollte dann sinnvoller Weise
DEU|050608 | 12| | nicht den ganzen Bildschirm belegen (siehe hierzu auch Report-Kommando
DEU|050608 | 13| | WINDOW).
DEU|050608 | 15|RI| ##051133->^Syntax
DEU|050609 | 1| | Mit der RESTORE-Option wird der Hintergrund einer Maske implizit
DEU|050609 | 2| | gesichert, so da▀ die Maske bei ihrem Verschwinden ihren Hintergrund
DEU|050609 | 3| | wieder so herstellen kann, wie er vor ihrem Erscheinen war.
DEU|050609 | 5| | Bei HELP-Masken, die in der FIELD-Anweisung spezifiziert werden,
DEU|050609 | 6| | verwendet FORM implizit die RESTORE-Option.
DEU|050609 | 9| | CALL FORM maske OPTIONS ( RESTORE );
DEU|050609 | 12|RI| ##051134->^Syntax
DEU|050610 | 1| | Die AUTOPUT-Option bewirkt, da▀ nach Verlassen der Maske der gepickte
DEU|050610 | 2| | Wert automatisch der Variablen zugewiesen wird, auf deren Feld der
DEU|050610 | 3| | Cursor vor dem Aufruf der Maske stand. Auf diese Weise ist die PUT-
DEU|050610 | 4| | Anweisung innerhalb der CONTROL-Anweisung nicht mehr n÷tig, und fⁿr den
DEU|050610 | 5| | Endbenutzer entfΣllt das zusΣtzliche BetΣtigen der PUT-Taste. Es
DEU|050610 | 6| | genⁿgt, den Wert mit PICK auszuwΣhlen.
DEU|050610 | 8| |
DEU|050610 | 9| E| FORM tpick.m1
DEU|050610 | 10| E| LAYOUT
DEU|050610 | 11| E| _1 _2
DEU|050610 | 12| E| _ _
DEU|050610 | 13| E| _ _
DEU|050610 | 14| E| ENDLAYOUT
DEU|050610 | 15| E| ACCEPT ( enter, f5='PICK' );
DEU|050610 | 16| E| FIELD 1:anrede(1..3) HELP FORM p_anrede ( FRAME, AUTOPUT );
DEU|050610 | 17|SE| FIELD 2:ort(1..3) HELP FORM p_ort ( FRAME, AUTOPUT );
DEU|050610 | 19| |
DEU|050610 | 21| | Die AUTOPUT-Option kann auch mit einer Variablen als Argument benutzt
DEU|050610 | 22| | werden. Diese Verwendung ist dann sinnvoll, wenn der mit PICK
DEU|050610 | 23| | ⁿbernommene Wert nicht genau fⁿr die aufrufende Maske bestimmt ist,
DEU|050610 | 24| | sondern als Parameter aus der aufrufenden Maske gereicht werden soll.
DEU|050610 | 26| | CALL FORM auswahl OPTION ( AUTOPUT(@ausw) );
DEU|050610 | 28|RI| ##051157->^Syntax
DEU|050611 | 1| | Aktivieren der Menⁿzeile
DEU|050611 | 3| | Die Angabe der Aufrufoption ACTION bewirkt, da▀ das angegebene Feld der
DEU|050611 | 4| | Menⁿzeile direkt beim Aufruf der Maske aktiv ist.
DEU|050611 | 6| | CALL FORM x OPTIONS ( ACTION ( 5 ));
DEU|050611 | 8|RI| ##051137->^Syntax
DEU|0507 | 1| | Parameter beim Maskenaufruf
DEU|0507 | 3| | Zur Datenⁿbergabe beim SWITCH k÷nnen aktuelle Parameter angegeben
DEU|0507 | 4| | werden. Die aktuellen Parameter werden den in der Maskendefinition
DEU|0507 | 5| | angegebenen formalen Parametern zugewiesen.
DEU|0507 | 7| | Definition : FORM kunde.stammkarte PARMS (@knr,@datum)
DEU|0507 | 9| | Aufruf : SWITCH kunde CALL FORM stammkarte PARMS (knr, DATE (yymmdd))
DEU|0507 | 11| | Als aktuelle Parameter sind sowohl Variablen als auch Ausdrⁿcke
DEU|0507 | 12| | erlaubt. Da es sich bei den Parametern um Stellungsparameter handelt,
DEU|0507 | 13| | k÷nnen aktuelle Parameter beim Aufruf ausgelassen werden, z.B.: PARMS (
DEU|0507 | 14| | , DATE(yymmdd)).
DEU|0507 | 16| | Werden beim Aufruf mehr Parameter angegeben als im Modul definiert
DEU|0507 | 17|S | sind, so werden diese einfach ignoriert.
DEU|0507 | 19| | Beim einfachen CALL ist zu beachten, da▀ die aktuellen Parameter wie
DEU|0507 | 20| | Ein-/Ausgabeparameter behandelt werden.
DEU|0507 | 22| | Die Definition :
DEU|0507 | 23| | FORM kunde.stammkarte PARMS ( @knr, @datum )
DEU|0507 | 25| | und der Aufruf :
DEU|0507 | 26| | CALL FORM stammkarte PARMS ( knr, DATE(yymmdd) );
DEU|0507 | 28|R | Nach dem Aufruf kann die Variable knr einen verΣnderten Wert haben.
DEU|0508 | 1| | Compileroptionen
DEU|0508 | 2| | -----------------
DEU|0508 | 4| M| Die #01LIB-Option
DEU|0508 | 5|RM| Die #01WRAP-Option
DEU|050801 | 1| | Die LIB-Option
DEU|050801 | 2| | gibt den Namen der Funktionsbibliothek aus der die SQL-PL
DEU|050801 | 3| | Funktionen aufgerufen werden, die in der Maske verwendet
DEU|050801 | 4| | werden.
DEU|050801 | 6| | FORM ... OPTION ( LIB libname );
DEU|050801 | 8| I| ##051153->^Syntax
DEU|050801 | 10| | Die WRAP-Option
DEU|050801 | 11| | bewirkt, da▀ mehrzeilige Felder einer Maske auf Terminals die
DEU|050801 | 12| | es erm÷glichen, als Fortsetzungsfeld betrieben werden.
DEU|050801 | 14| | FORM ... OPTION ( WRAP );
DEU|050801 | 16|RI| ##051154->^Syntax
DEU|0510 | 1| | Menⁿleiste mit Pulldown-Menⁿs
DEU|0510 | 2| | -----------------------------
DEU|0510 | 4| M| #01Definition eines separaten MENU-Moduls
DEU|0510 | 5| M| #02Definition der Menⁿleiste innerhalb einer Maske
DEU|0510 | 6| M| #05Definition von Menⁿleiste und Pulldown-Menⁿs
DEU|0510 | 7| M| #06Definition einer BUTTON-Leiste
DEU|0510 | 8| M| #04Beispiele
DEU|0510 | 9|RM| #03Bedienung einer Menⁿleiste mit Pulldown-Menⁿs
DEU|051001 | 1| | Definition eines separaten MENU-Moduls
DEU|051001 | 3| | Soll in einem SQL-PL Programm in verschiedenen Masken die gleiche
DEU|051001 | 4| | Menⁿleiste und die zugeh÷rigen Pulldown-Menⁿs benutzt werden, so kann
DEU|051001 | 5| | ein separater MENU-Modul definiert werden, der mit der INCLUDE MENU
DEU|051001 | 6| | Anweisung in eine Maske eingebunden wird.
DEU|051001 | 8| | In dem MENU-Modul werden hintereinander die Menⁿleiste und die
DEU|051001 | 9| | Pulldown-Menⁿs definiert.
DEU|051001 | 11| | Definition eines MENU-Moduls :
DEU|051001 | 12| |
DEU|051001 | 13| E| MENU allgemein.pd_menu
DEU|051001 | 14| E| ACTIONBAR ('LIST',
DEU|051001 | 15| E| 'BEARBEITEN' : PULLDOWN bearb,
DEU|051001 | 16|SE| 'LOESCHEN' );
DEU|051001 | 19| E| PULLDOWN bearb ( 'START',
DEU|051001 | 20| E| 'EINTRAGEN' : PULLDOWN eintr );
DEU|051001 | 22| E| PULLDOWN eintr ( 'NEU',
DEU|051001 | 23| E| 'AENDERN' );
DEU|051001 | 24| |
DEU|051001 | 27| I| ##051147->^Syntax
DEU|051001 | 30| | In einer Maske mit INCLUDE MENU Anweisung mu▀ im Layout-Teil das
DEU|051001 | 31| | Schlⁿsselwort ACTIONBAR angegeben werden, wie bei der Definition der
DEU|051001 | 32| | Menⁿleiste innerhalb einer Maske.
DEU|051001 | 35|S | LAYOUT
DEU|051001 | 37| | ACTIONBAR
DEU|051001 | 38| | ...
DEU|051001 | 40| | ENDLAYOUT
DEU|051001 | 42| | INCLUDE MENU allgemein.pd_menu;
DEU|051001 | 43| | ...
DEU|051001 | 45|RI| ##051148->^Syntax
DEU|051002 | 1| | Definition der Menⁿleiste innerhalb einer Maske
DEU|051002 | 3| | Fⁿr kleinere Anwendungen oder zum Testen eine Menⁿs ist es sinnvoll das
DEU|051002 | 4| | Menⁿ direkt in der Maske zu definieren.
DEU|051002 | 6| | Hierzu werden die Anweisungen zur Defintion des Menⁿs (ACTIONBAR,
DEU|051002 | 7| | PULLDOWN-Anweisung) im Verarbeitungsteil der Maske formuliert.
DEU|051002 | 10|RI| ##051149->^Syntax
DEU|051003 | 1| | Bedienung einer Menⁿleiste mit Pulldown-Menⁿs
DEU|051003 | 3| | Beim Aufruf der Maske ist die Menⁿleiste nicht aktiviert und die Maske
DEU|051003 | 4| | kann in der ⁿblichen Weise bearbeitet werden.
DEU|051003 | 6| | Es gibt folgende M÷glichkeiten, die Menⁿleiste zu aktivieren:
DEU|051003 | 8| | - Funktionstaste F12
DEU|051003 | 10| | Durch die Funktionstaste F12 wird die Menⁿleiste aktiviert und der
DEU|051003 | 11| | Cursor auf das erste Feld positioniert.
DEU|051003 | 13| | - CTRL/<char>
DEU|051003 | 15| | Durch gleichzeitiges BetΣtigen der CTRL-Taste und des Buchstabens, der
DEU|051003 | 16| | als Auswahlbuchstabe hervorgehoben dargestellt ist, wird direkt die
DEU|051003 | 17|S | entsprechende Aktion ausgewΣhlt. Falls es zu der Aktion ein Pulldown-
DEU|051003 | 19| | Menⁿ gibt, so wird dies heruntergeklappt, sonst liefert $ACTION die
DEU|051003 | 20| | ausgewΣhlte Aktion.
DEU|051003 | 22| | Wenn die Menⁿleiste aktiviert ist, kann durch die Taste des ersten
DEU|051003 | 23| | Buchstabens des Labels die entsprechende Aktion gestartet werden, z. B.
DEU|051003 | 24| | wird das Pulldown-Menⁿ des Feldes mit dem Label 'BEARBEITEN' durch die
DEU|051003 | 25| | Taste b aufgeklappt. Der jeweilige Buchstabe wird vom System
DEU|051003 | 26| | automatisch ermittelt und wird mit dem Attribut 'Auswahlzeichen passiv'
DEU|051003 | 27| | (ATTR8) oder 'Auswahlzeichen aktiv' (ATTR9) dargestellt.
DEU|051003 | 29| | In einem aktiven Pulldown-Menⁿ k÷nnen die Funktionen analog ausgewΣhlt
DEU|051003 | 30| | und gestartet werden.
DEU|051003 | 32| | Wenn die Menⁿleiste aktiviert ist, kann der Cursor zur Auswahl eines
DEU|051003 | 33| | Feldes der Menⁿleiste durch die Cursortasten auf die Felder der
DEU|051003 | 34|S | Menⁿleiste positioniert werden.
DEU|051003 | 37| | Ist hinter einem Feld der Menⁿleiste ein Pulldown-Menⁿ definiert, so
DEU|051003 | 38| | kann es aufgeklappt werden, indem man auf das Feld positioniert und
DEU|051003 | 39| | dann die ENTER Taste betΣtigt.
DEU|051003 | 41| | Befindet man sich in einem Pulldown-Menⁿ erster Stufe, so kann man mit
DEU|051003 | 42| | Hilfe der NEXTFIELD- und PREVFIELD-Tasten bzw. CURSOR-RIGHT und CURSOR-
DEU|051003 | 43| | LEFT direkt zum jeweils rechten bzw. linken Pulldown-Menⁿ gelangen.
DEU|051003 | 45| | Felder der Menⁿleiste oder der Pulldown-Menⁿs, hinter denen ein
DEU|051003 | 46| | weiteres Pulldown-Menⁿ definiert ist, sind durch '..' gekennzeichnet.
DEU|051003 | 48| | Das jeweils aktive Feld wird mit dem Attribut 'Funktionstaste aktiv'
DEU|051003 | 49| | (ATTR11) die passiven Felder mit dem Attribut 'Funktionstaste passiv'
DEU|051003 | 50| | (ATTR10) dargestellt.
DEU|051003 | 52| | Wird eine Aktion eines Feldes der Menⁿleiste bzw. eines PulldownMenⁿs
DEU|051003 | 53|S | angesto▀en, z.B. der Cursor auf dieses Feld positioniert und die Taste
DEU|051003 | 55| | ENTER betΣtigt, dann wird die Kontrolle an die zugeh÷rige Maske
DEU|051003 | 56| | zurⁿckgegeben und die Dollarvariablen $ACTION, $FUNCTION bzw. auch $KEY
DEU|051003 | 57| | werden mit den Labels der ausgewΣhlten Felder belegt.
DEU|051003 | 59| | Will man in die Maske zurⁿck, ohne eine Aktion zu starten, so geschieht
DEU|051003 | 60| | das durch die Taste F12. Die Kontrolle wird nun an die zugeh÷rige Maske
DEU|051003 | 61| | zurⁿckgegeben, und die Dollarvariablen $ACTION, $FUNCTION und $KEY
DEU|051003 | 62| | haben den Wert NULL.
DEU|051003 | 64| | Durch Drⁿcken der Taste END werden die Pulldown-Menⁿs stufenweise
DEU|051003 | 65| | geschlossen. Hierbei werden die zugeh÷rigen Dollarvariablen mit NULL
DEU|051003 | 66|R | belegt.
DEU|051004 | 1| | Beispiele
DEU|051004 | 4| |
DEU|051004 | 5| E| FORM menu_test.msk
DEU|051004 | 6| E| LAYOUT
DEU|051004 | 7| E| ACTIONBAR
DEU|051004 | 9| E| ...
DEU|051004 | 11| E| ENDLAYOUT
DEU|051004 | 13| E| ACTIONBAR ( 'Bearbeiten' : PULLDOWN Bearb,
DEU|051004 | 14| E| ... );
DEU|051004 | 16| E| PULLDOWN Bearb ( 'Modul' : PULLDOWN fktn,
DEU|051004 | 17|SE| ...
DEU|051004 | 19| E| 'Trigger' : PULLDOWN fktn );
DEU|051004 | 21| E| PULLDOWN fktn ( 'anzeigen',
DEU|051004 | 22| E| ...
DEU|051004 | 23| E| 'drucken' );
DEU|051004 | 25| E| CONTROL CASE $ACTION OF
DEU|051004 | 26| E| 'Bearbeiten' :
DEU|051004 | 27| E| CASE $FUNCTION1 OF
DEU|051004 | 28| E| 'Modul' :
DEU|051004 | 29| E| CASE $FUNCTION OF
DEU|051004 | 30| E| 'anzeigen' : CALL PROC mod_anz;
DEU|051004 | 31| E| ...
DEU|051004 | 32| E| 'drucken' : CALL PROC mod_druck;
DEU|051004 | 33| E| END;
DEU|051004 | 34| E| ...
DEU|051004 | 35|SE| 'Trigger' : ...
DEU|051004 | 37| E| END;
DEU|051004 | 38| E| ...
DEU|051004 | 39| E| END;
DEU|051004 | 40| |
DEU|051004 | 45| | ACTIONBAR ( !ADM(s),
DEU|051004 | 46| | !BEARB(s): PULLDOWN bearb );
DEU|051004 | 48| | PULLDOWN bearb ( 'START','EINTRAGEN' );
DEU|051004 | 50| | CONTROL CASE $ACTION OF
DEU|051004 | 51| | !ADM(s) : ...
DEU|051004 | 52| | !BEARB(s) : CASE $FUNCTION OF
DEU|051004 | 53|S | 'START' : CALL FORM start;
DEU|051004 | 55| | 'EINTRAGEN' : CALL FORM eintr;
DEU|051004 | 56| | END;
DEU|051004 | 57| | END;
DEU|051004 | 63| | ACTIONBAR (!AUF(s) : RELEASEKEY F4,
DEU|051004 | 64| | !AB(s) : RELEASEKEY F5 );
DEU|051004 | 66| | CONTROL CASE $KEY OF
DEU|051004 | 67| | F4 : ...
DEU|051004 | 68| | F5 : ...
DEU|051004 | 69|R | END;
DEU|051005 | 1| | Definition von Menⁿleiste und Pulldown-Menⁿs
DEU|051005 | 2| | --------------------------------------------
DEU|051005 | 4| M| #01Definition der Menⁿleiste (ACTIONBAR)
DEU|051005 | 5| M| #02Definition eines Pulldown-Menⁿs (PULLDOWN)
DEU|051005 | 6| M| #03Definition von Fⁿhrungstexten (COMMENT-Klausel)
DEU|051005 | 7| M| #04Dynamisches Passivieren eines Labels (WHEN-Klausel)
DEU|051005 | 8|RM| #05Optische Gruppierung von Menⁿpunkten
DEU|05100501 | 1| | Definition der Menⁿleiste (ACTIONBAR)
DEU|05100501 | 3| | Eine Menⁿleiste besteht aus bis zu 11 Feldern, die hintereinander in
DEU|05100501 | 4| | einer Zeile der Maske ausgegeben werden. Bei der Definition der
DEU|05100501 | 5| | Menⁿleiste werden die Labels der Felder hinter dem Schlⁿsselwort
DEU|05100501 | 6| | ACTIONBAR angegeben. Au▀erdem wird durch die Angabe des Schlⁿsselwortes
DEU|05100501 | 7| | ACTIONBAR im Layout der Maske die Position der Menⁿleiste in der Maske
DEU|05100501 | 8| | definiert. Die Layoutzeile, in der die Menⁿleiste ausgegeben werden
DEU|05100501 | 9| | soll, darf keine weiteren Felder enthalten.
DEU|05100501 | 11| | Den Feldern der Menⁿleiste entspricht die Dollarvariable $ACTION, die
DEU|05100501 | 12| | das aktivierte Feld der Menⁿleiste zurⁿckliefert.
DEU|05100501 | 16| |
DEU|05100501 | 17|SE| LAYOUT
DEU|05100501 | 19| E| ACTIONBAR
DEU|05100501 | 21| E| ...
DEU|05100501 | 23| E| ENDLAYOUT
DEU|05100501 | 25| E| ACTIONBAR ( 'LIST','BEARBEITEN','L╓SCHEN' );
DEU|05100501 | 26| |
DEU|05100501 | 28| | Als Labels sind Stringkonstanten, sprachabhΣngige Literale, Variablen
DEU|05100501 | 29| | und Tastenliterale zugelassen.
DEU|05100501 | 31| | Die Labels k÷nnen bis zu 16 Zeichen lang sein. Wenn es kein folgendes
DEU|05100501 | 32| | Pulldown-Menⁿ gibt kann das Label 18 Zeichen enthalten.
DEU|05100501 | 34| | Es ist zu beachten, da▀ die Dollarvariablen $ACTION, $FUNCTION1,
DEU|05100501 | 35|S | ... $FUNCTION4 und $FUNCTION bei Verwendung lΣngerer Labels den auf 16
DEU|05100501 | 37| | (bzw. 18) Zeichen abgeschnittenen Wert liefert.
DEU|05100501 | 39| | Ist in der Maske eine Menⁿleiste definiert, so wird implizit die Anzahl
DEU|05100501 | 40| | der Kopfzeilen auf die Zeile gesetzt, in der die Menⁿleiste ausgegeben
DEU|05100501 | 41| | wird, d.h. die Kopfzeilen umfassen den Bereich der Maske von der ersten
DEU|05100501 | 42| | Zeile bis zur Menⁿleiste.
DEU|05100501 | 45| | ACTIONBAR WITH FRAME ( !LIST(s),
DEU|05100501 | 46| | !BEARB(s),
DEU|05100501 | 47| | !DATEN(s) );
DEU|05100501 | 49| | Die WITH FRAME-Option bewirkt, da▀ die Menⁿleiste in einem Rahmen
DEU|05100501 | 50| | ausgegeben wird. Dabei ist zu beachten, da▀ die Zeile vor und hinter
DEU|05100501 | 51| | dem Schlⁿsselwort ACTIONBAR im Layout freigehalten werden soll, da sie
DEU|05100501 | 52|S | sonst durch die Rahmenlinien ⁿberschrieben werden.
DEU|05100501 | 55|RI| ##051150->^Syntax
DEU|05100502 | 1| | Definition eines Pulldown-Menⁿ (PULLDOWN)
DEU|05100502 | 3| | Zu jedem Feld der Menⁿleiste kann ein Pulldown-Menⁿ definiert werden.
DEU|05100502 | 4| | Hierzu wird hinter dem Label des Feldes in der ACTIONBARDefinition ein
DEU|05100502 | 5| | Verweis auf das Pulldown-Menⁿ angegeben und das Pulldown-Menⁿ analog
DEU|05100502 | 6| | zur Menⁿleiste definiert. Ebenso kann zu jedem Feld eines Pulldown-
DEU|05100502 | 7| | Menⁿs ein weiteres Pulldown-Menⁿ definiert werden.
DEU|05100502 | 10| |
DEU|05100502 | 11| E| LAYOUT
DEU|05100502 | 12| E| ACTIONBAR
DEU|05100502 | 14| E| ...
DEU|05100502 | 16|SE| ENDLAYOUT
DEU|05100502 | 19| E| ACTIONBAR ('LIST',
DEU|05100502 | 20| E| 'BEARBEITEN' : PULLDOWN bearb,
DEU|05100502 | 21| E| 'L╓SCHEN' );
DEU|05100502 | 23| E| PULLDOWN bearb ( 'START','EINTRAGEN' );
DEU|05100502 | 24| |
DEU|05100502 | 26| | In einem Pulldown-Menⁿ k÷nnen bis zu 20 Labels angegeben werden, die
DEU|05100502 | 27| | unter dem aufrufenden Feld der Menⁿleiste untereinander ausgegeben
DEU|05100502 | 28| | werden.
DEU|05100502 | 30| | Die Pulldown-Menⁿs werden in der ersten Stufe nach unten, in den
DEU|05100502 | 31| | weiteren Stufen nach rechts unten ⁿberlappend positioniert. Es sind
DEU|05100502 | 32| | insgesamt fⁿnf Stufen m÷glich.
DEU|05100502 | 34| | Wird ein Feld eines Pulldown-Menⁿs aktiviert, so wird das entsprechende
DEU|05100502 | 35|S | Label in $FUNCTION zurⁿckgeliefert. Die Labels der Pulldown-Menⁿs unter
DEU|05100502 | 37| | einem Feld der Menⁿleiste mⁿssen deshalb eindeutig sein.
DEU|05100502 | 39| | $FUNCTION1, ... $FUNCTION4 liefern die zuletzt ausgewΣhlte Funktion der
DEU|05100502 | 40| | durch ihre Ziffer bezeichneten Pulldown-Menⁿ-Ebene. Dadurch ist es
DEU|05100502 | 41| | m÷glich gleiche Pulldown-Untermenⁿs mehrfach innerhalb einer Pulldown-
DEU|05100502 | 42| | Menⁿ-Hierarchie zu unterscheiden.
DEU|05100502 | 44| | Fⁿr die Labels der Pulldown-Menⁿs und der Menⁿleiste gelten die
DEU|05100502 | 45| | gleichen Bedingungen.
DEU|05100502 | 47|RI| ##051151->^Syntax
DEU|05100503 | 1| | Definition von Fⁿhrungstexten (COMMENT-Klausel)
DEU|05100503 | 3| | Zu jedem Label der Menⁿzeile bzw. eines Pulldown-Menⁿs kann eine
DEU|05100503 | 4| | Kurzinformation hinter dem Schlⁿsselwort COMMENT definiert werden. Die
DEU|05100503 | 5| | Kurzinformation erscheint in der Meldungszeile, sobald das zugeh÷rige
DEU|05100503 | 6| | Label aktiviert wird.
DEU|05100503 | 9| |
DEU|05100503 | 10| E| ACTIONBAR ('LIST': COMMENT 'Liste aller Objekte erstellen',
DEU|05100503 | 11| E| 'BEARBEITEN' :
DEU|05100503 | 12| E| COMMENT 'weitere Bearbeitungsfunktionen',
DEU|05100503 | 13| E| PULLDOWN bearb,
DEU|05100503 | 14| E| 'L╓SCHEN': COMMENT 'Objekt l÷schen );
DEU|05100503 | 16| E| PULLDOWN bearb ( 'START' : COMMENT !progstart,
DEU|05100503 | 17|SE| 'EINTRAGEN' : COMMENT !objekt_eintrag );
DEU|05100503 | 19| |
DEU|05100503 | 21|RI| ##051152->^Syntax
DEU|05100504 | 1| | Dynamisches Passivieren eines Labels (WHEN-Klausel)
DEU|05100504 | 3| | Ein Pulldown-Menⁿ stellt die Funktionen dar, die von der Maske aus
DEU|05100504 | 4| | ausgewΣhlt werden k÷nnen. AbhΣngig von verschiedenen Bedingungen kann
DEU|05100504 | 5| | es wⁿnschenswert sein, gezielt Teile der Funktionen zu passivieren, sie
DEU|05100504 | 6| | aber dennoch anzuzeigen.
DEU|05100504 | 8| | Dies wird durch die WHEN-Bedingung erreicht, die hinter jedem Label
DEU|05100504 | 9| | eines Pulldown-Menⁿs angegeben werden kann. AbhΣngig von dieser
DEU|05100504 | 10| | Bedingung wird das entsprechende Label mit dem Anzeigeattribut
DEU|05100504 | 11| | Menⁿpunkt passiv (ATTR12) angezeigt und die zugeh÷rige Funktion kann
DEU|05100504 | 12| | nicht ausgewΣhlt werden.
DEU|05100504 | 15| |
DEU|05100504 | 16| E| PULLDOWN eintr
DEU|05100504 | 17|SE| ( 'Zurⁿck' : WHEN level > 1,
DEU|05100504 | 19| E| 'Trigger Funkt.' : WHEN modtype ='TRIGGER'
DEU|05100504 | 20| E| PULLDOWN trigger_funcs );
DEU|05100504 | 21| |
DEU|05100504 | 23| | Hat im Beispiel die Variable level einen Wert kleiner oder gleich 1, so
DEU|05100504 | 24| | wird das Label 'Zurⁿck' passiv gesetzt. Hat die Variable modtype nicht
DEU|05100504 | 25| | den Wert 'TRIGGER', so wird das Label 'Trigger Funktionen' passiviert
DEU|05100504 | 26| | und es kann das folgende Pulldown-Menⁿ nicht aufgerufen werden.
DEU|05100504 | 29|RI| ##051152->^Syntax
DEU|05100505 | 1| | Optische Gruppierung von Menⁿpunkten
DEU|05100505 | 3| | Um die Menⁿpunkte eines Pulldown-Menⁿs nach logischen Kriterien
DEU|05100505 | 4| | gruppieren zu k÷nnen, kann in der Liste der Menⁿpunkte ein Semikolon
DEU|05100505 | 5| | anstelle eines Kommas angegeben werden. Das Semikolon bewirkt, da▀
DEU|05100505 | 6| | zwischen den so getrennten Menⁿpunkten eine Trennungslinie ausgegeben
DEU|05100505 | 7| | wird.
DEU|05100505 | 10| |
DEU|05100505 | 11| E| PULLDOWN bearb ( 'Einfⁿgen',
DEU|05100505 | 12| E| 'L÷schen';
DEU|05100505 | 13| E| 'Importieren',
DEU|05100505 | 14| E| 'Exportieren' );
DEU|05100505 | 15| |
DEU|05100505 | 17|R | In diesem Beispiel werden zwei Gruppen von Menⁿpunkten angezeigt.
DEU|051006 | 1| | Definition einer BUTTON-Leiste
DEU|051006 | 3| | Als Alternative zur Menⁿleiste kann man auch eine Reihe von
DEU|051006 | 4| | Ausl÷sefeldern (BUTTON-Leiste) am unteren Maskenrand definieren.Die
DEU|051006 | 5| | BUTTON-Leiste wird wie eine Menⁿleiste definiert. Hinter dem
DEU|051006 | 6| | Schlⁿsselwort BUTTON wird die Liste der Labels angegeben und im
DEU|051006 | 7| | Layoutteil der Maske wird durch das Schlⁿsselwort BUTTON die Position
DEU|051006 | 8| | der BUTTON-Leiste festgelegt.
DEU|051006 | 11| |
DEU|051006 | 12| E| FORM test.bttn
DEU|051006 | 13| E| LAYOUT
DEU|051006 | 15| E| BUTTON
DEU|051006 | 16|SE| ENDLAYOUT
DEU|051006 | 19| E| BUTTON ( 'Hilfe', 'Start', 'Abbruch' );
DEU|051006 | 20| |
DEU|051006 | 23|RI| ##051187->^Syntax
DEU|0511 | 1| | FORM-Syntax
DEU|0511 | 2|R | -----------
DEU|051101 | 1| | <form block oriented> ::=
DEU|051101 | 2| I| FORM ##0203040101<prog^name>.##0203040102<mod^name>
DEU|051101 | 3| I| [OPTIONS ( ##051180<form^option> ,...)]
DEU|051101 | 4| I| [PARMS ( ##0203040104<parm^decl> ,...)]
DEU|051101 | 5| I| [ ##0203040156<var^section> ]
DEU|051101 | 6| I| ##051159<form^layout>
DEU|051101 | 7|RI| [ ##051104<processing^stmt> ,... ]
DEU|051102 | 1| | <form field oriented> ::=
DEU|051102 | 2| I| FORM ##0203040101<prog^name>.##0203040102<mod^name>
DEU|051102 | 3| I| OPTIONS ( FIELD [, ##051180<form^option> ,...] )
DEU|051102 | 4| I| [PARMS ( ##0203040104<parm^decl> ,...)]
DEU|051102 | 5| I| [ ##0203040156<var^section> ]
DEU|051102 | 6| I| ##051159<form^layout>
DEU|051102 | 7|RI| [ ##051138<field^processing^stmt> ,... ]
DEU|051103 | 1| | <begin layout line> ::=
DEU|051103 | 2| | LAYOUT [ <layout char spec> ... ]
DEU|051103 | 4| | <layout char spec> ::=
DEU|051103 | 5| | <layout attr char spec>
DEU|051103 | 6| | | <layout inout char spec>
DEU|051103 | 7| | | <layout prompt char spec>
DEU|051103 | 8| | | <layout graphic char spec>
DEU|051103 | 10| | <layout attr char spec> ::=
DEU|051103 | 11| I| ##051181<attr^name> = <spec char>
DEU|051103 | 13| | <layout inout char spec> ::=
DEU|051103 | 14| | IN = <spec char>
DEU|051103 | 15| | | OUT = <spec char>
DEU|051103 | 17|S | <layout prompt char spec> ::=
DEU|051103 | 19| | PROMPT = <spec char>
DEU|051103 | 21| | <layout graphic char spec> ::=
DEU|051103 | 22|R | GRAPHIC = <spec char>
DEU|051104 | 1| | <processing stmt> ::=
DEU|051104 | 2| I| ##051116<mark^stmt>
DEU|051104 | 3| I| | ##051105<field^stmt>
DEU|051104 | 4| I| | ##051115<ignore^stmt>
DEU|051104 | 5| I| | ##051117<accept^stmt>
DEU|051104 | 6| I| | ##051155<keyswap^stmt>
DEU|051104 | 7| I| | ##051118<returnonlast^stmt>
DEU|051104 | 8| I| | ##051119<autopage^stmt>
DEU|051104 | 9| I| | ##051120<bottomlines^stmt>
DEU|051104 | 10| I| | ##051120<headerlines^stmt>
DEU|051104 | 11| I| | ##051121<special^attr^stmt>
DEU|051104 | 12| I| | ##051122<control^stmt>
DEU|051104 | 13| I| | ##051150<actionbar^stmt>
DEU|051104 | 14| I| | ##051151<pulldown^stmt>
DEU|051104 | 15| I| | ##051148<include^stmt>
DEU|051104 | 16| I| | ##051156<insertmode^stmt>
DEU|051104 | 17|SI| | ##051185<scrollfield^stmt>
DEU|051104 | 19|RI| | ##051186<keys^stmt>
DEU|051105 | 1| | <field stmt> ::=
DEU|051105 | 2| | FIELD <field name>,... [<field proc spec>...]
DEU|051105 | 4| | <field name> ::=
DEU|051105 | 5| I| ##0203040133<variable>
DEU|051105 | 6| I| | ##0203040134<vector^slice>
DEU|051105 | 7| | | <field number>:<field name>
DEU|051105 | 9| | <field proc spec> ::=
DEU|051105 | 10| I| ##051106<init^spec>
DEU|051105 | 11| I| | ##051107<size^spec>
DEU|051105 | 12| I| | ##051109<check^spec>
DEU|051105 | 13| I| | ##051113<offset^spec>
DEU|051105 | 14| I| | ##051112<display^spec>
DEU|051105 | 15| I| | ##051111<help^spec>
DEU|051105 | 16| I| | ##051110<domain^spec>
DEU|051105 | 17|SI| | ##051114<attr^spec>
DEU|051105 | 19| I| | ##051184<noinp^spec>
DEU|051105 | 20| | <init spec> ::=
DEU|051105 | 21| | INIT <assign expr>
DEU|051105 | 23| | <assign expr> ::=
DEU|051105 | 24|RI| ##0203040136<expr> | NULL
DEU|051107 | 1| | <size spec> ::=
DEU|051107 | 2|RI| SIZE ##0203040120<numeric>
DEU|051108 | 1| | <width spec> ::=
DEU|051108 | 2|RI| WIDTH ##0203040120<numeric>
DEU|051109 | 1| | <check spec> ::=
DEU|051109 | 2| | CHECK <check pred> / ELSE <msg spec> /
DEU|051109 | 4| | <check pred> ::=
DEU|051109 | 5| | <simple var pred>
DEU|051109 | 6| | | <vector var pred>
DEU|051109 | 7| I| | ##0203040146<boolean^expr>
DEU|051109 | 9| | <simple var pred> ::=
DEU|051109 | 10| I| / ##0203040136<expr> / ##0203040148<check^cond>
DEU|051109 | 12| | <vector var pred> ::=
DEU|051109 | 13| I| <quant> ##0203040148<check^cond>
DEU|051109 | 15| | <quant> ::=
DEU|051109 | 16|R | ALL | ANY | ONE
DEU|051110 | 1| | <domain spec> ::=
DEU|051110 | 2| | DOMAIN <domain name> [ ( <domain spec>,... ) ]
DEU|051110 | 4| | <domain spec> ::=
DEU|051110 | 5|R | SIZE | WIDTH | INIT | CHECK
DEU|051111 | 1| | <help spec> ::=
DEU|051111 | 2| I| HELP ##0203040117<help^form>
DEU|051111 | 3| | | HELP <help msg>
DEU|051111 | 4| | | HELP <help form> <help msg>
DEU|051111 | 6|RI| <help msg > ::= ##0203040142<str^expr>
DEU|051112 | 1| | <display spec> ::=
DEU|051112 | 2| | DISPLAY <display spec>,...
DEU|051112 | 4| | <display spec> ::=
DEU|051112 | 5| | FORMAT ( '<char>...' )
DEU|051112 | 6| | | UPPER | LOWER
DEU|051112 | 7|R | | RIGHT | LEFT
DEU|051113 | 1| | <offset spec> ::=
DEU|051113 | 2|RI| OFFSET ##0203040136<expr>
DEU|051114 | 1| | <attr spec> ::=
DEU|051114 | 2|RI| ATTR ##051181<attr^name>
DEU|051115 | 1| | <ignore spec> ::=
DEU|051115 | 2| I| IGNORE <ignore field spec> WHEN ##0203040146<boolean^expr>
DEU|051115 | 4| | <ignore field spec> ::=
DEU|051115 | 5| | <field name>,...
DEU|051115 | 6| | | ALL
DEU|051115 | 7|R | | ALL EXCEPT <field name>,...
DEU|051116 | 1| | <mark stmt> ::=
DEU|051116 | 2|RI| MARK ( ##0203040136<expr>) | MARK ( ##0203040133<variable> )
DEU|051117 | 1| | <accept stmt> ::=
DEU|051117 | 2| | ACCEPT ( <key spec>,... )
DEU|051117 | 4| | <key spec> ::=
DEU|051117 | 5| | ENTER
DEU|051117 | 6| I| | ##051183<basic^key> [ = <key label>]
DEU|051117 | 7| I| | ##051183<additional^hardkey>
DEU|051117 | 9| | <key label> ::=
DEU|051117 | 10|R | <char sequence> maximal 8 Character
DEU|051118 | 1| | <returnonlast stmt> ::=
DEU|051118 | 2|R | RETURNONLAST
DEU|051119 | 1| | <autopage stmt> ::=
DEU|051119 | 2|R | AUTOPAGE
DEU|051120 | 1| | <headerlines stmt> ::=
DEU|051120 | 2| I| HEADERLINES ( ##0203040136<expr> )
DEU|051120 | 3| I| | HEADERLINES ( ##0203040133<variable> )
DEU|051120 | 5| | <bottomlines stmt> ::=
DEU|051120 | 6| I| BOTTOMLINES ( ##0203040136<expr> )
DEU|051120 | 7|RI| | BOTTOMLINES ( ##0203040133<variable> )
DEU|051121 | 1| | <special attr stmt> ::=
DEU|051121 | 2| I| SPECIALATTR [ INPUT ##051181<attr^name> ]
DEU|051121 | 3| I| [ CHECK ##051181<attr^name> ]
DEU|051121 | 4| I| [ MSG ##051181<attr^name> ]
DEU|051121 | 5|RI| [ CURSORLINE [ (<first pos>,<last pos>) ] ##051181<attr^name> ]
DEU|051122 | 1| | <control spec> ::=
DEU|051122 | 2| | CONTROL <control case spec>
DEU|051122 | 4| | <control case spec> ::=
DEU|051122 | 5| I| CASE ##0203040136<expr> OF <control case> [ <else case> ] END
DEU|051122 | 7| | <else case> ::=
DEU|051122 | 8| | OTHERWISE <control action>
DEU|051122 | 10| | <control case> ::=
DEU|051122 | 11| | <value spec> : <control action> [ ; <control case> ]
DEU|051122 | 13| | <control action> ::=
DEU|051122 | 14| | <stmt>
DEU|051122 | 15| I| | ##051123<pick^stmt>
DEU|051122 | 16| I| | ##051123<put^stmt>
DEU|051122 | 17|RI| | ##051124<page^stmt>
DEU|051123 | 1| | <pick stmt> ::=
DEU|051123 | 2| I| PICK [ ##0203040136<expr> ]
DEU|051123 | 4| | <put stmt> ::=
DEU|051123 | 5|R | PUT [<simple var>]
DEU|051124 | 1| | <page stmt> ::=
DEU|051124 | 2| I| PAGE UP [ ##0203040136<expr> ]
DEU|051124 | 3| | | PAGE DOWN [<expr>]
DEU|051124 | 4| | | PAGE LEFT [<expr>]
DEU|051124 | 5|R | | PAGE RIGHT [<expr>]
DEU|051125 | 1| | <form calling option> ::=
DEU|051125 | 2| I| ##051126<noinit^option>
DEU|051125 | 3| I| | ##051127<mark^option>
DEU|051125 | 4| I| | ##051128<accept^option>
DEU|051125 | 5| I| | ##051129<attr^option>
DEU|051125 | 6| I| | ##051130<clear^option>
DEU|051125 | 7| I| | ##051130<screensize^option>
DEU|051125 | 8| I| | ##051130<screenpos^option>
DEU|051125 | 9| I| | ##051131<formpos^option>
DEU|051125 | 10| I| | ##051132<frame^option>
DEU|051125 | 11| I| | ##051133<background^option>
DEU|051125 | 12| I| | ##051134<restore^option>
DEU|051125 | 13| I| | ##051136<input^option>
DEU|051125 | 14| I| | ##051137<action^option>
DEU|051125 | 15| I| | ##051135<print^option>
DEU|051125 | 16|RI| | ##051157<autoput^option>
DEU|051126 | 1|R | <noinit option> ::= NOINIT
DEU|051127 | 1| | <mark option> ::=
DEU|051127 | 2|RI| MARK ( ##0203040136<expr> ) | MARK ( ##0203040133<variable> )
DEU|051128 | 1| | <accept option> ::=
DEU|051128 | 2| | ACCEPT (<key spec>,...)
DEU|051128 | 4| | <key spec> ::=
DEU|051128 | 5| | ENTER
DEU|051128 | 6| I| | ##051183<basic^key> [ = <key label>]
DEU|051128 | 7|RI| | ##051183<additional^hardkey>
DEU|051129 | 1| | <attr option> ::=
DEU|051129 | 2|RI| ATTR ( <form var>, ##051181<attr^name> )
DEU|051130 | 1| | <window option> ::=
DEU|051130 | 2| I| SCREENPOS ( ##0203040136<expr> , <expr>)
DEU|051130 | 3| | | SCREENSIZE (<expr>,<expr>)
DEU|051130 | 4|R | | CLEAR
DEU|051131 | 1| | <formpos option> ::=
DEU|051131 | 2|RI| FORMPOS ( ##0203040136<expr> ,<expr>)
DEU|051132 | 1| | <frame option> ::=
DEU|051132 | 2|R | FRAME [ (<frame title>) ]
DEU|051133 | 1| | <background option> ::=
DEU|051133 | 2|R | BACKGROUND
DEU|051134 | 1| | <restore option> ::=
DEU|051134 | 2|R | RESTORE
DEU|051135 | 1| | <print option> ::=
DEU|051135 | 2| | PRINT [(<print option>,...)]
DEU|051135 | 4| | <print option> ::=
DEU|051135 | 5| | | CLOSE
DEU|051135 | 6| | | CPAGE <natural>
DEU|051135 | 7| | | LINEFEED <natural>
DEU|051135 | 8| | | LINESPACE <natural>
DEU|051135 | 9| | | NEWPAGE
DEU|051135 | 10|RI| | PRINTFORMAT ##0203040136<expr>
DEU|051136 | 1| | <input option> ::=
DEU|051136 | 2| | NOINPUT (<input field>,...)
DEU|051136 | 3| | | INPUT (<input field>,...)
DEU|051136 | 5| | <input field> ::=
DEU|051136 | 6| | <natural>
DEU|051136 | 7| I| | ##0203040133<variable>
DEU|051136 | 8|RI| | ##0203040134<vector^slice>
DEU|051137 | 1| | <action option> ::=
DEU|051137 | 2|RI| ACTION ( ##0203040136<expr> )
DEU|051138 | 1| | <field processing stmt> ::=
DEU|051138 | 2| I| ##051104<processing^stmt>
DEU|051138 | 3| | | <extended field stmt>
DEU|051138 | 4| | | <before group stmt>
DEU|051138 | 5| | | <after group stmt>
DEU|051138 | 6| | | <extended control stmt>
DEU|051138 | 8| | <extended field stmt> ::=
DEU|051138 | 9| | FIELD <field name>,... [<extended field proc>...]
DEU|051138 | 11| | <field name> ::=
DEU|051138 | 12| I| ##0203040133<variable>
DEU|051138 | 13| I| | ##0203040134<vector^slice>
DEU|051138 | 14| | | <field number>:<field name>
DEU|051138 | 16| | <extended field proc spec> ::=
DEU|051138 | 17|SI| ##051105<field^proc^spec>
DEU|051138 | 19| I| | ##051140<before^field^spec>
DEU|051138 | 20| I| | ##051140<after^field^spec>
DEU|051138 | 21|RI| | ##051146<autonext^spec>
DEU|051140 | 1| | <before field spec> ::=
DEU|051140 | 2| | BEFORE FIELD <extended compound>
DEU|051140 | 4| | <after field spec> ::=
DEU|051140 | 5|R | AFTER FIELD <extended compound>
DEU|051141 | 1| | <group spec> ::=
DEU|051141 | 2| | GROUP <group name>
DEU|051141 | 3| | <extended field stmt>;...
DEU|051141 | 4| | END;
DEU|051141 | 6| | <before group spec> ::=
DEU|051141 | 7| | BEFORE GROUP <extended compound>
DEU|051141 | 9| | <after group spec> ::=
DEU|051141 | 10|R | AFTER GROUP <extended compound>
DEU|051142 | 1| | <extended compound> ::=
DEU|051142 | 2|R | BEGIN <extended stmt>;... END | <extended stmt>
DEU|051143 | 1| | <extended stmt> ::=
DEU|051143 | 2| | <stmt>
DEU|051143 | 3| I| | ##051124<page^stmt>
DEU|051143 | 4| I| | ##051123<pick^stmt>
DEU|051143 | 5| I| | ##051123<put^stmt>
DEU|051143 | 6| I| | ##051144<nextfield^stmt>
DEU|051143 | 7|RI| | ##051145<nextgroup^stmt>
DEU|051144 | 1| | <nextfield stmt> ::=
DEU|051144 | 2|R | NEXTFIELD <field name>
DEU|051145 | 1| | <nextgroup stmt> ::=
DEU|051145 | 2|R | NEXTGROUP <group name>
DEU|051146 | 1| | <autonext spec> ::=
DEU|051146 | 2|R | NOAUTONEXT
DEU|051147 | 1| | <menu> ::=
DEU|051147 | 2| I| MENU ##0203040101<prog^name>.##0203040102<mod^name> [PARMS ( ##0203040104<parm^decl> ,...)]
DEU|051147 | 3| I| ##051150<actionbar^stmt>
DEU|051147 | 4|RI| [ ##051151<pulldown^stmt> ]
DEU|051148 | 1| | <include menu stmt> ::=
DEU|051148 | 2| I| INCLUDE MENU ##0203040101<prog^name>.##0203040102<mod^name>
DEU|051148 | 3|RI| | [PARMS ( ##0203040104<parm^decl> ,...)]
DEU|051149 | 1| | <form> ::=
DEU|051149 | 2| I| FORM ##0203040101<prog^name>.##0203040102<mod^name>
DEU|051149 | 3| I| [OPTIONS ( ##051180<form^option> ,...)]
DEU|051149 | 4| I| [PARMS ( ##0203040104<parm^decl> ,...)]
DEU|051149 | 5| I| [ ##0203040156<var^section> ]
DEU|051149 | 6| I| ##051159<form^layout>
DEU|051149 | 7| | [ ...
DEU|051149 | 8| I| ##051150<actionbar^stmt>
DEU|051149 | 9| I| [ ##051151<pulldown^stmt> ]
DEU|051149 | 10|R | ... ]
DEU|051150 | 1| | <actionbar stmt> ::=
DEU|051150 | 2| I| ACTIONBAR [WITH FRAME] ( ##051182<menupoint^def> ,... )
DEU|051150 | 3|RI| | ACTIONBAR [WITH FRAME] ( ##051182<menupoint^group> ;... )
DEU|051151 | 1| | <pulldown stmt> ::=
DEU|051151 | 2| I| PULLDOWN ##0203040118<name> ( ##051182<menupoint^def> ,... )
DEU|051151 | 3|RI| | PULLDOWN ##0203040118<name> ( ##051182<menupoint^group> ;... )
DEU|051152 | 1| | <action clause> ::=
DEU|051152 | 2| | [<comment>] [<activate cond>] [<action>]
DEU|051152 | 4| | <comment> ::=
DEU|051152 | 5| I| COMMENT ##0203040136<expr>
DEU|051152 | 7| | <activate cond> ::=
DEU|051152 | 8| I| WHEN ##0203040146<boolean^expr>
DEU|051152 | 10| | <action> ::=
DEU|051152 | 11| | <pulldown call>
DEU|051152 | 12| | | <releasekey spec>
DEU|051152 | 14| | <pulldown call> ::=
DEU|051152 | 15| I| PULLDOWN ##0203040118<name>
DEU|051152 | 17|S | <releasekey spec> ::=
DEU|051152 | 19| | RELEASEKEY <key literal>
DEU|051152 | 21| | <key literal> ::=
DEU|051152 | 22| I| ##051183<basic^key>
DEU|051152 | 23|RI| | ##051183<additional^hardkey>
DEU|051153 | 1|R | <form lib option> ::= LIB [<username>.]<libname>
DEU|051154 | 1|R | <form wrap option> ::= WRAP
DEU|051155 | 1| | <keyswap stmt> ::=
DEU|051155 | 2| | KEYSWAP ( <key pair>,... )
DEU|051155 | 4| | <key pair> ::=
DEU|051155 | 5| I| ##051183<basic^key> <swap sign> <basic key>
DEU|051155 | 7| | <swap sign> ::=
DEU|051155 | 8|R | '<->'
DEU|051156 | 1| | <insertmode stmt> ::=
DEU|051156 | 2| I| INSERTMODE ( POS ( ##0203040136<expr> , <expr> )
DEU|051156 | 3| | [, LABEL ( <expr> ) ]
DEU|051156 | 4|RM| [, ATTR ( #051181<attr^name> ) ] )
DEU|051157 | 1|RI| <autoput option> ::= AUTOPUT ( ##0203040133<variable> )
DEU|051158 | 1| | <langdep literal> ::= ##!0203040118<name> (<literal size>)
DEU|051158 | 3| | <literal size> ::= S | M | L | XL
DEU|051158 | 5| | <langdep literal> ::=
DEU|051158 | 6| | ##!0203040118<name> <-- nur im Maskenlayout
DEU|051158 | 7| | | ##!0203040118<name> (<literal size>)
DEU|051158 | 9|R | <literal size> ::= S | M | L | XL
DEU|051159 | 1| | <form layout> ::=
DEU|051159 | 2| I| ##051103<begin^layout^line>
DEU|051159 | 3| | +------------------------------------+
DEU|051159 | 4| | | zwischen den Zeilen, beginnend mit |
DEU|051159 | 5| | | 'LAYOUT' und 'ENDLAYOUT', |
DEU|051159 | 6| | | werden nach Wunsch |
DEU|051159 | 7| I| | ##051160<layout^item> -Elemente plaziert |
DEU|051159 | 8| | +------------------------------------+
DEU|051159 | 9|R | ENDLAYOUT
DEU|051160 | 1| | <layout item> ::=
DEU|051160 | 2| I| ##051161<text^item>
DEU|051160 | 3| I| | ##051162<input^item>
DEU|051160 | 4| I| | ##051163<output^item>
DEU|051160 | 5| I| | ##051164<continuation^field>
DEU|051160 | 6| I| | ##051165<next^vector^component>
DEU|051160 | 7| | | <spec char>
DEU|051160 | 8|RI| | ##051166<langdep^literal>
DEU|051161 | 1| | <text item> ::=
DEU|051161 | 2|R | beliebiger Text
DEU|051162 | 1| | <input item> ::=
DEU|051162 | 2| I| <infield symbol> ##051165<field^ref>
DEU|051162 | 4| | <infield symbol> :=
DEU|051162 | 5| | _
DEU|051162 | 6|R | | <in char>
DEU|051163 | 1| | <output item> ::=
DEU|051163 | 2| I| <outfield^symbol> ##051165<field^ref>
DEU|051163 | 3| | /<varying length symbol>/
DEU|051163 | 5| | <outfield symbol> :=
DEU|051163 | 6| | <
DEU|051163 | 7| | | <out char>
DEU|051163 | 9| | <varying length symbol> :=
DEU|051163 | 10|R | >>
DEU|051164 | 1| | <continuation field> :=
DEU|051164 | 2| | <infield symbol>"
DEU|051164 | 3|R | | <outfield symbol>"
DEU|051165 | 1| | <next vector component> :=
DEU|051165 | 2| | <infield symbol><blank>
DEU|051165 | 3| | | <outfield symbol><blank>
DEU|051165 | 5| | <field ref> ::=
DEU|051165 | 6| I| ##0203040133<variable>
DEU|051165 | 7| | | <vector slice>
DEU|051165 | 8| | | <field number>
DEU|051165 | 10| | <vector slice> ::=
DEU|051165 | 11| I| ##0203040118<name> (<lower bound> .. <upper bound>)
DEU|051165 | 12| | +-------------------------------------------+
DEU|051165 | 13| | | hier muessen soviele |
DEU|051165 | 14| | | <next vector component>-Elemente |
DEU|051165 | 15| | | untereinander folgen, wie durch |
DEU|051165 | 16| | | <upper bound>-<lower bound>+1 gegeben ist |
DEU|051165 | 17|S | +-------------------------------------------+
DEU|051165 | 20| | <lower bound> ::=
DEU|051165 | 21| I| ##0203040120<numeric>
DEU|051165 | 23| | <upper bound> ::=
DEU|051165 | 24| I| ##0203040120<numeric>
DEU|051165 | 26| | <field number> ::=
DEU|051165 | 27|RI| ##0203040120<numeric>
DEU|051166 | 1|R | <langdep literal> ::= ##!0203040118<name> <-- nur im Maskenlayout
DEU|051180 | 1| | <form option> ::=
DEU|051180 | 2| I| ##051154<form^wrap^option>
DEU|051180 | 3|RI| | ##051153<form^lib^option>
DEU|051181 | 1| | <attr name> ::=
DEU|051181 | 2| | LOW | HIGH | INV | BLK | UNDERL
DEU|051181 | 3|R | | ATTR1 | ... | ATTR16
DEU|051182 | 1| | <menupoint group> ::=
DEU|051182 | 2| | <menupoint def>,...
DEU|051182 | 4| | <menupoint def> ::=
DEU|051182 | 5| I| <function label> [ : ##051152<action^clause> ]
DEU|051182 | 7| | <function label> ::=
DEU|051182 | 8| I| ##0203040133<variable>
DEU|051182 | 9| I| | ##0203040126<string^literal>
DEU|051182 | 10|RI| | ##051158<langdep^literal>
DEU|051183 | 1| | <basic key> ::=
DEU|051183 | 2| | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9
DEU|051183 | 3| | | F10 | F11 | F12 | HELP | UP | DOWN
DEU|051183 | 5| | <additional hardkey> ::=
DEU|051183 | 6|R | CMDKEY | ENDKEY | UPKEY | DOWNKEY | RIGHTKEY | LEFTKEY
DEU|051184 | 1| | <noinp spec> ::=
DEU|051184 | 2|R | NOINPUT
DEU|051185 | 1| | <scrollfield stmt> ::=
DEU|051185 | 2| | SCROLLFIELD ( <offset var> [, <max count>
DEU|051185 | 3| | [, <page count> ] ] )
DEU|051185 | 4| I| [ ( TOPKEY ##051183<basic^key> , BOTTOMKEY <basic key> ) ]
DEU|051185 | 6| | <offset var> ::= <variable>
DEU|051185 | 8| | <max count> ::= <expr>
DEU|051185 | 10|R | <page count> ::= <expr>
DEU|051186 | 1| | <keys stmt> ::=
DEU|051186 | 2| | KEYS ( <function key spec>,... )
DEU|051186 | 4| | <function key spec> ::=
DEU|051186 | 5| | <key function> = <key> [ | <key> ... ]
DEU|051186 | 7| | <key function> ::=
DEU|051186 | 8| | HELP | MENU | UP | DOWN | LEFT | RIGHT
DEU|051186 | 10| | <key> ::=
DEU|051186 | 11| I| ##051183<basic^key>
DEU|051186 | 12|R | | <additional hardkey>
DEU|051187 | 1| | <button stmt> ::=
DEU|051187 | 2| | BUTTON [WITH FRAME] (<buttonpoint def>,...)
DEU|051187 | 4| | <buttonpoint def> ::=
DEU|051187 | 5| I| ##051182<function^label> [ : <button action> ]
DEU|051187 | 7| | <button action> ::=
DEU|051187 | 8|R | [ ##051152<comment> ] [<activate cond>] [<releasekey spec>]