home *** CD-ROM | disk | FTP | other *** search
/ PC Treasures, Inc. / pctreasures.mdf / WINDOWS / adabas / f_0001 / env / form.deh < prev    next >
Text File  |  1999-11-01  |  143KB  |  1,948 lines

  1. DEU|05          |     0     FORM.deh   10.05.01   1998-04-24
  2. DEU|05          |     1|  |                                 Masken
  3. DEU|05          |     2|  |                                 ------
  4. DEU|05          |     4| M|                    #01Beispiele fⁿr Maskendefinitionen
  5. DEU|05          |     5| M|                    #05Struktur einer Maske
  6. DEU|05          |     6| M|                    #03Maskenfelder
  7. DEU|05          |     7| M|                    #04Verarbeitungsanweisungen in Masken
  8. DEU|05          |     8| M|                    #06Optionen beim Maskenaufruf
  9. DEU|05          |     9| M|                    #07Parameter beim Maskenaufruf
  10. DEU|05          |    10| M|                    #08Optionen fⁿr den FORM-Compiler
  11. DEU|05          |    11|RM|                    #10Menⁿzeile und Pulldown-Menⁿs
  12. DEU|0501        |     1|  |    Beispiel 1 : LAYOUT-Zeichnung
  13. DEU|0501        |     3|  |
  14. DEU|0501        |     4| E|    FORM kunde.stammkarte
  15. DEU|0501        |     5| E|    LAYOUT
  16. DEU|0501        |     6| E|    <benutzer     KUNDEN-KARTE   <datum
  17. DEU|0501        |     7| E|    ------------------------------------
  18. DEU|0501        |     8| E|          Kunden-Nr    :  _knr
  19. DEU|0501        |     9| E|              Vorname  :  _kvname
  20. DEU|0501        |    10| E|              Nachname :  _kname
  21. DEU|0501        |    12| E|          Kontostand   :  _(konto)
  22. DEU|0501        |    14| E|    ------------------------------------
  23. DEU|0501        |    15| E|    <MESSAGE
  24. DEU|0501        |    16| E|    ENDLAYOUT
  25. DEU|0501        |    17|S |
  26. DEU|0501        |    19|  |    Beispiel 2 : LAYOUT und Optionen
  27. DEU|0501        |    20|  |    --------------------------------
  28. DEU|0501        |    22|  |    FORM kunde.aenderung;
  29. DEU|0501        |    23|  |    LAYOUT HIGH = % LOW = + PROMPT = .
  30. DEU|0501        |    24|  |    <benutzer     %<kopftext                     +<datum
  31. DEU|0501        |    25|  |    -------------------------------------------------------
  32. DEU|0501        |    27|  |         Kunde : % <knr>> <kanr>> <kname>> <kvname
  33. DEU|0501        |    28|  |         alte Anschrift                % neue Anschrift
  34. DEU|0501        |    29|  |         --------------                % --------------
  35. DEU|0501        |    30|  |         PLZ     : <kplz               % PLZ     : _neuplz
  36. DEU|0501        |    31|  |         Wohnort : <kort             + % Wohnort : _neuort           +
  37. DEU|0501        |    32|  |                   <"                +             _"                +
  38. DEU|0501        |    34|  |    -------------------------------------------------------
  39. DEU|0501        |    35|S |    <MESSAGE
  40. DEU|0501        |    37|  |    ENDLAYOUT
  41. DEU|0501        |    39|  |    ACCEPT ( F1='AENDERE', F9='ZURUECK' );
  42. DEU|0501        |    41|  |    FIELD MESSAGE INIT 'Angaben ggf. berichtigen';
  43. DEU|0501        |    43|  |    FIELD neuplz    INIT NULL   SIZE 4
  44. DEU|0501        |    44|  |       CHECK BETWEEN  1000 AND 9999
  45. DEU|0501        |    45|  |         ELSE 'Bitte 4-stellig numerisch';
  46. DEU|0501        |    47|  |    FIELD neuort    INIT NULL
  47. DEU|0501        |    48|  |       CHECK IS ALPHA;
  48. DEU|0501        |    50|  |    IGNORE neuort, neuplz WHEN $KEY = F9;
  49. DEU|0501        |    52|  |    CONTROL  CASE $KEY  OF
  50. DEU|0501        |    53|S |                F1 : CALL PROC aendern;
  51. DEU|0501        |    55|  |                F9 : RETURN;
  52. DEU|0501        |    56|R |              END;
  53. DEU|0503        |     1|  |                                Maskenfelder
  54. DEU|0503        |     2|  |                                ------------
  55. DEU|0503        |     4| M|                #01Einfache Maskenfelder
  56. DEU|0503        |     5| M|                #02Mehrzeilige Maskenfelder
  57. DEU|0503        |     6| M|                #03Variabel lange Maskenfelder
  58. DEU|0503        |     7| M|                #04Vektorvariablen (indizierte Variablen) in Masken
  59. DEU|0503        |     8| M|                #05Vektorbereiche als verkⁿrzte Schreibweise
  60. DEU|0503        |     9| M|                #06Feldnummern an Stelle von Variablennamen
  61. DEU|0503        |    10| M|                #07Vektorvariablen mit dynamischem Index
  62. DEU|0503        |    11|RI|                                                          ##051160->^Syntax
  63. DEU|050301      |     1|  |    Einfache Maskenfelder
  64. DEU|050301      |     3|  |    <datum     ->   Ausgabefeld : hier wird der aktuelle Wert der Variablen
  65. DEU|050301      |     4|  |                    'datum' angezeigt; er kann   n i c h t   ⁿberschrieben werden
  66. DEU|050301      |     6|  |    _knr       ->   Eingabefeld : hier wird der aktuelle Wert der Variablen
  67. DEU|050301      |     7|  |                    'knr' angezeigt; er   k a n n   ⁿberschrieben werden
  68. DEU|050301      |     9|  |    _(passw)   ->    Eingabefeld ohne Anzeige und Echo (Passwort-Eingabe)
  69. DEU|050301      |    11|  |    <MESSAGE   ->    Die Variable MESSAGE dient zur Ausgabe von Systemmeldungen.
  70. DEU|050301      |    12|  |                     Wenn die Maske kein MESSAGE-Feld enthΣlt, wird die letzte
  71. DEU|050301      |    13|  |                     Bildschirmzeile fⁿr die Meldung reserviert.
  72. DEU|050301      |    14|  |                     Nach der Anzeige wird MESSAGE implizit auf NULL gesetzt.
  73. DEU|050301      |    16|  |    Unmittelbar  vor Ein- und Ausgabefeldern kann entweder ein Leerzeichen,
  74. DEU|050301      |    17|R |    ein Helligkeitssteuerzeichen oder ein Ein- oder Ausgabefeld stehen.
  75. DEU|050302      |     1|  |    Mehrzeilige Maskenfelder
  76. DEU|050302      |     3|  |    <kort             +  -> mehrzeiliges Ausgabefeld     _neuort           +
  77. DEU|050302      |     4|  |    <"                +     mehrzeiliges Eingabefeld ->  _"                +
  78. DEU|050302      |     6|  |    Die  Feldabschnitte  der   mehrzeiligen   Felder   mⁿssen   unmittelbar
  79. DEU|050302      |     7|  |    untereinander   in  der  gleichen  Spalte  beginnen,  sie  dⁿrfen  aber
  80. DEU|050302      |     8|  |    unterschiedlich lang sein.
  81. DEU|050302      |    10|  |    Definition:
  82. DEU|050302      |    11|  |
  83. DEU|050302      |    12| E|    FORM test.m_ln
  84. DEU|050302      |    13| E|    LAYOUT  PROMPT = .
  85. DEU|050302      |    14| E|         _neuort           +
  86. DEU|050302      |    15| E|         _"                +
  87. DEU|050302      |    16| E|    ENDLAYOUT
  88. DEU|050302      |    17|S |
  89. DEU|050302      |    19|  |    Eingabe:            |   Kantstra▀e 110...    |
  90. DEU|050302      |    20|  |                        |   1000 Berlin 12....    |
  91. DEU|050302      |    22|  |    Werte von neuort
  92. DEU|050302      |    23|R |    nach der Eingabe:  'Kantstra▀e 110   1000 Berlin 12'
  93. DEU|050303      |     1|  |    Variabel lange Maskenfelder
  94. DEU|050303      |     3|  |    <art_nr>>        -> variabel langes Ausgabefeld
  95. DEU|050303      |     5|  |    Durch '>>' wird bewirkt, da▀ nachfolgende Maskenfelder an die  variabel
  96. DEU|050303      |     6|  |    lange Partie herangezogen werden.
  97. DEU|050303      |     8|  |                art_nr := '4711'; art_bez := 'Schraube';
  98. DEU|050303      |    10|  |    Definition:
  99. DEU|050303      |    11|  |                LAYOUT
  100. DEU|050303      |    12|  |                ... Artikel <art_nr>>, <art_bez>>, ist nicht lieferbar...
  101. DEU|050303      |    13|  |                ENDLAYOUT
  102. DEU|050303      |    15|  |    Ausgabe:
  103. DEU|050303      |    16|R |                ... Artikel 4711 , Schraube , ist nicht lieferbar...
  104. DEU|050304      |     1|  |    Indizierte Variablen in Masken (Vektorvariablen)
  105. DEU|050304      |     3|  |    K.Nr.      | Vorname       | Nachname
  106. DEU|050304      |     4|  |    -----------|---------------|--------------
  107. DEU|050304      |     5|  |    _knr(1)    | _vorname(1)   | _nachname(1)   + -> Tabellenverarbeitung
  108. DEU|050304      |     6|  |    _knr(2)    | _vorname(2)   | _nachname(2)   + -> mit Hilfe von
  109. DEU|050304      |     7|  |      ...      |   ...         |   ...          + -> indizierten
  110. DEU|050304      |     8|  |    _knr(8)    | _vorname(8)   | _nachname(8)   + -> Variablen
  111. DEU|050304      |    10|R |    Eine Vektorvariable kann aus bis zu 255 Komponenten bestehen.
  112. DEU|050305      |     1|  |    Vektorbereiche als verkⁿrzte Schreibweise
  113. DEU|050305      |     3|  |    K.Nr.      | Vorname       | Nachname
  114. DEU|050305      |     4|  |    -----------|---------------|--------------
  115. DEU|050305      |     5|  |    _knr(1..8) | _vorname(1..8)| _nachname(1..8)+
  116. DEU|050305      |     6|  |    _          | _             | _              +
  117. DEU|050305      |     7|  |      ...      |   ...         |  ...           +
  118. DEU|050305      |     8|  |    _          | _             | _              +
  119. DEU|050305      |    10|  |    Vektorkomponenten,  die  untereinander  stehen,  k÷nnen  verkⁿrzt durch
  120. DEU|050305      |    11|R |    Vektorbereiche beschrieben werden.
  121. DEU|050306      |     1|  |    Feldnummern an Stelle von Variablennamen
  122. DEU|050306      |     3|  |
  123. DEU|050306      |     4| E|    FORM test.fld_nr
  124. DEU|050306      |     5| E|    LAYOUT GRAPHIC = *
  125. DEU|050306      |     6| E|    K.Nr.  * Vorname
  126. DEU|050306      |     7| E|    ***************************
  127. DEU|050306      |     8| E|    _1     * _vorname(1..4)   *
  128. DEU|050306      |     9| E|    _      * _                *
  129. DEU|050306      |    10| E|    _      * _                *
  130. DEU|050306      |    11| E|    _      * _                *
  131. DEU|050306      |    12| E|    ENDLAYOUT
  132. DEU|050306      |    13| E|    FIELD  1:knr(1..4)
  133. DEU|050306      |    14|  |
  134. DEU|050306      |    16|  |    - Ein Maskenfeld kann durch eine Feldnummer dargestellt werden.
  135. DEU|050306      |    17|S |      Dadurch ist die LΣnge des Feldes unabhΣngig von der LΣnge des
  136. DEU|050306      |    19|  |      Variablennamens.
  137. DEU|050306      |    21|  |    - Die Zuordnung zwischen Feldnummer und Variable findet in der
  138. DEU|050306      |    22|R |      FIELD-Anweisung statt.
  139. DEU|050307      |     1|  |    Vektorvariablen mit dynamischem Index
  140. DEU|050307      |     2|  |
  141. DEU|050307      |     3| E|    FORM test.vec_fld
  142. DEU|050307      |     4| E|    LAYOUT GRAPHIC = *
  143. DEU|050307      |     5| E|    ****************************
  144. DEU|050307      |     6| E|    _1      * _vorname(1..4)   *
  145. DEU|050307      |     7| E|    _       * _                *
  146. DEU|050307      |     8| E|    _       * _                *
  147. DEU|050307      |     9| E|    _       * _                *
  148. DEU|050307      |    10| E|    ENDLAYOUT
  149. DEU|050307      |    11| E|    FIELD  1:knr(1..4), vorname(1..4) OFFSET x;
  150. DEU|050307      |    12|  |
  151. DEU|050307      |    14|  |    - Wenn die Variable hinter OFFSET (also hier x)  einen  Wert  hat,  der
  152. DEU|050307      |    15|  |    gr÷▀er  als  0  ist,  dann erscheint im Maskenfeld der Vektorkomponente
  153. DEU|050307      |    16|S |    vorname(1) der Wert der Vektorkomponente vorname(1+x).
  154. DEU|050307      |    19|  |    - Diese Regel gilt entsprechend  fⁿr  alle  Vektorkomponenten,  die  in
  155. DEU|050307      |    20|  |    dieser FIELD-Anweisung angesprochen sind.
  156. DEU|050307      |    22|R |    - An Stelle der Variablen x sind auch numerische Ausdrⁿcke m÷glich.
  157. DEU|0504        |     1|  |            Verarbeitungsanweisungen in Masken
  158. DEU|0504        |     2|  |            ----------------------------------
  159. DEU|0504        |     4| M|          #01PROMPT       :  Darstellung eines nullwertigen Feldes
  160. DEU|0504        |     5| M|          #02ATTR1,...    :  Anzeigeattribute
  161. DEU|0504        |     6| M|          #03IN^und^OUT   :  Bezeichner fⁿr Ein-/Ausgabefelder
  162. DEU|0504        |     7| M|          #14GRAPHIC      :  Graphische Zeichen in Masken
  163. DEU|0504        |     8| M|          #04FIELD/...    :  Optionen bei der FIELD - Anweisung
  164. DEU|0504        |     9| M|          #08ACCEPT       :  Ausl÷setaste aktivieren
  165. DEU|0504        |    10| M|          #15MARK         :  Initialisierung der Cursorposition
  166. DEU|0504        |    11| M|          #09IGNORE       :  Unterdrⁿckung der Eingabeprⁿfung
  167. DEU|0504        |    12| M|          #10KEYSWAP      :  Vertauschen der Tastenfunktionen
  168. DEU|0504        |    13| M|          #18SPECIALATTR  :  SituationsabhΣngige Anzeigeattribute
  169. DEU|0504        |    14| M|          #19INSERTMODE   :  Anzeige des Eingabemodus
  170. DEU|0504        |    15| M|          #11CONTROL      :  Die Maske als steuernder Modul
  171. DEU|0504        |    16| M|          #16RETURNONLAST :  Verlassen der Maske mit Returntaste
  172. DEU|0504        |    17|SM|          #06PICK/PUT     :  PICK/PUT Mechanismus
  173. DEU|0504        |    19| M|          #05AUTOPAGE     :  BlΣtterunterstⁿtzung
  174. DEU|0504        |    20| M|          #17HEADERLINES/
  175. DEU|0504        |    21| M|          #17BOTTOMLINES  :  Titelzeilen und Fu▀zeilen
  176. DEU|0504        |    23| M|          #22BEFORE^FIELD/
  177. DEU|0504        |    24| M|          #22AFTER^FIELD   : Was beim Feld-Ein- und Austritt zu tun ist
  178. DEU|0504        |    25| M|          #23GROUP         : Mehrere Felder k÷nnen eine Guppe bilden
  179. DEU|0504        |    26| M|          #24BEFORE^GROUP/
  180. DEU|0504        |    27| M|          #24AFTER^GROUP   : Was beim Gruppen-Ein- und Austritt zu tun ist
  181. DEU|0504        |    28| M|          #25NEXTFIELD     : Mit einem anderen Feld der Gruppe fortsetzen
  182. DEU|0504        |    29| M|          #26NEXTGROUP     : Mit einer anderen Gruppe fortsetzen
  183. DEU|0504        |    30| M|          #27NOAUTONEXT    : Mit nΣchstem Feld fortsetzen
  184. DEU|0504        |    31| M|          #28SCROLLFIELD   : Verschieben von Vektorbereichen
  185. DEU|0504        |    32| M|          #29KEYS          : Tastenzuordnung
  186. DEU|0504        |    33|RI|                                                          ##051138->^Syntax
  187. DEU|050401      |     1|  |    PROMPT : Darstellung eines nullwertigen Feldes
  188. DEU|050401      |     3|  |
  189. DEU|050401      |     4| E|    FORM test.fld_prompt
  190. DEU|050401      |     5| E|    LAYOUT  PROMPT = .
  191. DEU|050401      |     6| E|         ...
  192. DEU|050401      |     7| E|         Vorname  :  _kvname
  193. DEU|050401      |     8| E|         ...
  194. DEU|050401      |     9| E|    ENDLAYOUT
  195. DEU|050401      |    10| E|    FIELD kvname  INIT NULL  SIZE 20;
  196. DEU|050401      |    11|  |
  197. DEU|050401      |    13|  |    Durch  die  PROMPT-Option  in  der  LAYOUT-Zeile  werden  Felder, deren
  198. DEU|050401      |    14|  |    Variablen NULL sind, in ihrer ganzen LΣnge mit dem angegebenen  Zeichen
  199. DEU|050401      |    15|  |    aufgefⁿllt.
  200. DEU|050401      |    17|S |    Nach der Benutzereingabe werden die Prompt-Zeichen links und rechts von
  201. DEU|050401      |    19|  |    der Eingabe abgeschnitten ( wie TRIM (kvname,'.') ).
  202. DEU|050401      |    21|RI|                                                          ##051103->^Syntax
  203. DEU|050402      |     1|  |    ATTR1,...ATTR16, HIGH, LOW, INV, BLK, UNDERL :  Anzeigeattribute
  204. DEU|050402      |     3|  |
  205. DEU|050402      |     4| E|    FORM test.lopt_attr
  206. DEU|050402      |     5| E|    LAYOUT  HIGH = %  LOW = +  ATTR16 = *
  207. DEU|050402      |     6| E|    <benutzer     KUNDEN-KARTE   *<datum
  208. DEU|050402      |     7| E|    -------------------------------------
  209. DEU|050402      |     8| E|            %Kunden-Nr. : +_knr
  210. DEU|050402      |     9| E|    ENDLAYOUT
  211. DEU|050402      |    10| E|    FIELD benutzer  INIT $USER;
  212. DEU|050402      |    11| E|    FIELD datum     INIT DATE(DD.MM.YY);
  213. DEU|050402      |    12| E|    FIELD knr       INIT '.'(6);
  214. DEU|050402      |    13|  |
  215. DEU|050402      |    15|  |    Durch  die  ATTR1-,...ATTR16-Optionen  (HIGH,  LOW,  INV,  BLK, UNDERL)
  216. DEU|050402      |    16|  |    k÷nnen Sonderzeichen zur  Steuerung  der  Anzeige-IntensitΣt  definiert
  217. DEU|050402      |    17|S |    werden.
  218. DEU|050402      |    19|  |    Normalerweise   werden   Ausgabefelder   und   Textpartien  dunkel  und
  219. DEU|050402      |    20|  |    Eingabefelder hell angezeigt (SET-Parameter  ATTR2/HI  und  ATTR1/LOW).
  220. DEU|050402      |    21|  |    Tritt   eines   der  Sonderzeichen  auf,  so  wird  die  Zeile  ab  dem
  221. DEU|050402      |    22|  |    Sonderzeichen bis zum Zeilenende oder bis  zum  nΣchsten  Sonderzeichen
  222. DEU|050402      |    23|  |    mit der definierten IntensitΣt ausgegeben.
  223. DEU|050402      |    25|  |    Im Bsp.:  erscheinen '<benutzer' und '_knr' dunkel, 'Kunden-Nr.' hell
  224. DEU|050402      |    26|  |              erscheint '<datum' entsprechend der Einstellung ATTR16
  225. DEU|050402      |    27|  |              der SET-Parameter.
  226. DEU|050402      |    29|RI|                                                          ##051103->^Syntax
  227. DEU|050403      |     1|  |    IN und OUT : Bezeichner fⁿr Ein- und Ausgabefelder
  228. DEU|050403      |     3|  |
  229. DEU|050403      |     4| E|    FORM bsp_form.l_in_out
  230. DEU|050403      |     5| E|    LAYOUT  IN = &  OUT = @
  231. DEU|050403      |     6| E|    @benutzer     KUNDEN-KARTE    @datum
  232. DEU|050403      |     7| E|    -------------------------------------
  233. DEU|050403      |     8| E|         Kunden-Nr. :  &knr
  234. DEU|050403      |     9| E|          ....
  235. DEU|050403      |    10| E|    ENDLAYOUT
  236. DEU|050403      |    11| E|    FIELD benutzer  INIT $USER;
  237. DEU|050403      |    12| E|    FIELD datum     INIT DATE(DD.MM.YY);
  238. DEU|050403      |    13| E|    FIELD knr       INIT '.'(6);
  239. DEU|050403      |    14|  |
  240. DEU|050403      |    16|  |    Durch  IN  und  OUT k÷nnen explizit andere Zeichen als die vorgegebenen
  241. DEU|050403      |    17|S |    '_' (Unterstrich) und '<' (Kleiner) zur Markierung  des  Beginns  eines
  242. DEU|050403      |    19|  |    Eingabe- bzw. Ausgabefelds gewΣhlt werden.
  243. DEU|050403      |    21|  |    So  sind  in  diesem Beispiel benutzer und datum Ausgabefelder, wΣhrend
  244. DEU|050403      |    22|  |    knr ein Eingabefeld ist.
  245. DEU|050403      |    24|RI|                                                          ##051103->^Syntax
  246. DEU|050404      |     1|  |                   Optionen der FIELD - Anweisung
  247. DEU|050404      |     2|  |                   ------------------------------
  248. DEU|050404      |     4| M|          #02FIELD/INIT^^^^^^:  Initialisierungen
  249. DEU|050404      |     5| M|          #01FIELD/SIZE^^^^^^:  Explizite Feldbegrenzung
  250. DEU|050404      |     6| M|          #06FIELD/WIDTH^^^^^:  Feldbegrenzung bei mehrzeiligen Feldern
  251. DEU|050404      |     7|  |                          fⁿr Maskenfelder
  252. DEU|050404      |     8| M|          #04FIELD/CHECK^^^^^:  Prⁿfung der Eingabe
  253. DEU|050404      |     9| M|          #07FIELD/DOMAIN^^^^:  Nutzung von DOMAIN-Definitionen
  254. DEU|050404      |    10| M|          #03FIELD/HELP^FORM^:  Ausgabe von HELP-Masken
  255. DEU|050404      |    11| M|          #08FIELD/HELP^MSG^^:  Ausgabe von HELP-Meldungen
  256. DEU|050404      |    12| M|          #05FIELD/DISPLAY^^^:  Aufbereitung der Anzeige
  257. DEU|050404      |    13| M|          #09FIELD/OFFSET^^^^:  Vektorkomponenten mit dynamischem Index
  258. DEU|050404      |    14| M|          #10FIELD/ATTR^^^^^^:  Zuordnung von Feldattributen
  259. DEU|050404      |    15| M|          #11FIELD/NOINPUT^^^:  Nicht ⁿberschreibbares Eingabefeld
  260. DEU|050404      |    16|RI|                                                          ##051105->^Syntax
  261. DEU|05040401    |     1|  |    FIELD/SIZE : Feldbegrenzung
  262. DEU|05040401    |     3|  |
  263. DEU|05040401    |     4| E|    FORM test.fld_size
  264. DEU|05040401    |     5| E|    LAYOUT  PROMPT = . HIGH = %  LOW = +
  265. DEU|05040401    |     6| E|      Betrag1    :   _betrag1
  266. DEU|05040401    |     7| E|                     ................................................
  267. DEU|05040401    |     8| E|      Betrag2    :   _betrag2 DM
  268. DEU|05040401    |     9| E|                     ........
  269. DEU|05040401    |    10| E|      Betrag3    :   _betrag3   +
  270. DEU|05040401    |    11| E|                     ...........
  271. DEU|05040401    |    12| E|      Betrag4    :   _betrag4
  272. DEU|05040401    |    13| E|                     ..........
  273. DEU|05040401    |    14| E|    ENDLAYOUT
  274. DEU|05040401    |    16| E|    FIELD  betrag4  SIZE  10;
  275. DEU|05040401    |    17|S |
  276. DEU|05040401    |    19|  |    Das Beispiel zeigt die verschiedenen M÷glichkeiten, ein Feld  genau  zu
  277. DEU|05040401    |    20|  |    begrenzen. Die Punkte markieren die LΣnge der Eingabebereiche.
  278. DEU|05040401    |    22|RI|                                                          ##051107->^Syntax
  279. DEU|05040402    |     1|  |    FIELD/INIT : Initialisierungen
  280. DEU|05040402    |     3|  |
  281. DEU|05040402    |     4| E|    FORM test.fld_init
  282. DEU|05040402    |     5| E|    LAYOUT
  283. DEU|05040402    |     6| E|    <benutzer    KUNDEN-KARTE    <datum
  284. DEU|05040402    |     7| E|    ------------------------------------
  285. DEU|05040402    |     8| E|           Kunden-Nr    :  _knr
  286. DEU|05040402    |     9| E|             ...
  287. DEU|05040402    |    10| E|    ENDLAYOUT
  288. DEU|05040402    |    12| E|    FIELD benutzer  INIT $USER;
  289. DEU|05040402    |    13| E|    FIELD datum     INIT DATE(DD.MM.YY);
  290. DEU|05040402    |    14| E|    FIELD knr       INIT '.'(6);
  291. DEU|05040402    |    15|  |
  292. DEU|05040402    |    17|S |    Immer  wenn die Maske aufgerufen wird, werden die Variablen 'benutzer',
  293. DEU|05040402    |    19|  |    'datum' und 'knr' laut INIT-Option initialisiert.
  294. DEU|05040402    |    20|  |    Die Initialisierungen k÷nnen zur Laufzeit dynamisch unterdrⁿckt werden,
  295. DEU|05040402    |    21|  |    indem die Maske mit der NOINIT-Option aufgerufen wird :
  296. DEU|05040402    |    23|  |               CALL FORM stammkarte ( NOINIT );
  297. DEU|05040402    |    25|  |    In diesem Fall erscheinen  in  den  Feldern  die  aktuellen  Werte  der
  298. DEU|05040402    |    26|  |    Variablen.
  299. DEU|05040402    |    28|  |    In Feldern, fⁿr die keine INIT-Option angegeben wurde, werden immer die
  300. DEU|05040402    |    29|  |    aktuellen  Werte der Variablen angezeigt. Falls deren Wert NULL ist, so
  301. DEU|05040402    |    30|  |    werden auch sie mit dem Prompt-Zeichen aufgefⁿllt.
  302. DEU|05040402    |    32|RI|                                                          ##051106->^Syntax
  303. DEU|05040403    |     1|  |    FIELD/HELP FORM : Ausgabe von HELP-Masken
  304. DEU|05040403    |     3|  |    Mit der FIELD/HELP-Anweisung  kann  man  einem  Maskenfeld  oder  einer
  305. DEU|05040403    |     4|  |    Gruppe von Maskenfeldern eine HELP-Information in Form einer HELP-Maske
  306. DEU|05040403    |     5| I|    bzw. ##05040408HELP-Meldung zuordnen.
  307. DEU|05040403    |     6|  |    Eine  HELP-Maske  ist  eine  spezielle Maske, die mit dem Schlⁿsselwort
  308. DEU|05040403    |     7|  |    'HELPFORM' beginnt. In einer HELP-Maske  dⁿrfen  nur  lokale  Variablen
  309. DEU|05040403    |     8|  |    verwendet werden und in der CONTROL-Anweisung sind keine CALL-, SWITCH-
  310. DEU|05040403    |     9|  |    bzw. SWITCHCALL- Anweisungen zugelassen.
  311. DEU|05040403    |    10|  |
  312. DEU|05040403    |    11| E|    HELPFORM kunde.helpinfo
  313. DEU|05040403    |    12| E|    LAYOUT
  314. DEU|05040403    |    13| E|            Kunden_Nr :  5stellig numerisch
  315. DEU|05040403    |    14| E|    ENDLAYOUT
  316. DEU|05040403    |    15| E|    FIELD message INIT 'Weiter mit ENTER';
  317. DEU|05040403    |    16|S |
  318. DEU|05040403    |    19|  |    Beispiel fⁿr den Aufruf der HELP-Maske:
  319. DEU|05040403    |    21|  |    FORM kunde.stammkarte
  320. DEU|05040403    |    22|  |    LAYOUT
  321. DEU|05040403    |    23|  |                 Kundennr : _knr
  322. DEU|05040403    |    24|  |    ENDLAYOUT
  323. DEU|05040403    |    26|  |    ACCEPT( F10='INFO', ENTER, F3='ZURUECK' );
  324. DEU|05040403    |    27|  |    FIELD knr
  325. DEU|05040403    |    28|  |         HELP FORM helpinfo;
  326. DEU|05040403    |    30|  |    Wird  beim  Ausfⁿllen  der  Maske stammkarte zur Laufzeit die F10-Taste
  327. DEU|05040403    |    31|  |    (HELP-Taste) betΣtigt, wΣhrend der Cursor auf dem Feld  knr  steht,  so
  328. DEU|05040403    |    32|  |    erscheint   die   HELP-Maske   helpinfo.   Dabei  wird  die  HELP-Maske
  329. DEU|05040403    |    33|  |    automatisch so auf der aktuellen  Maske  plaziert,  da▀  das  Feld  knr
  330. DEU|05040403    |    34|S |    m÷glichst sichtbar bleibt.
  331. DEU|05040403    |    37|  |    Man  kann  Position,  Gr÷▀e und Ausschnitt der HELP-Maske auch explizit
  332. DEU|05040403    |    38|  |    als Aufrufoption angeben (siehe SCREENPOS, SCREENSIZE und FORMPOS).
  333. DEU|05040403    |    40|  |    Steht der Cursor beim Ausl÷sen der HELP-Maske auf einem Maskenfeld, fⁿr
  334. DEU|05040403    |    41|  |    welches keine HELP-Option  definiert  wurde,  so  wirkt  die  F10-Taste
  335. DEU|05040403    |    42|  |    (HELP-Taste) wie jede andere Taste.
  336. DEU|05040403    |    44|RI|                                                          ##051111->^Syntax
  337. DEU|05040404    |     1|  |    FIELD/CHECK :  Prⁿfung der Eingabe
  338. DEU|05040404    |     3|  |    Pro Eingabefeld k÷nnen ⁿber die CHECK-Option der FIELD Anweisungen eine
  339. DEU|05040404    |     4|  |    Bedingung und eine dazugeh÷rige Meldung spezifiziert werden.
  340. DEU|05040404    |     6|  |    Erfⁿllt ein Eingabewert die geforderte Bedingung nicht, wird der Cursor
  341. DEU|05040404    |     7|  |    auf  das  betreffende  Feld  gesetzt und ⁿber MESSAGE die in der CHECK-
  342. DEU|05040404    |     8|  |    Option hinter ELSE stehende Meldung angezeigt. Der  Benutzer  kann  die
  343. DEU|05040404    |     9|  |    Eingabe dann sofort korrigieren.
  344. DEU|05040404    |    11|  |    Wurde  hinter ELSE kein Meldungstext angegeben, wird eine Ersatzmeldung
  345. DEU|05040404    |    12|  |    angezeigt.
  346. DEU|05040404    |    14|  |    Die  CHECK-Bedingungen  werden  in  der  Reihenfolge  ihrer  Definition
  347. DEU|05040404    |    15|  |    abgearbeitet.
  348. DEU|05040404    |    17|S |    Wird  keine  CHECK-Bedingung  verletzt, setzt FORM die MESSAGE Variable
  349. DEU|05040404    |    19|  |    auf NULL und gibt die Kontrolle an die aufrufende Umgebung zurⁿck.
  350. DEU|05040404    |    21|  |    Es gibt mehrere M÷glichkeiten eine CHECK-Bedingung zu formulieren
  351. DEU|05040404    |    23| M|    1. die Liste der zu prⁿfenden Felder beinhaltet nur  #01einfache^Variablen
  352. DEU|05040404    |    24|  |    (keine Vektorbereiche)
  353. DEU|05040404    |    26| M|    2. die Liste der zu prⁿfenden Felder beinhaltet nur #02Vektorbereiche
  354. DEU|05040404    |    28| M|    3. #03sonstige^Bedingungen
  355. DEU|05040404    |    30|RI|                                                          ##051109->^Syntax
  356. DEU|0504040401  |     1|  |    Die Liste der zu prⁿfenden Felder beinhaltet nur einfache Variablen
  357. DEU|0504040401  |     3| I|    - hinter CHECK kann eine ##0203040148<check^cond> verwendet werden, ohne
  358. DEU|0504040401  |     4|  |    nochmalige Verwendung des Feldnamens. Die <check cond>
  359. DEU|0504040401  |     5|  |    Bedingung kann auch aus beliebigen mit AND oder OR
  360. DEU|0504040401  |     6|  |    verknⁿpften Teilbedingungen bestehen. Als Teilbedingungen
  361. DEU|0504040401  |     7|  |    sind alle IS-, IN-, BETWEEN- oder LIKE-Bedingungen und ihre
  362. DEU|0504040401  |     8|  |    Negationen zugelassen. Die formulierte Bedingung gilt fⁿr alle
  363. DEU|0504040401  |     9|  |    Variablen der Feldliste.
  364. DEU|0504040401  |    11| I|    - hinter CHECK kann ##0203040136<expr> gefolgt von <check cond> verwendet
  365. DEU|0504040401  |    12|  |    werden. Dabei kann durch <expr> z.B. ein Funktionswert des
  366. DEU|0504040401  |    13|  |    Feldes ⁿberprⁿft werden.
  367. DEU|0504040401  |    15|  |    Achtung : 'FIELD a, b CHECK UPPER (a) in (....)'
  368. DEU|0504040401  |    16|  |    ⁿberprⁿft die bzgl. Feld a formulierte Bedingung
  369. DEU|0504040401  |    17|S |    sowohl beim Feld a als auch beim Feld b.
  370. DEU|0504040401  |    19|  |
  371. DEU|0504040401  |    20| E|    FORM kunde.stammkarte
  372. DEU|0504040401  |    21| E|     ...
  373. DEU|0504040401  |    22| E|    ENDLAYOUT
  374. DEU|0504040401  |    24| E|    FIELD plz SIZE 5
  375. DEU|0504040401  |    25| E|       CHECK BETWEEN 1000 AND 9999
  376. DEU|0504040401  |    26| E|              AND IS NOT NULL OR IS BLANK;
  377. DEU|0504040401  |    28| E|    FIELD knr SIZE 5
  378. DEU|0504040401  |    29| E|        CHECK LIKE '(a-Z)(0-9)(0-9)(0-9)(0-9)'
  379. DEU|0504040401  |    30| E|              ELSE 'Buchstabe gefolgt von 4 Ziffern';
  380. DEU|0504040401  |    32| E|    FIELD kanr
  381. DEU|0504040401  |    33| E|        CHECK  UPPER(kanr) IN ('FRAU','HERR','FIRMA')
  382. DEU|0504040401  |    34|SE|              ELSE 'entweder Frau, Herr oder Firma angeben';
  383. DEU|0504040401  |    37| E|    FIELD kvname, kname INIT NULL
  384. DEU|0504040401  |    38| E|        CHECK IS NOT NULL AND IS ALPHA
  385. DEU|0504040401  |    39| E|              ELSE 'bitte Namen vollstΣndig angeben';
  386. DEU|0504040401  |    40|  |
  387. DEU|0504040401  |    42|RI|                                                          ##051109->^Syntax
  388. DEU|0504040402  |     1|  |    Die Liste der zu prⁿfenden Felder beinhaltet nur Vektorbereiche
  389. DEU|0504040402  |     3|  |    Es  mⁿssen  die  PrΣdikate  ALL,  ANY  und ONE zur genauen Formulierung
  390. DEU|0504040402  |     4|  |    verwendet  werden.  Hinter  CHECK  und   einem   PrΣdikat   kann   eine
  391. DEU|0504040402  |     5| I|    ##0203040148<check^cond> angegeben werden.
  392. DEU|0504040402  |     7|  |
  393. DEU|0504040402  |     8| E|    FORM kunde.liste
  394. DEU|0504040402  |     9| E|    LAYOUT
  395. DEU|0504040402  |    10| E|      _1         _2
  396. DEU|0504040402  |    11| E|      _          _
  397. DEU|0504040402  |    12| E|      _          _
  398. DEU|0504040402  |    13| E|      ...
  399. DEU|0504040402  |    14| E|    ENDLAYOUT
  400. DEU|0504040402  |    16| E|    FIELD 1:knr_alt(1..3), 2:knr_neu(1..3)
  401. DEU|0504040402  |    17|SE|        CHECK ANY BETWEEN 1000 and 9999 OR IS BLANK
  402. DEU|0504040402  |    19| E|        ELSE 'mindestens eine 4 stellige Nummer pro Spalte angeben';
  403. DEU|0504040402  |    20|  |
  404. DEU|0504040402  |    22|RI|                                                          ##051109->^Syntax
  405. DEU|0504040403  |     1|  |    Weitere Bedingungen bei CHECK
  406. DEU|0504040403  |     3| I|    Hinter  CHECK  k÷nnen  beliebige  ##0203040146<boolean^expr>  angegeben werden. Als
  407. DEU|0504040403  |     4|  |    Variablen-Liste der zu prⁿfenden Felder ist eine Mischung aus einfachen
  408. DEU|0504040403  |     5|  |    Variablen und Vektorbereichen erlaubt, dennoch wird es in  den  meisten
  409. DEU|0504040403  |     6|  |    FΣllen  sinnvoll  sein mit dieser Varianten nur ein bestimmtes Feld und
  410. DEU|0504040403  |     7|  |    keine Feldliste zu ⁿberprⁿfen.
  411. DEU|0504040403  |     9|  |    FIELD knr CHECK knr > 1000 ...
  412. DEU|0504040403  |    10|  |              ELSE  'Kundennummern fangen bei 1000 an';
  413. DEU|0504040403  |    11|  |       oder
  414. DEU|0504040403  |    12|  |    FIELD knr CHECK ( knr DIV 2 ) * 2 = knr
  415. DEU|0504040403  |    13|  |              ELSE  'alle Kundenummern mⁿssen gerade sein';
  416. DEU|0504040403  |    15|  |    Beispiel zur ▄berprⁿfung von Datumswerten:
  417. DEU|0504040403  |    17|S |                         Datumsformat  von          bis
  418. DEU|0504040403  |    19|  |                         ------------  ----------   ----------
  419. DEU|0504040403  |    20|  |      ----------         mm/dd/yyyy    01/01/1991   30/06/1991
  420. DEU|0504040403  |    23|  |    Bitte ein Datum im angegebenen Datumsformat und Intervall
  421. DEU|0504040403  |    24|  |    eingeben
  422. DEU|0504040403  |    26|  |
  423. DEU|0504040403  |    27| E|    FORM datums.eingabe
  424. DEU|0504040403  |    28| E|    LAYOUT LOW=+ PROMPT = -
  425. DEU|0504040403  |    29| E|                         Datumsformat  von          bis
  426. DEU|0504040403  |    30| E|                         ------------  ----------   ----------
  427. DEU|0504040403  |    31| E|      _datum             <datformat    <von_datum   <bis_datum
  428. DEU|0504040403  |    33| E|    ENDLAYOUT
  429. DEU|0504040403  |    35|SE|    FIELD message INIT 'Bitte ein Datum im angegebenen Datumsformat '
  430. DEU|0504040403  |    37| E|                  & 'und Intervall eingeben';
  431. DEU|0504040403  |    39| E|    FIELD datformat INIT SET(23);
  432. DEU|0504040403  |    40| E|    FIELD von_datum INIT DATE ( , '19910101', yyyymmdd );
  433. DEU|0504040403  |    41| E|    FIELD bis_datum INIT DATE ( , '19910630', yyyymmdd );
  434. DEU|0504040403  |    43| E|    FIELD datum  SIZE 10
  435. DEU|0504040403  |    44| E|          CHECK
  436. DEU|0504040403  |    45| E|              DATE (yyyymmdd,datum ) BETWEEN 19910101 AND 19910630
  437. DEU|0504040403  |    46| E|              ELSE 'Datum muss im angegebenen Bereich liegen'
  438. DEU|0504040403  |    47| E|                 & 'und im angezeigten Format notiert sein';
  439. DEU|0504040403  |    48|  |
  440. DEU|0504040403  |    50|  |    In diesem Beispiel wird ⁿberprⁿft,  ob  ein  eingegebenes  Datum  (Feld
  441. DEU|0504040403  |    51|  |    'datum')  in einem bestimmten Intervall liegt. Der Test, ob ein Wert in
  442. DEU|0504040403  |    52|  |    einem bestimmten Intervall liegt, ist  bei  Datumswerten  nur  mit  der
  443. DEU|0504040403  |    53|S |    Interndarstellung der Datumswerte m÷glich. Die Funktion DATE (yyyymmdd,
  444. DEU|0504040403  |    55|  |    datum)  wandelt  den  Variablenwert  'datum'  vom in den SET-Parametern
  445. DEU|0504040403  |    56|  |    eingestellten Format in das interne Datumsformat um.
  446. DEU|0504040403  |    58|  |    Das anschlie▀ende BETWEEN-PrΣdikat prⁿft schlie▀lich, ob  der  Wert  im
  447. DEU|0504040403  |    59|  |    angebenen Intervall liegt.
  448. DEU|0504040403  |    61|  |    Da  die  DATE-Funktion  nur  dann einen gⁿltigen Wert liefert, wenn der
  449. DEU|0504040403  |    62|  |    Eingabewert das erwartete Format der SET-Parameter hat, wird auf  diese
  450. DEU|0504040403  |    63|  |    Weise   automatisch  auch  das  Datumsformat  des  eingegebenen  Datums
  451. DEU|0504040403  |    64|  |    ⁿberprⁿft.
  452. DEU|0504040403  |    66|RI|                                                          ##051109->^Syntax
  453. DEU|05040405    |     1|  |    FIELD/DISPLAY : Aufbereitung der Anzeige
  454. DEU|05040405    |     3|  |    Das FIELD/DISPLAY-Statement erm÷glicht es, die Werte der Variablen  fⁿr
  455. DEU|05040405    |     4|  |    die  Anzeige  zu  formatieren.  Numerische  Werten k÷nnen mit Hilfe der
  456. DEU|05040405    |     5|  |    FORMAT-Anweisung formatiert  und  zusΣtzlich  nach  rechts  oder  links
  457. DEU|05040405    |     6|  |    ausgerichtet werden.
  458. DEU|05040405    |     8|  |              FIELD betrag DISPLAY FORMAT ('+999.999,99');
  459. DEU|05040405    |     9|  |              FIELD betrag DISPLAY FORMAT ('+999.999,99') RIGHT;
  460. DEU|05040405    |    11|  |    Alphanumerische  Werte  k÷nnen  gro▀- oder kleingeschrieben aufbereitet
  461. DEU|05040405    |    12|  |    und nach rechts oder links ausgerichtet werden.
  462. DEU|05040405    |    14|S |              FIELD nachname DISPLAY UPPER;
  463. DEU|05040405    |    19|  |    Beispiel zur Formatierung von numerischen Werten
  464. DEU|05040405    |    21|  |    Maskendefinition
  465. DEU|05040405    |    22|  |    ----------------
  466. DEU|05040405    |    23|  |
  467. DEU|05040405    |    24| E|    FORM  konto.anzeige
  468. DEU|05040405    |    25| E|    LAYOUT  LOW=+
  469. DEU|05040405    |    26| E|       ...
  470. DEU|05040405    |    27| E|       Kontostand: <betrag         + <datum
  471. DEU|05040405    |    28| E|       ...
  472. DEU|05040405    |    29| E|    ENDLAYOUT
  473. DEU|05040405    |    31| E|    FIELD  betrag INIT 12345678 DISPLAY FORMAT ('-999.999.999,99') RIGHT;
  474. DEU|05040405    |    32| E|    FIELD  datum  INIT DATE(dd/mm/yy);
  475. DEU|05040405    |    33|  |
  476. DEU|05040405    |    35|RI|                                                          ##051112->^Syntax
  477. DEU|05040406    |     1|  |    FIELD/WIDTH : Feldbegrenzung bei mehrzeiligen Feldern
  478. DEU|05040406    |     3|  |    Bei mehrzeiligen Feldern ist es wⁿnschenswert angeben  zu  k÷nnen,  wie
  479. DEU|05040406    |     4|  |    lang das Feld insgesamt sein soll und welche LΣnge dabei jedes einzelne
  480. DEU|05040406    |     5|  |    Feld  haben  soll.  Die  GesamtlΣnge  des  mehrzeiligen Feldes wird mit
  481. DEU|05040406    |     6|  |    FIELD/SIZE festgelegt. Die Breite der  einzelnen  Teilfelder  wird  mit
  482. DEU|05040406    |     7|  |    FIELD/WIDTH festgelegt.
  483. DEU|05040406    |     9|  |    Diese Funktionen machen es leichter, Tools zu schreiben, die fⁿr ein in
  484. DEU|05040406    |    10|  |    der   Datenbank   vorkommendes  Tabellenfeld  das  passende  Maskenfeld
  485. DEU|05040406    |    11|  |    generieren.
  486. DEU|05040406    |    13|RI|                                                          ##051108->^Syntax
  487. DEU|05040407    |     1|  |    FIELD/DOMAIN : Nutzung von DOMAIN-Definitionen fⁿr Maskenfelder
  488. DEU|05040407    |     3|  |    Sind DOMAIN-Objekte definiert, k÷nnen diese bei  der  Definition  eines
  489. DEU|05040407    |     4|  |    Maskenfeldes  benutzt werden. Die FIELD/DOMAIN-Angabe bewirkt, da▀ FORM
  490. DEU|05040407    |     5|  |    auf die in der Datenbank befindliche DOMAIN-Definition zugreift und sie
  491. DEU|05040407    |     6|  |    zur Definition von SIZE, WIDTH, INIT und CHECK verwendet.
  492. DEU|05040407    |     8|  |    Die in der DOMAIN-Definition unter LENGTH angegebene  LΣnge  wirkt  wie
  493. DEU|05040407    |     9|  |    eine  explizit  angegebene  FIELD/SIZE-Angabe.  Die  unter  COLS in der
  494. DEU|05040407    |    10|  |    DOMAIN-Definition angegebene Breite des Feldes wirkt  wie  FIELD/WIDTH.
  495. DEU|05040407    |    11|  |    Der  DEFAULT-Wert  der  DOMAIN-Definition  bewirkt das gleiche wie eine
  496. DEU|05040407    |    12|  |    FIELD/INIT-Angabe mit dem gleichen  Wert.  Au▀erdem  wirkt  die  RANGE-
  497. DEU|05040407    |    13|  |    Angabe  der DOMAIN-Definition wie eine explizit definierte FIELD/CHECK-
  498. DEU|05040407    |    14|  |    Angabe.
  499. DEU|05040407    |    17|S |    Ein DOMAIN sei wie folgt in der  Datenbank  definiert  (Zur  Definition
  500. DEU|05040407    |    19|  |    sollte immer die Dialogkomponente DOMAIN verwendet werden.):
  501. DEU|05040407    |    21|  |           Domainname     : ANREDE
  502. DEU|05040407    |    22|  |           LΣnge (length) : 5
  503. DEU|05040407    |    23|  |           Datentyp       : char
  504. DEU|05040407    |    24|  |           Range          : IN ('Herr','Frau','Firma')
  505. DEU|05040407    |    25|  |           Default        : Firma
  506. DEU|05040407    |    27|  |    Dann ist ...
  507. DEU|05040407    |    29|  |           FIELD anr SIZE 5
  508. DEU|05040407    |    30|  |                   INIT 'Firma'
  509. DEU|05040407    |    31|  |                   CHECK IN  ('Herr','Frau','Firma')
  510. DEU|05040407    |    33|  |    gleichbedeutend mit...
  511. DEU|05040407    |    35|S |            FIELD anr DOMAIN anrede
  512. DEU|05040407    |    37|  |    In  manchen  FΣllen  kann  es erwⁿnscht sein, da▀ nur ein Teil der beim
  513. DEU|05040407    |    38|  |    Objekt DOMAIN vereinbarten Gr÷▀en verwendet wird.  Dafⁿr  gibt  es  die
  514. DEU|05040407    |    39|  |    M÷glichkeit,  mit Hilfe der Schlⁿsselw÷rter SIZE, WIDTH, INIT und CHECK
  515. DEU|05040407    |    40|  |    hinter dem Domainnamen die Teile aus der  DOMAIN-Definition  anzugeben,
  516. DEU|05040407    |    41|  |    die fⁿr dieses Feld wirken sollen.
  517. DEU|05040407    |    43|  |         FIELD anr DOMAIN anr ( SIZE, CHECK );
  518. DEU|05040407    |    45|  |    bewirkt dasselbe wie:
  519. DEU|05040407    |    47|  |         FIELD anr SIZE 5
  520. DEU|05040407    |    48|  |                    CHECK IN ('Herr','Frau','Firma')
  521. DEU|05040407    |    50|RI|                                                          ##051110->^Syntax
  522. DEU|05040408    |     1|  |    FIELD/HELP MSG  :  Ausgabe von HELP-Meldungen in der MESSAGE-Zeile
  523. DEU|05040408    |     3|  |    Die  Anweisung  FIELD a HELP MSG <str expr> bewirkt, da▀ bei BetΣtigung
  524. DEU|05040408    |     4|  |    der F10-Taste (HELP-Taste) die angegebene Meldung in der  Meldungszeile
  525. DEU|05040408    |     5| I|    erscheint.  Werden  beide  HELP-Informationen (HELP MSG und ##05040403HELP^FORM )
  526. DEU|05040408    |     6|  |    angegeben, wird nach BetΣtigung der F10-Taste (HELP-Taste) die  Meldung
  527. DEU|05040408    |     7|  |    und  bei einer weiteren BetΣtigung der F10-Taste (HELP-Taste) die Maske
  528. DEU|05040408    |     8|  |    angezeigt.
  529. DEU|05040408    |    10|  |
  530. DEU|05040408    |    11| E|    FORM test.help_msg
  531. DEU|05040408    |    12| E|    LAYOUT
  532. DEU|05040408    |    13| E|     ...
  533. DEU|05040408    |    14| E|    _func
  534. DEU|05040408    |    15| E|    ENDLAYOUT
  535. DEU|05040408    |    16| E|    ACCEPT ( ENTER, F10='HILFE');
  536. DEU|05040408    |    17|SE|    FIELD func
  537. DEU|05040408    |    19| E|       HELP MSG
  538. DEU|05040408    |    20| E|           'Die Menⁿpunkte beschreiben die m÷glichen AktivitΣten'
  539. DEU|05040408    |    21| E|       HELP FORM
  540. DEU|05040408    |    22| E|           menue_info;
  541. DEU|05040408    |    23|  |
  542. DEU|05040408    |    25|RI|                                                          ##051111->^Syntax
  543. DEU|05040409    |     1|  |    FIELD/OFFSET    :  Vektorkomponenten mit dynamischem Index
  544. DEU|05040409    |     3|  |
  545. DEU|05040409    |     4| E|    FORM kunde.name
  546. DEU|05040409    |     5| E|    LAYOUT GRAPHIC = *
  547. DEU|05040409    |     6| E|    Knr     *       Nachname    *
  548. DEU|05040409    |     7| E|    *****************************
  549. DEU|05040409    |     8| E|    _1      * _nachname(1..4)   *
  550. DEU|05040409    |     9| E|    _       * _                 *
  551. DEU|05040409    |    10| E|    _       * _                 *
  552. DEU|05040409    |    11| E|    _       * _                 *
  553. DEU|05040409    |    13| E|    ENDLAYOUT
  554. DEU|05040409    |    15| E|    FIELD  1:knr(1..4), nachname(1..4) OFFSET  x;
  555. DEU|05040409    |    16|  |
  556. DEU|05040409    |    17|S |    Wenn der Ausdruck hinter OFFSET (also hier die Variable x)  einen  Wert
  557. DEU|05040409    |    19|  |    hat,   der   gr÷▀er  als  0  ist,  dann  erscheint  im  Maskenfeld  der
  558. DEU|05040409    |    20|  |    Vektorkomponente   'nachname(1)'   der   Wert   der    Vektorkomponente
  559. DEU|05040409    |    21|  |    'nachname(1+x)'.
  560. DEU|05040409    |    23|  |    Diese Regel gilt entsprechend fⁿr alle Vektorkomponenten, die in dieser
  561. DEU|05040409    |    24|  |    FIELD-Anweisung angesprochen sind.
  562. DEU|05040409    |    26|  |    An Stelle der Variablen x sind auch numerische Ausdrⁿcke m÷glich.
  563. DEU|05040409    |    28|RI|                                                          ##051113->^Syntax
  564. DEU|05040410    |     1|  |    FIELD/ATTR      :  Zuordnung von Feldattributen
  565. DEU|05040410    |     3|  |    Mit  Hilfe  der FIELD/ATTR-Anweisung lΣ▀t sich jedem Ein- oder Ausgabe-
  566. DEU|05040410    |     4|  |    Feld explizit ein Attribut zuordnen, ohne da▀ ein weiters  Zeichen  vor
  567. DEU|05040410    |     5|  |    das  Feld im LAYOUT plaziert werden mu▀. Die Textfelder innerhalb einer
  568. DEU|05040410    |     6|  |    Maske k÷nnen jedoch weiterhin  nur  mit  Hilfe  der  Steuerzeichen  mit
  569. DEU|05040410    |     7|  |    bestimmten Attributen ausgegeben werden.
  570. DEU|05040410    |     8|  |
  571. DEU|05040410    |     9| E|    LAYOUT  UNDERL=+
  572. DEU|05040410    |    10| E|     ..
  573. DEU|05040410    |    11| E|      +Nachname : <nachname
  574. DEU|05040410    |    12| E|     ..
  575. DEU|05040410    |    13| E|    ENDLAYOUT
  576. DEU|05040410    |    15| E|    FIELD nachname SIZE 18 ATTR INV;
  577. DEU|05040410    |    16|S |
  578. DEU|05040410    |    19|RI|                                                          ##051114->^Syntax
  579. DEU|05040411    |     1|  |    FIELD/NOINPUT   :  Nicht ⁿberschreibbares Eingabefeld
  580. DEU|05040411    |     3|  |    Eine  hΣufige  Anwendung  von  Masken ist es, innerhalb einer Liste von
  581. DEU|05040411    |     4|  |    Feldern mit Hilfe des Cursors ein  bestimmtes  Feld  auszuwΣhlen,  ohne
  582. DEU|05040411    |     5|  |    dabei das Feld ⁿberschreiben zu wollen.
  583. DEU|05040411    |     7|  |    Die  Option  NOINPUT  sorgt  dafⁿr,  da▀  das im Layout als Eingabefeld
  584. DEU|05040411    |     8|  |    definierte Feld nicht  ⁿberschreibbar  ist,  jedoch  durch  den  Cursor
  585. DEU|05040411    |     9|  |    ausgewΣhlt werden kann.
  586. DEU|05040411    |    10|  |
  587. DEU|05040411    |    11| E|    FORM test.noinp
  588. DEU|05040411    |    12| E|     LAYOUT
  589. DEU|05040411    |    14| E|     _Z(1..5)
  590. DEU|05040411    |    15| E|     _
  591. DEU|05040411    |    16| E|     _
  592. DEU|05040411    |    17|SE|     _
  593. DEU|05040411    |    19| E|     _
  594. DEU|05040411    |    21| E|     ENDLAYOUT
  595. DEU|05040411    |    22| E|     ACCEPT ( ENTER, F3= 'END' );
  596. DEU|05040411    |    24| E|     SPECIALATTR CURSORLINE INV;
  597. DEU|05040411    |    25| E|     FIELD Z(1..5) NOINPUT;
  598. DEU|05040411    |    26| E|     CONTROL CASE $KEY OF
  599. DEU|05040411    |    27| E|          ENTER : CALL PROC anzeigen (Z($CURSOR));
  600. DEU|05040411    |    28| E|          F3    : RETURN;
  601. DEU|05040411    |    29| E|     END;
  602. DEU|05040411    |    30|  |
  603. DEU|05040411    |    32|RI|                                                          ##051184->^Syntax
  604. DEU|050405      |     1|  |    AUTOPAGE, PAGE : BlΣtterunterstⁿtzung
  605. DEU|050405      |     3|  |    Das  BlΣttern  in Masken ist dann n÷tig, wenn eine Maske gr÷▀er ist als
  606. DEU|050405      |     4|  |    der Bildschirmausschnitt, in dem sie angezeigt wird. Es  gibt  folgende
  607. DEU|050405      |     5|  |    M÷glichkeiten, in Masken zu blΣttern:
  608. DEU|050405      |     7|  |    1.  Man verwendet in der CONTROL-Anweisung der Maske die Anweisung PAGE
  609. DEU|050405      |     8|  |    UP, PAGE DOWN, PAGE LEFT und PAGE RIGHT.
  610. DEU|050405      |    10|  |
  611. DEU|050405      |    11| E|    CONTROL
  612. DEU|050405      |    12| E|       CASE $KEY OF
  613. DEU|050405      |    13| E|         UP   : PAGE UP;       (* eine Seite nach oben  *)
  614. DEU|050405      |    14| E|         DOWN : PAGE DOWN n;   (* n Zeilen nach unten   *)
  615. DEU|050405      |    15| E|                ...
  616. DEU|050405      |    16| E|       END;
  617. DEU|050405      |    17|S |
  618. DEU|050405      |    19|  |    2. Man verwendet die Anweisung AUTOPAGE, die selbstΣndig die Tasten mit
  619. DEU|050405      |    20|  |    den BlΣtterfunktionen belegt und das BlΣttern abhΣngig  von  der  Gr÷▀e
  620. DEU|050405      |    21|  |    des Bildschirmausschnittes nach allen Richtungen unterstⁿtzt.
  621. DEU|050405      |    23|  |     ...
  622. DEU|050405      |    24|  |    ENDLAYOUT
  623. DEU|050405      |    25|  |    ACCEPT ( ... );
  624. DEU|050405      |    26|  |    AUTOPAGE;
  625. DEU|050405      |    27|  |    FIELD ...
  626. DEU|050405      |    28|  |     ...
  627. DEU|050405      |    30|  |    FORM belegt fⁿr das BlΣttern mit AUTOPAGE ganz bestimmte Tasten. Werden
  628. DEU|050405      |    31|  |    diese  bereits  vom  Programm  belegt,  kann  FORM die Tasten nicht zum
  629. DEU|050405      |    32|  |    BlΣttern verwenden. Die Funktion ist dadurch ausgeschaltet.
  630. DEU|050405      |    34|  |    Bei Tastaturen mit hartgravierten BlΣttertasten werden diese  von  FORM
  631. DEU|050405      |    35|S |    zum BlΣttern aktiviert; dies gilt fⁿr alle BlΣtterrichtungen.
  632. DEU|050405      |    37|  |    Bei   Tastaturen,   die   nur   neun   Funktionstasten  haben,  mu▀  es
  633. DEU|050405      |    38|  |    hartgravierte  BlΣttertasten  geben,  die  FORM   bei   AUTOPAGE   dann
  634. DEU|050405      |    39|  |    automatisch aktiviert. In Masken mit expliziter Message oder Masken mit
  635. DEU|050405      |    40|  |    Menⁿleiste ist eine BlΣtterunterstⁿtzung durch AUTOPAGE nicht m÷glich.
  636. DEU|050405      |    43| I|                                                    ##051119AUTOPAGE-Syntax
  637. DEU|050405      |    44|RI|                                                    ##051124PAGE-Syntax
  638. DEU|050406      |     1|  |    PICK/PUT-Mechanismus in Masken
  639. DEU|050406      |     3|  |    Mit  Hilfe  der PICK/PUT-Anweisungen lassen sich Masken definieren, aus
  640. DEU|050406      |     4|  |    denen die Beispielwerte fⁿr Eingabefelder herausgepickt werden k÷nnen.
  641. DEU|050406      |     5|  |    PICK und PUT sind nur im CONTROL-Block von Masken m÷glich.
  642. DEU|050406      |     7|  |    Funktion von PICK ohne Argument:
  643. DEU|050406      |     8|  |      speichert den Wert des Feldes, auf welchem  der  Cursor  positioniert
  644. DEU|050406      |     9|  |      ist,   in   den   PICK-Puffer.  Steht  der  Cursor  nicht  auf  einem
  645. DEU|050406      |    10|  |      Eingabefeld, dann wird eine Fehlermeldung ausgegeben.
  646. DEU|050406      |    12|  |    Funktion von PICK mit Argument:
  647. DEU|050406      |    13|  |      speichert das Argument in den PICK-Puffer ab. ▄blicherweise wird  das
  648. DEU|050406      |    14|  |      Argument  in  AbhΣngigkeit  von  der  Cursorposition formuliert sein.
  649. DEU|050406      |    15|  |      Steht  der  Cursor  nicht  auf  einem  Eingabefeld,  dann  wird  eine
  650. DEU|050406      |    16|S |      Fehlermeldung ausgegeben.
  651. DEU|050406      |    19|  |
  652. DEU|050406      |    20| E|    HELPFORM tpick.test
  653. DEU|050406      |    21| E|    LAYOUT
  654. DEU|050406      |    22| E|        _1  <@menu(1)
  655. DEU|050406      |    23| E|        _   <@menu(2)
  656. DEU|050406      |    24| E|        _   <@menu(3)
  657. DEU|050406      |    25| E|    ENDLAYOUT
  658. DEU|050406      |    26| E|    FIELD  1:@choice(1..3);
  659. DEU|050406      |    27| E|    FIELD  @menu(1) INIT 'Einfⁿgen';
  660. DEU|050406      |    28| E|    FIELD  @menu(2) INIT '─ndern';
  661. DEU|050406      |    29| E|    FIELD  @menu(3) INIT 'L÷schen';
  662. DEU|050406      |    30| E|    ACCEPT ( ENTER, F3='ende' );
  663. DEU|050406      |    31| E|    CONTROL CASE $KEY OF
  664. DEU|050406      |    32| E|             ENTER: PICK(@menu($CURSOR));
  665. DEU|050406      |    33| E|             ELSE : RETURN;
  666. DEU|050406      |    34| E|            END;
  667. DEU|050406      |    35|S |
  668. DEU|050406      |    37|  |    Funktion von PUT ohne Argument :
  669. DEU|050406      |    39|  |      speichert den PICK-Puffer-Inhalt als Wert des Feldes, auf welchem der
  670. DEU|050406      |    40|  |      Cursor  positioniert  ist,  ab.  Steht  der  Cursor  nicht  auf einem
  671. DEU|050406      |    41|  |      Eingabefeld, dann wird eine Fehlermeldung ausgegeben.
  672. DEU|050406      |    44|  |    Funktion von PUT mit Argument :
  673. DEU|050406      |    46|  |      speichert den PICK-Puffer-Inhalt als Wert der gegebenen Variablen ab.
  674. DEU|050406      |    47|  |      Diese Variante wird dann ben÷tigt, wenn  ein  Ausgabefeld  mit  einem
  675. DEU|050406      |    48|S |      gepickten Wert belegt werden soll.
  676. DEU|050406      |    55|  |    FORM  tpick.m1
  677. DEU|050406      |    56|  |    LAYOUT
  678. DEU|050406      |    57|  |    _1           _2
  679. DEU|050406      |    58|  |    _            _
  680. DEU|050406      |    59|  |    _            _
  681. DEU|050406      |    60|  |    _            _
  682. DEU|050406      |    61|  |    ENDLAYOUT
  683. DEU|050406      |    62|  |    ACCEPT ( enter, f5='PUT',f10='PICK MASKE' );
  684. DEU|050406      |    63|  |    FIELD 1:anrede(1..4) HELP FORM p_anrede ( frame );
  685. DEU|050406      |    64|  |    FIELD 2:ort(1..4) HELP FORM p_ort ( frame );
  686. DEU|050406      |    65|  |    CONTROL
  687. DEU|050406      |    66|  |       CASE $KEY of
  688. DEU|050406      |    67|  |         F5: PUT;
  689. DEU|050406      |    68|  |       END;
  690. DEU|050406      |    70|  |    Um  die  Handhabung von PICK in Masken zu vereinfachen, kann eine Maske
  691. DEU|050406      |    71|SI|    mit der ##050610AUTOPUT-Option aufgerufen werden.
  692. DEU|050406      |    73|RI|                                                          ##051123->^Syntax
  693. DEU|050408      |     1|  |    ACCEPT : Ausl÷setaste aktivieren
  694. DEU|050408      |     3|  |    Mit Hilfe der ACCEPT-Anweisung kann man  die  Ausl÷setasten  bestimmen,
  695. DEU|050408      |     4|  |    die von der Maske akzeptiert werden sollen.
  696. DEU|050408      |     6|  |    Die zulΣssigen Ausl÷setasten sind :
  697. DEU|050408      |     7|  |      ENTER, F1, ..., F12, HELP, UP, DOWN
  698. DEU|050408      |     9|  |    Die  ACCEPT-Option  kann  sowohl  in  der Maskendefinition wie auch als
  699. DEU|050408      |    10|  |    Aufrufoption angegeben werden.
  700. DEU|050408      |    12|  |    Dabei gilt, da▀ ACCEPT als Aufrufoption die  ACCEPT-Definition  in  der
  701. DEU|050408      |    13|  |    Maske ⁿbersteuert.
  702. DEU|050408      |    15|  |    Wurde keine ACCEPT-Option gesetzt, dann akzeptiert die Maske nur ENTER.
  703. DEU|050408      |    17|S |    Im folgenden ein Beispiel:
  704. DEU|050408      |    19|  |    Maskendefinition:
  705. DEU|050408      |    20|  |    -----------------
  706. DEU|050408      |    21|  |
  707. DEU|050408      |    22| E|    FORM  test.acc_msk
  708. DEU|050408      |    23| E|    LAYOUT
  709. DEU|050408      |    24| E|       ...
  710. DEU|050408      |    25| E|    ENDLAYOUT
  711. DEU|050408      |    26| E|    ACCEPT (ENTER,F3='ENDE',F4='EINTRAG',F5='SUCHEN',F6='AENDERN' );
  712. DEU|050408      |    27|  |
  713. DEU|050408      |    29|  |    Aufruf:
  714. DEU|050408      |    30|  |    -------
  715. DEU|050408      |    31|  |    CALL FORM  ...( ACCEPT (ENTER, F3='ZURUECK', F5, F6 ));
  716. DEU|050408      |    34|  |    Resultierendes Tasten-Menⁿ:
  717. DEU|050408      |    35|S |    ---------------------------
  718. DEU|050408      |    37|  |                 3=ZURUECK 5=SUCHE 6=AENDERN
  719. DEU|050408      |    38|  |    ZusΣtzlich  zu den soweit beschriebenen Tasten, die FORM unabhΣngig vom
  720. DEU|050408      |    39|  |    Typ der Hardware voraussetzt, gibt es die M÷glichkeit weitere  von  der
  721. DEU|050408      |    40|  |    Installation abhΣngige Tasten zu bedienen.
  722. DEU|050408      |    42|  |    Maximal  sind  folgende  zusΣtzliche  Tastenliterale bedienbar: ENDKEY,
  723. DEU|050408      |    43|  |    CMDKEY, LEFTKEY und RIGHTKEY.
  724. DEU|050408      |    45|RI|                                                          ##051117->^Syntax
  725. DEU|050409      |     1|  |    IGNORE : Unterdrⁿckung der Eingabeprⁿfung
  726. DEU|050409      |     3|  |
  727. DEU|050409      |     4| E|    FORM test.ignore_form
  728. DEU|050409      |     5| E|    LAYOUT
  729. DEU|050409      |     6| E|     ... _knr... _kvname  ... _kname
  730. DEU|050409      |     7| E|    ENDLAYOUT
  731. DEU|050409      |     9| E|    ACCEPT ( F1='EINTRAG', F3='ZURUECK' );
  732. DEU|050409      |    11| E|    FIELD knr, kvname, kname INIT NULL
  733. DEU|050409      |    12| E|          CHECK  IS NOT NULL  ELSE 'Eingabe ist unvollstΣndig';
  734. DEU|050409      |    14| E|    IGNORE  kvname, kname WHEN  ( $KEY = F3 )
  735. DEU|050409      |    15|  |
  736. DEU|050409      |    17|S |    Falls der Benutzer nach der  Eingabe  die  F3-Taste  drⁿckt,  wird  die
  737. DEU|050409      |    19|  |    Eingabeprⁿfung  der  FIELD/CHECK-Option  fⁿr die Variablen 'kvname' und
  738. DEU|050409      |    20|  |    'kname' unterdrⁿckt.
  739. DEU|050409      |    22|  |    Bei vielen zu ignorierenden Feldern kann man auch die folgenden IGNORE-
  740. DEU|050409      |    23|  |    Varianten wΣhlen :
  741. DEU|050409      |    25|  |               IGNORE  ALL WHEN  ( $KEY = F3 )
  742. DEU|050409      |    27|  |    Hier wird kein Eingabefeld geprⁿft, wenn F3 betΣtigt wurde.
  743. DEU|050409      |    29|  |    Oder:
  744. DEU|050409      |    30|  |               IGNORE  ALL EXCEPT knr, kname  WHEN  ( $KEY = F3 )
  745. DEU|050409      |    31|  |    Hier wird die Eingabeprⁿfung  fⁿr  alle  Felder  au▀er  knr  und  kname
  746. DEU|050409      |    32|  |    unterdrⁿckt, wenn F3 betΣtigt wurde.
  747. DEU|050409      |    34|RI|                                                          ##051115->^Syntax
  748. DEU|050410      |     1|  |    KEYSWAP : Vertauschen der Tastenfunktionen
  749. DEU|050410      |     3|  |    Durch die KEYSWAP-Option lassen sich die Funktionen von je zwei Tasten
  750. DEU|050410      |     4|  |    miteinander vertauschen.
  751. DEU|050410      |     6|  |    So ist es m÷glich, die Tastenbelegung ohne zusΣtzliche ─nderungen an
  752. DEU|050410      |     7|  |    Masken und Routinen zu verΣndern.
  753. DEU|050410      |     9|  |    Die KEYSWAP-Option wirkt bis zum Ende des Programms oder bis zur
  754. DEU|050410      |    10|  |    nΣchsten KEYSWAP-Option.
  755. DEU|050410      |    12|  |    KEYSWAP wird entweder in der Maske hinter dem Layout-Teil oder als
  756. DEU|050410      |    13|S |    Routinenoption hinter dem Routinennamen angegeben.
  757. DEU|050410      |    19|  |    Beispiel 1:
  758. DEU|050410      |    21|  |    Ohne KEYSWAP
  759. DEU|050410      |    22|  |    ------------
  760. DEU|050410      |    23|  |         ACCEPT ( F10='HELP', F3='ENDE', F4='EINTRAG', F5='SUCHE' );
  761. DEU|050410      |    25|  |         liefert:
  762. DEU|050410      |    26|  |                  3=ENDE 4=EINTRAG 5=SUCHE 10=HELP
  763. DEU|050410      |    28|  |    mit KEYSWAP:
  764. DEU|050410      |    29|  |    ------------
  765. DEU|050410      |    30|  |         ACCEPT ( F10='HELP', F3='ENDE', F4='EINTRAG', F5='SUCHE' );
  766. DEU|050410      |    31|  |         KEYSWAP ( F10<->F1 )
  767. DEU|050410      |    33|  |         liefert:
  768. DEU|050410      |    34|S |                  1=HELP 3=ENDE 4=EINTRAG 5=SUCHE
  769. DEU|050410      |    37|  |    Beispiel 2:
  770. DEU|050410      |    39|  |    mit KEYSWAP:
  771. DEU|050410      |    40|  |    ------------
  772. DEU|050410      |    41|  |         ACCEPT ( F10='HELP', F3='ENDE', F4='EINTRAG', F5='SUCHE' );
  773. DEU|050410      |    42|  |         KEYSWAP ( F10<->F1, F2<->F3, F3<->F4, F4<->F5 )
  774. DEU|050410      |    44|  |         liefert:
  775. DEU|050410      |    45|  |                  1=HELP 2=ENDE 3=EINTRAG 4=SUCHE
  776. DEU|050410      |    47|RI|                                                          ##051155->^Syntax
  777. DEU|050411      |     1|  |    CONTROL : Die Maske als steuernder Modul
  778. DEU|050411      |     3|  |
  779. DEU|050411      |     4| E|    FORM  kunde.stammkarte
  780. DEU|050411      |     5| E|    LAYOUT
  781. DEU|050411      |     6| E|     ...
  782. DEU|050411      |     7| E|    ENDLAYOUT
  783. DEU|050411      |     9| E|    ACCEPT ( F3='ZURUECK',F4='EINTRAG',F5='AENDERN' );
  784. DEU|050411      |    10| E|    CONTROL  CASE  $KEY  OF
  785. DEU|050411      |    11| E|               F3 : RETURN;
  786. DEU|050411      |    12| E|               F4 : CALL PROC einfuegen;
  787. DEU|050411      |    13| E|               F5 : CALL PROC aendern;
  788. DEU|050411      |    14| E|             END;
  789. DEU|050411      |    15|  |
  790. DEU|050411      |    17|S |    Wenn  der  Benutzer  nach der Eingabe die F4-Taste drⁿckt, wird von der
  791. DEU|050411      |    19|  |    Maske aus die SQL-PL Routine 'kunde.einfuegen' aufgerufen.
  792. DEU|050411      |    21|  |    Innerhalb  der   CASE-Anweisung   dⁿrfen   RETURN-,   CALL-,   SWITCH-,
  793. DEU|050411      |    22|  |    SWITCHCALL-, PICK-, PUT-  und weitere CASE-Anweisungen stehen.
  794. DEU|050411      |    24|  |    Der  Effekt  der  CONTROL-Anweisung soll durch die folgende Σquivalente
  795. DEU|050411      |    25|  |    SQL-PL Routine verdeutlicht werden.
  796. DEU|050411      |    27|  |    PROC kunde.start
  797. DEU|050411      |    28|  |       ...
  798. DEU|050411      |    29|  |       REPEAT
  799. DEU|050411      |    30|  |           CALL FORM kunde.stammkarte;
  800. DEU|050411      |    31|  |           CASE  $KEY  OF
  801. DEU|050411      |    32|  |              F3 : RETURN;
  802. DEU|050411      |    33|  |              F4 : CALL PROC einfuegen;
  803. DEU|050411      |    34|  |              F5 : CALL PROC aendern;
  804. DEU|050411      |    35|S |           END
  805. DEU|050411      |    37|  |       UNTIL  $KEY = F3;
  806. DEU|050411      |    40|RI|                                                          ##051122->^Syntax
  807. DEU|050414      |     1|  |    GRAPHIC : Graphikzeichen in Masken
  808. DEU|050414      |     3|  |    In FORM kann bestimmt werden, ob eine Folge von Zeichen (senkrecht oder
  809. DEU|050414      |     4|  |    waagrecht) als durchgezogene Linie dargestellt werden soll oder nicht.
  810. DEU|050414      |     6|  |
  811. DEU|050414      |     7| E|     FORM box.test
  812. DEU|050414      |     8| E|     LAYOUT  GRAPHIC=*
  813. DEU|050414      |     9| E|      **************
  814. DEU|050414      |    10| E|      *            *
  815. DEU|050414      |    11| E|      *            *
  816. DEU|050414      |    12| E|      *            *
  817. DEU|050414      |    13| E|      *            *
  818. DEU|050414      |    14| E|      **************
  819. DEU|050414      |    15| E|     ENDLAYOUT
  820. DEU|050414      |    16|S |
  821. DEU|050414      |    19|  |    Das im Beispiel definierte Rechteck wird auf  graphikfΣhigen  Terminals
  822. DEU|050414      |    20|  |    mit    durchgezogenen    Linien   dargestellt.   Auf   Terminals   ohne
  823. DEU|050414      |    21|  |    GraphikfΣhigkeit erscheint die  waagrechte  Linie  als  Folge  von  '-'
  824. DEU|050414      |    22|  |    (Bindestrichen),  die  senkrechte  Linie als Folge von '|' (senkrechten
  825. DEU|050414      |    23|  |    Strichen) und die Ecken als '*'.
  826. DEU|050414      |    25|RI|                                                          ##051103->^Syntax
  827. DEU|050415      |     1|  |    MARK : Initialisierung der Cursorposition
  828. DEU|050415      |     3|  |    Normalerweise steht beim Aufruf einer Maske der Cursor auf  dem  ersten
  829. DEU|050415      |     4|  |    Eingabefeld  der Maske. Hat die Maske keine Eingabefelder, positioniert
  830. DEU|050415      |     5|  |    FORM den Cursor auf die linke, obere Ecke der Maske.  Soll  der  Cursor
  831. DEU|050415      |     6|  |    auf  einem anderen als dem ersten Eingabefeld positioniert werden, kann
  832. DEU|050415      |     7|  |    neben der Aufrufoption MARK die MARK-Anweisung innerhalb der Maske  zur
  833. DEU|050415      |     8|  |    Positionierung des Cursors verwendet werden.
  834. DEU|050415      |    10|  |    Die  beim  Aufruf angegebene MARK-Option ⁿbersteuert die MARK-Anweisung
  835. DEU|050415      |    11|  |    in der Maske.
  836. DEU|050415      |    12|  |
  837. DEU|050415      |    13| E|    ENDLAYOUT
  838. DEU|050415      |    14| E|       ...
  839. DEU|050415      |    15| E|    MARK ( 3 );
  840. DEU|050415      |    16|S |
  841. DEU|050415      |    19|RI|                                                          ##051116->^Syntax
  842. DEU|050416      |     1|  |    RETURNONLAST : Verlassen der Maske mit der Returntaste
  843. DEU|050416      |     3|  |    Eine Maske wird normalerweise  durch  BetΣtigung  einer  Funktionstaste
  844. DEU|050416      |     4|  |    verlassen.
  845. DEU|050416      |     6|  |    Die Anweisung (Direktive) RETURNONLAST bewirkt, da▀ die Maske verlassen
  846. DEU|050416      |     7|  |    wird, wenn der Cursor auf dem letzten Feld der Maske steht und die TAB-
  847. DEU|050416      |     8|  |    Taste  (oder  falls  vorhanden  die  NEXTFIELD-Taste) betΣtigt wird. In
  848. DEU|050416      |     9|  |    diesem Fall liefert die Maske ENTER als Wert von $KEY.
  849. DEU|050416      |    11|RI|                                                          ##051118->^Syntax
  850. DEU|050417      |     1|  |    HEADERLINES, BOTTOMLINES : Kopf- und Fu▀zeilen
  851. DEU|050417      |     3|  |    In Masken, die geblΣttert werden sollen, k÷nnen die ersten und  letzten
  852. DEU|050417      |     4|  |    Zeilen des Masken-Layouts als Rahmenzeilen definiert werden.
  853. DEU|050417      |     6|  |    Die  Angabe  von  HEADERLINES  bzw. BOTTOMLINES bestimmt die Anzahl der
  854. DEU|050417      |     7|  |    Kopf- bzw. Fu▀zeilen, die zu dem  festen  Rahmen  geh÷ren  sollen.  Der
  855. DEU|050417      |     8|  |    ⁿbrige Bereich der Maske wird fⁿr das BlΣttern verwendet.
  856. DEU|050417      |    11|  |      ...
  857. DEU|050417      |    12|  |      ENDLAYOUT
  858. DEU|050417      |    13|  |
  859. DEU|050417      |    14| E|      HEADERLINES (2);
  860. DEU|050417      |    15| E|      BOTTOMLINES (1);
  861. DEU|050417      |    16|S |
  862. DEU|050417      |    19|RI|                                                          ##051120->^Syntax
  863. DEU|050418      |     1|  |    SPECIALATTR : SituationsabhΣngige Anzeigeattribute
  864. DEU|050418      |     3|  |    Mit  Hilfe  der  Maskenverarbeitungsanweisung SPECIALATTR kann ein Feld
  865. DEU|050418      |     4|  |    situationsabhΣngig  mit  einem  bestimmten  Anzeigeattribut   angezeigt
  866. DEU|050418      |     5|  |    werden.
  867. DEU|050418      |     7|  |    Die  Anweisung  SPECIALATTR  CHECK bewirkt, da▀ das Feld, dessen CHECK-
  868. DEU|050418      |     8|  |    Bedingung nicht erfⁿllt ist, mit dem angegebenen  Attribut  dargestellt
  869. DEU|050418      |     9|  |    wird.
  870. DEU|050418      |    11|  |    Die  Anweisung  SPECIALATTR  INPUT  bewirkt,  da▀ alle momentan aktiven
  871. DEU|050418      |    12|  |    Eingabefelder mit dem angegebenen Anzeigeattribut angezeigt werden.
  872. DEU|050418      |    14|  |    Die Anweisung SPECIALATTR MSG bewirkt, da▀ die  automatisch  angezeigte
  873. DEU|050418      |    15|  |    Meldungszeile mit dem gewⁿnschten Anzeigeattribut erscheint.
  874. DEU|050418      |    17|S |    Die  Anweisung  SPECIALATTR CURSORLINE bewirkt, da▀ die Maskenzeile, in
  875. DEU|050418      |    19|  |    der der Cursor positioniert ist, in dem definierten Attribut  angezeigt
  876. DEU|050418      |    20|  |    wird.
  877. DEU|050418      |    22|  |    Die  SPECIALATTR-Anweisung  gilt fⁿr alle Felder der Maske und kann nur
  878. DEU|050418      |    23|  |    ein Mal pro Maske spezifiert werden. So k÷nnen die  oben  beschriebenen
  879. DEU|050418      |    24|  |    Beispiele in einer SPECIALATTR-Anweisung wie folgt definiert werden:
  880. DEU|050418      |    26|  |
  881. DEU|050418      |    27| E|    FORM kunde.stammkarte
  882. DEU|050418      |    28| E|    LAYOUT PROMPT = .
  883. DEU|050418      |    30| E|              KUNDEN-NR    : _knr
  884. DEU|050418      |    31| E|              ...
  885. DEU|050418      |    32| E|    ENDLAYOUT
  886. DEU|050418      |    34|SE|    FIELD knr CHECK BETWEEN 1000 and 9999;
  887. DEU|050418      |    37| E|    SPECIALATTR INPUT underl
  888. DEU|050418      |    38| E|                CHECK inv
  889. DEU|050418      |    39| E|                MSG ATTR12;
  890. DEU|050418      |    40|  |
  891. DEU|050418      |    42|RI|                                                          ##051121->^Syntax
  892. DEU|050419      |     1|  |    INSERTMODE : Anzeige des Eingabemodus
  893. DEU|050419      |     3|  |    Mit  der  Anweisung INSERTMODUS ist es m÷glich in der Maske anzeigen zu
  894. DEU|050419      |     4|  |    lassen, in welchem Eingabemodus (▄berschreiben bzw. Einfⁿgen) sich  die
  895. DEU|050419      |     5|  |    Tastatur befindet.
  896. DEU|050419      |     7|  |    Stellt   man  durch  Drⁿcken  der  INSERT-Taste  den  Eingabemodus  auf
  897. DEU|050419      |     8|  |    Einfⁿgen, so wird an der fⁿr POS angegebenen Position der  durch  LABEL
  898. DEU|050419      |     9|  |    definierte  Ausdruck  (Default:INSERT) im Attribut ATTR (Default:ATTR5)
  899. DEU|050419      |    10|  |    ausgegeben. Beim Zurⁿckschalten in der ▄berschreibmodus wird das  Label
  900. DEU|050419      |    11|  |    ausgeblendet.
  901. DEU|050419      |    13|  |
  902. DEU|050419      |    14| E|    FORM kunde.stammkarte
  903. DEU|050419      |    15| E|    LAYOUT
  904. DEU|050419      |    16| E|    <benutzer     KUNDEN-KARTE   <datum
  905. DEU|050419      |    17|SE|    ------------------------------------
  906. DEU|050419      |    19| E|          Kunden-Nr    :  _knr
  907. DEU|050419      |    20| E|              Vorname  :  _kvname
  908. DEU|050419      |    21| E|              Nachname :  _kname
  909. DEU|050419      |    23| E|          Kontostand   :  _(konto)
  910. DEU|050419      |    25| E|    ------------------------------------
  911. DEU|050419      |    26| E|    <MESSAGE
  912. DEU|050419      |    27| E|    ENDLAYOUT
  913. DEU|050419      |    29| E|    INSERTMODE ( POS (9,26), label ('EINFUEGE') );
  914. DEU|050419      |    30|  |
  915. DEU|050419      |    32|RI|                                                          ##051156->^Syntax
  916. DEU|050422      |     1|  |    BEFORE/AFTER FIELD
  917. DEU|050422      |     3|  |    Zur  Bearbeitung  der  Felder  stehen  bei  den Masken, neben den schon
  918. DEU|050422      |     4|  |    bekannten Anweisungen INIT, HELP MSG, HELP FORM, CHECK und DISPLAY, die
  919. DEU|050422      |     5|  |    Anweisungen BEFORE und AFTER FIELD zur Verfⁿgung.
  920. DEU|050422      |     7|  |    BEFORE FIELD und AFTER FIELD leiten einen Block von SQL-PL  Anweisungen
  921. DEU|050422      |     8|  |    ein.
  922. DEU|050422      |    10|  |    Die  Anweisungen,  die hinter BEFORE FIELD formuliert sind, werden dann
  923. DEU|050422      |    11|  |    ausgefⁿhrt, wenn das entsprechende Feld aktiviert wurde und  somit  fⁿr
  924. DEU|050422      |    12|  |    den Benutzer zum Schreiben freigegeben wird.
  925. DEU|050422      |    14|  |    In der Praxis werden hier hauptsΣchlich Fⁿhrungstexte fⁿr das jeweilige
  926. DEU|050422      |    15|  |    Feld spezifiziert werden.
  927. DEU|050422      |    17|S |     FIELD vorname BEFORE FIELD message := 'Vorname des Kunden';
  928. DEU|050422      |    19|  |    Es  k÷nnen  aber  auch  alle  anderen  in SQL-PL zulΣssigen Anweisungen
  929. DEU|050422      |    20|  |    verwendet  werden.  Hier  stehen   dem   Anwendungsprogrammierer   alle
  930. DEU|050422      |    21|  |    M÷glichkeiten offen, sogar eine REPORT- oder SQL-Anweisung.
  931. DEU|050422      |    23|  |    Wie  bei  BEFORE  FIELD  sind  bei  AFTER  FIELD  auch  alle  in SQL-PL
  932. DEU|050422      |    24|  |    zulΣssigen Anweisungen angebbar. Die hinter  AFTER  FIELD  formulierten
  933. DEU|050422      |    25|  |    Anweisungen  werden  dann ausgefⁿhrt, wenn das jeweilige Feld verlassen
  934. DEU|050422      |    26|  |    werden soll und die CHECK-Bedingung - falls vorhanden - erfⁿllt  worden
  935. DEU|050422      |    27|  |    ist.
  936. DEU|050422      |    29|  |    Die  Anweisungen  AFTER  FIELD  werden  nicht ausgefⁿhrt, wenn das Feld
  937. DEU|050422      |    30|  |    ⁿbersprungen wird. Ein Feld kann ⁿbersprungen werden, wenn der Benutzer
  938. DEU|050422      |    31|  |    es nicht ausgefⁿllt und statt dessen die NEXTFIELD-Taste betΣtigt hat.
  939. DEU|050422      |    33|RI|                                                          ##051140->^Syntax
  940. DEU|050423      |     1|  |    GROUP : Einteilung in Feldgruppen
  941. DEU|050423      |     3|  |    In  Masken  k÷nnen  Felder  zu  Gruppen  zusammengefa▀t  werden.   Dies
  942. DEU|050423      |     4|  |    erleichtert   es,   die   Felder  einer  Maske  verschiedenen  Tabellen
  943. DEU|050423      |     5|  |    zuzuordnen. Eine Maske ohne GROUP-Anweisung wirkt wie  eine  Maske  mit
  944. DEU|050423      |     6|  |    genau  einer  GROUP-Anweisung,  in der alle Felder der Maske aufgefⁿhrt
  945. DEU|050423      |     7|  |    sind.
  946. DEU|050423      |     9|  |    Wird in einer Maske eine GROUP-Anweisung formuliert, so  erwartet  FORM
  947. DEU|050423      |    10|  |    fⁿr  jedes  Feld  die  Zuordnung zu einer Gruppe. Die Felder, die nicht
  948. DEU|050423      |    11|  |    explizit in GROUP-Anweisungen aufgefⁿhrt sind, werden von FORM implizit
  949. DEU|050423      |    12|  |    einer Restgruppe zugeordnet, die als erste der Gruppen ausgefⁿhrt wird.
  950. DEU|050423      |    14|  |    Eine  Feldgruppe  wird  verlassen,  wenn   alle   Felder   der   Gruppe
  951. DEU|050423      |    15|  |    abgearbeitet   sind.   Dies   hΣngt   natⁿrlich   von   den   einzelnen
  952. DEU|050423      |    16|S |    Feldanweisungen ab, die definiert wurden.
  953. DEU|050423      |    19|RI|                                                          ##051141->^Syntax
  954. DEU|050424      |     1|  |    BEFORE/AFTER GROUP
  955. DEU|050424      |     3|  |    Entsprechend  der  Anweisungen  BEFORE/AFTER  FIELD  k÷nnen   fⁿr   die
  956. DEU|050424      |     4|  |    Feldgruppen  die  Anweisungen  BEFORE  GROUP und AFTER GROUP formuliert
  957. DEU|050424      |     5|  |    werden.
  958. DEU|050424      |     7|  |    Dabei gilt die EinschrΣnkung, da▀ ein Gruppenname  h÷chstens  in  einer
  959. DEU|050424      |     8|  |    Anweisung  BEFORE  GROUP  und  in einer Anweisung AFTER GROUP vorkommen
  960. DEU|050424      |     9|  |    darf.
  961. DEU|050424      |    12|RI|                                                          ##051141->^Syntax
  962. DEU|050425      |     1|  |    Die NEXTFIELD-Anweisung
  963. DEU|050425      |     3|  |    Die Reihenfolge, in der die Felder  ausgefⁿhrt  werden,  wird  entweder
  964. DEU|050425      |     4|  |    durch   ihre  Anordnung  im  Layout  oder  durch  die  Feld-Anweisungen
  965. DEU|050425      |     5|  |    bestimmt. Mit der NEXTFIELD-Anweisung, die in Masken  an  Stelle  einer
  966. DEU|050425      |     6|  |    beliebigen  SQL-PL  Anweisung  auftreten  kann,  ist  es  m÷glich,  die
  967. DEU|050425      |     7|  |    Abarbeitungsreihenfolge noch zusΣtzlich dynamisch zu verΣndern.
  968. DEU|050425      |    10|  |
  969. DEU|050425      |    11| E|    FORM test.nxt_fld
  970. DEU|050425      |    12| E|      LAYOUT
  971. DEU|050425      |    13| E|       Kontonr : _knr
  972. DEU|050425      |    14| E|       Nachname: _n_name
  973. DEU|050425      |    15| E|       Vorname : _v_name
  974. DEU|050425      |    17|SE|       Kontostand : _konto
  975. DEU|050425      |    19| E|      ENDLAYOUT
  976. DEU|050425      |    20| E|      GROUP a
  977. DEU|050425      |    21| E|         FIELD knr
  978. DEU|050425      |    22| E|            BEFORE FIELD
  979. DEU|050425      |    23| E|               message := 'Nummer des Kunden, falls bekannt'
  980. DEU|050425      |    24| E|            AFTER FIELD
  981. DEU|050425      |    25| E|               BEGIN
  982. DEU|050425      |    26| E|               SQL ( SELECT DIRECT name, vorname INTO :n_name, :v_name
  983. DEU|050425      |    27| E|                     FROM kunde
  984. DEU|050425      |    28| E|                     key knr = :knr );
  985. DEU|050425      |    29| E|               NEXTFIELD konto;
  986. DEU|050425      |    30| E|               END;
  987. DEU|050425      |    31| E|         FIELD n_name ...
  988. DEU|050425      |    32| E|         FIELD v_name ...
  989. DEU|050425      |    33| E|         FIELD konto ...
  990. DEU|050425      |    34| E|      END;
  991. DEU|050425      |    35|S |
  992. DEU|050425      |    37|  |    Der Feldname, der in der NEXTFIELD-Anweisung verwendet  wird,  mu▀  ein
  993. DEU|050425      |    38|  |    Feld der Maske bezeichnen.
  994. DEU|050425      |    40|  |    Die Anweisung NEXTFIELD bewirkt, da▀ das angegebene Feld beim Verlassen
  995. DEU|050425      |    41|  |    den  Feldes  als  Folgefeld  angesprungen wird, unabhΣngig davon ob die
  996. DEU|050425      |    42|  |    NEXTFIELD Anweisung bei BEFORE FIELD oder  bei  AFTER  FIELD  definiert
  997. DEU|050425      |    43|  |    wurde.
  998. DEU|050425      |    45|RI|                                                          ##051144->^Syntax
  999. DEU|050426      |     1|  |    Die NEXTGROUP-Anweisung
  1000. DEU|050426      |     3|  |    Die  Reihenfolge,  in der die Gruppen ausgefⁿhrt werden, wird durch die
  1001. DEU|050426      |     4|  |    Reihenfolge der  GROUP-Anweisungen  bestimmt.  Die  NEXTGROUP-Anweisung
  1002. DEU|050426      |     5|  |    dient  dem  Fall,  da▀  diese  Reihenfolge  z. B.  abhΣngig  von  einer
  1003. DEU|050426      |     6|  |    Bedingung geΣndert werden soll. Ebenso wie die NEXTFIELD-Anweisung kann
  1004. DEU|050426      |     7|  |    auch die NEXTGROUP-Anweisung an beliebiger Stelle stehen.
  1005. DEU|050426      |     9|  |    Der Gruppenname, der in der NEXTGROUP-Anweisung verwendet wird, mu▀ mit
  1006. DEU|050426      |    10|  |    der GROUP-Anweisung in derselben Maske  definiert  sein,  sonst  meldet
  1007. DEU|050426      |    11|  |    FORM beim Abspeichern einen ▄bersetzungsfehler.
  1008. DEU|050426      |    13|RI|                                                          ##051145->^Syntax
  1009. DEU|050427      |     1|  |    NOAUTONEXT-Felder
  1010. DEU|050427      |     3|  |         FIELD name NOAUTONEXT
  1011. DEU|050427      |     5|  |    Diese  Option  gibt  an,  da▀  der Cursor beim Vollschreiben des Feldes
  1012. DEU|050427      |     6|  |    'name' nicht automatisch auf das nΣchste Eingabefeld positioniert wird.
  1013. DEU|050427      |     9|RI|                                                          ##051146->^Syntax
  1014. DEU|050428      |     1|  |    SCROLLFIELD   : Verschieben von Vektorbereichen
  1015. DEU|050428      |     3|  |    Fⁿr jeden Vektorbereich  mit  OFFSET-Option,  der  als  Eingabefeld  im
  1016. DEU|050428      |     4|  |    Layout  definiert ist und durch BetΣtigung der Cursor-Tasten verschoben
  1017. DEU|050428      |     5|  |    werden soll, wird die  SCROLLFIELD-Anweisung  innerhalb  der  Anweisung
  1018. DEU|050428      |     6|  |    AFTER FIELD definiert.
  1019. DEU|050428      |     8|  |    Die  SCROLLFIELD-Anweisung  erwartet  als erstes Argument die Variable,
  1020. DEU|050428      |     9|  |    die bei der OFFSET-Option angegeben wurde.
  1021. DEU|050428      |    11|  |    Als zweites - optionales - Argument der SCROLLFIELD-Anweisung kann  die
  1022. DEU|050428      |    12|  |    maximale  Anzahl  der  Werte  angegeben  werden.  Sonst  wird  255  als
  1023. DEU|050428      |    13|  |    Listenende angenommen.
  1024. DEU|050428      |    15|  |    Als drittes optionales Argument kann die Anzahl  der  Zeilen  angegeben
  1025. DEU|050428      |    16|S |    werden, die als BlΣttereinheit bei der -Taste verwendet werden soll.
  1026. DEU|050428      |    19|  |    Will  man  innerhalb  der  EintrΣge  direkt ans Ende oder an den Anfang
  1027. DEU|050428      |    20|  |    gelangen, so kann man in der zweiten Klammer der  SCROLLFIELD-Anweisung
  1028. DEU|050428      |    21|  |    hinter  den  Schlⁿsselworten  TOPKEY  und  BOTTOMKEY die Tasten hierfⁿr
  1029. DEU|050428      |    22|  |    definieren.
  1030. DEU|050428      |    24|  |
  1031. DEU|050428      |    25| E|    FORM kunde.auswahl
  1032. DEU|050428      |    26| E|     LAYOUT
  1033. DEU|050428      |    27| E|     _auswahl(1..5)
  1034. DEU|050428      |    28| E|     _
  1035. DEU|050428      |    29| E|     _
  1036. DEU|050428      |    30| E|     _
  1037. DEU|050428      |    31| E|     _
  1038. DEU|050428      |    32| E|     ENDLAYOUT
  1039. DEU|050428      |    33| E|     SPECIALATTR INPUT INV;
  1040. DEU|050428      |    35|SE|     FIELD auswahl(1..5)
  1041. DEU|050428      |    37| E|              OFFSET x
  1042. DEU|050428      |    38| E|              AFTER  FIELD  SCROLLFIELD ( x, max_anzahl, $screenlns
  1043. DEU|050428      |    39| E|                               ( TOPKEY F7, BOTTOMKEY F8 );
  1044. DEU|050428      |    40|  |
  1045. DEU|050428      |    42|RI|                                                          ##051185->^Syntax
  1046. DEU|050429      |     1|  |    KEYS          : Tastenzuordnung
  1047. DEU|050429      |     3|  |    In FORM werden einer Reihe von Tasten bestimmte Funktionen  zugeordnet.
  1048. DEU|050429      |     4|  |    Beispielsweise  l÷st  die  HELP-Taste  die  Ausfⁿhrung  der FIELD/HELP-
  1049. DEU|050429      |     5|  |    Anweisung aus. Auch bei der AUTOPAGE-Anweisung werden bestimmten Tasten
  1050. DEU|050429      |     6|  |    die BlΣtterfunktionen zugeordnet.
  1051. DEU|050429      |     8|  |    Die KEYS-Anweisung erm÷glicht es, den Funktionen HELP, MENU, UP,  DOWN,
  1052. DEU|050429      |     9|  |    LEFT  und  RIGHT eine oder mehrere Tasten als Ausl÷setasten zuzuordnen.
  1053. DEU|050429      |    10|  |    Die Funktion MENU  bezeichnet  die  Taste,  die  den  Wechsel  zwischen
  1054. DEU|050429      |    11|  |    Menⁿleiste und Maske ausl÷st.
  1055. DEU|050429      |    13|  |
  1056. DEU|050429      |    14| E|     KEYS ( UP   = F7  |  UPKEY
  1057. DEU|050429      |    15| E|            DOWN = F8  |  DOWNKEY
  1058. DEU|050429      |    16| E|            HELP = F1  |  HELPKEY )
  1059. DEU|050429      |    17|S |
  1060. DEU|050429      |    19|RI|                                                          ##051186->^Syntax
  1061. DEU|0505        |     1|  |    Struktur einer Maske
  1062. DEU|0505        |     3|  |    FORM kunde.stammkarte          -> Dies ist die Maske 'stammkarte',
  1063. DEU|0505        |     4|  |                                   -> die Maske geh÷rt zum Programm 'kunde'
  1064. DEU|0505        |     5|  |    LAYOUT                         -> Hier beginnt die Layoutzeichnung.
  1065. DEU|0505        |     6|  |      ...                          -> Hier werden Ein-/Ausgabefelder
  1066. DEU|0505        |     7|  |      ...                          -> und beliebige Texte definiert.
  1067. DEU|0505        |     8|  |    ENDLAYOUT                      -> Hier endet die Layoutzeichnung.
  1068. DEU|0505        |    10|  |    GROUP ..
  1069. DEU|0505        |    11|  |      FIELD                        -> Bei BEFORE/AFTER bestimmt man, was beim
  1070. DEU|0505        |    12|  |         BEFORE FIELD ...          -> Ein- und Austritt eines Feldes oder einer
  1071. DEU|0505        |    13|  |         AFTER  FIELD ...          -> Gruppe zu geschehen hat.
  1072. DEU|0505        |    14|  |      FIELD ...;                   -> Alle anderen Maskenanweisungen sind auch
  1073. DEU|0505        |    15|  |    END;                           -> verwendbar ( IGNORE, ACCEPT oder ACTIONBAR,
  1074. DEU|0505        |    16|  |                                   -> HEADERLINES, BOTTOMLINES ...).
  1075. DEU|0505        |    17|S |    AFTER GROUP ..                 -> In allen BEFORE/AFTER -Anweisungen sind
  1076. DEU|0505        |    19|  |      BEGIN ... END;               -> beliebige SQL-PL Anweisungen m÷glich.
  1077. DEU|0505        |    20|RI|                                                          ##051102->^Syntax
  1078. DEU|0506        |     1|  |                     Aurufoptionen bei Masken :
  1079. DEU|0506        |     2|  |                     -------------------------
  1080. DEU|0506        |     4| M|        #01ACCEPT^^^^^: EinschrΣnkung der erlaubten Ausl÷setasten
  1081. DEU|0506        |     5| M|        #02ATTR^^^^^^^: ▄bersteuerung der Attribute von Feldern
  1082. DEU|0506        |     6| M|        #10AUTOPUT^^^^: Kopieren des PICK-Pufferinhalts
  1083. DEU|0506        |     7| M|        #08BACKGROUND^: Maske als Hintergrund speichern
  1084. DEU|0506        |     8| M|        #03CLEAR^^^^^^: Hintergrund l÷schen
  1085. DEU|0506        |     9| M|        #03FORMPOS^^^^: Linke obere Ecke des Maskenausschnitts
  1086. DEU|0506        |    10| M|        #03FRAME^^^^^^: Maske in einem Rahmen ausgeben
  1087. DEU|0506        |    11| M|        #04INPUT^^^^^^: Bestimmte Eingabefelder aktiv setzen
  1088. DEU|0506        |    12| M|        #05MARK^^^^^^^: Cursorpositionierung
  1089. DEU|0506        |    13| M|        #06NOINIT^^^^^: Unterdrⁿckung der FIELD/INIT-Option
  1090. DEU|0506        |    14| M|        #04NOINPUT^^^^: Bestimmte Eingabefelder inaktiv setzen
  1091. DEU|0506        |    15| M|        #07PRINT^^^^^^: Druckausgabe der Maske
  1092. DEU|0506        |    16| M|        #03SCREENPOS^^: Linke obere Ecke der Maske auf dem Bildschirm
  1093. DEU|0506        |    17|SM|        #03SCREENSIZE^: LΣnge und Breite des Ausschnitts
  1094. DEU|0506        |    19| M|        #09RESTORE^^^^: Wiederherstellung des Maskenhintergrunds
  1095. DEU|0506        |    20| M|        #11ACTION^^^^^: Aktivieren der Menⁿzeile
  1096. DEU|0506        |    21|RI|                                                          ##051125->^Syntax
  1097. DEU|050601      |     1|  |    ACCEPT  (ENTER,F1=<label>,...)  bewirkt, da▀ nur die angegebenen Tasten
  1098. DEU|050601      |     2|  |    mit den zugeh÷rigen Labels angezeigt werden.
  1099. DEU|050601      |     4|  |    Falls in der Maske bereits eine ACCEPT-Option definiert  ist,  so  wird
  1100. DEU|050601      |     5|  |    diese   Menge   der   erlaubten  Ausl÷setasten  ⁿbersteuert.  (m÷gliche
  1101. DEU|050601      |     6|  |    Ausl÷setasten: ENTER, F1 ... F12).
  1102. DEU|050601      |     8|  |    Allen Tasten au▀er ENTER k÷nnen Labels zugeordnet werden.
  1103. DEU|050601      |    10|  |    ACCEPT()  bewirkt,  da▀  die  Maske  ausgegeben  wird,  ohne  da▀  eine
  1104. DEU|050601      |    11|  |    Benutzer-Interaktion erwartet wird.
  1105. DEU|050601      |    13|  |
  1106. DEU|050601      |    14| E|    CALL FORM maske1 OPTIONS (ACCEPT (F1,F3='STOP',ENTER) );
  1107. DEU|050601      |    15|  |
  1108. DEU|050601      |    17|RI|                                                          ##051128->^Syntax
  1109. DEU|050602      |     1|  |         CALL FORM kunde ( ATTR ( name, INV ) );
  1110. DEU|050602      |     3|  |         CALL FORM kunde ( ATTR ( knr, ATTR15 ) );
  1111. DEU|050602      |     5|  |    ATTR  verΣndert  die  Anzeigeattribute des angegebenen Maskenfeldes fⁿr
  1112. DEU|050602      |     6|  |    diesen Maskenaufruf.
  1113. DEU|050602      |     8|  |    M÷gliche Attribute sind ATTR1,...,ATTR16  (HIGH,  HI,  LOW,  INV,  BLK,
  1114. DEU|050602      |     9|  |    UNDERL).
  1115. DEU|050602      |    11|RI|                                                          ##051129->^Syntax
  1116. DEU|050603      |     1|  |    FORMPOS (Z,S) bestimmt die Anfangsposition des Ausschnitts
  1117. DEU|050603      |     2|  |    aus einer Maske (Z)eile , (S)palte
  1118. DEU|050603      |     3|  |    Diese Option dient der abschnittsweisen Ausgabe der Maske.
  1119. DEU|050603      |     5| I|                                                          ##051131->^Syntax
  1120. DEU|050603      |     8|  |    SCREENSIZE (L,B) bestimmt die Gr÷▀e eines Fensters am Bildschirm
  1121. DEU|050603      |     9|  |    (L)Σnge , (B)reite
  1122. DEU|050603      |    11|  |    SCREENPOS (Z,S) bestimmt die Position eines Fensters am Bildschirm
  1123. DEU|050603      |    12|  |    (Z)eile , (S)palte
  1124. DEU|050603      |    14|  |    CLEAR bewirkt, da▀ der Maskenhintergrund gel÷scht wird.
  1125. DEU|050603      |    16|SI|                                                          ##051130->^Syntax
  1126. DEU|050603      |    19|  |    FRAME bewirkt, da▀ um die Maske ein Rahmen ausgegeben wird.
  1127. DEU|050603      |    20|  |    FRAME ( titel ) bewirkt, da▀ der Wert der Variablen titel
  1128. DEU|050603      |    21|  |    in die Mitte der oberen Linie des Rahmens eingeblendet wird.
  1129. DEU|050603      |    23|RI|                                                          ##051132->^Syntax
  1130. DEU|050604      |     1|  |    INPUT (fld,...)  bewirkt, da▀ nur die spezifizierten Felder
  1131. DEU|050604      |     2|  |    beschreibbar sind. Es k÷nnen Feldfolgenummern, Variablen und
  1132. DEU|050604      |     3|  |    Vektorbereiche angegeben werden.
  1133. DEU|050604      |     5|  |    INPUT()  Wird bei Input eine leere Liste angegeben, dann erscheinen
  1134. DEU|050604      |     6|  |    alle Felder der Maske als Ausgabefelder.
  1135. DEU|050604      |     8|  |    NOINPUT (fld,...) bewirkt, da▀ die spezifizierten Felder
  1136. DEU|050604      |     9|  |    N I C H T  beschreibbar sind. Es k÷nnen Feldfolgenummern, Variablen
  1137. DEU|050604      |    10|  |    und Vektorbereiche angegeben werden.
  1138. DEU|050604      |    12|  |    NOINPUT() ist nicht sinnvoll, da alle Eingabefelder unverΣndert
  1139. DEU|050604      |    13|  |    aktiv bleiben.
  1140. DEU|050604      |    15|  |            CALL FORM stammkarte ( INPUT (knr, ort(1..4), 10, 11 ));
  1141. DEU|050604      |    17|RI|                                                          ##051136->^Syntax
  1142. DEU|050605      |     1|  |    MARK (n) setzt die Schreibmarke beim Ausgeben der Maske auf das
  1143. DEU|050605      |     2|  |    n-te Eingabefeld in der Reihenfolge von links oben nach rechts unten.
  1144. DEU|050605      |     4|  |          CALL FORM eingabe OPTIONS ( MARK(4), INPUT(3,4,5) );
  1145. DEU|050605      |     7|  |    MARK(v) setzt die Schreibmarke beim Erscheinen der Maske auf das
  1146. DEU|050605      |     8|  |    Feld der Variablen v. Falls die Variable v nicht in der
  1147. DEU|050605      |     9|  |    Maske vorkommt, wird der Wert von v als Feldfolgenummer
  1148. DEU|050605      |    10|  |    interpretiert.
  1149. DEU|050605      |    12|  |         CALL FORM stammkarte OPTIONS ( MARK(knr) );
  1150. DEU|050605      |    14|  |    Nach dem Maskenaufruf gibt $CURSOR die Feldfolgenummer des
  1151. DEU|050605      |    15|  |    Eingabefeldes an, auf dem die Schreibmarke zuletzt stand.
  1152. DEU|050605      |    17|RI|                                                          ##051127->^Syntax
  1153. DEU|050606      |     1|  |    Die Option NOINIT unterdrⁿckt in der Maske definierte Variablen-
  1154. DEU|050606      |     2|  |    Initialisierungen. Dadurch erscheinen in den Feldern die aktuellen
  1155. DEU|050606      |     3|  |    Werte der Variablen.
  1156. DEU|050606      |     6|  |          CALL FORM stammkarte OPTIONS ( NOINIT );
  1157. DEU|050606      |     8|  |    oder kⁿrzer
  1158. DEU|050606      |    10|  |          CALL FORM stammkarte ( NOINIT );
  1159. DEU|050606      |    12|RI|                                                          ##051126->^Syntax
  1160. DEU|050607      |     1|  |    PRINT   ⁿbertrΣgt  die  aufgerufene  Maske  in  den  Spool-Bereich  des
  1161. DEU|050607      |     2|  |    Druckers. Am Programmende wird die Druckausgabe gestartet. Durch  PRINT
  1162. DEU|050607      |     3|  |    (  opt1 , opt2 , ... ) kann die Druckausgabe noch zusΣtzlich beeinflu▀t
  1163. DEU|050607      |     4|  |    werden. Dabei bewirkt :
  1164. DEU|050607      |     6|  |          CLOSE     die sofortige Ausgabe ⁿber den Drucker,
  1165. DEU|050607      |     7|  |          LINEFEED  das Erzeugen von Leerzeilen vor der Druckausgabe,
  1166. DEU|050607      |     8|  |          LINESPACE das Schreiben von Leerzeilen zwischen Druckzeilen,
  1167. DEU|050607      |     9|  |          NEWPAGE   die Ausgabe auf einer neuen Seite,
  1168. DEU|050607      |    10|  |          CPAGE     einen Seitenvorschub, abhΣngig von der Anzahl der
  1169. DEU|050607      |    11|  |                    freien Zeilen.
  1170. DEU|050607      |    12|  |          'X'       Aktiviert die Druckereinstellung 'X' der Setparameter
  1171. DEU|050607      |    13|  |                    fⁿr diesen Ausdruck
  1172. DEU|050607      |    16|  |       CALL FORM maske3 OPTIONS ( PRINT (LINEFEED 2, NEWPAGE));
  1173. DEU|050607      |    17|S |       CALL FORM maske4 ( PRINT ('X',LINESPACE 2));
  1174. DEU|050607      |    19|RI|                                                          ##051135->^Syntax
  1175. DEU|050608      |     1|  |    Die Option BACKGROUND bewirkt, da▀ die Maske  n i c h t  sofort auf dem
  1176. DEU|050608      |     2|  |    Bildschirm erscheint,  sondern  vielmehr  als  Hintergrund  gespeichert
  1177. DEU|050608      |     3|  |    wird.
  1178. DEU|050608      |     5|  |    Es k÷nnen beliebig viele Masken hintereinander mit der BACKGROUNDOption
  1179. DEU|050608      |     6|  |    ⁿberlagert  werden.  Die Bildschirmausgabe findet erst dann statt, wenn
  1180. DEU|050608      |     7|  |    eine Maske  o h n e  BACKGROUND-Option aufgerufen wird oder  wenn  eine
  1181. DEU|050608      |     8|  |    Bildschirmausgabe durch READ oder WRITE ausgel÷st wird.
  1182. DEU|050608      |    10|  |    Ebenso kann die Bildschirmausgabe durch den anschlie▀enden Aufruf einer
  1183. DEU|050608      |    11|  |    REPORT-Ausgabe  ausgel÷st  werden.  Dieser sollte dann sinnvoller Weise
  1184. DEU|050608      |    12|  |    nicht den ganzen Bildschirm belegen (siehe hierzu auch  Report-Kommando
  1185. DEU|050608      |    13|  |    WINDOW).
  1186. DEU|050608      |    15|RI|                                                          ##051133->^Syntax
  1187. DEU|050609      |     1|  |    Mit  der  RESTORE-Option  wird  der  Hintergrund  einer  Maske implizit
  1188. DEU|050609      |     2|  |    gesichert, so da▀ die Maske bei ihrem  Verschwinden  ihren  Hintergrund
  1189. DEU|050609      |     3|  |    wieder so herstellen kann, wie er vor ihrem Erscheinen war.
  1190. DEU|050609      |     5|  |    Bei  HELP-Masken,  die  in  der  FIELD-Anweisung  spezifiziert  werden,
  1191. DEU|050609      |     6|  |    verwendet FORM implizit die RESTORE-Option.
  1192. DEU|050609      |     9|  |       CALL FORM maske OPTIONS ( RESTORE );
  1193. DEU|050609      |    12|RI|                                                          ##051134->^Syntax
  1194. DEU|050610      |     1|  |    Die AUTOPUT-Option bewirkt, da▀ nach Verlassen der Maske  der  gepickte
  1195. DEU|050610      |     2|  |    Wert  automatisch  der  Variablen  zugewiesen  wird, auf deren Feld der
  1196. DEU|050610      |     3|  |    Cursor vor dem Aufruf der Maske stand. Auf diese  Weise  ist  die  PUT-
  1197. DEU|050610      |     4|  |    Anweisung innerhalb der CONTROL-Anweisung nicht mehr n÷tig, und fⁿr den
  1198. DEU|050610      |     5|  |    Endbenutzer  entfΣllt  das  zusΣtzliche  BetΣtigen  der  PUT-Taste.  Es
  1199. DEU|050610      |     6|  |    genⁿgt, den Wert mit PICK auszuwΣhlen.
  1200. DEU|050610      |     8|  |
  1201. DEU|050610      |     9| E|    FORM  tpick.m1
  1202. DEU|050610      |    10| E|    LAYOUT
  1203. DEU|050610      |    11| E|    _1           _2
  1204. DEU|050610      |    12| E|    _            _
  1205. DEU|050610      |    13| E|    _            _
  1206. DEU|050610      |    14| E|    ENDLAYOUT
  1207. DEU|050610      |    15| E|    ACCEPT ( enter, f5='PICK' );
  1208. DEU|050610      |    16| E|    FIELD 1:anrede(1..3) HELP FORM p_anrede ( FRAME, AUTOPUT );
  1209. DEU|050610      |    17|SE|    FIELD 2:ort(1..3) HELP FORM p_ort ( FRAME, AUTOPUT );
  1210. DEU|050610      |    19|  |
  1211. DEU|050610      |    21|  |    Die AUTOPUT-Option kann auch mit einer Variablen als  Argument  benutzt
  1212. DEU|050610      |    22|  |    werden.   Diese  Verwendung  ist  dann  sinnvoll,  wenn  der  mit  PICK
  1213. DEU|050610      |    23|  |    ⁿbernommene Wert nicht genau fⁿr die  aufrufende  Maske  bestimmt  ist,
  1214. DEU|050610      |    24|  |    sondern als Parameter aus der aufrufenden Maske gereicht werden soll.
  1215. DEU|050610      |    26|  |          CALL FORM auswahl OPTION ( AUTOPUT(@ausw) );
  1216. DEU|050610      |    28|RI|                                                          ##051157->^Syntax
  1217. DEU|050611      |     1|  |    Aktivieren der Menⁿzeile
  1218. DEU|050611      |     3|  |    Die Angabe der Aufrufoption ACTION bewirkt, da▀ das angegebene Feld der
  1219. DEU|050611      |     4|  |    Menⁿzeile direkt beim Aufruf der Maske aktiv ist.
  1220. DEU|050611      |     6|  |                 CALL FORM x OPTIONS ( ACTION ( 5 ));
  1221. DEU|050611      |     8|RI|                                                          ##051137->^Syntax
  1222. DEU|0507        |     1|  |    Parameter beim Maskenaufruf
  1223. DEU|0507        |     3|  |    Zur  Datenⁿbergabe  beim  SWITCH  k÷nnen  aktuelle  Parameter angegeben
  1224. DEU|0507        |     4|  |    werden. Die aktuellen Parameter  werden  den  in  der  Maskendefinition
  1225. DEU|0507        |     5|  |    angegebenen formalen Parametern zugewiesen.
  1226. DEU|0507        |     7|  |    Definition : FORM kunde.stammkarte PARMS (@knr,@datum)
  1227. DEU|0507        |     9|  |    Aufruf :     SWITCH kunde CALL FORM stammkarte PARMS (knr, DATE (yymmdd))
  1228. DEU|0507        |    11|  |    Als  aktuelle  Parameter  sind  sowohl  Variablen  als  auch  Ausdrⁿcke
  1229. DEU|0507        |    12|  |    erlaubt. Da es sich bei den Parametern um  Stellungsparameter  handelt,
  1230. DEU|0507        |    13|  |    k÷nnen aktuelle Parameter beim Aufruf ausgelassen werden, z.B.: PARMS (
  1231. DEU|0507        |    14|  |    , DATE(yymmdd)).
  1232. DEU|0507        |    16|  |    Werden  beim  Aufruf  mehr  Parameter  angegeben als im Modul definiert
  1233. DEU|0507        |    17|S |    sind, so werden diese einfach ignoriert.
  1234. DEU|0507        |    19|  |    Beim einfachen CALL ist zu beachten, da▀ die  aktuellen  Parameter  wie
  1235. DEU|0507        |    20|  |    Ein-/Ausgabeparameter behandelt werden.
  1236. DEU|0507        |    22|  |    Die Definition :
  1237. DEU|0507        |    23|  |                 FORM kunde.stammkarte PARMS ( @knr, @datum )
  1238. DEU|0507        |    25|  |    und der Aufruf :
  1239. DEU|0507        |    26|  |                 CALL FORM  stammkarte PARMS ( knr, DATE(yymmdd) );
  1240. DEU|0507        |    28|R |    Nach dem Aufruf kann die Variable knr einen verΣnderten Wert haben.
  1241. DEU|0508        |     1|  |                        Compileroptionen
  1242. DEU|0508        |     2|  |                        -----------------
  1243. DEU|0508        |     4| M|                        Die #01LIB-Option
  1244. DEU|0508        |     5|RM|                        Die #01WRAP-Option
  1245. DEU|050801      |     1|  |    Die LIB-Option
  1246. DEU|050801      |     2|  |              gibt  den  Namen  der  Funktionsbibliothek aus der die SQL-PL
  1247. DEU|050801      |     3|  |              Funktionen aufgerufen werden,  die  in  der  Maske  verwendet
  1248. DEU|050801      |     4|  |              werden.
  1249. DEU|050801      |     6|  |                    FORM  ...  OPTION ( LIB libname );
  1250. DEU|050801      |     8| I|                                                                    ##051153->^Syntax
  1251. DEU|050801      |    10|  |    Die WRAP-Option
  1252. DEU|050801      |    11|  |              bewirkt, da▀ mehrzeilige Felder einer Maske auf Terminals die
  1253. DEU|050801      |    12|  |              es erm÷glichen, als Fortsetzungsfeld betrieben werden.
  1254. DEU|050801      |    14|  |         FORM  ...  OPTION ( WRAP );
  1255. DEU|050801      |    16|RI|                                                          ##051154->^Syntax
  1256. DEU|0510        |     1|  |         Menⁿleiste mit Pulldown-Menⁿs
  1257. DEU|0510        |     2|  |         -----------------------------
  1258. DEU|0510        |     4| M|          #01Definition eines separaten MENU-Moduls
  1259. DEU|0510        |     5| M|          #02Definition der Menⁿleiste innerhalb einer Maske
  1260. DEU|0510        |     6| M|          #05Definition von Menⁿleiste und Pulldown-Menⁿs
  1261. DEU|0510        |     7| M|          #06Definition einer BUTTON-Leiste
  1262. DEU|0510        |     8| M|          #04Beispiele
  1263. DEU|0510        |     9|RM|          #03Bedienung einer Menⁿleiste mit Pulldown-Menⁿs
  1264. DEU|051001      |     1|  |    Definition eines separaten MENU-Moduls
  1265. DEU|051001      |     3|  |    Soll  in  einem  SQL-PL  Programm  in  verschiedenen Masken die gleiche
  1266. DEU|051001      |     4|  |    Menⁿleiste und die zugeh÷rigen Pulldown-Menⁿs benutzt werden,  so  kann
  1267. DEU|051001      |     5|  |    ein  separater  MENU-Modul  definiert  werden, der mit der INCLUDE MENU
  1268. DEU|051001      |     6|  |    Anweisung in eine Maske eingebunden wird.
  1269. DEU|051001      |     8|  |    In  dem  MENU-Modul  werden  hintereinander  die  Menⁿleiste  und   die
  1270. DEU|051001      |     9|  |    Pulldown-Menⁿs definiert.
  1271. DEU|051001      |    11|  |    Definition eines MENU-Moduls :
  1272. DEU|051001      |    12|  |
  1273. DEU|051001      |    13| E|    MENU allgemein.pd_menu
  1274. DEU|051001      |    14| E|    ACTIONBAR ('LIST',
  1275. DEU|051001      |    15| E|          'BEARBEITEN' : PULLDOWN bearb,
  1276. DEU|051001      |    16|SE|               'LOESCHEN' );
  1277. DEU|051001      |    19| E|    PULLDOWN bearb ( 'START',
  1278. DEU|051001      |    20| E|                     'EINTRAGEN' : PULLDOWN eintr );
  1279. DEU|051001      |    22| E|    PULLDOWN eintr ( 'NEU',
  1280. DEU|051001      |    23| E|                     'AENDERN' );
  1281. DEU|051001      |    24|  |
  1282. DEU|051001      |    27| I|                                                          ##051147->^Syntax
  1283. DEU|051001      |    30|  |    In  einer  Maske  mit  INCLUDE  MENU  Anweisung  mu▀ im Layout-Teil das
  1284. DEU|051001      |    31|  |    Schlⁿsselwort ACTIONBAR angegeben werden, wie bei  der  Definition  der
  1285. DEU|051001      |    32|  |    Menⁿleiste innerhalb einer Maske.
  1286. DEU|051001      |    35|S |    LAYOUT
  1287. DEU|051001      |    37|  |    ACTIONBAR
  1288. DEU|051001      |    38|  |     ...
  1289. DEU|051001      |    40|  |    ENDLAYOUT
  1290. DEU|051001      |    42|  |    INCLUDE MENU allgemein.pd_menu;
  1291. DEU|051001      |    43|  |     ...
  1292. DEU|051001      |    45|RI|                                                          ##051148->^Syntax
  1293. DEU|051002      |     1|  |    Definition der Menⁿleiste innerhalb einer Maske
  1294. DEU|051002      |     3|  |    Fⁿr kleinere Anwendungen oder zum Testen eine Menⁿs ist es sinnvoll das
  1295. DEU|051002      |     4|  |    Menⁿ direkt in der Maske zu definieren.
  1296. DEU|051002      |     6|  |    Hierzu  werden  die  Anweisungen  zur  Defintion  des Menⁿs (ACTIONBAR,
  1297. DEU|051002      |     7|  |    PULLDOWN-Anweisung) im Verarbeitungsteil der Maske formuliert.
  1298. DEU|051002      |    10|RI|                                                          ##051149->^Syntax
  1299. DEU|051003      |     1|  |    Bedienung einer Menⁿleiste mit Pulldown-Menⁿs
  1300. DEU|051003      |     3|  |    Beim Aufruf der Maske ist die Menⁿleiste nicht aktiviert und die  Maske
  1301. DEU|051003      |     4|  |    kann in der ⁿblichen Weise bearbeitet werden.
  1302. DEU|051003      |     6|  |    Es gibt folgende M÷glichkeiten, die Menⁿleiste zu aktivieren:
  1303. DEU|051003      |     8|  |    - Funktionstaste F12
  1304. DEU|051003      |    10|  |    Durch  die  Funktionstaste  F12  wird  die Menⁿleiste aktiviert und der
  1305. DEU|051003      |    11|  |    Cursor auf das erste Feld positioniert.
  1306. DEU|051003      |    13|  |    - CTRL/<char>
  1307. DEU|051003      |    15|  |    Durch gleichzeitiges BetΣtigen der CTRL-Taste und des Buchstabens,  der
  1308. DEU|051003      |    16|  |    als  Auswahlbuchstabe  hervorgehoben  dargestellt  ist, wird direkt die
  1309. DEU|051003      |    17|S |    entsprechende Aktion ausgewΣhlt. Falls es zu der Aktion  ein  Pulldown-
  1310. DEU|051003      |    19|  |    Menⁿ  gibt,  so  wird  dies heruntergeklappt, sonst liefert $ACTION die
  1311. DEU|051003      |    20|  |    ausgewΣhlte Aktion.
  1312. DEU|051003      |    22|  |    Wenn die Menⁿleiste aktiviert ist, kann  durch  die  Taste  des  ersten
  1313. DEU|051003      |    23|  |    Buchstabens des Labels die entsprechende Aktion gestartet werden, z. B.
  1314. DEU|051003      |    24|  |    wird  das Pulldown-Menⁿ des Feldes mit dem Label 'BEARBEITEN' durch die
  1315. DEU|051003      |    25|  |    Taste  b  aufgeklappt.  Der  jeweilige  Buchstabe   wird   vom   System
  1316. DEU|051003      |    26|  |    automatisch ermittelt und wird mit dem Attribut 'Auswahlzeichen passiv'
  1317. DEU|051003      |    27|  |    (ATTR8) oder 'Auswahlzeichen aktiv' (ATTR9) dargestellt.
  1318. DEU|051003      |    29|  |    In  einem aktiven Pulldown-Menⁿ k÷nnen die Funktionen analog ausgewΣhlt
  1319. DEU|051003      |    30|  |    und gestartet werden.
  1320. DEU|051003      |    32|  |    Wenn die Menⁿleiste aktiviert ist, kann der Cursor  zur  Auswahl  eines
  1321. DEU|051003      |    33|  |    Feldes  der  Menⁿleiste  durch  die  Cursortasten  auf  die  Felder der
  1322. DEU|051003      |    34|S |    Menⁿleiste positioniert werden.
  1323. DEU|051003      |    37|  |    Ist hinter einem Feld der Menⁿleiste ein  Pulldown-Menⁿ  definiert,  so
  1324. DEU|051003      |    38|  |    kann  es  aufgeklappt  werden,  indem man auf das Feld positioniert und
  1325. DEU|051003      |    39|  |    dann die ENTER Taste betΣtigt.
  1326. DEU|051003      |    41|  |    Befindet man sich in einem Pulldown-Menⁿ erster Stufe, so kann man  mit
  1327. DEU|051003      |    42|  |    Hilfe der NEXTFIELD- und PREVFIELD-Tasten bzw. CURSOR-RIGHT und CURSOR-
  1328. DEU|051003      |    43|  |    LEFT direkt zum jeweils rechten bzw. linken Pulldown-Menⁿ gelangen.
  1329. DEU|051003      |    45|  |    Felder  der  Menⁿleiste  oder  der  Pulldown-Menⁿs,  hinter  denen  ein
  1330. DEU|051003      |    46|  |    weiteres Pulldown-Menⁿ definiert ist, sind durch '..' gekennzeichnet.
  1331. DEU|051003      |    48|  |    Das jeweils aktive Feld wird mit dem  Attribut  'Funktionstaste  aktiv'
  1332. DEU|051003      |    49|  |    (ATTR11)  die  passiven Felder mit dem Attribut 'Funktionstaste passiv'
  1333. DEU|051003      |    50|  |    (ATTR10) dargestellt.
  1334. DEU|051003      |    52|  |    Wird eine Aktion eines Feldes der Menⁿleiste bzw.  eines  PulldownMenⁿs
  1335. DEU|051003      |    53|S |    angesto▀en,  z.B. der Cursor auf dieses Feld positioniert und die Taste
  1336. DEU|051003      |    55|  |    ENTER betΣtigt,  dann  wird  die  Kontrolle  an  die  zugeh÷rige  Maske
  1337. DEU|051003      |    56|  |    zurⁿckgegeben und die Dollarvariablen $ACTION, $FUNCTION bzw. auch $KEY
  1338. DEU|051003      |    57|  |    werden mit den Labels der ausgewΣhlten Felder belegt.
  1339. DEU|051003      |    59|  |    Will man in die Maske zurⁿck, ohne eine Aktion zu starten, so geschieht
  1340. DEU|051003      |    60|  |    das durch die Taste F12. Die Kontrolle wird nun an die zugeh÷rige Maske
  1341. DEU|051003      |    61|  |    zurⁿckgegeben,  und  die  Dollarvariablen  $ACTION,  $FUNCTION und $KEY
  1342. DEU|051003      |    62|  |    haben den Wert NULL.
  1343. DEU|051003      |    64|  |    Durch Drⁿcken der  Taste  END  werden  die  Pulldown-Menⁿs  stufenweise
  1344. DEU|051003      |    65|  |    geschlossen.  Hierbei  werden  die zugeh÷rigen Dollarvariablen mit NULL
  1345. DEU|051003      |    66|R |    belegt.
  1346. DEU|051004      |     1|  |    Beispiele
  1347. DEU|051004      |     4|  |
  1348. DEU|051004      |     5| E|    FORM menu_test.msk
  1349. DEU|051004      |     6| E|    LAYOUT
  1350. DEU|051004      |     7| E|    ACTIONBAR
  1351. DEU|051004      |     9| E|     ...
  1352. DEU|051004      |    11| E|    ENDLAYOUT
  1353. DEU|051004      |    13| E|    ACTIONBAR ( 'Bearbeiten' : PULLDOWN Bearb,
  1354. DEU|051004      |    14| E|                  ...     );
  1355. DEU|051004      |    16| E|    PULLDOWN Bearb ( 'Modul' : PULLDOWN fktn,
  1356. DEU|051004      |    17|SE|                     ...
  1357. DEU|051004      |    19| E|                     'Trigger' : PULLDOWN fktn );
  1358. DEU|051004      |    21| E|    PULLDOWN fktn ( 'anzeigen',
  1359. DEU|051004      |    22| E|                    ...
  1360. DEU|051004      |    23| E|                    'drucken' );
  1361. DEU|051004      |    25| E|    CONTROL CASE $ACTION OF
  1362. DEU|051004      |    26| E|            'Bearbeiten' :
  1363. DEU|051004      |    27| E|                   CASE $FUNCTION1 OF
  1364. DEU|051004      |    28| E|                    'Modul' :
  1365. DEU|051004      |    29| E|                          CASE $FUNCTION OF
  1366. DEU|051004      |    30| E|                               'anzeigen'  : CALL PROC mod_anz;
  1367. DEU|051004      |    31| E|                                 ...
  1368. DEU|051004      |    32| E|                               'drucken' : CALL PROC mod_druck;
  1369. DEU|051004      |    33| E|                          END;
  1370. DEU|051004      |    34| E|                    ...
  1371. DEU|051004      |    35|SE|                    'Trigger' :  ...
  1372. DEU|051004      |    37| E|                    END;
  1373. DEU|051004      |    38| E|            ...
  1374. DEU|051004      |    39| E|            END;
  1375. DEU|051004      |    40|  |
  1376. DEU|051004      |    45|  |    ACTIONBAR ( !ADM(s),
  1377. DEU|051004      |    46|  |                !BEARB(s): PULLDOWN bearb );
  1378. DEU|051004      |    48|  |    PULLDOWN bearb ( 'START','EINTRAGEN' );
  1379. DEU|051004      |    50|  |    CONTROL CASE $ACTION OF
  1380. DEU|051004      |    51|  |            !ADM(s)      : ...
  1381. DEU|051004      |    52|  |            !BEARB(s)    : CASE $FUNCTION OF
  1382. DEU|051004      |    53|S |                               'START'     : CALL FORM start;
  1383. DEU|051004      |    55|  |                               'EINTRAGEN' : CALL FORM eintr;
  1384. DEU|051004      |    56|  |                           END;
  1385. DEU|051004      |    57|  |            END;
  1386. DEU|051004      |    63|  |    ACTIONBAR (!AUF(s) : RELEASEKEY F4,
  1387. DEU|051004      |    64|  |               !AB(s)  : RELEASEKEY F5 );
  1388. DEU|051004      |    66|  |    CONTROL CASE $KEY OF
  1389. DEU|051004      |    67|  |            F4         : ...
  1390. DEU|051004      |    68|  |            F5         : ...
  1391. DEU|051004      |    69|R |            END;
  1392. DEU|051005      |     1|  |          Definition von Menⁿleiste und Pulldown-Menⁿs
  1393. DEU|051005      |     2|  |          --------------------------------------------
  1394. DEU|051005      |     4| M|          #01Definition der Menⁿleiste (ACTIONBAR)
  1395. DEU|051005      |     5| M|          #02Definition eines Pulldown-Menⁿs (PULLDOWN)
  1396. DEU|051005      |     6| M|          #03Definition von Fⁿhrungstexten (COMMENT-Klausel)
  1397. DEU|051005      |     7| M|          #04Dynamisches Passivieren eines Labels (WHEN-Klausel)
  1398. DEU|051005      |     8|RM|          #05Optische Gruppierung von Menⁿpunkten
  1399. DEU|05100501    |     1|  |    Definition der Menⁿleiste (ACTIONBAR)
  1400. DEU|05100501    |     3|  |    Eine Menⁿleiste besteht aus bis zu 11 Feldern,  die  hintereinander  in
  1401. DEU|05100501    |     4|  |    einer  Zeile  der  Maske  ausgegeben  werden.  Bei  der  Definition der
  1402. DEU|05100501    |     5|  |    Menⁿleiste werden  die  Labels  der  Felder  hinter  dem  Schlⁿsselwort
  1403. DEU|05100501    |     6|  |    ACTIONBAR angegeben. Au▀erdem wird durch die Angabe des Schlⁿsselwortes
  1404. DEU|05100501    |     7|  |    ACTIONBAR  im Layout der Maske die Position der Menⁿleiste in der Maske
  1405. DEU|05100501    |     8|  |    definiert. Die Layoutzeile, in der  die  Menⁿleiste  ausgegeben  werden
  1406. DEU|05100501    |     9|  |    soll, darf keine weiteren Felder enthalten.
  1407. DEU|05100501    |    11|  |    Den  Feldern  der Menⁿleiste entspricht die Dollarvariable $ACTION, die
  1408. DEU|05100501    |    12|  |    das aktivierte Feld der Menⁿleiste zurⁿckliefert.
  1409. DEU|05100501    |    16|  |
  1410. DEU|05100501    |    17|SE|    LAYOUT
  1411. DEU|05100501    |    19| E|    ACTIONBAR
  1412. DEU|05100501    |    21| E|     ...
  1413. DEU|05100501    |    23| E|    ENDLAYOUT
  1414. DEU|05100501    |    25| E|    ACTIONBAR ( 'LIST','BEARBEITEN','L╓SCHEN' );
  1415. DEU|05100501    |    26|  |
  1416. DEU|05100501    |    28|  |    Als Labels sind Stringkonstanten, sprachabhΣngige  Literale,  Variablen
  1417. DEU|05100501    |    29|  |    und Tastenliterale zugelassen.
  1418. DEU|05100501    |    31|  |    Die  Labels  k÷nnen bis zu 16 Zeichen lang sein. Wenn es kein folgendes
  1419. DEU|05100501    |    32|  |    Pulldown-Menⁿ gibt kann das Label 18 Zeichen enthalten.
  1420. DEU|05100501    |    34|  |    Es ist zu beachten, da▀ die Dollarvariablen $ACTION, $FUNCTION1,
  1421. DEU|05100501    |    35|S |     ... $FUNCTION4 und $FUNCTION bei Verwendung lΣngerer Labels den auf 16
  1422. DEU|05100501    |    37|  |    (bzw. 18) Zeichen abgeschnittenen Wert liefert.
  1423. DEU|05100501    |    39|  |    Ist in der Maske eine Menⁿleiste definiert, so wird implizit die Anzahl
  1424. DEU|05100501    |    40|  |    der Kopfzeilen auf die Zeile gesetzt, in der die Menⁿleiste  ausgegeben
  1425. DEU|05100501    |    41|  |    wird, d.h. die Kopfzeilen umfassen den Bereich der Maske von der ersten
  1426. DEU|05100501    |    42|  |    Zeile bis zur Menⁿleiste.
  1427. DEU|05100501    |    45|  |    ACTIONBAR WITH FRAME ( !LIST(s),
  1428. DEU|05100501    |    46|  |                           !BEARB(s),
  1429. DEU|05100501    |    47|  |                           !DATEN(s) );
  1430. DEU|05100501    |    49|  |    Die  WITH  FRAME-Option  bewirkt,  da▀  die  Menⁿleiste in einem Rahmen
  1431. DEU|05100501    |    50|  |    ausgegeben wird. Dabei ist zu beachten, da▀ die Zeile  vor  und  hinter
  1432. DEU|05100501    |    51|  |    dem  Schlⁿsselwort ACTIONBAR im Layout freigehalten werden soll, da sie
  1433. DEU|05100501    |    52|S |    sonst durch die Rahmenlinien ⁿberschrieben werden.
  1434. DEU|05100501    |    55|RI|                                                          ##051150->^Syntax
  1435. DEU|05100502    |     1|  |    Definition eines Pulldown-Menⁿ (PULLDOWN)
  1436. DEU|05100502    |     3|  |    Zu jedem Feld der Menⁿleiste kann ein Pulldown-Menⁿ  definiert  werden.
  1437. DEU|05100502    |     4|  |    Hierzu  wird hinter dem Label des Feldes in der ACTIONBARDefinition ein
  1438. DEU|05100502    |     5|  |    Verweis auf das Pulldown-Menⁿ angegeben und  das  Pulldown-Menⁿ  analog
  1439. DEU|05100502    |     6|  |    zur  Menⁿleiste  definiert.  Ebenso  kann zu jedem Feld eines Pulldown-
  1440. DEU|05100502    |     7|  |    Menⁿs ein weiteres Pulldown-Menⁿ definiert werden.
  1441. DEU|05100502    |    10|  |
  1442. DEU|05100502    |    11| E|    LAYOUT
  1443. DEU|05100502    |    12| E|    ACTIONBAR
  1444. DEU|05100502    |    14| E|     ...
  1445. DEU|05100502    |    16|SE|    ENDLAYOUT
  1446. DEU|05100502    |    19| E|    ACTIONBAR ('LIST',
  1447. DEU|05100502    |    20| E|               'BEARBEITEN' : PULLDOWN bearb,
  1448. DEU|05100502    |    21| E|               'L╓SCHEN' );
  1449. DEU|05100502    |    23| E|    PULLDOWN bearb ( 'START','EINTRAGEN' );
  1450. DEU|05100502    |    24|  |
  1451. DEU|05100502    |    26|  |    In einem Pulldown-Menⁿ k÷nnen bis zu 20 Labels  angegeben  werden,  die
  1452. DEU|05100502    |    27|  |    unter  dem  aufrufenden  Feld  der  Menⁿleiste untereinander ausgegeben
  1453. DEU|05100502    |    28|  |    werden.
  1454. DEU|05100502    |    30|  |    Die Pulldown-Menⁿs werden in  der  ersten  Stufe  nach  unten,  in  den
  1455. DEU|05100502    |    31|  |    weiteren  Stufen  nach  rechts  unten ⁿberlappend positioniert. Es sind
  1456. DEU|05100502    |    32|  |    insgesamt fⁿnf Stufen m÷glich.
  1457. DEU|05100502    |    34|  |    Wird ein Feld eines Pulldown-Menⁿs aktiviert, so wird das entsprechende
  1458. DEU|05100502    |    35|S |    Label in $FUNCTION zurⁿckgeliefert. Die Labels der Pulldown-Menⁿs unter
  1459. DEU|05100502    |    37|  |    einem Feld der Menⁿleiste mⁿssen deshalb eindeutig sein.
  1460. DEU|05100502    |    39|  |    $FUNCTION1, ... $FUNCTION4 liefern die zuletzt ausgewΣhlte Funktion der
  1461. DEU|05100502    |    40|  |    durch ihre Ziffer  bezeichneten  Pulldown-Menⁿ-Ebene.  Dadurch  ist  es
  1462. DEU|05100502    |    41|  |    m÷glich  gleiche Pulldown-Untermenⁿs mehrfach innerhalb einer Pulldown-
  1463. DEU|05100502    |    42|  |    Menⁿ-Hierarchie zu unterscheiden.
  1464. DEU|05100502    |    44|  |    Fⁿr die  Labels  der  Pulldown-Menⁿs  und  der  Menⁿleiste  gelten  die
  1465. DEU|05100502    |    45|  |    gleichen Bedingungen.
  1466. DEU|05100502    |    47|RI|                                                          ##051151->^Syntax
  1467. DEU|05100503    |     1|  |    Definition von Fⁿhrungstexten (COMMENT-Klausel)
  1468. DEU|05100503    |     3|  |    Zu  jedem  Label  der  Menⁿzeile  bzw.  eines  Pulldown-Menⁿs kann eine
  1469. DEU|05100503    |     4|  |    Kurzinformation hinter dem Schlⁿsselwort COMMENT definiert werden.  Die
  1470. DEU|05100503    |     5|  |    Kurzinformation  erscheint  in der Meldungszeile, sobald das zugeh÷rige
  1471. DEU|05100503    |     6|  |    Label aktiviert wird.
  1472. DEU|05100503    |     9|  |
  1473. DEU|05100503    |    10| E|    ACTIONBAR ('LIST': COMMENT 'Liste aller Objekte erstellen',
  1474. DEU|05100503    |    11| E|               'BEARBEITEN' :
  1475. DEU|05100503    |    12| E|                       COMMENT 'weitere Bearbeitungsfunktionen',
  1476. DEU|05100503    |    13| E|                       PULLDOWN bearb,
  1477. DEU|05100503    |    14| E|               'L╓SCHEN': COMMENT 'Objekt l÷schen );
  1478. DEU|05100503    |    16| E|    PULLDOWN bearb ( 'START' :     COMMENT !progstart,
  1479. DEU|05100503    |    17|SE|                     'EINTRAGEN' : COMMENT !objekt_eintrag );
  1480. DEU|05100503    |    19|  |
  1481. DEU|05100503    |    21|RI|                                                          ##051152->^Syntax
  1482. DEU|05100504    |     1|  |    Dynamisches Passivieren eines Labels (WHEN-Klausel)
  1483. DEU|05100504    |     3|  |    Ein Pulldown-Menⁿ stellt die Funktionen dar,  die  von  der  Maske  aus
  1484. DEU|05100504    |     4|  |    ausgewΣhlt  werden  k÷nnen. AbhΣngig von verschiedenen Bedingungen kann
  1485. DEU|05100504    |     5|  |    es wⁿnschenswert sein, gezielt Teile der Funktionen zu passivieren, sie
  1486. DEU|05100504    |     6|  |    aber dennoch anzuzeigen.
  1487. DEU|05100504    |     8|  |    Dies wird durch die WHEN-Bedingung erreicht,  die  hinter  jedem  Label
  1488. DEU|05100504    |     9|  |    eines   Pulldown-Menⁿs  angegeben  werden  kann.  AbhΣngig  von  dieser
  1489. DEU|05100504    |    10|  |    Bedingung  wird  das  entsprechende  Label  mit   dem   Anzeigeattribut
  1490. DEU|05100504    |    11|  |    Menⁿpunkt  passiv  (ATTR12)  angezeigt und die zugeh÷rige Funktion kann
  1491. DEU|05100504    |    12|  |    nicht ausgewΣhlt werden.
  1492. DEU|05100504    |    15|  |
  1493. DEU|05100504    |    16| E|    PULLDOWN eintr
  1494. DEU|05100504    |    17|SE|        ( 'Zurⁿck' :        WHEN  level > 1,
  1495. DEU|05100504    |    19| E|          'Trigger Funkt.' : WHEN modtype ='TRIGGER'
  1496. DEU|05100504    |    20| E|                                PULLDOWN trigger_funcs );
  1497. DEU|05100504    |    21|  |
  1498. DEU|05100504    |    23|  |    Hat im Beispiel die Variable level einen Wert kleiner oder gleich 1, so
  1499. DEU|05100504    |    24|  |    wird das Label 'Zurⁿck' passiv gesetzt. Hat die Variable modtype  nicht
  1500. DEU|05100504    |    25|  |    den  Wert  'TRIGGER', so wird das Label 'Trigger Funktionen' passiviert
  1501. DEU|05100504    |    26|  |    und es kann das folgende Pulldown-Menⁿ nicht aufgerufen werden.
  1502. DEU|05100504    |    29|RI|                                                          ##051152->^Syntax
  1503. DEU|05100505    |     1|  |    Optische Gruppierung von Menⁿpunkten
  1504. DEU|05100505    |     3|  |    Um  die  Menⁿpunkte  eines  Pulldown-Menⁿs  nach  logischen   Kriterien
  1505. DEU|05100505    |     4|  |    gruppieren  zu  k÷nnen,  kann in der Liste der Menⁿpunkte ein Semikolon
  1506. DEU|05100505    |     5|  |    anstelle eines Kommas angegeben  werden.  Das  Semikolon  bewirkt,  da▀
  1507. DEU|05100505    |     6|  |    zwischen  den  so getrennten Menⁿpunkten eine Trennungslinie ausgegeben
  1508. DEU|05100505    |     7|  |    wird.
  1509. DEU|05100505    |    10|  |
  1510. DEU|05100505    |    11| E|    PULLDOWN bearb ( 'Einfⁿgen',
  1511. DEU|05100505    |    12| E|                     'L÷schen';
  1512. DEU|05100505    |    13| E|                     'Importieren',
  1513. DEU|05100505    |    14| E|                     'Exportieren' );
  1514. DEU|05100505    |    15|  |
  1515. DEU|05100505    |    17|R |    In diesem Beispiel werden zwei Gruppen von Menⁿpunkten angezeigt.
  1516. DEU|051006      |     1|  |    Definition einer BUTTON-Leiste
  1517. DEU|051006      |     3|  |    Als  Alternative  zur  Menⁿleiste  kann  man  auch   eine   Reihe   von
  1518. DEU|051006      |     4|  |    Ausl÷sefeldern  (BUTTON-Leiste)  am  unteren  Maskenrand definieren.Die
  1519. DEU|051006      |     5|  |    BUTTON-Leiste  wird  wie  eine   Menⁿleiste   definiert.   Hinter   dem
  1520. DEU|051006      |     6|  |    Schlⁿsselwort  BUTTON  wird  die  Liste  der  Labels  angegeben  und im
  1521. DEU|051006      |     7|  |    Layoutteil der Maske wird durch das Schlⁿsselwort BUTTON  die  Position
  1522. DEU|051006      |     8|  |    der BUTTON-Leiste festgelegt.
  1523. DEU|051006      |    11|  |
  1524. DEU|051006      |    12| E|    FORM test.bttn
  1525. DEU|051006      |    13| E|     LAYOUT
  1526. DEU|051006      |    15| E|             BUTTON
  1527. DEU|051006      |    16|SE|     ENDLAYOUT
  1528. DEU|051006      |    19| E|     BUTTON ( 'Hilfe', 'Start', 'Abbruch' );
  1529. DEU|051006      |    20|  |
  1530. DEU|051006      |    23|RI|                                                          ##051187->^Syntax
  1531. DEU|0511        |     1|  |    FORM-Syntax
  1532. DEU|0511        |     2|R |    -----------
  1533. DEU|051101      |     1|  |    <form block oriented>  ::=
  1534. DEU|051101      |     2| I|             FORM  ##0203040101<prog^name>.##0203040102<mod^name>
  1535. DEU|051101      |     3| I|                   [OPTIONS ( ##051180<form^option> ,...)]
  1536. DEU|051101      |     4| I|                   [PARMS ( ##0203040104<parm^decl> ,...)]
  1537. DEU|051101      |     5| I|             [ ##0203040156<var^section> ]
  1538. DEU|051101      |     6| I|             ##051159<form^layout>
  1539. DEU|051101      |     7|RI|             [ ##051104<processing^stmt> ,... ]
  1540. DEU|051102      |     1|  |    <form field oriented>  ::=
  1541. DEU|051102      |     2| I|             FORM  ##0203040101<prog^name>.##0203040102<mod^name>
  1542. DEU|051102      |     3| I|                    OPTIONS ( FIELD [, ##051180<form^option> ,...] )
  1543. DEU|051102      |     4| I|                    [PARMS ( ##0203040104<parm^decl> ,...)]
  1544. DEU|051102      |     5| I|             [ ##0203040156<var^section> ]
  1545. DEU|051102      |     6| I|             ##051159<form^layout>
  1546. DEU|051102      |     7|RI|             [ ##051138<field^processing^stmt> ,... ]
  1547. DEU|051103      |     1|  |    <begin layout line> ::=
  1548. DEU|051103      |     2|  |              LAYOUT  [ <layout char spec> ... ]
  1549. DEU|051103      |     4|  |    <layout char spec>  ::=
  1550. DEU|051103      |     5|  |                <layout attr char spec>
  1551. DEU|051103      |     6|  |              | <layout inout char spec>
  1552. DEU|051103      |     7|  |              | <layout prompt char spec>
  1553. DEU|051103      |     8|  |              | <layout graphic char spec>
  1554. DEU|051103      |    10|  |    <layout attr char spec> ::=
  1555. DEU|051103      |    11| I|                ##051181<attr^name> = <spec char>
  1556. DEU|051103      |    13|  |    <layout inout char spec> ::=
  1557. DEU|051103      |    14|  |                IN  = <spec char>
  1558. DEU|051103      |    15|  |              | OUT = <spec char>
  1559. DEU|051103      |    17|S |    <layout prompt char spec> ::=
  1560. DEU|051103      |    19|  |                PROMPT = <spec char>
  1561. DEU|051103      |    21|  |    <layout graphic char spec> ::=
  1562. DEU|051103      |    22|R |                GRAPHIC = <spec char>
  1563. DEU|051104      |     1|  |    <processing stmt> ::=
  1564. DEU|051104      |     2| I|                ##051116<mark^stmt>
  1565. DEU|051104      |     3| I|              | ##051105<field^stmt>
  1566. DEU|051104      |     4| I|              | ##051115<ignore^stmt>
  1567. DEU|051104      |     5| I|              | ##051117<accept^stmt>
  1568. DEU|051104      |     6| I|              | ##051155<keyswap^stmt>
  1569. DEU|051104      |     7| I|              | ##051118<returnonlast^stmt>
  1570. DEU|051104      |     8| I|              | ##051119<autopage^stmt>
  1571. DEU|051104      |     9| I|              | ##051120<bottomlines^stmt>
  1572. DEU|051104      |    10| I|              | ##051120<headerlines^stmt>
  1573. DEU|051104      |    11| I|              | ##051121<special^attr^stmt>
  1574. DEU|051104      |    12| I|              | ##051122<control^stmt>
  1575. DEU|051104      |    13| I|              | ##051150<actionbar^stmt>
  1576. DEU|051104      |    14| I|              | ##051151<pulldown^stmt>
  1577. DEU|051104      |    15| I|              | ##051148<include^stmt>
  1578. DEU|051104      |    16| I|              | ##051156<insertmode^stmt>
  1579. DEU|051104      |    17|SI|              | ##051185<scrollfield^stmt>
  1580. DEU|051104      |    19|RI|              | ##051186<keys^stmt>
  1581. DEU|051105      |     1|  |    <field stmt> ::=
  1582. DEU|051105      |     2|  |              FIELD <field name>,... [<field proc spec>...]
  1583. DEU|051105      |     4|  |    <field name> ::=
  1584. DEU|051105      |     5| I|                ##0203040133<variable>
  1585. DEU|051105      |     6| I|              | ##0203040134<vector^slice>
  1586. DEU|051105      |     7|  |              | <field number>:<field name>
  1587. DEU|051105      |     9|  |    <field proc spec> ::=
  1588. DEU|051105      |    10| I|                ##051106<init^spec>
  1589. DEU|051105      |    11| I|              | ##051107<size^spec>
  1590. DEU|051105      |    12| I|              | ##051109<check^spec>
  1591. DEU|051105      |    13| I|              | ##051113<offset^spec>
  1592. DEU|051105      |    14| I|              | ##051112<display^spec>
  1593. DEU|051105      |    15| I|              | ##051111<help^spec>
  1594. DEU|051105      |    16| I|              | ##051110<domain^spec>
  1595. DEU|051105      |    17|SI|              | ##051114<attr^spec>
  1596. DEU|051105      |    19| I|              | ##051184<noinp^spec>
  1597. DEU|051105      |    20|  |    <init spec> ::=
  1598. DEU|051105      |    21|  |              INIT <assign expr>
  1599. DEU|051105      |    23|  |    <assign expr> ::=
  1600. DEU|051105      |    24|RI|             ##0203040136<expr> | NULL
  1601. DEU|051107      |     1|  |    <size spec> ::=
  1602. DEU|051107      |     2|RI|              SIZE ##0203040120<numeric>
  1603. DEU|051108      |     1|  |    <width spec> ::=
  1604. DEU|051108      |     2|RI|              WIDTH ##0203040120<numeric>
  1605. DEU|051109      |     1|  |    <check spec> ::=
  1606. DEU|051109      |     2|  |              CHECK <check pred>  / ELSE <msg spec> /
  1607. DEU|051109      |     4|  |    <check pred> ::=
  1608. DEU|051109      |     5|  |              <simple var pred>
  1609. DEU|051109      |     6|  |              | <vector var pred>
  1610. DEU|051109      |     7| I|              | ##0203040146<boolean^expr>
  1611. DEU|051109      |     9|  |    <simple var pred>   ::=
  1612. DEU|051109      |    10| I|              / ##0203040136<expr> / ##0203040148<check^cond>
  1613. DEU|051109      |    12|  |    <vector var pred>   ::=
  1614. DEU|051109      |    13| I|              <quant> ##0203040148<check^cond>
  1615. DEU|051109      |    15|  |    <quant> ::=
  1616. DEU|051109      |    16|R |              ALL | ANY | ONE
  1617. DEU|051110      |     1|  |    <domain spec> ::=
  1618. DEU|051110      |     2|  |              DOMAIN <domain name> [ ( <domain spec>,... ) ]
  1619. DEU|051110      |     4|  |    <domain spec> ::=
  1620. DEU|051110      |     5|R |              SIZE | WIDTH | INIT | CHECK
  1621. DEU|051111      |     1|  |    <help spec> ::=
  1622. DEU|051111      |     2| I|              HELP ##0203040117<help^form>
  1623. DEU|051111      |     3|  |              | HELP <help msg>
  1624. DEU|051111      |     4|  |              | HELP <help form> <help msg>
  1625. DEU|051111      |     6|RI|    <help msg > ::= ##0203040142<str^expr>
  1626. DEU|051112      |     1|  |    <display spec> ::=
  1627. DEU|051112      |     2|  |              DISPLAY <display spec>,...
  1628. DEU|051112      |     4|  |    <display spec> ::=
  1629. DEU|051112      |     5|  |              FORMAT ( '<char>...' )
  1630. DEU|051112      |     6|  |              | UPPER | LOWER
  1631. DEU|051112      |     7|R |              | RIGHT | LEFT
  1632. DEU|051113      |     1|  |    <offset spec> ::=
  1633. DEU|051113      |     2|RI|              OFFSET ##0203040136<expr>
  1634. DEU|051114      |     1|  |    <attr spec> ::=
  1635. DEU|051114      |     2|RI|            ATTR ##051181<attr^name>
  1636. DEU|051115      |     1|  |    <ignore spec> ::=
  1637. DEU|051115      |     2| I|              IGNORE  <ignore field spec>  WHEN  ##0203040146<boolean^expr>
  1638. DEU|051115      |     4|  |    <ignore field spec> ::=
  1639. DEU|051115      |     5|  |              <field name>,...
  1640. DEU|051115      |     6|  |              | ALL
  1641. DEU|051115      |     7|R |              | ALL EXCEPT <field name>,...
  1642. DEU|051116      |     1|  |    <mark stmt> ::=
  1643. DEU|051116      |     2|RI|               MARK ( ##0203040136<expr>) | MARK ( ##0203040133<variable> )
  1644. DEU|051117      |     1|  |    <accept stmt> ::=
  1645. DEU|051117      |     2|  |              ACCEPT  ( <key spec>,... )
  1646. DEU|051117      |     4|  |    <key spec> ::=
  1647. DEU|051117      |     5|  |              ENTER
  1648. DEU|051117      |     6| I|             | ##051183<basic^key> [ = <key label>]
  1649. DEU|051117      |     7| I|             | ##051183<additional^hardkey>
  1650. DEU|051117      |     9|  |    <key label> ::=
  1651. DEU|051117      |    10|R |             <char sequence>  maximal 8 Character
  1652. DEU|051118      |     1|  |    <returnonlast stmt> ::=
  1653. DEU|051118      |     2|R |               RETURNONLAST
  1654. DEU|051119      |     1|  |    <autopage stmt> ::=
  1655. DEU|051119      |     2|R |               AUTOPAGE
  1656. DEU|051120      |     1|  |    <headerlines stmt> ::=
  1657. DEU|051120      |     2| I|               HEADERLINES ( ##0203040136<expr> )
  1658. DEU|051120      |     3| I|             | HEADERLINES ( ##0203040133<variable> )
  1659. DEU|051120      |     5|  |    <bottomlines stmt> ::=
  1660. DEU|051120      |     6| I|               BOTTOMLINES ( ##0203040136<expr> )
  1661. DEU|051120      |     7|RI|             | BOTTOMLINES ( ##0203040133<variable> )
  1662. DEU|051121      |     1|  |    <special attr stmt> ::=
  1663. DEU|051121      |     2| I|               SPECIALATTR  [ INPUT ##051181<attr^name> ]
  1664. DEU|051121      |     3| I|                     [ CHECK ##051181<attr^name> ]
  1665. DEU|051121      |     4| I|                     [ MSG ##051181<attr^name> ]
  1666. DEU|051121      |     5|RI|                     [ CURSORLINE [ (<first pos>,<last pos>) ] ##051181<attr^name> ]
  1667. DEU|051122      |     1|  |    <control spec> ::=
  1668. DEU|051122      |     2|  |             CONTROL  <control case spec>
  1669. DEU|051122      |     4|  |    <control case spec> ::=
  1670. DEU|051122      |     5| I|             CASE ##0203040136<expr> OF <control case> [ <else case> ]  END
  1671. DEU|051122      |     7|  |    <else case> ::=
  1672. DEU|051122      |     8|  |             OTHERWISE <control action>
  1673. DEU|051122      |    10|  |    <control case> ::=
  1674. DEU|051122      |    11|  |             <value spec> : <control action>  [ ; <control case> ]
  1675. DEU|051122      |    13|  |    <control action> ::=
  1676. DEU|051122      |    14|  |               <stmt>
  1677. DEU|051122      |    15| I|             | ##051123<pick^stmt>
  1678. DEU|051122      |    16| I|             | ##051123<put^stmt>
  1679. DEU|051122      |    17|RI|             | ##051124<page^stmt>
  1680. DEU|051123      |     1|  |    <pick stmt> ::=
  1681. DEU|051123      |     2| I|               PICK [ ##0203040136<expr> ]
  1682. DEU|051123      |     4|  |    <put stmt> ::=
  1683. DEU|051123      |     5|R |               PUT  [<simple var>]
  1684. DEU|051124      |     1|  |    <page stmt> ::=
  1685. DEU|051124      |     2| I|            PAGE UP    [ ##0203040136<expr> ]
  1686. DEU|051124      |     3|  |          | PAGE DOWN  [<expr>]
  1687. DEU|051124      |     4|  |          | PAGE LEFT  [<expr>]
  1688. DEU|051124      |     5|R |          | PAGE RIGHT [<expr>]
  1689. DEU|051125      |     1|  |    <form calling option> ::=
  1690. DEU|051125      |     2| I|               ##051126<noinit^option>
  1691. DEU|051125      |     3| I|             | ##051127<mark^option>
  1692. DEU|051125      |     4| I|             | ##051128<accept^option>
  1693. DEU|051125      |     5| I|             | ##051129<attr^option>
  1694. DEU|051125      |     6| I|             | ##051130<clear^option>
  1695. DEU|051125      |     7| I|             | ##051130<screensize^option>
  1696. DEU|051125      |     8| I|             | ##051130<screenpos^option>
  1697. DEU|051125      |     9| I|             | ##051131<formpos^option>
  1698. DEU|051125      |    10| I|             | ##051132<frame^option>
  1699. DEU|051125      |    11| I|             | ##051133<background^option>
  1700. DEU|051125      |    12| I|             | ##051134<restore^option>
  1701. DEU|051125      |    13| I|             | ##051136<input^option>
  1702. DEU|051125      |    14| I|             | ##051137<action^option>
  1703. DEU|051125      |    15| I|             | ##051135<print^option>
  1704. DEU|051125      |    16|RI|             | ##051157<autoput^option>
  1705. DEU|051126      |     1|R |    <noinit option> ::=  NOINIT
  1706. DEU|051127      |     1|  |    <mark option> ::=
  1707. DEU|051127      |     2|RI|               MARK ( ##0203040136<expr> ) | MARK ( ##0203040133<variable> )
  1708. DEU|051128      |     1|  |    <accept option> ::=
  1709. DEU|051128      |     2|  |             ACCEPT (<key spec>,...)
  1710. DEU|051128      |     4|  |    <key spec> ::=
  1711. DEU|051128      |     5|  |              ENTER
  1712. DEU|051128      |     6| I|             | ##051183<basic^key> [ = <key label>]
  1713. DEU|051128      |     7|RI|             | ##051183<additional^hardkey>
  1714. DEU|051129      |     1|  |    <attr option> ::=
  1715. DEU|051129      |     2|RI|             ATTR ( <form var>, ##051181<attr^name> )
  1716. DEU|051130      |     1|  |    <window option> ::=
  1717. DEU|051130      |     2| I|             SCREENPOS ( ##0203040136<expr> , <expr>)
  1718. DEU|051130      |     3|  |             | SCREENSIZE (<expr>,<expr>)
  1719. DEU|051130      |     4|R |             | CLEAR
  1720. DEU|051131      |     1|  |    <formpos option> ::=
  1721. DEU|051131      |     2|RI|             FORMPOS ( ##0203040136<expr> ,<expr>)
  1722. DEU|051132      |     1|  |    <frame option> ::=
  1723. DEU|051132      |     2|R |             FRAME [ (<frame title>) ]
  1724. DEU|051133      |     1|  |    <background option> ::=
  1725. DEU|051133      |     2|R |             BACKGROUND
  1726. DEU|051134      |     1|  |    <restore option> ::=
  1727. DEU|051134      |     2|R |             RESTORE
  1728. DEU|051135      |     1|  |    <print option> ::=
  1729. DEU|051135      |     2|  |             PRINT [(<print option>,...)]
  1730. DEU|051135      |     4|  |    <print option> ::=
  1731. DEU|051135      |     5|  |             | CLOSE
  1732. DEU|051135      |     6|  |             | CPAGE <natural>
  1733. DEU|051135      |     7|  |             | LINEFEED <natural>
  1734. DEU|051135      |     8|  |             | LINESPACE <natural>
  1735. DEU|051135      |     9|  |             | NEWPAGE
  1736. DEU|051135      |    10|RI|             | PRINTFORMAT ##0203040136<expr>
  1737. DEU|051136      |     1|  |    <input option> ::=
  1738. DEU|051136      |     2|  |             NOINPUT (<input field>,...)
  1739. DEU|051136      |     3|  |             | INPUT (<input field>,...)
  1740. DEU|051136      |     5|  |    <input field> ::=
  1741. DEU|051136      |     6|  |             <natural>
  1742. DEU|051136      |     7| I|             | ##0203040133<variable>
  1743. DEU|051136      |     8|RI|             | ##0203040134<vector^slice>
  1744. DEU|051137      |     1|  |    <action option> ::=
  1745. DEU|051137      |     2|RI|             ACTION ( ##0203040136<expr> )
  1746. DEU|051138      |     1|  |    <field processing stmt> ::=
  1747. DEU|051138      |     2| I|                ##051104<processing^stmt>
  1748. DEU|051138      |     3|  |              | <extended field stmt>
  1749. DEU|051138      |     4|  |              | <before group stmt>
  1750. DEU|051138      |     5|  |              | <after group stmt>
  1751. DEU|051138      |     6|  |              | <extended control stmt>
  1752. DEU|051138      |     8|  |    <extended field stmt> ::=
  1753. DEU|051138      |     9|  |              FIELD <field name>,... [<extended field proc>...]
  1754. DEU|051138      |    11|  |    <field name> ::=
  1755. DEU|051138      |    12| I|                ##0203040133<variable>
  1756. DEU|051138      |    13| I|              | ##0203040134<vector^slice>
  1757. DEU|051138      |    14|  |              | <field number>:<field name>
  1758. DEU|051138      |    16|  |    <extended field proc spec> ::=
  1759. DEU|051138      |    17|SI|                ##051105<field^proc^spec>
  1760. DEU|051138      |    19| I|              | ##051140<before^field^spec>
  1761. DEU|051138      |    20| I|              | ##051140<after^field^spec>
  1762. DEU|051138      |    21|RI|              | ##051146<autonext^spec>
  1763. DEU|051140      |     1|  |    <before field spec> ::=
  1764. DEU|051140      |     2|  |              BEFORE FIELD <extended compound>
  1765. DEU|051140      |     4|  |    <after field spec> ::=
  1766. DEU|051140      |     5|R |              AFTER  FIELD <extended compound>
  1767. DEU|051141      |     1|  |    <group spec> ::=
  1768. DEU|051141      |     2|  |                GROUP <group name>
  1769. DEU|051141      |     3|  |                <extended field stmt>;...
  1770. DEU|051141      |     4|  |                END;
  1771. DEU|051141      |     6|  |    <before group spec> ::=
  1772. DEU|051141      |     7|  |                BEFORE GROUP <extended compound>
  1773. DEU|051141      |     9|  |    <after group spec> ::=
  1774. DEU|051141      |    10|R |                AFTER GROUP <extended compound>
  1775. DEU|051142      |     1|  |    <extended compound> ::=
  1776. DEU|051142      |     2|R |                BEGIN <extended stmt>;... END | <extended stmt>
  1777. DEU|051143      |     1|  |    <extended stmt> ::=
  1778. DEU|051143      |     2|  |                 <stmt>
  1779. DEU|051143      |     3| I|               | ##051124<page^stmt>
  1780. DEU|051143      |     4| I|               | ##051123<pick^stmt>
  1781. DEU|051143      |     5| I|               | ##051123<put^stmt>
  1782. DEU|051143      |     6| I|               | ##051144<nextfield^stmt>
  1783. DEU|051143      |     7|RI|               | ##051145<nextgroup^stmt>
  1784. DEU|051144      |     1|  |    <nextfield stmt> ::=
  1785. DEU|051144      |     2|R |                NEXTFIELD <field name>
  1786. DEU|051145      |     1|  |    <nextgroup stmt> ::=
  1787. DEU|051145      |     2|R |                NEXTGROUP <group name>
  1788. DEU|051146      |     1|  |    <autonext spec> ::=
  1789. DEU|051146      |     2|R |                NOAUTONEXT
  1790. DEU|051147      |     1|  |    <menu> ::=
  1791. DEU|051147      |     2| I|              MENU ##0203040101<prog^name>.##0203040102<mod^name> [PARMS ( ##0203040104<parm^decl> ,...)]
  1792. DEU|051147      |     3| I|              ##051150<actionbar^stmt>
  1793. DEU|051147      |     4|RI|              [ ##051151<pulldown^stmt> ]
  1794. DEU|051148      |     1|  |    <include menu stmt> ::=
  1795. DEU|051148      |     2| I|                INCLUDE MENU  ##0203040101<prog^name>.##0203040102<mod^name>
  1796. DEU|051148      |     3|RI|              | [PARMS ( ##0203040104<parm^decl> ,...)]
  1797. DEU|051149      |     1|  |    <form>  ::=
  1798. DEU|051149      |     2| I|             FORM  ##0203040101<prog^name>.##0203040102<mod^name>
  1799. DEU|051149      |     3| I|                   [OPTIONS ( ##051180<form^option> ,...)]
  1800. DEU|051149      |     4| I|                   [PARMS ( ##0203040104<parm^decl> ,...)]
  1801. DEU|051149      |     5| I|             [ ##0203040156<var^section> ]
  1802. DEU|051149      |     6| I|             ##051159<form^layout>
  1803. DEU|051149      |     7|  |             [ ...
  1804. DEU|051149      |     8| I|              ##051150<actionbar^stmt>
  1805. DEU|051149      |     9| I|              [ ##051151<pulldown^stmt> ]
  1806. DEU|051149      |    10|R |                   ... ]
  1807. DEU|051150      |     1|  |    <actionbar stmt> ::=
  1808. DEU|051150      |     2| I|                ACTIONBAR [WITH FRAME] ( ##051182<menupoint^def> ,... )
  1809. DEU|051150      |     3|RI|              | ACTIONBAR [WITH FRAME] ( ##051182<menupoint^group> ;... )
  1810. DEU|051151      |     1|  |    <pulldown stmt> ::=
  1811. DEU|051151      |     2| I|                PULLDOWN ##0203040118<name> ( ##051182<menupoint^def> ,... )
  1812. DEU|051151      |     3|RI|              | PULLDOWN ##0203040118<name> ( ##051182<menupoint^group> ;... )
  1813. DEU|051152      |     1|  |    <action clause> ::=
  1814. DEU|051152      |     2|  |              [<comment>] [<activate cond>] [<action>]
  1815. DEU|051152      |     4|  |    <comment> ::=
  1816. DEU|051152      |     5| I|              COMMENT ##0203040136<expr>
  1817. DEU|051152      |     7|  |    <activate cond> ::=
  1818. DEU|051152      |     8| I|              WHEN ##0203040146<boolean^expr>
  1819. DEU|051152      |    10|  |    <action> ::=
  1820. DEU|051152      |    11|  |                <pulldown call>
  1821. DEU|051152      |    12|  |              | <releasekey spec>
  1822. DEU|051152      |    14|  |    <pulldown call> ::=
  1823. DEU|051152      |    15| I|              PULLDOWN ##0203040118<name>
  1824. DEU|051152      |    17|S |    <releasekey spec> ::=
  1825. DEU|051152      |    19|  |              RELEASEKEY <key literal>
  1826. DEU|051152      |    21|  |    <key literal> ::=
  1827. DEU|051152      |    22| I|                ##051183<basic^key>
  1828. DEU|051152      |    23|RI|              | ##051183<additional^hardkey>
  1829. DEU|051153      |     1|R |    <form lib option> ::= LIB [<username>.]<libname>
  1830. DEU|051154      |     1|R |    <form wrap option> ::=  WRAP
  1831. DEU|051155      |     1|  |    <keyswap stmt> ::=
  1832. DEU|051155      |     2|  |             KEYSWAP ( <key pair>,... )
  1833. DEU|051155      |     4|  |    <key pair> ::=
  1834. DEU|051155      |     5| I|             ##051183<basic^key> <swap sign> <basic key>
  1835. DEU|051155      |     7|  |    <swap sign> ::=
  1836. DEU|051155      |     8|R |             '<->'
  1837. DEU|051156      |     1|  |    <insertmode stmt> ::=
  1838. DEU|051156      |     2| I|             INSERTMODE ( POS ( ##0203040136<expr> , <expr> )
  1839. DEU|051156      |     3|  |                       [, LABEL ( <expr> ) ]
  1840. DEU|051156      |     4|RM|                       [, ATTR ( #051181<attr^name> ) ] )
  1841. DEU|051157      |     1|RI|    <autoput option> ::=  AUTOPUT ( ##0203040133<variable> )
  1842. DEU|051158      |     1|  |    <langdep literal> ::= ##!0203040118<name> (<literal size>)
  1843. DEU|051158      |     3|  |    <literal size>    ::= S | M | L | XL
  1844. DEU|051158      |     5|  |    <langdep literal> ::=
  1845. DEU|051158      |     6|  |             ##!0203040118<name>           <-- nur im Maskenlayout
  1846. DEU|051158      |     7|  |           | ##!0203040118<name> (<literal size>)
  1847. DEU|051158      |     9|R |    <literal size>    ::= S | M | L | XL
  1848. DEU|051159      |     1|  |    <form layout>  ::=
  1849. DEU|051159      |     2| I|             ##051103<begin^layout^line>
  1850. DEU|051159      |     3|  |               +------------------------------------+
  1851. DEU|051159      |     4|  |               | zwischen den Zeilen, beginnend mit |
  1852. DEU|051159      |     5|  |               |     'LAYOUT' und 'ENDLAYOUT',      |
  1853. DEU|051159      |     6|  |               |        werden nach Wunsch          |
  1854. DEU|051159      |     7| I|               |  ##051160<layout^item> -Elemente plaziert  |
  1855. DEU|051159      |     8|  |               +------------------------------------+
  1856. DEU|051159      |     9|R |             ENDLAYOUT
  1857. DEU|051160      |     1|  |    <layout item> ::=
  1858. DEU|051160      |     2| I|               ##051161<text^item>
  1859. DEU|051160      |     3| I|             | ##051162<input^item>
  1860. DEU|051160      |     4| I|             | ##051163<output^item>
  1861. DEU|051160      |     5| I|             | ##051164<continuation^field>
  1862. DEU|051160      |     6| I|             | ##051165<next^vector^component>
  1863. DEU|051160      |     7|  |             | <spec char>
  1864. DEU|051160      |     8|RI|             | ##051166<langdep^literal>
  1865. DEU|051161      |     1|  |    <text item> ::=
  1866. DEU|051161      |     2|R |             beliebiger Text
  1867. DEU|051162      |     1|  |    <input item> ::=
  1868. DEU|051162      |     2| I|             <infield symbol> ##051165<field^ref>
  1869. DEU|051162      |     4|  |    <infield symbol> :=
  1870. DEU|051162      |     5|  |               _
  1871. DEU|051162      |     6|R |             | <in char>
  1872. DEU|051163      |     1|  |    <output item> ::=
  1873. DEU|051163      |     2| I|             <outfield^symbol> ##051165<field^ref>
  1874. DEU|051163      |     3|  |              /<varying length symbol>/
  1875. DEU|051163      |     5|  |    <outfield symbol> :=
  1876. DEU|051163      |     6|  |              <
  1877. DEU|051163      |     7|  |             | <out char>
  1878. DEU|051163      |     9|  |    <varying length symbol> :=
  1879. DEU|051163      |    10|R |             >>
  1880. DEU|051164      |     1|  |    <continuation field> :=
  1881. DEU|051164      |     2|  |               <infield symbol>"
  1882. DEU|051164      |     3|R |             | <outfield symbol>"
  1883. DEU|051165      |     1|  |    <next vector component> :=
  1884. DEU|051165      |     2|  |               <infield symbol><blank>
  1885. DEU|051165      |     3|  |             | <outfield symbol><blank>
  1886. DEU|051165      |     5|  |    <field ref> ::=
  1887. DEU|051165      |     6| I|               ##0203040133<variable>
  1888. DEU|051165      |     7|  |             | <vector slice>
  1889. DEU|051165      |     8|  |             | <field number>
  1890. DEU|051165      |    10|  |    <vector slice> ::=
  1891. DEU|051165      |    11| I|             ##0203040118<name> (<lower bound> .. <upper bound>)
  1892. DEU|051165      |    12|  |             +-------------------------------------------+
  1893. DEU|051165      |    13|  |             | hier muessen soviele                      |
  1894. DEU|051165      |    14|  |             | <next vector component>-Elemente          |
  1895. DEU|051165      |    15|  |             | untereinander folgen, wie durch           |
  1896. DEU|051165      |    16|  |             | <upper bound>-<lower bound>+1 gegeben ist |
  1897. DEU|051165      |    17|S |             +-------------------------------------------+
  1898. DEU|051165      |    20|  |    <lower bound> ::=
  1899. DEU|051165      |    21| I|             ##0203040120<numeric>
  1900. DEU|051165      |    23|  |    <upper bound> ::=
  1901. DEU|051165      |    24| I|             ##0203040120<numeric>
  1902. DEU|051165      |    26|  |    <field number> ::=
  1903. DEU|051165      |    27|RI|             ##0203040120<numeric>
  1904. DEU|051166      |     1|R |    <langdep literal> ::=   ##!0203040118<name>           <-- nur im Maskenlayout
  1905. DEU|051180      |     1|  |    <form option> ::=
  1906. DEU|051180      |     2| I|             ##051154<form^wrap^option>
  1907. DEU|051180      |     3|RI|           | ##051153<form^lib^option>
  1908. DEU|051181      |     1|  |    <attr name> ::=
  1909. DEU|051181      |     2|  |                LOW | HIGH | INV | BLK | UNDERL
  1910. DEU|051181      |     3|R |              | ATTR1 | ... | ATTR16
  1911. DEU|051182      |     1|  |    <menupoint group> ::=
  1912. DEU|051182      |     2|  |              <menupoint def>,...
  1913. DEU|051182      |     4|  |    <menupoint def> ::=
  1914. DEU|051182      |     5| I|              <function label> [ : ##051152<action^clause> ]
  1915. DEU|051182      |     7|  |    <function label> ::=
  1916. DEU|051182      |     8| I|                ##0203040133<variable>
  1917. DEU|051182      |     9| I|              | ##0203040126<string^literal>
  1918. DEU|051182      |    10|RI|              | ##051158<langdep^literal>
  1919. DEU|051183      |     1|  |    <basic key> ::=
  1920. DEU|051183      |     2|  |               F1  | F2  | F3  | F4  | F5  | F6  | F7  | F8  |  F9
  1921. DEU|051183      |     3|  |             | F10 | F11 | F12 | HELP | UP | DOWN
  1922. DEU|051183      |     5|  |    <additional hardkey> ::=
  1923. DEU|051183      |     6|R |              CMDKEY | ENDKEY | UPKEY | DOWNKEY | RIGHTKEY | LEFTKEY
  1924. DEU|051184      |     1|  |    <noinp spec> ::=
  1925. DEU|051184      |     2|R |            NOINPUT
  1926. DEU|051185      |     1|  |    <scrollfield stmt> ::=
  1927. DEU|051185      |     2|  |             SCROLLFIELD ( <offset var> [, <max count>
  1928. DEU|051185      |     3|  |                                        [, <page count> ] ] )
  1929. DEU|051185      |     4| I|             [ ( TOPKEY ##051183<basic^key> , BOTTOMKEY <basic key> ) ]
  1930. DEU|051185      |     6|  |     <offset var> ::= <variable>
  1931. DEU|051185      |     8|  |     <max count>  ::= <expr>
  1932. DEU|051185      |    10|R |     <page count>  ::= <expr>
  1933. DEU|051186      |     1|  |    <keys stmt> ::=
  1934. DEU|051186      |     2|  |           KEYS ( <function key spec>,... )
  1935. DEU|051186      |     4|  |    <function key spec> ::=
  1936. DEU|051186      |     5|  |           <key function> = <key> [ | <key> ... ]
  1937. DEU|051186      |     7|  |    <key function> ::=
  1938. DEU|051186      |     8|  |           HELP | MENU | UP | DOWN | LEFT | RIGHT
  1939. DEU|051186      |    10|  |    <key> ::=
  1940. DEU|051186      |    11| I|           ##051183<basic^key>
  1941. DEU|051186      |    12|R |           | <additional hardkey>
  1942. DEU|051187      |     1|  |    <button stmt>     ::=
  1943. DEU|051187      |     2|  |                BUTTON [WITH FRAME] (<buttonpoint def>,...)
  1944. DEU|051187      |     4|  |    <buttonpoint def> ::=
  1945. DEU|051187      |     5| I|                ##051182<function^label> [ : <button action> ]
  1946. DEU|051187      |     7|  |    <button action> ::=
  1947. DEU|051187      |     8|R |               [ ##051152<comment> ] [<activate cond>] [<releasekey spec>]
  1948.