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

  1. ENG|05          |     0     FORM.enh   10.05.01   1998-04-24
  2. ENG|05          |     1|  |                                 Forms
  3. ENG|05          |     2|  |                                 -----
  4. ENG|05          |     4| M|                    #01Examples of Form Definitions
  5. ENG|05          |     5| M|                    #05Structure of a Form
  6. ENG|05          |     6| M|                    #03Form Fields
  7. ENG|05          |     7| M|                    #04Processing Statements in Forms
  8. ENG|05          |     8| M|                    #06Options on Form Calls
  9. ENG|05          |     9| M|                    #07Parameters on Form Calls
  10. ENG|05          |    10| M|                    #08Options for the FORM Compiler
  11. ENG|05          |    11|RM|                    #10Action Bar and Pulldown Menus
  12. ENG|0501        |     1|  |    Example 1 : LAYOUT Design
  13. ENG|0501        |     3| E|
  14. ENG|0501        |     4| E|    FORM customer.mastercard
  15. ENG|0501        |     5| E|    LAYOUT
  16. ENG|0501        |     6| E|    <user     CUSTOMER CARD        <today
  17. ENG|0501        |     7| E|    -------------------------------------
  18. ENG|0501        |     8| E|          customer_no       :  _cno
  19. ENG|0501        |     9| E|              firstname     :  _cfname
  20. ENG|0501        |    10| E|              name          :  _cname
  21. ENG|0501        |    12| E|              bank_balance  :  _(account)
  22. ENG|0501        |    14| E|    -------------------------------------
  23. ENG|0501        |    15| E|    <MESSAGE
  24. ENG|0501        |    16|SE|    ENDLAYOUT
  25. ENG|0501        |    19| E|
  26. ENG|0501        |    21|  |    Example 2 : LAYOUT and Options
  27. ENG|0501        |    24|  |    FORM customer.modification
  28. ENG|0501        |    25|  |    LAYOUT HIGH = % LOW = + PROMPT = .
  29. ENG|0501        |    26|  |    <user         %<headtext                        +<today
  30. ENG|0501        |    27|  |    -------------------------------------------------------
  31. ENG|0501        |    29|  |         Customer : % <cno>> <ctit>> <cname>> <cfname
  32. ENG|0501        |    30|  |         Old address                % New address
  33. ENG|0501        |    31|  |         -----------                % -----------
  34. ENG|0501        |    32|  |         City     : <ccty         + % City     : _newcity
  35. ENG|0501        |    33|  |         Zip code : <czip           % Zip code : _newzip           +
  36. ENG|0501        |    34|S |                    <"            +              _"                +
  37. ENG|0501        |    37|  |    -------------------------------------------------------
  38. ENG|0501        |    38|  |    <MESSAGE
  39. ENG|0501        |    39|  |    ENDLAYOUT
  40. ENG|0501        |    40|  |    ACCEPT ( F1='UPDATE', F9='RETURN' );
  41. ENG|0501        |    42|  |    FIELD MESSAGE INIT 'correct specifications, if nec.';
  42. ENG|0501        |    44|  |    FIELD newcity    INIT NULL
  43. ENG|0501        |    45|  |       CHECK IS ALPHA;
  44. ENG|0501        |    47|  |    FIELD newzip    INIT NULL   SIZE 5
  45. ENG|0501        |    48|  |       CHECK BETWEEN  1 AND 99999
  46. ENG|0501        |    49|  |         ELSE 'Please: 5 digits numeric';
  47. ENG|0501        |    51|  |    IGNORE newcity, newzip WHEN $KEY = F9;
  48. ENG|0501        |    53|S |    CONTROL  CASE $KEY  OF
  49. ENG|0501        |    55|  |                F1 : CALL PROC alter;
  50. ENG|0501        |    56|  |                F9 : RETURN;
  51. ENG|0501        |    57|R |              END;
  52. ENG|0503        |     1|  |                             Form Fields
  53. ENG|0503        |     2|  |                             -----------
  54. ENG|0503        |     4| M|                  #01Simple Form Fields
  55. ENG|0503        |     5| M|                  #02Multiple-line Form Fields
  56. ENG|0503        |     6| M|                  #03Form Fields of Varying Lengths
  57. ENG|0503        |     7| M|                  #04Vector Variables (Subscripted Variables) in Forms
  58. ENG|0503        |     8| M|                  #05Vector Slices as an Abbreviated Notation
  59. ENG|0503        |     9| M|                  #06Field Numbers Substituting Variable Names
  60. ENG|0503        |    10| M|                  #07Vector Variables with Dynamic Index
  61. ENG|0503        |    11|RI|                                                          ##051160->^Syntax
  62. ENG|050301      |     1|  |    Simple Form Fields
  63. ENG|050301      |     3|  |    <today     ->   Output field : current value of the variable 'today'
  64. ENG|050301      |     4|  |                    is displayed here; it   c a n n o t   be overwritten.
  65. ENG|050301      |     6|  |    _cno       ->   Input field : the current value of the variable 'cno'
  66. ENG|050301      |     7|  |                    is displayed here; it   c a n   be overwritten.
  67. ENG|050301      |     9|  |    _(passw)   ->   Input field without display and echo (password input).
  68. ENG|050301      |    11|  |    <MESSAGE   ->   The variable MESSAGE sends system messages.
  69. ENG|050301      |    12|  |                    If the form contains no MESSAGE field, the last
  70. ENG|050301      |    13|  |                    screen line is reserved for the message.
  71. ENG|050301      |    14|  |                    After display, MESSAGE is implicitly set to NULL.
  72. ENG|050301      |    16|  |    Just  in  front of an input/output field either a blank or an intensity
  73. ENG|050301      |    17|R |    sign or an input/output field may occur.
  74. ENG|050302      |     1|  |    Multiple-line Form Fields
  75. ENG|050302      |     3|  |    <ccity            +  -> multiple-line output field     _newcity       +
  76. ENG|050302      |     4|  |    <"                +     multiple-line  input field ->  _"             +
  77. ENG|050302      |     6|  |    The field segments of the multiple-line fields must  begin  immediately
  78. ENG|050302      |     7|  |    one  below  the  other  in  the  same column; but they may have various
  79. ENG|050302      |     8|  |    lengths.
  80. ENG|050302      |    10|  |    Definition:
  81. ENG|050302      |    11| E|
  82. ENG|050302      |    12| E|    FORM test.m_ln
  83. ENG|050302      |    13| E|    LAYOUT  PROMPT = .
  84. ENG|050302      |    14| E|        _newcity          +
  85. ENG|050302      |    15| E|        _"                +
  86. ENG|050302      |    16|SE|    ENDLAYOUT
  87. ENG|050302      |    19| E|
  88. ENG|050302      |    21|  |    Input:              |   Bond St. 110......    |
  89. ENG|050302      |    22|  |                        |   New York 10580....    |
  90. ENG|050302      |    24|  |    Values of newcity
  91. ENG|050302      |    25|R |    after input:       'Bond St. 110   New York 10580'
  92. ENG|050303      |     1|  |    Form Fields of Varying Lengths
  93. ENG|050303      |     3|  |    <item_no>>        -> output field with variable length.
  94. ENG|050303      |     5|  |    '>>' has the effect that the following form fields are attached to
  95. ENG|050303      |     6|  |    the portion of field having a variable length.
  96. ENG|050303      |     8|  |    Example: item_no := '4711'; item_des := 'screw';
  97. ENG|050303      |    10|  |    Definition:
  98. ENG|050303      |    11|  |    LAYOUT
  99. ENG|050303      |    12|  |     ... Item <item_no>>, <item_des>>, unavailable...
  100. ENG|050303      |    13|  |    ENDLAYOUT
  101. ENG|050303      |    15|  |    Output:
  102. ENG|050303      |    16|R |     ... Item 4711 , screw , unavailable...
  103. ENG|050304      |     1|  |    Subscripted Variables in Forms (Vector Variables)
  104. ENG|050304      |     3|  |    C.No.      | Firstname      | Name
  105. ENG|050304      |     4|  |    -----------|----------------|------------------
  106. ENG|050304      |     5|  |    _cno(1)    | _firstname(1)  | _name(1)       + -> processing tables
  107. ENG|050304      |     6|  |    _cno(2)    | _firstname(2)  | _name(2)       + -> using
  108. ENG|050304      |     7|  |      ...      |   ...          |  ...           + -> subscripted
  109. ENG|050304      |     8|  |    _cno(8)    | _firstname(8)  | _name(8)       + -> variables
  110. ENG|050304      |    10|R |    A vector variable can consist of up to 255 components.
  111. ENG|050305      |     1|  |    Vector Slices as an Abbreviated Notation
  112. ENG|050305      |     3|  |    C.No.      | Firstname         | Name
  113. ENG|050305      |     4|  |    -----------|-------------------|------------------
  114. ENG|050305      |     5|  |    _cno(1..8) | _firstname(1..8)  | _name(1..8)     +
  115. ENG|050305      |     6|  |    _          | _                 | _               +
  116. ENG|050305      |     7|  |      ...      |   ...             |  ...            +
  117. ENG|050305      |     8|  |    _          | _                 | _               +
  118. ENG|050305      |    10|  |    fo.
  119. ENG|050305      |    11|  |    Vector components which are listed one below the other may
  120. ENG|050305      |    12|R |    be described in an abbreviated notation as vector slices.
  121. ENG|050306      |     1|  |    Field Numbers Substituting Variable Names
  122. ENG|050306      |     2| E|
  123. ENG|050306      |     3| E|    FORM test.fld_nr
  124. ENG|050306      |     4| E|    LAYOUT GRAPHIC = *
  125. ENG|050306      |     5| E|    C.No.  * Firstname
  126. ENG|050306      |     6| E|    ***************************
  127. ENG|050306      |     7| E|    _1     * _firstname(1..4) *
  128. ENG|050306      |     8| E|    _      * _                *
  129. ENG|050306      |     9| E|    _      * _                *
  130. ENG|050306      |    10| E|    _      * _                *
  131. ENG|050306      |    11| E|    ENDLAYOUT
  132. ENG|050306      |    12| E|    FIELD  1:cno(1..4)
  133. ENG|050306      |    14| E|
  134. ENG|050306      |    16|  |    - A form field can be represented by a field number. This makes
  135. ENG|050306      |    17|S |      the field size independent of the length of the variable name.
  136. ENG|050306      |    19|  |    - Field number and variable are associated with each other
  137. ENG|050306      |    20|R |      within the FIELD statement.
  138. ENG|050307      |     1|  |    Vector Variables with Dynamic Index
  139. ENG|050307      |     2| E|
  140. ENG|050307      |     3| E|    FORM test.vec_fld
  141. ENG|050307      |     4| E|    LAYOUT GRAPHIC = *
  142. ENG|050307      |     5| E|    ******************************
  143. ENG|050307      |     6| E|    _1      * _firstname(1..4)   *
  144. ENG|050307      |     7| E|    _       * _                  *
  145. ENG|050307      |     8| E|    _       * _                  *
  146. ENG|050307      |     9| E|    _       * _                  *
  147. ENG|050307      |    10| E|    ENDLAYOUT
  148. ENG|050307      |    11| E|    FIELD  1:cno(1..4), firstname(1..4) OFFSET x;
  149. ENG|050307      |    13| E|
  150. ENG|050307      |    15|  |    - If the variable after OFFSET (here x) has a value greater than 0,
  151. ENG|050307      |    16|  |    then the value of the vector component firstname(1+x) appears in the
  152. ENG|050307      |    17|S |    form field of the vector component firstname(1).
  153. ENG|050307      |    19|  |    - This rule applies accordingly to all vector components that are
  154. ENG|050307      |    20|  |    given in the FIELD statement.
  155. ENG|050307      |    22|R |    - Numeric expressions can be specified instead of the variable x.
  156. ENG|0504        |     1|  |                   Processing Statements in Forms
  157. ENG|0504        |     2|  |                   ------------------------------
  158. ENG|0504        |     4| M|          #01PROMPT       :  Representing a field with NULL Value
  159. ENG|0504        |     5| M|          #02ATTR1,...    :  Display Attributes
  160. ENG|0504        |     6| M|          #03IN^and^OUT   :  Identifiers for Input/Output Fields
  161. ENG|0504        |     7| M|          #14GRAPHIC      :  Graphics Characters in Forms
  162. ENG|0504        |     8| M|          #04FIELD/...    :  Options for the FIELD Statement
  163. ENG|0504        |     9| M|          #08ACCEPT       :  Activating the Release Key
  164. ENG|0504        |    10| M|          #15MARK         :  Initializing the Cursor Position
  165. ENG|0504        |    11| M|          #09IGNORE       :  Suppressing Input Checking
  166. ENG|0504        |    12| M|          #10KEYSWAP      :  Interchanging the Key Functions
  167. ENG|0504        |    13| M|          #18SPECIALATTR  :  Situation-dependent Display Attributes
  168. ENG|0504        |    14| M|          #19INSERTMODE   :  Display of the Input Mode
  169. ENG|0504        |    15| M|          #11CONTROL      :  The Form as Controlling Module
  170. ENG|0504        |    16| M|          #16RETURNONLAST :  Leaving the Form via the Return Key
  171. ENG|0504        |    17|SM|          #06PICK/PUT     :  PICK/PUT Mechanism
  172. ENG|0504        |    19| M|          #05AUTOPAGE     :  Support of Scrolling
  173. ENG|0504        |    20| M|          #17HEADERLINES/
  174. ENG|0504        |    21| M|          #17BOTTOMLINES  :  Header and Bottomlines
  175. ENG|0504        |    23| M|          #22BEFORE/AFTER^FIELD : What's to do on Entering and Leaving a Field
  176. ENG|0504        |    24| M|          #23GROUP              : Several Fields can be summarized to a Group
  177. ENG|0504        |    25| M|          #24BEFORE/AFTER^GROUP : What's to do on Entering and Leaving a Group
  178. ENG|0504        |    26| M|          #25NEXTFIELD          : Continue with Another Field of the Group
  179. ENG|0504        |    27| M|          #26NEXTGROUP          : Continue with Another Group
  180. ENG|0504        |    28| M|          #27NOAUTONEXT         : Continue with Next Field
  181. ENG|0504        |    29| M|          #28SCROLLFIELD        : Move Vector Slices
  182. ENG|0504        |    30| M|          #29KEYS               : Assign Function to Keys
  183. ENG|0504        |    31|RI|                                                          ##051138->^Syntax
  184. ENG|050401      |     1|  |    PROMPT : Representing a Field with NULL Value
  185. ENG|050401      |     2| E|
  186. ENG|050401      |     3| E|    FORM test.fld_prompt
  187. ENG|050401      |     4| E|    LAYOUT  PROMPT = .
  188. ENG|050401      |     5| E|     ...
  189. ENG|050401      |     6| E|     Firstname  :  _cfname
  190. ENG|050401      |     7| E|     ...
  191. ENG|050401      |     8| E|    ENDLAYOUT
  192. ENG|050401      |     9| E|    FIELD cfname  INIT NULL  SIZE 20;
  193. ENG|050401      |    11| E|
  194. ENG|050401      |    13|  |    The PROMPT option in the LAYOUT line fills the entire length of  fields
  195. ENG|050401      |    14|  |    the variables of which are NULL with the specified character.
  196. ENG|050401      |    16|  |    After  user  input, the prompt characters are truncated to the left and
  197. ENG|050401      |    17|S |    to the right of the input ( like TRIM (cfname,'.') ).
  198. ENG|050401      |    19|RI|                                                          ##051103->^Syntax
  199. ENG|050402      |     1|  |    ATTR1,...ATTR16, HIGH, HI, LOW, INV, BLK, UNDERL  : Display Attributes
  200. ENG|050402      |     2| E|
  201. ENG|050402      |     3| E|    FORM test.lopt_attr
  202. ENG|050402      |     4| E|    LAYOUT  HIGH = %  LOW = +  ATTR16 = *
  203. ENG|050402      |     5| E|    <user     CUSTOMER CARD       *<today
  204. ENG|050402      |     6| E|    -------------------------------------
  205. ENG|050402      |     7| E|          %customer_no. : +_cno
  206. ENG|050402      |     8| E|    ENDLAYOUT
  207. ENG|050402      |     9| E|    FIELD user      INIT $USER;
  208. ENG|050402      |    10| E|    FIELD today     INIT DATE(DD.MM.YY);
  209. ENG|050402      |    11| E|    FIELD cno       INIT '.'(6);
  210. ENG|050402      |    13| E|
  211. ENG|050402      |    15|  |    The options ATTR1,...,ATTR16 (HIGH, HI,
  212. ENG|050402      |    16|  |    LOW, INV, BLK, UNDERL) can be used to define special
  213. ENG|050402      |    17|S |    characters for controlling the intensity of the display.
  214. ENG|050402      |    19|  |    Normally input fields are displayed brightly, output fields and text
  215. ENG|050402      |    20|  |    parts darkly (SET parameter ATTR2/HI and ATTR1/LOW).
  216. ENG|050402      |    21|  |    As soon as one of the special characters appears,
  217. ENG|050402      |    22|  |    the line is output according to the intensity defined, starting
  218. ENG|050402      |    23|  |    with the special character until the end of line or up to
  219. ENG|050402      |    24|  |    the next occurrence of a special character.
  220. ENG|050402      |    26|  |    In the example:  '<user' and '_cno' appear dark, 'customer_no.' bright
  221. ENG|050402      |    27|  |                     '<today' SET parameter ATTR16.
  222. ENG|050402      |    29|RI|                                                          ##051103->^Syntax
  223. ENG|050403      |     1|  |    IN and OUT :  Identfiers for Input/Output Fields
  224. ENG|050403      |     2| E|
  225. ENG|050403      |     3| E|    FORM bsp_form.l_in_out
  226. ENG|050403      |     4| E|    LAYOUT  IN = &  OUT = @
  227. ENG|050403      |     5| E|    @user       CUSTOMER CARD      @today
  228. ENG|050403      |     6| E|    -------------------------------------
  229. ENG|050403      |     7| E|     customer_no.: &cno
  230. ENG|050403      |     8| E|         ....
  231. ENG|050403      |     9| E|    ENDLAYOUT
  232. ENG|050403      |    11| E|    FIELD user      INIT $USER;
  233. ENG|050403      |    12| E|    FIELD today     INIT DATE(DD.MM.YY);
  234. ENG|050403      |    13| E|    FIELD cno       INIT '.'(6);
  235. ENG|050403      |    15| E|
  236. ENG|050403      |    17|S |    IN and OUT can be used to define explicitly characters other  than  the
  237. ENG|050403      |    19|  |    given  '_'  (underscore) and '<' (less than) to denote the beginning of
  238. ENG|050403      |    20|  |    an input or output field.
  239. ENG|050403      |    22|  |    Thus 'user' and 'today' are output  fields  in  this  example,  whereas
  240. ENG|050403      |    23|  |    'cno' is an input field.
  241. ENG|050403      |    25|RI|                                                          ##051103->^Syntax
  242. ENG|050404      |     1|  |                   Options of the FIELD Statement
  243. ENG|050404      |     2|  |                   ------------------------------
  244. ENG|050404      |     4| M|          #02FIELD/INIT^^^^^^:  Initializations
  245. ENG|050404      |     5| M|          #01FIELD/SIZE^^^^^^:  Explicit Field Delimitation
  246. ENG|050404      |     6| M|          #06FIELD/WIDTH^^^^^:  Field Delimitation in case of
  247. ENG|050404      |     7|  |                          Multiple-line Form Fields
  248. ENG|050404      |     8| M|          #04FIELD/CHECK^^^^^:  Input Checking
  249. ENG|050404      |     9| M|          #07FIELD/DOMAIN^^^^:  Using DOMAIN Definitions
  250. ENG|050404      |    10| M|          #03FIELD/HELP^FORM^:  Output of HELP Forms
  251. ENG|050404      |    11| M|          #08FIELD/HELP^MSG^^:  Output of HELP Messages
  252. ENG|050404      |    12| M|          #05FIELD/DISPLAY^^^:  Editing the Display
  253. ENG|050404      |    13| M|          #09FIELD/OFFSET^^^^:  Vector Components with Dynamic Index
  254. ENG|050404      |    14| M|          #10FIELD/ATTR^^^^^^:  Assignment of Field Attributes
  255. ENG|050404      |    15| M|          #11FIELD/NOINPUT^^^:  Positioning Cursor without overwriting the field
  256. ENG|050404      |    16|RI|                                                          ##051105->^Syntax
  257. ENG|05040401    |     1|  |    FIELD/SIZE : Field Delimitation
  258. ENG|05040401    |     3| E|
  259. ENG|05040401    |     4| E|    FORM test.fld_size
  260. ENG|05040401    |     5| E|    LAYOUT  PROMPT = . HIGH = %  LOW = +
  261. ENG|05040401    |     6| E|      Amount1    :   _amount1
  262. ENG|05040401    |     7| E|                     .............................................
  263. ENG|05040401    |     8| E|      Amount2    :   _amount2 $
  264. ENG|05040401    |     9| E|                     ........
  265. ENG|05040401    |    10| E|      Amount3    :   _amount3   +
  266. ENG|05040401    |    11| E|                     ...........
  267. ENG|05040401    |    12| E|      Amount4    :   _amount4
  268. ENG|05040401    |    13| E|                     ..........
  269. ENG|05040401    |    14| E|    ENDLAYOUT
  270. ENG|05040401    |    16|SE|    FIELD  amount4  SIZE  10;
  271. ENG|05040401    |    19| E|
  272. ENG|05040401    |    21|  |    This   example  illustrates  the  various  possibilities  of  precisely
  273. ENG|05040401    |    22|  |    limiting a field. The dots denote the lengths of the input areas.
  274. ENG|05040401    |    24|RI|                                                          ##051107->^Syntax
  275. ENG|05040402    |     1|  |    FIELD/INIT : Initializations
  276. ENG|05040402    |     3| E|
  277. ENG|05040402    |     4| E|    FORM test.fld_init
  278. ENG|05040402    |     5| E|    LAYOUT
  279. ENG|05040402    |     6| E|    <user    CUSTOMER CARD        <today
  280. ENG|05040402    |     7| E|    ------------------------------------
  281. ENG|05040402    |     8| E|           customer_no    :  _cno
  282. ENG|05040402    |     9| E|             ...
  283. ENG|05040402    |    10| E|    ENDLAYOUT
  284. ENG|05040402    |    12| E|    FIELD user  INIT $USER;
  285. ENG|05040402    |    13| E|    FIELD today INIT DATE(DD.MM.YY);
  286. ENG|05040402    |    14| E|    FIELD cno   INIT '.'(6);
  287. ENG|05040402    |    16|SE|
  288. ENG|05040402    |    19|  |    Whenever the form is called, the variables 'user',  'today'  and  'cno'
  289. ENG|05040402    |    20|  |    are initialized according to the INIT option.
  290. ENG|05040402    |    21|  |    The initializations can be suppressed dynamically at runtime by calling
  291. ENG|05040402    |    22|  |    the form with NOINIT option :
  292. ENG|05040402    |    24|  |     CALL FORM mastercard ( NOINIT );
  293. ENG|05040402    |    26|  |    In this case, the current values of the variables appear in the fields.
  294. ENG|05040402    |    28|  |    Fields  for  which no INIT option has been specified always contain the
  295. ENG|05040402    |    29|  |    current values of the variables. If their value is NULL, they  will  be
  296. ENG|05040402    |    30|  |    filled with the PROMPT character.
  297. ENG|05040402    |    32|RI|                                                          ##051106->^Syntax
  298. ENG|05040403    |     1|  |    FIELD/HELP FORM : Output of HELP Forms
  299. ENG|05040403    |     3|  |    The FIELD/HELP statement can be used to assign HELP information in form
  300. ENG|05040403    |     4| I|    of a HELP form or ##05040408HELP message to a form field or group of form fields.
  301. ENG|05040403    |     5|  |    A  HELP form is a special form starting with the keyword 'HELPFORM'. In
  302. ENG|05040403    |     6|  |    a HELP form only local variables may be used, and the CONTROL statement
  303. ENG|05040403    |     7|  |    must not contain CALL, SWITCH, or SWITCHCALL statements.
  304. ENG|05040403    |     9|  |    Example of a HELP form definition:
  305. ENG|05040403    |    11| E|
  306. ENG|05040403    |    12| E|    HELPFORM customer.helpinfo
  307. ENG|05040403    |    13| E|    LAYOUT
  308. ENG|05040403    |    14| E|      customerno :  5 digits numeric
  309. ENG|05040403    |    15| E|    ENDLAYOUT
  310. ENG|05040403    |    16|SE|    FIELD message INIT 'Continue with ENTER';
  311. ENG|05040403    |    19| E|
  312. ENG|05040403    |    21|  |    Example of a HELP form call:
  313. ENG|05040403    |    23|  |    FORM customer.mastercard
  314. ENG|05040403    |    24|  |    LAYOUT
  315. ENG|05040403    |    25|  |        customerno: _cno
  316. ENG|05040403    |    26|  |    ENDLAYOUT
  317. ENG|05040403    |    28|  |      ACCEPT( F10='INFO', ENTER, F3='RETURN' );
  318. ENG|05040403    |    29|  |      FIELD cno
  319. ENG|05040403    |    30|  |           HELP FORM helpinfo;
  320. ENG|05040403    |    32|  |    If the F10 KEY (HELP key) is pressed at runtime  while  the  cursor  is
  321. ENG|05040403    |    33|  |    placed  on  the  field  'cno'  of  the form 'mastercard', the HELP form
  322. ENG|05040403    |    34|  |    'helpinfo' will be displayed. It will  be  positioned  on  the  current
  323. ENG|05040403    |    35|S |    screen in such a way that the field 'cno' remains visible.
  324. ENG|05040403    |    37|  |    Position,  size,  and  section of the HELP screen may also be specified
  325. ENG|05040403    |    38|  |    explicitly as call options (see SCREENPOS, SCREENSIZE, and FORMPOS).
  326. ENG|05040403    |    40|  |    If the cursor is placed on a form field for which no  HELP  option  has
  327. ENG|05040403    |    41|  |    been  specified  and  the HELP form is released, then the F10 key (HELP
  328. ENG|05040403    |    42|  |    key) will have the same effect as any other key.
  329. ENG|05040403    |    44|RI|                                                          ##051111->^Syntax
  330. ENG|05040404    |     1|  |    FIELD/CHECK: Input Checking
  331. ENG|05040404    |     3|  |    For each input field, one condition and an associated  message  can  be
  332. ENG|05040404    |     4|  |    specified via the CHECK option of the FIELD instructions.
  333. ENG|05040404    |     6|  |    If an input value does not fulfil the required condition, the cursor is
  334. ENG|05040404    |     7|  |    set  to  the  field  concerned and the message behind ELSE in the CHECK
  335. ENG|05040404    |     8|  |    option is displayed via MESSAGE. The user can then  correct  the  input
  336. ENG|05040404    |     9|  |    immediately.
  337. ENG|05040404    |    11|  |    If  no  message text was specified behind ELSE, a substitute message is
  338. ENG|05040404    |    12|  |    displayed.
  339. ENG|05040404    |    14|  |    The CHECK conditions are processed in the sequence of their definition.
  340. ENG|05040404    |    16|  |    If no CHECK  condition  has  been  infringed,  FORM  sets  the  MESSAGE
  341. ENG|05040404    |    17|S |    variable to NULL.
  342. ENG|05040404    |    19|  |    There are several other ways of formulating a CHECK condition.
  343. ENG|05040404    |    21| M|    1.  The list of fields to be checked contains only #01simple^variables (no
  344. ENG|05040404    |    22|  |    vector slices).
  345. ENG|05040404    |    24| M|    2. The list of fields to be checked contains only #02vector^slices
  346. ENG|05040404    |    26| M|    3. #03Other^conditions
  347. ENG|05040404    |    28|RI|                                                          ##051109->^Syntax
  348. ENG|0504040401  |     1|  |    The list of fields to be checked contains only simple variables
  349. ENG|0504040401  |     3| I|    - Behind CHECK a ##0203040148<check^cond> can be used without using the field
  350. ENG|0504040401  |     4|  |    name again. The <check cond> condition can also consist of arbitrary
  351. ENG|0504040401  |     5|  |    partial conditions joined by AND or OR. All IS, IN, BETWEEN or LIKE
  352. ENG|0504040401  |     6|  |    conditions and their negations are permitted as partial conditions
  353. ENG|0504040401  |     7|  |    The formulated condition holds for all variables of the field list.
  354. ENG|0504040401  |     9| I|    - Behind CHECK, ##0203040136<expr> followed by <check cond> can be used.
  355. ENG|0504040401  |    10|  |    With <expr> a function value of the field e.g. can be checked.
  356. ENG|0504040401  |    12|  |    Take note : 'FIELD a, b CHECK UPPER (a) in (....)'
  357. ENG|0504040401  |    13|  |      checks the condition formulated regarding field a
  358. ENG|0504040401  |    14|  |    in field a as well as in field b.
  359. ENG|0504040401  |    15| E|
  360. ENG|0504040401  |    16| E|    FORM customer.mastercard
  361. ENG|0504040401  |    17|SE|    LAYOUT
  362. ENG|0504040401  |    19| E|     zip    cno    ctit     cfname            ccname
  363. ENG|0504040401  |    20| E|    ------------------------------------------------
  364. ENG|0504040401  |    21| E|    _zip   _cno   _ctit    _cfname           _ccname
  365. ENG|0504040401  |    23| E|     ...
  366. ENG|0504040401  |    24| E|    ENDLAYOUT
  367. ENG|0504040401  |    26| E|     /* composite expressions
  368. ENG|0504040401  |    27| E|     FIELD zip SIZE 5
  369. ENG|0504040401  |    28| E|         CHECK BETWEEN 1000 AND 9999
  370. ENG|0504040401  |    29| E|               AND IS NOT NULL OR IS BLANK;
  371. ENG|0504040401  |    31| E|     /* regular expressions in the LIKE condition
  372. ENG|0504040401  |    32| E|     FIELD cno SIZE 5
  373. ENG|0504040401  |    33| E|         CHECK LIKE '(a-Z)(0-9)(0-9)(0-9)(0-9)'
  374. ENG|0504040401  |    34|SE|               ELSE 'alpha followed by 4 digits';
  375. ENG|0504040401  |    37| E|     /* checking a function expression
  376. ENG|0504040401  |    38| E|     FIELD ctit
  377. ENG|0504040401  |    39| E|         CHECK  UPPER(ctit) IN ('MS','MR','FIRM')
  378. ENG|0504040401  |    40| E|               ELSE 'specify either Ms, Mr or Firm';
  379. ENG|0504040401  |    42| E|     /* composite expression for list with simple fields
  380. ENG|0504040401  |    43| E|     FIELD cfname, cname INIT NULL
  381. ENG|0504040401  |    44| E|         CHECK IS NOT NULL AND IS ALPHA
  382. ENG|0504040401  |    45| E|               ELSE 'please enter complete name';
  383. ENG|0504040401  |    47| E|
  384. ENG|0504040401  |    48|RI|                                                          ##051109->^Syntax
  385. ENG|0504040402  |     1|  |    The list of fields to be checked contains only vector slices
  386. ENG|0504040402  |     3|  |    The predicates ALL, ANY and ONE must be used for a precise formulation.
  387. ENG|0504040402  |     4| I|    Behind CHECK and a predicate, a ##0203040148<check^cond> can be specified.
  388. ENG|0504040402  |     5| E|
  389. ENG|0504040402  |     6| E|    FORM customer.list
  390. ENG|0504040402  |     7| E|    LAYOUT
  391. ENG|0504040402  |     8| E|      _1         _2
  392. ENG|0504040402  |     9| E|      _          _
  393. ENG|0504040402  |    10| E|      _          _
  394. ENG|0504040402  |    11| E|    ENDLAYOUT
  395. ENG|0504040402  |    13| E|    FIELD 1:cno_alt(1..3), 2:cno_neu(1..3)
  396. ENG|0504040402  |    14| E|        CHECK ANY BETWEEN 1000 and 9999 OR IS BLANK
  397. ENG|0504040402  |    15| E|        ELSE 'specify at least one 4 digit number per column';
  398. ENG|0504040402  |    17|SE|
  399. ENG|0504040402  |    19|RI|                                                          ##051109->^Syntax
  400. ENG|0504040403  |     1|  |    Other conditions
  401. ENG|0504040403  |     3| I|    Behind CHECK an arbitrary ##0203040146<boolean^expr> can be specified. A mixture of
  402. ENG|0504040403  |     4|  |    simple variables and vector slices is permitted as variable list of the
  403. ENG|0504040403  |     5|  |    fields to be checked. However, in most cases it  will  be  sensible  to
  404. ENG|0504040403  |     6|  |    check only a definite field with this variant and not a field list.
  405. ENG|0504040403  |     8|  |    nf Examples:
  406. ENG|0504040403  |     9|  |     FIELD cno CHECK cno > 1000 ...
  407. ENG|0504040403  |    10|  |               ELSE 'customer numbers start at 1000';
  408. ENG|0504040403  |    11|  |        or
  409. ENG|0504040403  |    12|  |     FIELD cno CHECK ( cno DIV 2 ) * 2 = cno
  410. ENG|0504040403  |    13|  |               ELSE 'all customer numbers must be even';
  411. ENG|0504040403  |    15|  |    Example for checking date values:
  412. ENG|0504040403  |    17|S |      form execution
  413. ENG|0504040403  |    22|  |                          date format  from          to
  414. ENG|0504040403  |    23|  |                          ____________  __________   __________
  415. ENG|0504040403  |    24|  |       ..........         mm/dd/yyyy    01/01/1993   30/06/1993
  416. ENG|0504040403  |    29|  |     please enter a date with the specified date format and within
  417. ENG|0504040403  |    30|  |     the interval specified
  418. ENG|0504040403  |    32| E|
  419. ENG|0504040403  |    33| E|    FORM date.input
  420. ENG|0504040403  |    34| E|    LAYOUT LOW=+ PROMPT = .
  421. ENG|0504040403  |    35|SE|                        date format   from          to
  422. ENG|0504040403  |    37| E|                        ____________  __________   __________
  423. ENG|0504040403  |    38| E|      _date             <datformat    <from_date   <to_date
  424. ENG|0504040403  |    40| E|    ENDLAYOUT
  425. ENG|0504040403  |    42| E|    FIELD message INIT 'please enter a date with the specified date '
  426. ENG|0504040403  |    43| E|                & 'format and in the specified interval';
  427. ENG|0504040403  |    45| E|    FIELD datformat INIT SET  (DATE);
  428. ENG|0504040403  |    46| E|    FIELD from_date INIT DATE ( , '19930101', yyyymmdd );
  429. ENG|0504040403  |    47| E|    FIELD to_date INIT DATE ( , '19930630', yyyymmdd );
  430. ENG|0504040403  |    49| E|    FIELD date  SIZE 10
  431. ENG|0504040403  |    50| E|          CHECK
  432. ENG|0504040403  |    51| E|              DATE (yyyymmdd,date ) BETWEEN 19930101 AND 19930630
  433. ENG|0504040403  |    52| E|              ELSE 'date must be in the specified range'
  434. ENG|0504040403  |    53|SE|                 & 'and be notated in the specified format';
  435. ENG|0504040403  |    56| E|
  436. ENG|0504040403  |    57|  |    In  this  example  it is checked whether a date input (field 'date') is
  437. ENG|0504040403  |    58|  |    within a certain interval. The test whether a value  is  in  a  certain
  438. ENG|0504040403  |    59|  |    interval  is  only  possible  for  date values by means of the internal
  439. ENG|0504040403  |    60|  |    representation of the date values. The function DATE  (yyyymmdd,  date)
  440. ENG|0504040403  |    61|  |    converts  the  variable  value  'date'  from  the format set in the SET
  441. ENG|0504040403  |    62|  |    parameters into the internal date format.
  442. ENG|0504040403  |    64|  |    The subsequent BETWEEN predicate checks finally whether the value is in
  443. ENG|0504040403  |    65|  |    the specified interval.
  444. ENG|0504040403  |    67|  |    Since the DATE function only returns a valid value if the  input  value
  445. ENG|0504040403  |    68|  |    has  the  format  expected by the SET parameters, in this way, the date
  446. ENG|0504040403  |    69|  |    format of the date input is also checked automatically.
  447. ENG|0504040403  |    71|RI|                                                          ##051109->^Syntax
  448. ENG|05040405    |     1|  |    FIELD/DISPLAY : Editing the Display
  449. ENG|05040405    |     3|  |    The FIELD/DISPLAY statement can be used to format  the  values  of  the
  450. ENG|05040405    |     4|  |    variables  before  their display. Numeric values can be formatted via a
  451. ENG|05040405    |     5|  |    FORMAT statement and be left- or right-justified in addition.
  452. ENG|05040405    |     7|  |        e.g.: FIELD amount DISPLAY FORMAT ('+999.999,99');
  453. ENG|05040405    |     8|  |              FIELD amount DISPLAY FORMAT ('+999.999,99') RIGHT;
  454. ENG|05040405    |    10|  |    Alphanumeric values may be displayed in lower or upper case  characters
  455. ENG|05040405    |    11|  |    and be left- or right-justified.
  456. ENG|05040405    |    13|S |        e.g.: FIELD name DISPLAY UPPER;
  457. ENG|05040405    |    19|  |    Example of the Formatting of Numeric Values
  458. ENG|05040405    |    21|  |    Form Definition
  459. ENG|05040405    |    22|  |    -----------------
  460. ENG|05040405    |    23| E|
  461. ENG|05040405    |    24| E|    FORM  account.display
  462. ENG|05040405    |    25| E|    LAYOUT  LOW=+
  463. ENG|05040405    |    26| E|       ...
  464. ENG|05040405    |    27| E|       bank_balance: <amount         + <today
  465. ENG|05040405    |    28| E|       ...
  466. ENG|05040405    |    29| E|    ENDLAYOUT
  467. ENG|05040405    |    31| E|    FIELD  amount    INIT 12345678 DISPLAY FORMAT ('-999.999.999,99') RIGHT;
  468. ENG|05040405    |    32| E|    FIELD  today     INIT DATE(dd/mm/yy);
  469. ENG|05040405    |    34|SE|
  470. ENG|05040405    |    37|RI|                                                          ##051112->^Syntax
  471. ENG|05040406    |     1|  |    FIELD/WIDTH : Field Delimitation in case of Multiple-line Form Fields
  472. ENG|05040406    |     3|  |    In  case  of multiple-line fields it is desirable to be able to specify
  473. ENG|05040406    |     4|  |    the total length  of  the  field  and  the  length  of  each  subfield.
  474. ENG|05040406    |     5|  |    FIELD/SIZE  defines  the  total  length  of  the  multiple-line  field.
  475. ENG|05040406    |     6|  |    FIELD/WIDTH defines the length of the individual subfields.
  476. ENG|05040406    |     8|  |    These functions facilitate the  writing  of  tools  which  generate  an
  477. ENG|05040406    |     9|  |    appropriate form field for a table field occurring in the database.
  478. ENG|05040406    |    11|RI|                                                          ##051108->^Syntax
  479. ENG|05040407    |     1|  |    FIELD/DOMAIN  :  Using DOMAIN Definitions for Form Fields
  480. ENG|05040407    |     3|  |    If  DOMAIN objects are defined, these can be used for the definition of
  481. ENG|05040407    |     4|  |    a form field. The FIELD/DOMAIN specification has the effect  that  FORM
  482. ENG|05040407    |     5|  |    accesses  the DOMAIN definition stored in the database using it for the
  483. ENG|05040407    |     6|  |    definition of SIZE, WIDTH, INIT, and CHECK.
  484. ENG|05040407    |     8|  |    The length in the DOMAIN definition  specified  under  LENGTH  has  the
  485. ENG|05040407    |     9|  |    effect  of an explicit FIELD/SIZE specification. The width specified in
  486. ENG|05040407    |    10|  |    the DOMAIN definition under  COLS  has  the  effect  of  a  FIELD/WIDTH
  487. ENG|05040407    |    11|  |    specification.  The DEFAULT value of the DOMAIN definition has the same
  488. ENG|05040407    |    12|  |    effect as a FIELD/INIT specification with the  same  value.  The  RANGE
  489. ENG|05040407    |    13|  |    specification  of the DOMAIN definition has the effect of a FIELD/CHECK
  490. ENG|05040407    |    14|  |    specification defined explicitly. Example:
  491. ENG|05040407    |    16|  |    Let a DOMAIN be defined in the  database  in  the  following  way  (the
  492. ENG|05040407    |    17|S |    interactive component DOMAIN should always be used for defining):
  493. ENG|05040407    |    19|  |           domainname     : TITLE
  494. ENG|05040407    |    20|  |           length (length): 5
  495. ENG|05040407    |    21|  |           data type      : char
  496. ENG|05040407    |    22|  |           range          : IN ('Mr','Ms','-')
  497. ENG|05040407    |    23|  |           default        : -
  498. ENG|05040407    |    25|  |    Then ...
  499. ENG|05040407    |    27|  |           FIELD tit SIZE 5
  500. ENG|05040407    |    28|  |                   INIT '-'
  501. ENG|05040407    |    29|  |                   CHECK IN  ('Mr','Ms','-')
  502. ENG|05040407    |    31|  |    is equivalent to ...
  503. ENG|05040407    |    33|  |            FIELD tit DOMAIN title
  504. ENG|05040407    |    35|S |    Sometimes  it  may be desirable that only some of the definitions which
  505. ENG|05040407    |    37|  |    have been made for the object DOMAIN are used. In  such  a  case  those
  506. ENG|05040407    |    38|  |    parts  of the DOMAIN definition which shall have an effect on the field
  507. ENG|05040407    |    39|  |    concerned may be specified after  the  domain  name  by  means  of  the
  508. ENG|05040407    |    40|  |    keywords SIZE, WIDTH, INIT, and CHECK.
  509. ENG|05040407    |    42|  |    Example:
  510. ENG|05040407    |    43|  |         FIELD tit DOMAIN tit ( SIZE, CHECK );
  511. ENG|05040407    |    45|  |    has the same effect as:
  512. ENG|05040407    |    47|  |         FIELD tit SIZE 5
  513. ENG|05040407    |    48|  |                    CHECK IN ('Mr','Ms','-')
  514. ENG|05040407    |    50|RI|                                                          ##051110->^Syntax
  515. ENG|05040408    |     1|  |    FIELD/HELP MSG  :  Output of HELP Messages in the MESSAGE Line
  516. ENG|05040408    |     3|  |    The  statement  FIELD  a  HELP  MSG  <str expr> has the effect that the
  517. ENG|05040408    |     4|  |    specified message is displayed in the message line as soon as  the  F10
  518. ENG|05040408    |     5|  |    key  (HELP key) is pressed. If both kinds of HELP information (HELP MSG
  519. ENG|05040408    |     6| I|    and ##05040403HELP^FORM) are specified, pressing the F10 key (HELP key) once will
  520. ENG|05040408    |     7|  |    display the message, pressing the F10 key (HELP key) a second time will
  521. ENG|05040408    |     8|  |    display the form.
  522. ENG|05040408    |    11|  |    Example:
  523. ENG|05040408    |    13| E|
  524. ENG|05040408    |    14| E|    FORM test.help_msg
  525. ENG|05040408    |    15| E|    LAYOUT
  526. ENG|05040408    |    16| E|    _func
  527. ENG|05040408    |    17|SE|    ENDLAYOUT
  528. ENG|05040408    |    19| E|    ACCEPT ( ENTER, F10='HELP INFO');
  529. ENG|05040408    |    20| E|    FIELD func
  530. ENG|05040408    |    21| E|       HELP MSG
  531. ENG|05040408    |    22| E|           'The menu items describe the possible activities'
  532. ENG|05040408    |    23| E|       HELP FORM
  533. ENG|05040408    |    24| E|           menu_info;
  534. ENG|05040408    |    26| E|
  535. ENG|05040408    |    28|RI|                                                          ##051111->^Syntax
  536. ENG|05040409    |     1|  |    FIELD/OFFSET : Vector Components with Dynamic Index
  537. ENG|05040409    |     2| E|
  538. ENG|05040409    |     3| E|    FORM customer.registration
  539. ENG|05040409    |     5| E|    LAYOUT GRAPHIC=*
  540. ENG|05040409    |     6| E|    cno     *       name        *
  541. ENG|05040409    |     7| E|    *****************************
  542. ENG|05040409    |     8| E|    _1      * _name(1..4)       *
  543. ENG|05040409    |     9| E|    _       * _                 *
  544. ENG|05040409    |    10| E|    _       * _                 *
  545. ENG|05040409    |    11| E|    _       * _                 *
  546. ENG|05040409    |    13| E|    ENDLAYOUT
  547. ENG|05040409    |    15| E|    FIELD  1:cno(1..4), name(1..4) OFFSET  x;
  548. ENG|05040409    |    17|SE|
  549. ENG|05040409    |    19|  |    If the expression behind OFFSET (here the variable x) has a value greater
  550. ENG|05040409    |    20|  |    than 0, the value of the vector component 'name(1+x)' appears in the form
  551. ENG|05040409    |    21|  |    field of the vector component 'name(1)'.
  552. ENG|05040409    |    23|  |    This rule accordingly applies for all vector components that are addressed in
  553. ENG|05040409    |    24|  |    this FIELD instruction.
  554. ENG|05040409    |    26|  |    Instead of the variable x, numerical expressions are also permitted.
  555. ENG|05040409    |    28|RI|                                                          ##051113->^Syntax
  556. ENG|05040410    |     1|  |    FIELD/ATTR : Assignment of Field Attributes
  557. ENG|05040410    |     3|  |    With the aid  of  the  FIELD/ATTR  instruction,  an  attribute  can  be
  558. ENG|05040410    |     4|  |    assigned  to each input or output field without an additional character
  559. ENG|05040410    |     5|  |    having to be placed before the fields in the LAYOUT. The attributes  of
  560. ENG|05040410    |     6|  |    the  text  fields,  however,  can  only be altered with the help of the
  561. ENG|05040410    |     7|  |    control characters.
  562. ENG|05040410    |     9| E|
  563. ENG|05040410    |    10| E|     LAYOUT  UNDERL=+
  564. ENG|05040410    |    11| E|        ...
  565. ENG|05040410    |    12| E|       +Name : <name
  566. ENG|05040410    |    13| E|        ...
  567. ENG|05040410    |    14| E|     ENDLAYOUT
  568. ENG|05040410    |    16|SE|     FIELD name SIZE 18 ATTR INV;
  569. ENG|05040410    |    20| E|
  570. ENG|05040410    |    22|RI|                                                          ##051114->^Syntax
  571. ENG|05040411    |     1|  |    FIELD/NOINPUT : Positioning Cursor without overwriting the field
  572. ENG|05040411    |     3|  |    A frequent application of forms is to choose a certain field in a  list
  573. ENG|05040411    |     4|  |    of fields by means of the cursor without overwriting the field.
  574. ENG|05040411    |     6|  |    The  option  NOINPUT ensures that a field defined as input field in the
  575. ENG|05040411    |     7|  |    layout cannot be overwritten, but can nevertheless  be  chosen  by  the
  576. ENG|05040411    |     8|  |    cursor.
  577. ENG|05040411    |     9| E|
  578. ENG|05040411    |    10| E|    FORM test.noinp
  579. ENG|05040411    |    11| E|     LAYOUT
  580. ENG|05040411    |    13| E|     _Z(1..5)
  581. ENG|05040411    |    14| E|     _
  582. ENG|05040411    |    15| E|     _
  583. ENG|05040411    |    16| E|     _
  584. ENG|05040411    |    17|SE|     _
  585. ENG|05040411    |    20| E|     ENDLAYOUT
  586. ENG|05040411    |    21| E|     ACCEPT ( ENTER, F3= 'END' );
  587. ENG|05040411    |    23| E|     SPECIALATTR CURSORLINE INV;
  588. ENG|05040411    |    24| E|     FIELD Z(1..5) NOINPUT;
  589. ENG|05040411    |    25| E|     CONTROL CASE $KEY OF
  590. ENG|05040411    |    26| E|          ENTER : CALL PROC display (Z($CURSOR));
  591. ENG|05040411    |    27| E|          F3    : RETURN;
  592. ENG|05040411    |    28| E|     END;
  593. ENG|05040411    |    29| E|
  594. ENG|05040411    |    31|RI|                                                          ##051184->^Syntax
  595. ENG|050405      |     1|  |    AUTOPAGE/PAGE : Scrolling Support
  596. ENG|050405      |     3|  |    Scrolling (paging) in forms is necessary when a form is larger that the
  597. ENG|050405      |     4|  |    screen  segment  in  which  it  is  displayed.  There are three ways of
  598. ENG|050405      |     5|  |    scrolling in forms.
  599. ENG|050405      |     7|  |    1. In the CONTROL instruction of the form, the  instructions  PAGE  UP,
  600. ENG|050405      |     8|  |    PAGE DOWN, PAGE LEFT and PAGE RIGHT are used.
  601. ENG|050405      |    10| E|
  602. ENG|050405      |    11| E|     CONTROL
  603. ENG|050405      |    12| E|        CASE $KEY OF
  604. ENG|050405      |    13| E|          UP   : PAGE UP;       (* one page up    *)
  605. ENG|050405      |    14| E|          DOWN : PAGE DOWN n;   (* n lines down   *)
  606. ENG|050405      |    15| E|                 ...
  607. ENG|050405      |    16|SE|        END;
  608. ENG|050405      |    19| E|
  609. ENG|050405      |    21|  |    2.  The  instruction  AUTOPAGE  is  used  which  assigns  the scrolling
  610. ENG|050405      |    22|  |    functions automatically to the  keys  and  supports  scrolling  in  all
  611. ENG|050405      |    23|  |    directions depending on the size of the screen segment.
  612. ENG|050405      |    25|  |     ...
  613. ENG|050405      |    26|  |    ENDLAYOUT
  614. ENG|050405      |    27|  |    ACCEPT ( ... );
  615. ENG|050405      |    28|  |    AUTOPAGE;
  616. ENG|050405      |    29|  |    FIELD ...
  617. ENG|050405      |    30|  |     ...
  618. ENG|050405      |    32|  |    FORM  occupies  definite keys for scrolling with AUTOPAGE. If these are
  619. ENG|050405      |    33|  |    already occupied by  the  program,  FORM  cannot  use  these  keys  for
  620. ENG|050405      |    34|S |    scrolling. The function is thus switched off.
  621. ENG|050405      |    37|  |    If  a  keyboard  has  engraved  scroll  keys,  FORM  activates them for
  622. ENG|050405      |    38|  |    scrolling; this applies to all directions of scrolling.
  623. ENG|050405      |    40|  |    For all the other keyboards F12 (=DOWN) releases scrolling towards  the
  624. ENG|050405      |    41|  |    bottom  and F11 (=UP) releases scrolling towards the top. For scrolling
  625. ENG|050405      |    42|  |    to the right/left in case of  keyboards  without  engraved  keys,  FORM
  626. ENG|050405      |    43|  |    implicitly  distinguishes  two  modes. If the screen section is so wide
  627. ENG|050405      |    44|  |    that the left or right part of the form is shown, FORM provides the  F9
  628. ENG|050405      |    45|  |    key  for  alternating scrolling. If the screen section is so small that
  629. ENG|050405      |    46|  |    horizontal scrolling can be done several times, then FORM provides  two
  630. ENG|050405      |    47|  |    keys, F8 and F9, for scrolling to the left or to the right.
  631. ENG|050405      |    49|  |    For  keyboards  with  nine  function  keys  only, there must be one key
  632. ENG|050405      |    50|  |    combination at least be assigned to vt_up_key and vt_down_key in  order
  633. ENG|050405      |    51|  |    that  AUTOPAGE  may  be operative. If also vt_left_key and vt_right_key
  634. ENG|050405      |    52|  |    are realized via key combinations, FORM will recognize this and  handle
  635. ENG|050405      |    53|S |    them like engraved keys.
  636. ENG|050405      |    55|  |    Example :
  637. ENG|050405      |    57|  |     ...
  638. ENG|050405      |    58|  |    ENDLAYOUT
  639. ENG|050405      |    59|  |    ACCEPT ( ... );
  640. ENG|050405      |    60|  |    AUTOPAGE;
  641. ENG|050405      |    61|  |    FIELD ...
  642. ENG|050405      |    64| I|                                                    ##051119AUTOPAGE-Syntax
  643. ENG|050405      |    65|RI|                                                    ##051124PAGE-Syntax
  644. ENG|050406      |     1|  |    PICK/PUT Mechanism in Forms
  645. ENG|050406      |     3|  |    The  PICK/PUT statements can be used to define forms from which example
  646. ENG|050406      |     4|  |    values may be picked for input fields.
  647. ENG|050406      |     5|  |    PICK and PUT may only occur in the CONTROL block of forms.
  648. ENG|050406      |     7|  |    Function of PICK without argument:
  649. ENG|050406      |     8|  |      stores the value of the field where the cursor is positioned into the
  650. ENG|050406      |     9|  |      PICK buffer. Usually the argument  will  be  formulated  argument  in
  651. ENG|050406      |    10|  |      dependence on the cursor position. If the cursor is not positioned on
  652. ENG|050406      |    11|  |      an input field, an error message will be output.
  653. ENG|050406      |    13|  |    Function of PICK with argument:
  654. ENG|050406      |    14|  |      stores  the  argument  in  the  PICK  buffer. Usually the argument is
  655. ENG|050406      |    15|  |      formulated according to the cursor position. If  the  cursor  is  not
  656. ENG|050406      |    16|S |      positioned on an input field, an error message will be output.
  657. ENG|050406      |    19|  |      Example:
  658. ENG|050406      |    20| E|
  659. ENG|050406      |    21| E|      HELPFORM tpick.test
  660. ENG|050406      |    22| E|      LAYOUT
  661. ENG|050406      |    23| E|          _1  <@menu(1)
  662. ENG|050406      |    24| E|          _   <@menu(2)
  663. ENG|050406      |    25| E|          _   <@menu(3)
  664. ENG|050406      |    26| E|      ENDLAYOUT
  665. ENG|050406      |    27| E|      FIELD  1:@choice(1..3);
  666. ENG|050406      |    28| E|      FIELD  @menu(1) INIT 'insert';
  667. ENG|050406      |    29| E|      FIELD  @menu(2) INIT 'update';
  668. ENG|050406      |    30| E|      FIELD  @menu(3) INIT 'delete';
  669. ENG|050406      |    31| E|      ACCEPT ( ENTER, F3='end' );
  670. ENG|050406      |    32| E|      CONTROL CASE $KEY OF
  671. ENG|050406      |    33| E|               ENTER: PICK(@menu($CURSOR));
  672. ENG|050406      |    34| E|               ELSE : RETURN;
  673. ENG|050406      |    35|SE|              END;
  674. ENG|050406      |    38| E|
  675. ENG|050406      |    39|  |
  676. ENG|050406      |    42|  |    Function of PUT without argument :
  677. ENG|050406      |    44|  |      stores  the  PICK  buffer  contents  as  value of the field where the
  678. ENG|050406      |    45|  |      cursor is positioned. If the cursor is not  positioned  on  an  input
  679. ENG|050406      |    46|  |      field, an error message will be output.
  680. ENG|050406      |    49|  |    Function of PUT with argument :
  681. ENG|050406      |    51|  |      stores  the  PICK buffer contents as value of the specified variable.
  682. ENG|050406      |    52|  |      This variant is needed in the case that  an  output  field  shall  be
  683. ENG|050406      |    53|S |      filled with a picked value.
  684. ENG|050406      |    55|  |    Example:
  685. ENG|050406      |    57| E|
  686. ENG|050406      |    58| E|    FORM  tpick.m1
  687. ENG|050406      |    59| E|    LAYOUT
  688. ENG|050406      |    60| E|    _1           _2
  689. ENG|050406      |    61| E|    _            _
  690. ENG|050406      |    62| E|    _            _
  691. ENG|050406      |    63| E|    _            _
  692. ENG|050406      |    64| E|    ENDLAYOUT
  693. ENG|050406      |    65| E|    ACCEPT ( enter, f5='PUT', f10='PICK FORM' );
  694. ENG|050406      |    66| E|    FIELD 1:title(1..4) HELP FORM p_title ( frame );
  695. ENG|050406      |    67| E|    FIELD 2:city(1..4) HELP FORM p_city ( frame );
  696. ENG|050406      |    68| E|    CONTROL
  697. ENG|050406      |    69| E|       CASE $KEY of
  698. ENG|050406      |    70| E|         F5: PUT;
  699. ENG|050406      |    71|SE|       END;
  700. ENG|050406      |    74| E|
  701. ENG|050406      |    76| I|    To facilitate the handling of PICK within forms, the ##050610AUTOPUT option can
  702. ENG|050406      |    77|  |    be used when calling a form.
  703. ENG|050406      |    79|RI|                                                          ##051123->^Syntax
  704. ENG|050408      |     1|  |    ACCEPT : Activating the Release Key
  705. ENG|050408      |     2|  |    sp  1  The  ACCEPT  statement can be used to determine the release keys
  706. ENG|050408      |     3|  |    which are to be accepted by the form.
  707. ENG|050408      |     5|  |    The permitted release keys are:
  708. ENG|050408      |     6|  |      ENTER, F1, ..., F12, HELP, UP, DOWN
  709. ENG|050408      |     8|  |    The ACCEPT option can be specified either in the form definition or  as
  710. ENG|050408      |     9|  |    a call option.
  711. ENG|050408      |    11|  |    The  rule is that ACCEPT as call option overrides the ACCEPT definition
  712. ENG|050408      |    12|  |    in the form.
  713. ENG|050408      |    14|  |    If no ACCEPT option is set, then only ENTER will  be  accepted  by  the
  714. ENG|050408      |    15|  |    form.
  715. ENG|050408      |    17|S |    An example is following:
  716. ENG|050408      |    19|  |      Form Definition:
  717. ENG|050408      |    20|  |      ----------------
  718. ENG|050408      |    21| E|
  719. ENG|050408      |    22| E|    FORM  test.acc_msk
  720. ENG|050408      |    23| E|    LAYOUT
  721. ENG|050408      |    24| E|          ...
  722. ENG|050408      |    25| E|    ENDLAYOUT
  723. ENG|050408      |    26| E|    ACCEPT ( ENTER, F3='END', F4='INSERT', F5='SEARCH', F6='UPDATE' );
  724. ENG|050408      |    28| E|
  725. ENG|050408      |    30|  |    Call:
  726. ENG|050408      |    31|  |    -----
  727. ENG|050408      |    32|  |    CALL FORM ... ( ACCEPT (ENTER, F3='RETURN', F5, F6));
  728. ENG|050408      |    35|S |    Resultant Key Menu:
  729. ENG|050408      |    37|  |    -------------------
  730. ENG|050408      |    39|  |                     3=RETURN 5=SEARCH 6=UPDATE
  731. ENG|050408      |    41|  |    In  addition  to the keys described so far required by FORM independent
  732. ENG|050408      |    42|  |    of the type of hardware, there is the possibility of using further keys
  733. ENG|050408      |    43|  |    that depend on the installation.
  734. ENG|050408      |    45|  |    The following additional key literals can be used at the most:  ENDKEY,
  735. ENG|050408      |    46|  |    CMDKEY, LEFTKEY, and RIGHTKEY.
  736. ENG|050408      |    48|RI|                                                          ##051117->^Syntax
  737. ENG|050409      |     1|  |    IGNORE : Suppressing Input Checking
  738. ENG|050409      |     2| E|
  739. ENG|050409      |     3| E|    FORM test.ignore_form
  740. ENG|050409      |     4| E|    LAYOUT
  741. ENG|050409      |     5| E|     ... _cno... _cfname  ... _cname
  742. ENG|050409      |     6| E|    ENDLAYOUT
  743. ENG|050409      |     8| E|    ACCEPT ( F1='INSERT', F3='RETURN' );
  744. ENG|050409      |    10| E|    FIELD cno, cfname, cname INIT NULL
  745. ENG|050409      |    11| E|          CHECK  IS NOT NULL  ELSE 'input is incomplete';
  746. ENG|050409      |    13| E|    IGNORE  cfname, cname WHEN  ( $KEY = F3 )
  747. ENG|050409      |    15| E|
  748. ENG|050409      |    17|S |    If  the user strikes the F3 key after input, then input testing via the
  749. ENG|050409      |    19|  |    FIELD/CHECK option will be suppressed for the  variables  'cfname'  and
  750. ENG|050409      |    20|  |    'cname'.
  751. ENG|050409      |    22|  |    If  there is a great number of fields to be ignored, then the following
  752. ENG|050409      |    23|  |    IGNORE variants can be used:
  753. ENG|050409      |    25|  |               IGNORE  ALL WHEN  ( $KEY = F3 )
  754. ENG|050409      |    27|  |    Here none of the input fields will be checked if F3 is pressed.
  755. ENG|050409      |    29|  |    Or:
  756. ENG|050409      |    30|  |               IGNORE  ALL EXCEPT cno, cname  WHEN  ( $KEY = F3 )
  757. ENG|050409      |    31|  |    Here only the fields 'cno'  and  'cname'  will  be  checked  if  F3  is
  758. ENG|050409      |    32|  |    pressed.
  759. ENG|050409      |    34|RI|                                                          ##051115->^Syntax
  760. ENG|050410      |     1|  |    KEYSWAP : Interchanging the Key Functions
  761. ENG|050410      |     3|  |    The  KEYSWAP  option  can be used to interchange the functions of every
  762. ENG|050410      |     4|  |    two release keys.
  763. ENG|050410      |     6|  |    So it is possible to change the key setting without  having  to  modify
  764. ENG|050410      |     7|  |    the routines and forms.
  765. ENG|050410      |     9|  |    The  KEYSWAP  option is valid up to the end of the program or up to the
  766. ENG|050410      |    10|  |    occurrence of the next KEYSWAP option.
  767. ENG|050410      |    12|  |    KEYSWAP may be specified either in the form definition after the layout
  768. ENG|050410      |    13|S |    part or as a routine option after the routine header.
  769. ENG|050410      |    19|  |    Example 1:
  770. ENG|050410      |    21|  |    Without KEYSWAP:
  771. ENG|050410      |    22|  |    ----------------
  772. ENG|050410      |    23|  |         ACCEPT ( F10='HELP', F3='END', F4='INSERT', F5='SEARCH' );
  773. ENG|050410      |    25|  |         produces:
  774. ENG|050410      |    26|  |                  3=END 4=INSERT 5=SEARCH 10=HELP
  775. ENG|050410      |    28|  |    with KEYSWAP:
  776. ENG|050410      |    29|  |    -------------
  777. ENG|050410      |    30|  |         ACCEPT ( F10='HELP', F3='END', F4='INSERT', F5='SEARCH' );
  778. ENG|050410      |    31|  |         KEYSWAP ( F10<->F1 )
  779. ENG|050410      |    33|  |         produces:
  780. ENG|050410      |    34|S |                  1=HELP 3=END 4=INSERT 5=SEARCH
  781. ENG|050410      |    37|  |    Example 2:
  782. ENG|050410      |    39|  |    with KEYSWAP:
  783. ENG|050410      |    40|  |    -------------
  784. ENG|050410      |    41|  |         ACCEPT ( F10='HELP', F3='END', F4='INSERT', F5='SEARCH' );
  785. ENG|050410      |    42|  |         KEYSWAP ( F10<->F1, F2<->F3, F3<->F4, F4<->F5 )
  786. ENG|050410      |    44|  |         produces:
  787. ENG|050410      |    45|  |                  1=HELP 2=END 3=INSERT 4=SEARCH
  788. ENG|050410      |    47|RI|                                                          ##051155->^Syntax
  789. ENG|050411      |     1|  |    CONTROL : The Form as Controlling Module
  790. ENG|050411      |     2| E|
  791. ENG|050411      |     3| E|    FORM  customer.mastercard
  792. ENG|050411      |     4| E|    LAYOUT
  793. ENG|050411      |     5| E|    ENDLAYOUT
  794. ENG|050411      |     7| E|    ACCEPT ( F3='RETURN',F4='INSERT',F5='ALTER' );
  795. ENG|050411      |     8| E|    CONTROL  CASE  $KEY  OF
  796. ENG|050411      |     9| E|               F3 : RETURN;
  797. ENG|050411      |    10| E|               F4 : CALL PROC insert;
  798. ENG|050411      |    11| E|               F5 : CALL PROC alter;
  799. ENG|050411      |    12| E|             END;
  800. ENG|050411      |    14| E|
  801. ENG|050411      |    16|  |    If the user presses the F4 key after input,  then  the  SQL-PL  routine
  802. ENG|050411      |    17|S |    'customer.insert' will be called out of the form.
  803. ENG|050411      |    19|  |    RETURN,   CALL,   SWITCH,  SWITCHCALL,  PICK,  PUT,  and  further  CASE
  804. ENG|050411      |    20|  |    statements may be included within the CASE statement.
  805. ENG|050411      |    22|  |    The following equivalent SQL-PL routine shall illustrate the effect  of
  806. ENG|050411      |    23|  |    the CONTROL statement:
  807. ENG|050411      |    25|  |       PROC customer.start
  808. ENG|050411      |    26|  |          ...
  809. ENG|050411      |    27|  |          REPEAT
  810. ENG|050411      |    28|  |              CALL FORM customer.mastercard;
  811. ENG|050411      |    29|  |              CASE  $KEY  OF
  812. ENG|050411      |    30|  |                 F3 : RETURN;
  813. ENG|050411      |    31|  |                 F4 : CALL PROC insert;
  814. ENG|050411      |    32|  |                 F5 : CALL PROC alter;
  815. ENG|050411      |    33|  |              END
  816. ENG|050411      |    34|S |          UNTIL  $KEY = F3;
  817. ENG|050411      |    37|RI|                                                          ##051122->^Syntax
  818. ENG|050414      |     1|  |    GRAPHIC : Graphics Characters in Forms
  819. ENG|050414      |     3|  |    In  FORM  it  can be determined whether or not a sequence of characters
  820. ENG|050414      |     4|  |    (vertical or horizontal) is to be displayed as a single line.
  821. ENG|050414      |     6|  |    Example:
  822. ENG|050414      |     7| E|
  823. ENG|050414      |     8| E|     FORM box.test
  824. ENG|050414      |     9| E|     LAYOUT  GRAPHIC=*
  825. ENG|050414      |    10| E|      **************
  826. ENG|050414      |    11| E|      *            *
  827. ENG|050414      |    12| E|      *            *
  828. ENG|050414      |    13| E|      *            *
  829. ENG|050414      |    14| E|      *            *
  830. ENG|050414      |    15| E|      **************
  831. ENG|050414      |    16|SE|     ENDLAYOUT
  832. ENG|050414      |    19| E|
  833. ENG|050414      |    21|  |    At graphics terminals the rectangle defined  in  the  example  will  be
  834. ENG|050414      |    22|  |    displayed   with   traced   lines.   At   terminals   without  graphics
  835. ENG|050414      |    23|  |    representation the horizontal line will be displayed as a  sequence  of
  836. ENG|050414      |    24|  |    '-'  (dashes),  the vertical line as a sequence of '|' (vertical bars),
  837. ENG|050414      |    25|  |    and the corners as '*'.
  838. ENG|050414      |    27|RI|                                                          ##051103->^Syntax
  839. ENG|050415      |     1|  |    MARK : Initialization of the Cursor Position
  840. ENG|050415      |     3|  |    When calling a form, the cursor is usually placed on  the  first  input
  841. ENG|050415      |     4|  |    field of the form. If the form has no input fields, then FORM positions
  842. ENG|050415      |     5|  |    the cursor to the upper lefthand corner of the form. In addition to the
  843. ENG|050415      |     6|  |    call  option  MARK,  the MARK statement can be used within the form, if
  844. ENG|050415      |     7|  |    the cursor shall be placed to an input field other than the first one.
  845. ENG|050415      |     9|  |    The MARK option specified for the call  overrides  the  MARK  statement
  846. ENG|050415      |    10|  |    defined within the form.
  847. ENG|050415      |    12|  |    Example: ENDLAYOUT
  848. ENG|050415      |    13|  |               ...
  849. ENG|050415      |    14| E|
  850. ENG|050415      |    15| E|              MARK ( 3 );
  851. ENG|050415      |    17|SE|
  852. ENG|050415      |    19|RI|                                                          ##051116->^Syntax
  853. ENG|050416      |     1|  |    RETURNONLAST : Leaving the Form via the Return Key
  854. ENG|050416      |     3|  |    Usually a form is left via a function key.
  855. ENG|050416      |     5|  |    The statement (directive) RETURNONLAST as the effect that the form will
  856. ENG|050416      |     6|  |    be  left,  when  the cursor is placed on the last field of the form and
  857. ENG|050416      |     7|  |    the TAB key (or the NEXTFIELD key, if available) is  pressed.  In  this
  858. ENG|050416      |     8|  |    case the form produces ENTER as value of $KEY.
  859. ENG|050416      |     9|RI|                                                          ##051118->^Syntax
  860. ENG|050417      |     1|  |    HEADERLINES, BOTTOMLINES : Header and Bottomlines
  861. ENG|050417      |     3|  |    In  forms that shall be scrolled it is possible to define the first and
  862. ENG|050417      |     4|  |    last lines of the layout as frame lines.
  863. ENG|050417      |     6|  |    The declarations HEADERLINES and BOTTOMLINES determine  the  amount  of
  864. ENG|050417      |     7|  |    the  header  and  bottom lines that shall belong to the constant frame.
  865. ENG|050417      |     8|  |    The remaining part of the form is used for scrolling.
  866. ENG|050417      |    10|  |    Example:
  867. ENG|050417      |    12|  |      ...
  868. ENG|050417      |    13|  |      ENDLAYOUT
  869. ENG|050417      |    14| E|
  870. ENG|050417      |    15| E|      HEADERLINES (2);
  871. ENG|050417      |    16|SE|      BOTTOMLINES (1);
  872. ENG|050417      |    19| E|
  873. ENG|050417      |    21|RI|                                                          ##051120->^Syntax
  874. ENG|050418      |     1|  |    SPECIALATTR : Situation-dependent Display Attributes
  875. ENG|050418      |     3|  |    With the aid of the form processing instruction SPECIALATTR, a field can also
  876. ENG|050418      |     4|  |    be displayed with a certain special display attribute depending on the
  877. ENG|050418      |     5|  |    situation.
  878. ENG|050418      |     7|  |    The  instruction  SPECIALATTR  CHECK  causes  the  field  whose   CHECK
  879. ENG|050418      |     8|  |    condition  is  not  satisfied  to  be  represented  with  the specified
  880. ENG|050418      |     9|  |    attribute.
  881. ENG|050418      |    11|  |    The instruction SPECIALATTR INPUT causes  all  currently  active  input
  882. ENG|050418      |    12|  |    fields to be displayed with the specified display attribute.
  883. ENG|050418      |    14|  |    The  instruction  SPECIALATTR  MSG  causes  the automatically displayed
  884. ENG|050418      |    15|  |    message line to appear with  the  desired  display  attribute.  If  the
  885. ENG|050418      |    16|  |    instruction  SPECIALATTR  MSG  is  not  specified,  the message line is
  886. ENG|050418      |    17|S |    displayed with the attribute preset by the system.
  887. ENG|050418      |    19|  |    The instruction SPECIALATTR CURSORLINE causes the form  line  in  which
  888. ENG|050418      |    20|  |    the  cursor  is  positioned to be displayed with the defined attribute.
  889. ENG|050418      |    21|  |    The form line appears as a bar when the selected logical  attribute  is
  890. ENG|050418      |    22|  |    defined  as  'inverse'  or  distinguishes its background color from the
  891. ENG|050418      |    23|  |    background of the form.
  892. ENG|050418      |    25|  |    The start and end position of the bar is determined  by  the  left  and
  893. ENG|050418      |    26|  |    right  margin of the form if not otherwise explicitly specified. If the
  894. ENG|050418      |    27|  |    form is output in a window, the bar is restricted by the  forms  window
  895. ENG|050418      |    28|  |    size.
  896. ENG|050418      |    30|  |    The  SPECIALATTR  instruction applies to all fields of the form and can
  897. ENG|050418      |    31|  |    only be specified once for each form. Thus the above  examples  can  be
  898. ENG|050418      |    32|  |    defined in a SPECIALATTR instruction as follows.
  899. ENG|050418      |    34| E|
  900. ENG|050418      |    35|SE|    FORM customer.mastercard
  901. ENG|050418      |    38| E|    LAYOUT  PROMPT = .
  902. ENG|050418      |    40| E|              CUST-NO    : _cno
  903. ENG|050418      |    41| E|              ...
  904. ENG|050418      |    42| E|    ENDLAYOUT
  905. ENG|050418      |    44| E|    FIELD cno CHECK BETWEEN 1000 and 9999;
  906. ENG|050418      |    46| E|    SPECIALATTR INPUT underl
  907. ENG|050418      |    47| E|                CHECK inv
  908. ENG|050418      |    48| E|                MSG ATTR12;
  909. ENG|050418      |    50| E|
  910. ENG|050418      |    52|RI|                                                          ##051121->^Syntax
  911. ENG|050419      |     1|  |    INSERTMODE : Display of the Input Mode
  912. ENG|050419      |     3|  |    With  the  instruction  DISPLAY INSERTMODE it can be displayed in which
  913. ENG|050419      |     4|  |    input mode (overwrite or insert) the keyboard is in.
  914. ENG|050419      |     6|  |    If the input mode is set to insert by pressing the key, at the position
  915. ENG|050419      |     7|  |    specified by POS the expression defined by LABEL  is  output  (default:
  916. ENG|050419      |     8|  |    'INSERT')  in the attribute ATTR (default: ATTR5). By switching back to
  917. ENG|050419      |     9|  |    overwrite mode, the label is extinguished.
  918. ENG|050419      |    11|  |    The  position  POS  must  be  specified  in  the  instruction   DISPLAY
  919. ENG|050419      |    12|  |    INSERTMODE, the specification of LABEL and ATTR is optional. The INSERT
  920. ENG|050419      |    13|  |    label  is  output  in  the  specified  length  up to a maximum of eight
  921. ENG|050419      |    14|  |    characters.
  922. ENG|050419      |    16| E|
  923. ENG|050419      |    17|SE|    FORM customer.mastercard
  924. ENG|050419      |    20| E|    LAYOUT  PROMPT = .
  925. ENG|050419      |    22| E|              CUST-NO    : _cno
  926. ENG|050419      |    23| E|              ...
  927. ENG|050419      |    24| E|    ENDLAYOUT
  928. ENG|050419      |    26| E|    DISPLAY INSERTMODE ( POS ( 20,3),
  929. ENG|050419      |    27| E|                         LABEL ( 'INSERT' ),
  930. ENG|050419      |    28| E|                         ATTR  ( ATTR7 ) );
  931. ENG|050419      |    30| E|
  932. ENG|050419      |    32|RI|                                                          ##051156->^Syntax
  933. ENG|050422      |     1|  |    BEFORE/AFTER FIELD
  934. ENG|050422      |     3|  |    In addition to the statements INIT, HELP MSG,  HELP  FORM,  CHECK,  and
  935. ENG|050422      |     4|  |    DISPLAY  already  known the statements BEFORE and AFTER FIELD have been
  936. ENG|050422      |     5|  |    provided for the processing of fields in forms.
  937. ENG|050422      |     7|  |    BEFORE FIELD and AFTER FIELD precede a block of SQL-PL statements.
  938. ENG|050422      |     9|  |    Statements  formulated  after  BEFORE  FIELD  are  executed  when   the
  939. ENG|050422      |    10|  |    corresponding  field  has  been  activated and is therefore enabled for
  940. ENG|050422      |    11|  |    writing.
  941. ENG|050422      |    13|  |    In practice there will mainly be guidance texts which will be specified
  942. ENG|050422      |    14|  |    here for the particular field.
  943. ENG|050422      |    16|S |    Example:
  944. ENG|050422      |    19|  |    FIELD firstname BEFORE FIELD message := 'firstname of customer';
  945. ENG|050422      |    21|  |    All the other statements which are allowed in SQL-PL  may  be  used  as
  946. ENG|050422      |    22|  |    well. The SQL-PL programmer may even use a REPORT or SQL statement.
  947. ENG|050422      |    24|  |    As  for  BEFORE FIELD all statements which are allowed in SQL-PL may be
  948. ENG|050422      |    25|  |    specified for AFTER FIELD. Statements formulated behind AFTER FIELD are
  949. ENG|050422      |    26|  |    executed when the corresponding field has to  be  left  and  the  CHECK
  950. ENG|050422      |    27|  |    condition - if any - has been met.
  951. ENG|050422      |    29|  |    The  AFTER FIELD statements are not executed when the field is skipped.
  952. ENG|050422      |    30|  |    A field can be skipped if it has not been filled by the user,  but  the
  953. ENG|050422      |    31|  |    NEXTFIELD key has been pressed instead.
  954. ENG|050422      |    33|RI|                                                          ##051140->^Syntax
  955. ENG|050423      |     1|  |    GROUP : Comprising Fields to Form Groups
  956. ENG|050423      |     3|  |    In  forms  fields may be comprised to form groups. This helps to assign
  957. ENG|050423      |     4|  |    fields of one form to various tables. A form  without  GROUP  statement
  958. ENG|050423      |     5|  |    has  the same effect as a form with just one GROUP statement specifying
  959. ENG|050423      |     6|  |    every field of the form.
  960. ENG|050423      |     8|  |    If a GROUP statement is formulated in a form, FORM expects  that  every
  961. ENG|050423      |     9|  |    field is assigned to a group. Fields which are not explicitly specified
  962. ENG|050423      |    10|  |    in  a  GROUP  statement  are implicitly assigned by FORM to a remainder
  963. ENG|050423      |    11|  |    group which will be executed first of all groups.
  964. ENG|050423      |    13|  |    A group of fields will be  left  when  all  fields  of  the  group  are
  965. ENG|050423      |    14|  |    processed.  Of  course, this depends on the individual field statements
  966. ENG|050423      |    15|  |    defined.
  967. ENG|050423      |    17|RI|                                                          ##051141->^Syntax
  968. ENG|050424      |     1|  |    BEFORE/AFTER GROUP
  969. ENG|050424      |     3|  |    In analogy to the statements BEFORE/AFTER FIELD, the statements  BEFORE
  970. ENG|050424      |     4|  |    GROUP and AFTER GROUP can be formulated for the groups of fields.
  971. ENG|050424      |     6|  |    In  this case there is the restriction that a group name may only occur
  972. ENG|050424      |     7|  |    in one BEFORE GROUP statement and in one AFTER GROUP statement.
  973. ENG|050424      |     9|RI|                                                          ##051141->^Syntax
  974. ENG|050425      |     1|  |    The NEXTFIELD Statement
  975. ENG|050425      |     3|  |    The order in which the fields are executed is  defined  either  by  the
  976. ENG|050425      |     4|  |    order  of  fields  within  the  layout  or by the field statements. The
  977. ENG|050425      |     5|  |    NEXTFIELD statement which may occur in forms in  place  of  any  SQL-PL
  978. ENG|050425      |     6|  |    statement allows the sequence of processing be modified dynamically.
  979. ENG|050425      |     9|  |    Example:
  980. ENG|050425      |    11| E|
  981. ENG|050425      |    12| E|    FORM test.nxt_fld
  982. ENG|050425      |    13| E|    LAYOUT
  983. ENG|050425      |    14| E|     accountno    : _cno
  984. ENG|050425      |    15| E|     name         : _name
  985. ENG|050425      |    16|SE|     firstname    : _f_name
  986. ENG|050425      |    19| E|     bank balance : _account
  987. ENG|050425      |    20| E|    ENDLAYOUT
  988. ENG|050425      |    21| E|    GROUP a
  989. ENG|050425      |    22| E|       FIELD cno
  990. ENG|050425      |    23| E|          BEFORE FIELD
  991. ENG|050425      |    24| E|             message := 'number of customer, if known'
  992. ENG|050425      |    25| E|          AFTER FIELD
  993. ENG|050425      |    26| E|             BEGIN
  994. ENG|050425      |    27| E|             SQL ( SELECT DIRECT name, firstname INTO :name, :f_name
  995. ENG|050425      |    28| E|                   FROM customer
  996. ENG|050425      |    29| E|                   key cno = :cno );
  997. ENG|050425      |    30| E|             NEXTFIELD account;
  998. ENG|050425      |    31| E|             END;
  999. ENG|050425      |    32| E|       FIELD name ...
  1000. ENG|050425      |    33| E|       FIELD f_name ...
  1001. ENG|050425      |    34| E|       FIELD account ...
  1002. ENG|050425      |    35|SE|    END;
  1003. ENG|050425      |    38| E|
  1004. ENG|050425      |    40|  |    The  field  name used in the NEXTFIELD statement must designate a field
  1005. ENG|050425      |    41|  |    of the form.
  1006. ENG|050425      |    43|  |    The statement NEXTFIELD has the effect that, when leaving the field,  a
  1007. ENG|050425      |    44|  |    branch   is   made  to  the  specified  field  as  continuation  field,
  1008. ENG|050425      |    45|  |    irrespective of a NEXTFIELD statement definition for  BEFORE  FIELD  or
  1009. ENG|050425      |    46|  |    AFTER FIELD.
  1010. ENG|050425      |    48|RI|                                                          ##051144->^Syntax
  1011. ENG|050426      |     1|  |    The NEXTGROUP Statement
  1012. ENG|050426      |     3|  |    The  order in which the groups will be executed is defined by the order
  1013. ENG|050426      |     4|  |    of the GROUP statements. The NEXTGROUP statement may be  used  in  case
  1014. ENG|050426      |     5|  |    that  the  order  has to be modified e.g. depending on a condition. The
  1015. ENG|050426      |     6|  |    NEXTGROUP  statement  may  occur  at  any  place,  like  the  NEXTFIELD
  1016. ENG|050426      |     7|  |    statement.
  1017. ENG|050426      |     9|  |    The group name which is used in the NEXTGROUP statement must be defined
  1018. ENG|050426      |    10|  |    via  the  GROUP  statement  in  the same form, otherwise FORM returns a
  1019. ENG|050426      |    11|  |    translation error when storing.
  1020. ENG|050426      |    13|RI|                                                          ##051145->^Syntax
  1021. ENG|050427      |     1|  |    NOAUTONEXT Fields
  1022. ENG|050427      |     3|  |    Example: FIELD name NOAUTONEXT
  1023. ENG|050427      |     5|  |    This option specifies that the cursor is not  automatically  positioned
  1024. ENG|050427      |     6|  |    to  the  next  input  field, when the field 'name' has been filled with
  1025. ENG|050427      |     7|  |    writing.
  1026. ENG|050427      |     9|RI|                                                          ##051146->^Syntax
  1027. ENG|050428      |     1|  |    SCROLLFIELD   : Move Vector Slices
  1028. ENG|050428      |     3|  |    The SCROLLFIELD statement has to be  defined  within  the  AFTER  FIELD
  1029. ENG|050428      |     4|  |    statement for every vector slice with OFFSET option which is defined as
  1030. ENG|050428      |     5|  |    input  field  in  the  layout  and which is to be moved by pressing the
  1031. ENG|050428      |     6|  |    cursor keys.
  1032. ENG|050428      |     8|  |    The SCROLLFIELD statement acts according to the keys and  modifies  the
  1033. ENG|050428      |     9|  |    value  of  the  OFFSET  variable  to  be specified as argument. Several
  1034. ENG|050428      |    10|  |    adjacent vector slices can be moved with one SCROLLFIELD statement,  if
  1035. ENG|050428      |    11|  |    these vector slices depend on the same OFFSET variable.
  1036. ENG|050428      |    13|  |    As first argument, the SCROLLFIELD statement expects the variable which
  1037. ENG|050428      |    14|  |    was  specified  with  the  OFFSET  option.  Without  OFFSET  option the
  1038. ENG|050428      |    15|  |    SCROLLFIELD statement has not effect.
  1039. ENG|050428      |    17|S |    As second - optional -  argument  of  the  SCROLLFIELD  statement,  the
  1040. ENG|050428      |    19|  |    maximum  number  of  values can be specified. If the second argument is
  1041. ENG|050428      |    20|  |    not specified, the SCROLLFIELD statement assumes that the  end  of  the
  1042. ENG|050428      |    21|  |    list is reached with the 255th vector element.
  1043. ENG|050428      |    23|  |    As  third optional argument, the number of lines can be specified which
  1044. ENG|050428      |    24|  |    are to be used as scrolling unit for the key.
  1045. ENG|050428      |    26|  |    If a user wants to position directly to the end  or  to  the  beginning
  1046. ENG|050428      |    27|  |    within the entries, the keys serving this purpose can be defined in the
  1047. ENG|050428      |    28|  |    second  parentheses  of  the  SCROLLFIELD statement behind the keywords
  1048. ENG|050428      |    29|  |    TOPKEY and BOTTOMKEY.
  1049. ENG|050428      |    31| E|
  1050. ENG|050428      |    32| E|     FORM selection.list  PARMS ( selection(), max_number, length )
  1051. ENG|050428      |    33| E|     LAYOUT
  1052. ENG|050428      |    34| E|     _selection (1..5)
  1053. ENG|050428      |    35|SE|     _
  1054. ENG|050428      |    37| E|     _
  1055. ENG|050428      |    38| E|     _
  1056. ENG|050428      |    39| E|     _
  1057. ENG|050428      |    40| E|     ENDLAYOUT
  1058. ENG|050428      |    41| E|     SPECIALATTR INPUT INV;
  1059. ENG|050428      |    43| E|     FIELD selection(1..5)
  1060. ENG|050428      |    44| E|              OFFSET x
  1061. ENG|050428      |    45| E|              AFTER  FIELD  SCROLLFIELD ( x, max_number, $screenlns
  1062. ENG|050428      |    46| E|                               ( TOPKEY F7, BOTTOMKEY F8 );
  1063. ENG|050428      |    47| E|
  1064. ENG|050428      |    49|RI|                                                          ##051185->^Syntax
  1065. ENG|050429      |     1|  |    KEYS               : Assign Function to Keys
  1066. ENG|050429      |     3|  |    In FORM particular functions are assigned to  a  series  of  keys.  For
  1067. ENG|050429      |     4|  |    example,  the  HELP  key  releases  the  execution  of  the  FIELD/HELP
  1068. ENG|050429      |     5|  |    statement. For the AUTOPAGE statement, too, the scrolling functions are
  1069. ENG|050429      |     6|  |    assigned to definite keys.
  1070. ENG|050429      |     8|  |    The KEYS statement allows one or more keys to be  assigned  as  release
  1071. ENG|050429      |     9|  |    keys  to  the  functions  HELP,  MENU,  UP,  DOWN, LEFT, and RIGHT. The
  1072. ENG|050429      |    10|  |    function MENU designates  the  key  which  releases  switching  between
  1073. ENG|050429      |    11|  |    action bar and form.
  1074. ENG|050429      |    13| E|
  1075. ENG|050429      |    14| E|     KEYS ( UP   = F7  |  UPKEY
  1076. ENG|050429      |    15| E|            DOWN = F8  |  DOWNKEY
  1077. ENG|050429      |    16| E|            HELP = F1  |  HELPKEY )
  1078. ENG|050429      |    17|SE|
  1079. ENG|050429      |    19|RI|                                                          ##051186->^Syntax
  1080. ENG|0505        |     1|  |    Structure of a Form
  1081. ENG|0505        |     3|  |    FORM customer.mastercard       -> This is the form 'mastercard' belonging
  1082. ENG|0505        |     4|  |                                   -> to the program 'customer'.
  1083. ENG|0505        |     5|  |    LAYOUT                         -> Here starts the layout design.
  1084. ENG|0505        |     6|  |      ...                          -> Here in/output fields and any desired
  1085. ENG|0505        |     7|  |      ...                          -> text fields are defined here.
  1086. ENG|0505        |     8|  |    ENDLAYOUT                      -> Here ends the layout design.
  1087. ENG|0505        |    10|  |    GROUP ..
  1088. ENG|0505        |    11|  |      FIELD                        -> With BEFORE/AFTER it is determined what
  1089. ENG|0505        |    12|  |         BEFORE FIELD ...          -> shall be done on entering and leaving a
  1090. ENG|0505        |    13|  |         AFTER  FIELD ...          -> field or a group.
  1091. ENG|0505        |    14|  |      FIELD ...;                   -> All the other form processing statements are
  1092. ENG|0505        |    15|  |    END;                           -> usable as well ( IGNORE, ACCEPT or
  1093. ENG|0505        |    16|  |                                   -> ACTION, HEADERLINES, BOTTOMLINES ...).
  1094. ENG|0505        |    17|S |    AFTER GROUP ..                 -> In BEFORE/AFTER statements any SQL-PL
  1095. ENG|0505        |    19|  |      BEGIN ... END;               -> statement can be used.
  1096. ENG|0505        |    20|RI|                                                          ##051102->^Syntax
  1097. ENG|0506        |     1|  |                           Form Call Options
  1098. ENG|0506        |     2|  |                           -----------------
  1099. ENG|0506        |     4| M|        #01ACCEPT^^^^^: restricts the permitted release keys
  1100. ENG|0506        |     5| M|        #02ATTR^^^^^^^: overrides the attributes of fields
  1101. ENG|0506        |     6| M|        #10AUTOPUT^^^^: copies the PICK buffer contents
  1102. ENG|0506        |     7| M|        #08BACKGROUND^: keeps the form as background
  1103. ENG|0506        |     8| M|        #03CLEAR^^^^^^: clears the background
  1104. ENG|0506        |     9| M|        #03FORMPOS^^^^: left upper corner of the form section
  1105. ENG|0506        |    10| M|        #03FRAME^^^^^^: displays the form in a box
  1106. ENG|0506        |    11| M|        #04INPUT^^^^^^: activates particular input fields
  1107. ENG|0506        |    12| M|        #05MARK^^^^^^^: positions the cursor
  1108. ENG|0506        |    13| M|        #06NOINIT^^^^^: suppresses the FIELD/INIT option
  1109. ENG|0506        |    14| M|        #04NOINPUT^^^^: deactivates particular input fields
  1110. ENG|0506        |    15| M|        #07PRINT^^^^^^: prints the form
  1111. ENG|0506        |    16| M|        #03SCREENPOS^^: left upper corner of the form on the screen
  1112. ENG|0506        |    17|SM|        #03SCREENSIZE^: length and width of the screen section
  1113. ENG|0506        |    19| M|        #09RESTORE^^^^: restores the background of the form
  1114. ENG|0506        |    20| M|        #11ACTION^^^^^: activating the action bar
  1115. ENG|0506        |    21|RI|                                                          ##051125->^Syntax
  1116. ENG|050601      |     1|  |    ACCEPT(ENTER,F1=<label>,...)  has  the  effect  that only the specified
  1117. ENG|050601      |     2|  |    keys with the pertinent labels are displayed.
  1118. ENG|050601      |     4|  |    If an ACCEPT option is already defined in the form, then  this  set  of
  1119. ENG|050601      |     5|  |    valid  release  keys  will be overridden (possible release keys: ENTER,
  1120. ENG|050601      |     6|  |    F1..F12)
  1121. ENG|050601      |     8|  |    Labels can be defined for all keys, except ENTER.
  1122. ENG|050601      |    10|  |    ACCEPT() has the effect that the form is  displayed  without  expecting
  1123. ENG|050601      |    11|  |    any user interaction.
  1124. ENG|050601      |    13|  |    Example :
  1125. ENG|050601      |    14| E|
  1126. ENG|050601      |    15| E|           CALL FORM  form1 OPTIONS (ACCEPT (F1,F3='STOP',ENTER) );
  1127. ENG|050601      |    17|SE|
  1128. ENG|050601      |    19|RI|                                                          ##051128->^Syntax
  1129. ENG|050602      |     1|  |    Examples:
  1130. ENG|050602      |     3|  |         CALL FORM customer ( ATTR ( name, INV ) );
  1131. ENG|050602      |     5|  |         CALL FORM customer ( ATTR ( cno, ATTR16 ) );
  1132. ENG|050602      |     7|  |    ATTR alters the display attributes of the specified form field for this
  1133. ENG|050602      |     8|  |    form call.
  1134. ENG|050602      |    10|  |    Possible  attributes  are  ATTR1,...,ATTR16  (HIGH,  HI, LOW, INV, BLK,
  1135. ENG|050602      |    11|  |    UNDERL).
  1136. ENG|050602      |    13|RI|                                                          ##051129->^Syntax
  1137. ENG|050603      |     1|  |    FORMPOS(L,C) defines the start position of a section of the
  1138. ENG|050603      |     2|  |    form, (l)ine, (c)olumn.
  1139. ENG|050603      |     3|  |    This option should be used to display a form sectionwise.
  1140. ENG|050603      |     5| I|                                                          ##051131->^Syntax
  1141. ENG|050603      |     8|  |    SCREENSIZE (L,W) defines the size of a window on the screen,
  1142. ENG|050603      |     9|  |    (l)ength, (w)idth.
  1143. ENG|050603      |    11|  |    SCREENPOS (L,C) defines the position of the window on the
  1144. ENG|050603      |    12|  |    screen, (l)ine, (c)olumn.
  1145. ENG|050603      |    14|  |    CLEAR has the effect that the background of the form is
  1146. ENG|050603      |    15|  |    erased.
  1147. ENG|050603      |    17|SI|                                                          ##051130->^Syntax
  1148. ENG|050603      |    19|  |    FRAME has the effect that the form is displayed in a box.
  1149. ENG|050603      |    20|  |    FRAME ( title ) has the effect that the value of the variable
  1150. ENG|050603      |    21|  |    title is displayed in the center of the box's top line.
  1151. ENG|050603      |    23|RI|                                                          ##051132->^Syntax
  1152. ENG|050604      |     1|  |    INPUT (running...) has the effect that input can be made
  1153. ENG|050604      |     2|  |    only to the specified fields. Field sequence numbers,
  1154. ENG|050604      |     3|  |    variables, and vector slices may be specified.
  1155. ENG|050604      |     5|  |    INPUT()  If an empty list is specified for input, then all
  1156. ENG|050604      |     6|  |    the fields in the form appear as output fields.
  1157. ENG|050604      |     8|  |    NOINPUT (running...) has the effect that   N O   input
  1158. ENG|050604      |     9|  |    can be made to the specified fields. Field sequence numbers,
  1159. ENG|050604      |    10|  |    variables, and vector slices may be specified.
  1160. ENG|050604      |    12|  |    NOINPUT() is not convenient because all input fields remain active.
  1161. ENG|050604      |    14|  |    Example:
  1162. ENG|050604      |    15|  |            CALL FORM mastercard ( INPUT (cno, city(1..4), 10, 11 ));
  1163. ENG|050604      |    17|RI|                                                          ##051136->^Syntax
  1164. ENG|050605      |     1|  |    MARK (n) places the cursor on the n-th input field, when the
  1165. ENG|050605      |     2|  |    form is displayed, counting the defined input fields
  1166. ENG|050605      |     3|  |    from the top left to the bottom right.
  1167. ENG|050605      |     5|  |    Example: CALL FORM input OPTIONS ( MARK(4), INPUT(3,4,5) );
  1168. ENG|050605      |     8|  |    MARK(v) places the cursor in the field related to the
  1169. ENG|050605      |     9|  |    variable v. In case the variable v does not exist in the form,
  1170. ENG|050605      |    10|  |    the value of v is interpreted as field sequence number.
  1171. ENG|050605      |    12|  |    Example: CALL FORM mastercard OPTIONS ( MARK(cno) );
  1172. ENG|050605      |    14|  |    Once the form is called, $CURSOR displays the field sequence
  1173. ENG|050605      |    15|  |    number of that input field, upon which the cursor was placed last.
  1174. ENG|050605      |    17|RI|                                                          ##051127->^Syntax
  1175. ENG|050606      |     1|  |    The option NOINIT suppresses the initializations of variables defined
  1176. ENG|050606      |     2|  |    in the form. Thus, the current values of the variables appear in the
  1177. ENG|050606      |     3|  |    fields.
  1178. ENG|050606      |     5|  |    Example:
  1179. ENG|050606      |     7|  |          CALL FORM mastercard OPTIONS ( NOINIT );
  1180. ENG|050606      |     9|  |    or shorter
  1181. ENG|050606      |    11|  |          CALL FORM mastercard ( NOINIT );
  1182. ENG|050606      |    13|RI|                                                          ##051126->^Syntax
  1183. ENG|050607      |     1|  |    PRINT transmits the called form into  the  printer's  spool  area.  The
  1184. ENG|050607      |     2|  |    print  will be started at the program's end. With PRINT ( opt1 , opt2 ,
  1185. ENG|050607      |     3|  |    ... ) the print output may be influenced :
  1186. ENG|050607      |     5|  |          CLOSE     causes the immediate output via printer,
  1187. ENG|050607      |     6|  |          LINEFEED  creates empty lines before printing,
  1188. ENG|050607      |     7|  |          LINESPACE creates empty lines between print lines,
  1189. ENG|050607      |     8|  |          NEWPAGE   outputs a new page,
  1190. ENG|050607      |     9|  |          CPAGE     outputs a new page, depending to the number
  1191. ENG|050607      |    10|  |                    of free lines.
  1192. ENG|050607      |    11|  |          'X'       sets Print Format 'X' for this print
  1193. ENG|050607      |    13|  |       Example:
  1194. ENG|050607      |    15|  |       CALL FORM form3 OPTIONS ( PRINT (LINEFEED 2, NEWPAGE));
  1195. ENG|050607      |    16|S |       CALL FORM form4 ( PRINT ('X',LINESPACE 2));
  1196. ENG|050607      |    19|RI|                                                          ##051135->^Syntax
  1197. ENG|050608      |     1|  |    The option BACKGROUND has the effect that  a  form  is  n  o  t  output
  1198. ENG|050608      |     2|  |    immediately to the display, but is stored as background.
  1199. ENG|050608      |     4|  |    Any  number  of screens can be superimposed with the BACKGROUND option.
  1200. ENG|050608      |     5|  |    They will only be displayed, when a form is called  w  i  t  h  o  u  t
  1201. ENG|050608      |     6|  |    BACKGROUND option or when READ or WRITE is executed.
  1202. ENG|050608      |     8|  |    The  output  of  the form can also be triggered by calling a REPORT. In
  1203. ENG|050608      |     9|  |    this case the REPORT output should only use a part of the display (also
  1204. ENG|050608      |    10|  |    see report command WINDOW).
  1205. ENG|050608      |    12|RI|                                                          ##051133->^Syntax
  1206. ENG|050609      |     1|  |    The RESTORE option implicitly saves the  background  of  a  form.  This
  1207. ENG|050609      |     2|  |    enables  the  form,  when  disappearing from the screen, to restore its
  1208. ENG|050609      |     3|  |    background to the format it had before the call.
  1209. ENG|050609      |     5|  |    In case of HELP forms specified in the FIELD statement  FORM  uses  the
  1210. ENG|050609      |     6|  |    RESTORE option implicitly.
  1211. ENG|050609      |     8|  |    Example:
  1212. ENG|050609      |    10|  |    CALL FORM form OPTIONS ( RESTORE );
  1213. ENG|050609      |    13|RI|                                                          ##051134->^Syntax
  1214. ENG|050610      |     1|  |    The  AUTOPUT  option  has  the  effect  that after leaving the form the
  1215. ENG|050610      |     2|  |    picked value will be assigned automatically to the  variable  belonging
  1216. ENG|050610      |     3|  |    to  the  field where the cursor was placed before calling the form. The
  1217. ENG|050610      |     4|  |    PUT statement is  therefore  no  longer  required  within  the  CONTROL
  1218. ENG|050610      |     5|  |    statement and the end user does not need any more to press the PUT key.
  1219. ENG|050610      |     6|  |    It is sufficient to choose the value with PICK.
  1220. ENG|050610      |     8|  |    Example:
  1221. ENG|050610      |     9|  |    FORM  tpick.m1
  1222. ENG|050610      |    10|  |    LAYOUT
  1223. ENG|050610      |    11|  |    _1           _2
  1224. ENG|050610      |    12|  |    _            _
  1225. ENG|050610      |    13|  |    _            _
  1226. ENG|050610      |    14|  |    ENDLAYOUT
  1227. ENG|050610      |    15|  |    ACCEPT ( enter, f5='PICK' );
  1228. ENG|050610      |    16|  |    FIELD 1:title(1..3) HELP FORM p_title ( FRAME, AUTOPUT );
  1229. ENG|050610      |    17|S |    FIELD 2:city(1..3) HELP FORM p_city ( FRAME, AUTOPUT );
  1230. ENG|050610      |    19|  |    The  AUTOPUT  option can also be used with a variable as argument. This
  1231. ENG|050610      |    20|  |    usage makes sense if the value taken by  PICK  is  not  meant  for  the
  1232. ENG|050610      |    21|  |    calling form, but has to be passed as parameter from the calling form.
  1233. ENG|050610      |    23|  |    Example:
  1234. ENG|050610      |    24|  |          CALL FORM choice OPTION ( AUTOPUT(@choi) );
  1235. ENG|050610      |    26|RI|                                                          ##051157->^Syntax
  1236. ENG|050611      |     1|  |    Activating the ACTIONBAR
  1237. ENG|050611      |     3|  |    The  calling  option  ACTION  determines  that  the given action of the
  1238. ENG|050611      |     4|  |    action shall be activ when the form is displayed.
  1239. ENG|050611      |     6|  |    Example:
  1240. ENG|050611      |     7|  |                 CALL FORM x OPTIONS ( ACTION ( 5 ));
  1241. ENG|050611      |     9|RI|                                                          ##051137->^Syntax
  1242. ENG|0507        |     1|  |    Parameters on Form Calls
  1243. ENG|0507        |     3|  |    Current parameters may be  specified  for  the  transfer  of  data  via
  1244. ENG|0507        |     4|  |    SWITCH.   The  current  parameters  will  be  assigned  to  the  formal
  1245. ENG|0507        |     5|  |    parameters specified in the form definition.
  1246. ENG|0507        |     7|  |    Definition : FORM customer.mastercard PARMS (@cno,@today)
  1247. ENG|0507        |     9|  |    Call :       SWITCH customer CALL FORM mastercard PARMS (cno, DATE (yymmdd))
  1248. ENG|0507        |    11|  |    Variables as well as expressions may be  used  as  current  parameters.
  1249. ENG|0507        |    12|  |    Since  the parameters are positional parameters, current parameters may
  1250. ENG|0507        |    13|  |    be omitted for the call; e.g.: PARMS ( , DATE(yymmdd)).
  1251. ENG|0507        |    15|  |    If more parameters are specified for the call than are defined  in  the
  1252. ENG|0507        |    16|S |    module, then these will be simply ignored.
  1253. ENG|0507        |    19|  |    Take into account that for a simple CALL the current parameters must be
  1254. ENG|0507        |    20|  |    handled like input/output parameters.
  1255. ENG|0507        |    22|  |    The definition :
  1256. ENG|0507        |    23|  |                 FORM customer.mastercard PARMS ( @cno, @today )
  1257. ENG|0507        |    25|  |    and the call :
  1258. ENG|0507        |    26|  |                 CALL FORM mastercard PARMS ( cno, DATE(yymmdd) ).
  1259. ENG|0507        |    28|R |    After the call the variable 'cno' might have another value.
  1260. ENG|0508        |     1|  |                            Compiler Options
  1261. ENG|0508        |     2|  |                            ----------------
  1262. ENG|0508        |     4| M|                            #01LIB^Option
  1263. ENG|0508        |     5|RM|                            #01WRAP^Option
  1264. ENG|050801      |     1|  |    The LIB Option
  1265. ENG|050801      |     2|  |              displays  the  name  of  the  function library from which the
  1266. ENG|050801      |     3|  |              SQL-PL functions are called which are used in the  form  (see
  1267. ENG|050801      |     4|  |              section 'User-defined SQL-PL Functions').
  1268. ENG|050801      |     6|  |              Example  :       FORM  ...  OPTION ( LIB libname );
  1269. ENG|050801      |     8| I|                                                                    ##051153->^Syntax
  1270. ENG|050801      |    10|  |    The WRAP Option
  1271. ENG|050801      |    11|  |              has  the  effect that multiple-line fields of a form are used
  1272. ENG|050801      |    12|  |              as a continuation field on those terminals which  allow  such
  1273. ENG|050801      |    13|  |              usage.
  1274. ENG|050801      |    15|  |              Example:         FORM  ...  OPTION ( WRAP );
  1275. ENG|050801      |    17|RI|                                                          ##051154->^Syntax
  1276. ENG|0510        |     1|  |                     Action bar with Pulldown Menus
  1277. ENG|0510        |     2|  |                     ------------------------------
  1278. ENG|0510        |     4| M|                #01Definition of a separate MENU Module
  1279. ENG|0510        |     5| M|                #02Defining the Action Bar within a Form
  1280. ENG|0510        |     6| M|                #05Definition of Action Bar and Pulldown Menus
  1281. ENG|0510        |     7| M|                #06Definition of Buttons
  1282. ENG|0510        |     8| M|                #04Examples of Action Bars with Pulldown Menus
  1283. ENG|0510        |     9|RM|                #03Operating an Action Bar with Pulldown Menus
  1284. ENG|051001      |     1|  |    Definition of a separate MENU Module
  1285. ENG|051001      |     3|  |    If the same action bar and the associated pulldown menus are to be used
  1286. ENG|051001      |     4|  |    in  various  forms  in  a SQL-PL program, a separate MENU module can be
  1287. ENG|051001      |     5|  |    defined that is linked to a form with the instruction INCLUDE MENU.
  1288. ENG|051001      |     7|  |    In the MENU module, the action bar and the pulldown menus  are  defined
  1289. ENG|051001      |     8|  |    one after the other.
  1290. ENG|051001      |    10| E|
  1291. ENG|051001      |    11| E|    MENU general.pd_menu
  1292. ENG|051001      |    13| E|    ACTIONBAR ('LIST',
  1293. ENG|051001      |    14| E|               'PROCESS' : PULLDOWN process,
  1294. ENG|051001      |    15| E|               'DELETE' );
  1295. ENG|051001      |    17|SE|    PULLDOWN process ( 'START',
  1296. ENG|051001      |    19| E|                     'ENTER' : PULLDOWN entry );
  1297. ENG|051001      |    21| E|    PULLDOWN entry ( 'NEW',
  1298. ENG|051001      |    22| E|                     'OLD' );
  1299. ENG|051001      |    24| E|
  1300. ENG|051001      |    27| I|                                                          ##051147->^Syntax
  1301. ENG|051001      |    30|  |    In  a  form the key-word ACTIONBAR must be entered with the instruction
  1302. ENG|051001      |    31|  |    INCLUDE MENU in the layout part, as in the definition of the action bar
  1303. ENG|051001      |    32|  |    within a form.
  1304. ENG|051001      |    34|  |    Example:
  1305. ENG|051001      |    35|S |    LAYOUT
  1306. ENG|051001      |    37|  |    ACTIONBAR
  1307. ENG|051001      |    38|  |      ...
  1308. ENG|051001      |    40|  |    ENDLAYOUT
  1309. ENG|051001      |    42|  |    INCLUDE MENU general.pd_menu;
  1310. ENG|051001      |    43|  |      ...
  1311. ENG|051001      |    45|RI|                                                          ##051148->^Syntax
  1312. ENG|051002      |     1|  |    Defining the Action Bar within a Form
  1313. ENG|051002      |     3|  |    For smaller applications or for testing menus, it is sensible to define
  1314. ENG|051002      |     4|  |    the menu directly in the form.
  1315. ENG|051002      |     6|  |    For this purpose, the instructions for defining the  menu  (ACTIONBAR-,
  1316. ENG|051002      |     7|  |    PULLDOWN  instruction)  are  formulated  in  the processing part of the
  1317. ENG|051002      |     8|  |    form.
  1318. ENG|051002      |    11|RI|                                                          ##051149->^Syntax
  1319. ENG|051003      |     1|  |    Operating an Action Bar with Pulldown Menus
  1320. ENG|051003      |     3|  |    When calling up the form, the action bar is not activated and the  form
  1321. ENG|051003      |     4|  |    can be worked on in the usual way.
  1322. ENG|051003      |     6|  |    The action bar can be activated in the following ways:
  1323. ENG|051003      |     8|  |    - function key F12
  1324. ENG|051003      |    10|  |    With the function key F12 the action bar is activated and the cursor is
  1325. ENG|051003      |    11|  |    positioned on the first field.
  1326. ENG|051003      |    13|  |    - CNTR / <char>
  1327. ENG|051003      |    15|  |    By  pressing  the  CNTR key and the letter highlighted as choice letter
  1328. ENG|051003      |    16|  |    simultaneously, the corresponding action is selected directly. If there
  1329. ENG|051003      |    17|S |    is a pulldown menu for  the  action,  it  is  pulled  down;  otherwise,
  1330. ENG|051003      |    19|  |    $ACTION returns the action chosen.
  1331. ENG|051003      |    21|  |    If the action bar is activated, the corresponding action can be started
  1332. ENG|051003      |    22|  |    by the key for the first letter of the label, e.g. the pulldown menu of
  1333. ENG|051003      |    23|  |    the  field  with the label 'PROCESS' is pulled down with the key p. The
  1334. ENG|051003      |    24|  |    appropriate letter  is  determined  automatically  by  the  system  and
  1335. ENG|051003      |    25|  |    represented  with  the  attribute 'choice character' (ATTR8) or 'choice
  1336. ENG|051003      |    26|  |    character active' (ATTR9).
  1337. ENG|051003      |    28|  |    In an active pulldown menu, the functions can  be  chosen  and  started
  1338. ENG|051003      |    29|  |    analogously.
  1339. ENG|051003      |    31|  |    If  the  action  bar  is activated, the cursor can be positioned on the
  1340. ENG|051003      |    32|  |    fields to choose a field of the action bar with the cursor keys.  If  a
  1341. ENG|051003      |    33|  |    pulldown menu is defined behind a field of the action bar, the menu can
  1342. ENG|051003      |    34|  |    be  pulled down by positioning on the field and then pressing the ENTER
  1343. ENG|051003      |    35|S |    key.
  1344. ENG|051003      |    37|  |    If the program is positioned in a pulldown menu on the first level, the
  1345. ENG|051003      |    38|  |    pulldown menus to the right or left can be chosen directly with the aid
  1346. ENG|051003      |    39|  |    of the NEXTFIELD and PREVFIELD keys or CURSOR-RIGHT and CURSOR-LEFT.
  1347. ENG|051003      |    41|  |    Fields of the action bar or the pulldown menus behind which  a  further
  1348. ENG|051003      |    42|  |    pulldown menu is defined are identified by '..'.
  1349. ENG|051003      |    44|  |    The  action  bar is displayed with the attribute 'menu items' (ATTR10),
  1350. ENG|051003      |    45|  |    the active field with the attribute 'menu item active' (ATTR11) and the
  1351. ENG|051003      |    46|  |    passive fields with the attribute 'menu item passive' (ATTR12).
  1352. ENG|051003      |    48|  |    If an action of a field of  the  action  bar  or  a  pulldown  menu  is
  1353. ENG|051003      |    49|  |    triggered,  e.g.  if the cursor is positioned on this field and the key
  1354. ENG|051003      |    50|  |    ENTER is pressed, control is returned to the associated  form  and  the
  1355. ENG|051003      |    51|  |    dollar  variables  $ACTION,  $FUNCTION  or  also  $KEY are assigned the
  1356. ENG|051003      |    52|S |    labels of the chosen fields.
  1357. ENG|051003      |    55|  |    If one wants to return to the form without starting an action, this  is
  1358. ENG|051003      |    56|  |    done  with  the key F12. Control is now returned to the associated form
  1359. ENG|051003      |    57|  |    and the dollar variables $ACTION, $FUNCTION  and  $KEY  have  the  NULL
  1360. ENG|051003      |    58|  |    value.
  1361. ENG|051003      |    60|  |    By  pressing  the  key END, the pulldown menus are closed step by step.
  1362. ENG|051003      |    61|R |    The associated dollar variables are assigned NULL.
  1363. ENG|051004      |     1|  |    Example:
  1364. ENG|051004      |     2| E|
  1365. ENG|051004      |     3| E|    LAYOUT
  1366. ENG|051004      |     4| E|    ACTIONBAR
  1367. ENG|051004      |     6| E|      ...
  1368. ENG|051004      |     8| E|    ENDLAYOUT
  1369. ENG|051004      |    10| E|    ACTIONBAR ( 'process' : PULLDOWN proc,
  1370. ENG|051004      |    11| E|                  ...     );
  1371. ENG|051004      |    13| E|    PULLDOWN proc ( 'module' : PULLDOWN fctn,
  1372. ENG|051004      |    14| E|                     ...
  1373. ENG|051004      |    15| E|                     'trigger' : PULLDOWN fctn );
  1374. ENG|051004      |    17|SE|    PULLDOWN fctn ( 'display',
  1375. ENG|051004      |    19| E|                    ...
  1376. ENG|051004      |    20| E|                    'print' );
  1377. ENG|051004      |    22| E|    CONTROL CASE $ACTION OF
  1378. ENG|051004      |    23| E|            'process' :
  1379. ENG|051004      |    24| E|                   CASE $FUNCTION1 OF
  1380. ENG|051004      |    25| E|                    'module' :
  1381. ENG|051004      |    26| E|                          CASE $FUNCTION OF
  1382. ENG|051004      |    27| E|                               'display'  : CALL PROC mod_no.;
  1383. ENG|051004      |    28| E|                                 ...
  1384. ENG|051004      |    29| E|                               'print' : CALL PROC mod_print;
  1385. ENG|051004      |    30| E|                          END;
  1386. ENG|051004      |    31| E|                    ...
  1387. ENG|051004      |    32| E|                    'trigger' :  ...
  1388. ENG|051004      |    33| E|                    END;
  1389. ENG|051004      |    34| E|            ...
  1390. ENG|051004      |    35|SE|            END;
  1391. ENG|051004      |    38| E|
  1392. ENG|051004      |    40|  |    In the following example labels  are  specified  that  are  not  string
  1393. ENG|051004      |    41|  |    constants. The above procedure is thus possible in the same way.
  1394. ENG|051004      |    43|  |    Example:
  1395. ENG|051004      |    45|  |    ACTIONBAR ( !ADM(s),
  1396. ENG|051004      |    46|  |                !PROC(s): PULLDOWN proc );
  1397. ENG|051004      |    48|  |    PULLDOWN proc ( 'START','ENTER' );
  1398. ENG|051004      |    50|  |    CONTROL CASE $ACTION OF
  1399. ENG|051004      |    51|  |            !ADM(s)      : ...
  1400. ENG|051004      |    52|  |            !PROC(s)    : CASE $FUNCTION OF
  1401. ENG|051004      |    53|S |                               'START'     : CALL FORM start;
  1402. ENG|051004      |    55|  |                               'ENTER' : CALL FORM enter;
  1403. ENG|051004      |    56|  |                           END;
  1404. ENG|051004      |    57|  |            END;
  1405. ENG|051004      |    60|  |    Example:
  1406. ENG|051004      |    63|  |    ACTIONBAR (!AUF(s) : RELEASEKEY F4,
  1407. ENG|051004      |    64|  |               !AB(s)  : RELEASEKEY F5 );
  1408. ENG|051004      |    66|  |    CONTROL CASE $KEY OF
  1409. ENG|051004      |    67|  |            F4         : ...
  1410. ENG|051004      |    68|  |            F5         : ...
  1411. ENG|051004      |    69|R |            END;
  1412. ENG|051005      |     1|  |              Definition of Action Bar and Pulldown Menus
  1413. ENG|051005      |     2|  |              --------------------------------------------
  1414. ENG|051005      |     4| M|            #01Definition of the Action Bar (ACTIONBAR)
  1415. ENG|051005      |     5| M|            #02Definition of Pulldown Menus (PULLDOWN)
  1416. ENG|051005      |     6| M|            #03Definition of Guide Texts (COMMENT clause)
  1417. ENG|051005      |     7| M|            #04Making a Label Passive Dynamically (WHEN clause)
  1418. ENG|051005      |     8|RM|            #05Optical Grouping of Menu Items
  1419. ENG|05100501    |     1|  |    ACTIONBAR : Definition of the Action Bar
  1420. ENG|05100501    |     3|  |    An  action  bar consists of up to eleven fields that can be output in a
  1421. ENG|05100501    |     4|  |    line of the form one after the other. When defining the action bar, the
  1422. ENG|05100501    |     5|  |    labels of the fields are specified behind the key-word ACTIONBAR. Apart
  1423. ENG|05100501    |     6|  |    from that, the position of the action bar in the  form  is  defined  by
  1424. ENG|05100501    |     7|  |    specifying  the  key-word  ACTIONBAR  in the layout. The layout line in
  1425. ENG|05100501    |     8|  |    which the action bar is to be output must not contain any other fields.
  1426. ENG|05100501    |    10|  |    The dollar variable $ACTION, which returns the activated field  of  the
  1427. ENG|05100501    |    11|  |    action bar, corresponds to the fields of the action bar .
  1428. ENG|05100501    |    14| E|
  1429. ENG|05100501    |    15| E|    LAYOUT
  1430. ENG|05100501    |    16|SE|    ACTIONBAR
  1431. ENG|05100501    |    19| E|      ...
  1432. ENG|05100501    |    21| E|    ENDLAYOUT
  1433. ENG|05100501    |    23| E|    ACTIONBAR ( 'LIST','PROCESS','DELETE' );
  1434. ENG|05100501    |    25| E|
  1435. ENG|05100501    |    27|  |    String   constants,  language-dependent  literals,  variables  and  key
  1436. ENG|05100501    |    28|  |    literals are admissible as labels.
  1437. ENG|05100501    |    30|  |    The labels can be up to 16 characters long, If there is  no  subsequent
  1438. ENG|05100501    |    31|  |    pulldown menu, the label may have 18 characters.
  1439. ENG|05100501    |    33|  |    It  must  be  noted  that the dollar variables $ACTION, $FUNCTION1, ...
  1440. ENG|05100501    |    34|  |    $FUNCTION4 and $FUNCTION return the  value  truncated  to  16  (or  18)
  1441. ENG|05100501    |    35|S |    characters if longer labels are used.
  1442. ENG|05100501    |    37|  |    If  an action bar is defined in the form, the number of header lines is
  1443. ENG|05100501    |    38|  |    implicitly set on the line in which the action bar is output, i.e.  the
  1444. ENG|05100501    |    39|  |    header  lines  comprise the area of the form from the first line to the
  1445. ENG|05100501    |    40|  |    action bar.
  1446. ENG|05100501    |    43|  |    ACTIONBAR WITH FRAME ( !LIST(s),
  1447. ENG|05100501    |    44|  |                           !PROC(s),
  1448. ENG|05100501    |    45|  |                           !DATA(s) );
  1449. ENG|05100501    |    47|  |    The option WITH FRAME causes the action bar to be  output  in  a  form.
  1450. ENG|05100501    |    48|  |    Care  must  be  taken  that  the  lines  before  and after the key-word
  1451. ENG|05100501    |    49|  |    ACTIONBAR in the layout is left empty, since  otherwise  they  will  be
  1452. ENG|05100501    |    50|  |    overwritten.
  1453. ENG|05100501    |    52|RI|                                                          ##051150->^Syntax
  1454. ENG|05100503    |     1|  |    COMMENT : Definition of Guide Texts
  1455. ENG|05100503    |     3|  |    For each label of the menu line or a pulldown menu, a brief comment can
  1456. ENG|05100503    |     4|  |    be  defined  behind  the key-word COMMENT. The brief comment appears in
  1457. ENG|05100503    |     5|  |    the message line as soon as the associated label is activated.
  1458. ENG|05100503    |     8| E|
  1459. ENG|05100503    |     9| E|    LAYOUT
  1460. ENG|05100503    |    10| E|    ACTIONBAR
  1461. ENG|05100503    |    11| E|     ...
  1462. ENG|05100503    |    13| E|    ENDLAYOUT
  1463. ENG|05100503    |    15| E|    ACTIONBAR ('LIST': COMMENT 'Compile a list of all objects',
  1464. ENG|05100503    |    16| E|               'PROCESS' :
  1465. ENG|05100503    |    17|SE|                       COMMENT 'further processing functions',
  1466. ENG|05100503    |    19| E|                       PULLDOWN proc,
  1467. ENG|05100503    |    20| E|               'DELETE': COMMENT 'delete object);
  1468. ENG|05100503    |    22| E|    PULLDOWN proc ( 'START' :     COMMENT !progstart,
  1469. ENG|05100503    |    23| E|                     'ENTER' : COMMENT !enter_object );
  1470. ENG|05100503    |    24| E|
  1471. ENG|05100503    |    26|RI|                                                          ##051152->^Syntax
  1472. ENG|05100504    |     1|  |    WHEN : Making a Label Passive Dynamically
  1473. ENG|05100504    |     3|  |    A pulldown menu represents the functions that can be chosen from the form.
  1474. ENG|05100504    |     4|  |    Depending on various conditions, it may be desirable to make certain parts
  1475. ENG|05100504    |     5|  |    of the functions passive, but to display them nevertheless.
  1476. ENG|05100504    |     7|  |    This can be done with the WHEN condition that can be specified behind every
  1477. ENG|05100504    |     8|  |    label of a pulldown menu. Depending on this condition, the corresponding
  1478. ENG|05100504    |     9|  |    label is displayed with the display attribute 'menu item passive' (ATTR12),
  1479. ENG|05100504    |    10|  |    and the associated function cannot be chosen.
  1480. ENG|05100504    |    13| E|
  1481. ENG|05100504    |    14| E|    PULLDOWN enter
  1482. ENG|05100504    |    15| E|        ( 'back' :        WHEN  level > 1,
  1483. ENG|05100504    |    16| E|          'trigger funct.' : WHEN modtype ='TRIGGER'
  1484. ENG|05100504    |    17|SE|                                PULLDOWN trigger_funcs );
  1485. ENG|05100504    |    20| E|
  1486. ENG|05100504    |    22|  |    If in the example the variable 'level' has a value less than  or  equal
  1487. ENG|05100504    |    23|  |    to  1,  the label 'back' is set passive. If the variable 'modtype' does
  1488. ENG|05100504    |    24|  |    not have the value 'TRIGGER', the label  'trigger  functions'  is  made
  1489. ENG|05100504    |    25|  |    passive and the following pulldown menu cannot be called up.
  1490. ENG|05100504    |    28|RI|                                                          ##051152->^Syntax
  1491. ENG|05100505    |     1|  |    Optical Grouping of Menu Items
  1492. ENG|05100505    |     3|  |    To  be  able  to  group  the menu items of a pulldown menu according to
  1493. ENG|05100505    |     4|  |    logical criteria, a semi-colon can be specified in  the  list  of  menu
  1494. ENG|05100505    |     5|  |    items instead of a comma. The semi-colon causes a separating line to be
  1495. ENG|05100505    |     6|  |    output between the menu items separated in this way.
  1496. ENG|05100505    |     9| E|
  1497. ENG|05100505    |    10| E|    PULLDOWN proc  ( 'Insert',
  1498. ENG|05100505    |    11| E|                     'Delete';
  1499. ENG|05100505    |    12| E|                     'Import',
  1500. ENG|05100505    |    13| E|                     'Export' );
  1501. ENG|05100505    |    15| E|
  1502. ENG|05100505    |    17|R |    In this example two groups of menu items are displayed.
  1503. ENG|051006      |     1|  |    Definition of Buttons
  1504. ENG|051006      |     3|  |    Alternatively to the action bar a series of release fields (BUTTON bar)
  1505. ENG|051006      |     4|  |    can  be defined at the bottom form margin. The BUTTON bar is defined in
  1506. ENG|051006      |     5|  |    the same way as an action bar. A list of labels is specified behind the
  1507. ENG|051006      |     6|  |    keyword BUTTON, and the position of the BUTTON bar is  defined  in  the
  1508. ENG|051006      |     7|  |    layout part of the form by means of the keyword BUTTON.
  1509. ENG|051006      |    10| E|
  1510. ENG|051006      |    11| E|     LAYOUT
  1511. ENG|051006      |    12| E|     ...
  1512. ENG|051006      |    13| E|             BUTTON
  1513. ENG|051006      |    14| E|     ENDLAYOUT
  1514. ENG|051006      |    15| E|     ...
  1515. ENG|051006      |    16| E|     BUTTON ( 'Help', 'Start', 'Exit' );
  1516. ENG|051006      |    17|SE|
  1517. ENG|051006      |    19|RI|                                                          ##051187->^Syntax
  1518. ENG|0511        |     1|R |    FORM-Syntax
  1519. ENG|051101      |     1|  |    <form block oriented>  ::=
  1520. ENG|051101      |     2| I|             FORM  ##0203040101<prog^name>.##0203040102<mod^name>
  1521. ENG|051101      |     3| I|                   [OPTIONS ( ##051180<form^option> ,...)]
  1522. ENG|051101      |     4| I|                   [PARMS ( ##0203040104<parm^decl> ,...)]
  1523. ENG|051101      |     5| I|             [ ##0203040156<var^section> ]
  1524. ENG|051101      |     6| I|             ##051159<form^layout>
  1525. ENG|051101      |     7|RI|             [ ##051104<processing^stmt> ,... ]
  1526. ENG|051102      |     1|  |    <form field oriented>  ::=
  1527. ENG|051102      |     2| I|             FORM  ##0203040101<prog^name>.##0203040102<mod^name>
  1528. ENG|051102      |     3| I|                    OPTIONS ( FIELD [, ##051180<form^option> ,...] )
  1529. ENG|051102      |     4| I|                    [PARMS ( ##0203040104<parm^decl> ,...)]
  1530. ENG|051102      |     5| I|             [ ##0203040156<var^section> ]
  1531. ENG|051102      |     6| I|             ##051159<form^layout>
  1532. ENG|051102      |     7|RI|             [ ##051138<field^processing^stmt> ,... ]
  1533. ENG|051103      |     1|  |    <begin layout line> ::=
  1534. ENG|051103      |     2|  |              LAYOUT  [ <layout char spec> ... ]
  1535. ENG|051103      |     4|  |    <layout char spec>  ::=
  1536. ENG|051103      |     5|  |                <layout attr char spec>
  1537. ENG|051103      |     6|  |              | <layout inout char spec>
  1538. ENG|051103      |     7|  |              | <layout prompt char spec>
  1539. ENG|051103      |     8|  |              | <layout graphic char spec>
  1540. ENG|051103      |    10|  |    <layout attr char spec> ::=
  1541. ENG|051103      |    11| I|                ##051181<attr^name> = <spec char>
  1542. ENG|051103      |    13|  |    <layout inout char spec> ::=
  1543. ENG|051103      |    14|  |                IN  = <spec char>
  1544. ENG|051103      |    15|  |              | OUT = <spec char>
  1545. ENG|051103      |    17|S |    <layout prompt char spec> ::=
  1546. ENG|051103      |    19|  |                PROMPT = <spec char>
  1547. ENG|051103      |    21|  |    <layout graphic char spec> ::=
  1548. ENG|051103      |    22|R |                GRAPHIC = <spec char>
  1549. ENG|051104      |     1|  |    <processing stmt> ::=
  1550. ENG|051104      |     2| I|                ##051116<mark^stmt>
  1551. ENG|051104      |     3| I|              | ##051105<field^stmt>
  1552. ENG|051104      |     4| I|              | ##051115<ignore^stmt>
  1553. ENG|051104      |     5| I|              | ##051117<accept^stmt>
  1554. ENG|051104      |     6| I|              | ##051155<keyswap^stmt>
  1555. ENG|051104      |     7| I|              | ##051118<returnonlast^stmt>
  1556. ENG|051104      |     8| I|              | ##051119<autopage^stmt>
  1557. ENG|051104      |     9| I|              | ##051120<bottomlines^stmt>
  1558. ENG|051104      |    10| I|              | ##051120<headerlines^stmt>
  1559. ENG|051104      |    11| I|              | ##051121<special^attr^stmt>
  1560. ENG|051104      |    12| I|              | ##051122<control^stmt>
  1561. ENG|051104      |    13| I|              | ##051150<actionbar^stmt>
  1562. ENG|051104      |    14| I|              | ##051151<pulldown^stmt>
  1563. ENG|051104      |    15| I|              | ##051148<include^stmt>
  1564. ENG|051104      |    16|RI|              | ##051156<insertmode^stmt>
  1565. ENG|051105      |     1|  |    <field stmt> ::=
  1566. ENG|051105      |     2|  |              FIELD <field name>,... [<field proc spec>...]
  1567. ENG|051105      |     4|  |    <field name> ::=
  1568. ENG|051105      |     5| I|                ##0203040133<variable>
  1569. ENG|051105      |     6| I|              | ##0203040134<vector^slice>
  1570. ENG|051105      |     7|  |              | <field number>:<field name>
  1571. ENG|051105      |     9|  |    <field proc spec> ::=
  1572. ENG|051105      |    10| I|                ##051106<init^spec>
  1573. ENG|051105      |    11| I|              | ##051107<size^spec>
  1574. ENG|051105      |    12| I|              | ##051109<check^spec>
  1575. ENG|051105      |    13| I|              | ##051113<offset^spec>
  1576. ENG|051105      |    14| I|              | ##051112<display^spec>
  1577. ENG|051105      |    15| I|              | ##051111<help^spec>
  1578. ENG|051105      |    16| I|              | ##051110<domain^spec>
  1579. ENG|051105      |    17|SI|              | ##051114<attr^spec>
  1580. ENG|051105      |    19|RI|              | ##051184<noinp^spec>
  1581. ENG|051106      |     1|  |    <init spec> ::=
  1582. ENG|051106      |     2|  |              INIT <assign expr>
  1583. ENG|051106      |     4|  |    <assign expr> ::=
  1584. ENG|051106      |     5|RI|             ##0203040136<expr> | NULL
  1585. ENG|051107      |     1|  |    <size spec> ::=
  1586. ENG|051107      |     2|RI|              SIZE ##0203040120<numeric>
  1587. ENG|051108      |     1|  |    <width spec> ::=
  1588. ENG|051108      |     2|RI|              WIDTH ##0203040120<numeric>
  1589. ENG|051109      |     1|  |    <check spec> ::=
  1590. ENG|051109      |     2|  |              CHECK <check pred>  / ELSE <msg spec> /
  1591. ENG|051109      |     4|  |    <check pred> ::=
  1592. ENG|051109      |     5|  |              <simple var pred>
  1593. ENG|051109      |     6|  |              | <vector var pred>
  1594. ENG|051109      |     7| I|              | ##0203040146<boolean^expr>
  1595. ENG|051109      |     9|  |    <simple var pred>   ::=
  1596. ENG|051109      |    10| I|              / ##0203040136<expr> / ##0203040148<check^cond>
  1597. ENG|051109      |    12|  |    <vector var pred>   ::=
  1598. ENG|051109      |    13| I|              <quant> ##0203040148<check^cond>
  1599. ENG|051109      |    15|  |    <quant> ::=
  1600. ENG|051109      |    16|R |              ALL | ANY | ONE
  1601. ENG|051110      |     1|  |    <domain spec> ::=
  1602. ENG|051110      |     2|  |              DOMAIN <domain name> [ ( <domain spec>,... ) ]
  1603. ENG|051110      |     4|  |    <domain spec> ::=
  1604. ENG|051110      |     5|R |              SIZE | WIDTH | INIT | CHECK
  1605. ENG|051111      |     1|  |    <help spec> ::=
  1606. ENG|051111      |     2|  |              HELP <help form>
  1607. ENG|051111      |     3|  |              | HELP <help msg>
  1608. ENG|051111      |     4|  |              | HELP <help form> <help msg>
  1609. ENG|051111      |     6|RI|    <help msg > ::= ##0203040142<str^expr>
  1610. ENG|051112      |     1|  |    <display spec> ::=
  1611. ENG|051112      |     2|  |              DISPLAY <display spec>,...
  1612. ENG|051112      |     4|  |    <display spec> ::=
  1613. ENG|051112      |     5|  |              FORMAT ( '<char>...' )
  1614. ENG|051112      |     6|  |              | UPPER | LOWER
  1615. ENG|051112      |     7|R |              | RIGHT | LEFT
  1616. ENG|051113      |     1|  |    <offset spec> ::=
  1617. ENG|051113      |     2|RI|              OFFSET ##0203040136<expr>
  1618. ENG|051114      |     1|  |    <attr spec> ::=
  1619. ENG|051114      |     2|RI|            ATTR ##051181<attr^name>
  1620. ENG|051115      |     1|  |    <ignore spec> ::=
  1621. ENG|051115      |     2| I|              IGNORE  <ignore field spec>  WHEN  ##0203040146<boolean^expr>
  1622. ENG|051115      |     4|  |    <ignore field spec> ::=
  1623. ENG|051115      |     5|  |              <field name>,...
  1624. ENG|051115      |     6|  |              | ALL
  1625. ENG|051115      |     7|R |              | ALL EXCEPT <field name>,...
  1626. ENG|051116      |     1|  |    <mark stmt> ::=
  1627. ENG|051116      |     2|RI|               MARK ( ##0203040136<expr> ) | MARK ( ##0203040133<variable> )
  1628. ENG|051117      |     1|  |    <accept stmt> ::=
  1629. ENG|051117      |     2|  |              ACCEPT  ( <key spec>,... )
  1630. ENG|051117      |     4|  |    <key spec> ::=
  1631. ENG|051117      |     5|  |              ENTER
  1632. ENG|051117      |     6| I|             | ##051183<basic^key> [ = <key label>]
  1633. ENG|051117      |     7| I|             | ##051183<additional^hardkey>
  1634. ENG|051117      |     9|  |    <key label> ::=
  1635. ENG|051117      |    10|R |             <char sequence>  maximal 8 Character
  1636. ENG|051118      |     1|  |    <returnonlast stmt> ::=
  1637. ENG|051118      |     2|R |               RETURNONLAST
  1638. ENG|051119      |     1|  |    <autopage stmt> ::=
  1639. ENG|051119      |     2|R |               AUTOPAGE
  1640. ENG|051120      |     1|  |    <headerlines stmt> ::=
  1641. ENG|051120      |     2| I|               HEADERLINES ( ##0203040136<expr> )
  1642. ENG|051120      |     3| I|             | HEADERLINES ( ##0203040133<variable> )
  1643. ENG|051120      |     5|  |    <bottomlines stmt> ::=
  1644. ENG|051120      |     6| I|               BOTTOMLINES ( ##0203040136<expr> )
  1645. ENG|051120      |     7|RI|             | BOTTOMLINES ( ##0203040133<variable> )
  1646. ENG|051121      |     1|  |    <special attr stmt> ::=
  1647. ENG|051121      |     2| I|               SPECIALATTR  [ INPUT ##051181<attr^name> ]
  1648. ENG|051121      |     3| I|                     [ CHECK ##051181<attr^name> ]
  1649. ENG|051121      |     4| I|                     [ MSG ##051181<attr^name> ]
  1650. ENG|051121      |     5|RI|                     [ CURSORLINE [ (<first pos>,<last pos>) ] ##051181<attr^name> ]
  1651. ENG|051122      |     1|  |    <control spec> ::=
  1652. ENG|051122      |     2|  |             CONTROL  <control case spec>
  1653. ENG|051122      |     4|  |    <control case spec> ::=
  1654. ENG|051122      |     5| I|             CASE ##0203040136<expr> OF <control case> [ <else case> ]  END
  1655. ENG|051122      |     7|  |    <else case> ::=
  1656. ENG|051122      |     8|  |             OTHERWISE <control action>
  1657. ENG|051122      |    10|  |    <control case> ::=
  1658. ENG|051122      |    11|  |             <value spec> : <control action>  [ ; <control case> ]
  1659. ENG|051122      |    13|  |    <control action> ::=
  1660. ENG|051122      |    14|  |               <stmt>
  1661. ENG|051122      |    15| I|             | ##051123<pick^stmt>
  1662. ENG|051122      |    16| I|             | ##051123<put^stmt>
  1663. ENG|051122      |    17|RI|             | ##051124<page^stmt>
  1664. ENG|051123      |     1|  |    <pick stmt> ::=
  1665. ENG|051123      |     2| I|               PICK [ ##0203040136<expr> ]
  1666. ENG|051123      |     4|  |    <put stmt> ::=
  1667. ENG|051123      |     5|R |               PUT  [<simple var>]
  1668. ENG|051124      |     1|  |    <page stmt> ::=
  1669. ENG|051124      |     2| I|            PAGE UP    [ ##0203040136<expr> ]
  1670. ENG|051124      |     3|  |          | PAGE DOWN  [<expr>]
  1671. ENG|051124      |     4|  |          | PAGE LEFT  [<expr>]
  1672. ENG|051124      |     5|R |          | PAGE RIGHT [<expr>]
  1673. ENG|051125      |     1|  |    <form calling option> ::=
  1674. ENG|051125      |     2| I|               ##051126<noinit^option>
  1675. ENG|051125      |     3| I|             | ##051127<mark^option>
  1676. ENG|051125      |     4| I|             | ##051128<accept^option>
  1677. ENG|051125      |     5| I|             | ##051129<attr^option>
  1678. ENG|051125      |     6| I|             | ##051130<clear^option>
  1679. ENG|051125      |     7| I|             | ##051130<screensize^option>
  1680. ENG|051125      |     8| I|             | ##051130<screenpos^option>
  1681. ENG|051125      |     9| I|             | ##051131<formpos^option>
  1682. ENG|051125      |    10| I|             | ##051132<frame^option>
  1683. ENG|051125      |    11| I|             | ##051133<background^option>
  1684. ENG|051125      |    12| I|             | ##051134<restore^option>
  1685. ENG|051125      |    13| I|             | ##051136<input^option>
  1686. ENG|051125      |    14| I|             | ##051137<action^option>
  1687. ENG|051125      |    15| I|             | ##051135<print^option>
  1688. ENG|051125      |    16|RI|             | ##051157<autoput^option>
  1689. ENG|051126      |     1|R |    <noinit option> ::=  NOINIT
  1690. ENG|051127      |     1|  |    <mark option> ::=
  1691. ENG|051127      |     2|RI|               MARK ( ##0203040136<expr> ) | MARK ( ##0203040133<variable> )
  1692. ENG|051128      |     1|  |    <accept option> ::=
  1693. ENG|051128      |     2|  |             ACCEPT (<key spec>,...)
  1694. ENG|051128      |     4|  |    <key spec> ::=
  1695. ENG|051128      |     5|  |              ENTER
  1696. ENG|051128      |     6| I|             | ##051183<basic^key> [ = <key label>]
  1697. ENG|051128      |     7|RI|             | ##051183<additional^hardkey>
  1698. ENG|051129      |     1|  |    <attr option> ::=
  1699. ENG|051129      |     2|RI|             ATTR ( <form var>, ##051181<attr^name> )
  1700. ENG|051130      |     1|  |    <window option> ::=
  1701. ENG|051130      |     2| I|             SCREENPOS ( ##0203040136<expr> ,<expr>)
  1702. ENG|051130      |     3|  |             | SCREENSIZE (<expr>,<expr>)
  1703. ENG|051130      |     4|R |             | CLEAR
  1704. ENG|051131      |     1|  |    <formpos option> ::=
  1705. ENG|051131      |     2|RI|             FORMPOS ( ##0203040136<expr> ,<expr>)
  1706. ENG|051132      |     1|  |    <frame option> ::=
  1707. ENG|051132      |     2|R |             FRAME [ (<frame title>) ]
  1708. ENG|051133      |     1|  |    <background option> ::=
  1709. ENG|051133      |     2|R |             BACKGROUND
  1710. ENG|051134      |     1|  |    <restore option> ::=
  1711. ENG|051134      |     2|R |             RESTORE
  1712. ENG|051135      |     1|  |    <print option> ::=
  1713. ENG|051135      |     2|  |             PRINT [(<print option>,...)]
  1714. ENG|051135      |     4|  |    <print option> ::=
  1715. ENG|051135      |     5|  |             | CLOSE
  1716. ENG|051135      |     6|  |             | CPAGE <natural>
  1717. ENG|051135      |     7|  |             | LINEFEED <natural>
  1718. ENG|051135      |     8|  |             | LINESPACE <natural>
  1719. ENG|051135      |     9|  |             | NEWPAGE
  1720. ENG|051135      |    10|RI|             | PRINTFORMAT ##0203040136<expr>
  1721. ENG|051136      |     1|  |    <input option> ::=
  1722. ENG|051136      |     2|  |             NOINPUT (<input field>,...)
  1723. ENG|051136      |     3|  |             | INPUT (<input field>,...)
  1724. ENG|051136      |     5|  |    <input field> ::=
  1725. ENG|051136      |     6|  |             <natural>
  1726. ENG|051136      |     7| I|             | ##0203040133<variable>
  1727. ENG|051136      |     8|RI|             | ##0203040134<vector^slice>
  1728. ENG|051137      |     1|  |    <action option> ::=
  1729. ENG|051137      |     2|RI|             ACTION ( ##0203040136<expr> )
  1730. ENG|051138      |     1|  |    <field processing stmt> ::=
  1731. ENG|051138      |     2| I|                ##051104<processing^stmt>
  1732. ENG|051138      |     3|  |              | <extended field stmt>
  1733. ENG|051138      |     4|  |              | <before group stmt>
  1734. ENG|051138      |     5|  |              | <after group stmt>
  1735. ENG|051138      |     6|  |              | <extended control stmt>
  1736. ENG|051138      |     8|  |    <extended field stmt> ::=
  1737. ENG|051138      |     9|  |              FIELD <field name>,... [<extended field proc>...]
  1738. ENG|051138      |    11|  |    <field name> ::=
  1739. ENG|051138      |    12| I|                ##0203040133<variable>
  1740. ENG|051138      |    13| I|              | ##0203040134<vector^slice>
  1741. ENG|051138      |    14|  |              | <field number>:<field name>
  1742. ENG|051138      |    16|  |    <extended field proc spec> ::=
  1743. ENG|051138      |    17|SI|                ##051105<field^proc^spec>
  1744. ENG|051138      |    19| I|              | ##051140<before^field^spec>
  1745. ENG|051138      |    20| I|              | ##051140<after^field^spec>
  1746. ENG|051138      |    21|RI|              | ##051146<autonext^spec>
  1747. ENG|051140      |     1|  |    <before field spec> ::=
  1748. ENG|051140      |     2|  |              BEFORE FIELD <extended compound>
  1749. ENG|051140      |     4|  |    <after field spec> ::=
  1750. ENG|051140      |     5|R |              AFTER  FIELD <extended compound>
  1751. ENG|051141      |     1|  |    <group spec> ::=
  1752. ENG|051141      |     2|  |                GROUP <group name>
  1753. ENG|051141      |     3|  |                <extended field stmt>;...
  1754. ENG|051141      |     4|  |                END;
  1755. ENG|051141      |     6|  |    <before group spec> ::=
  1756. ENG|051141      |     7|  |                BEFORE GROUP <extended compound>
  1757. ENG|051141      |     9|  |    <after group spec> ::=
  1758. ENG|051141      |    10|R |                AFTER GROUP <extended compound>
  1759. ENG|051142      |     1|  |    <extended compound> ::=
  1760. ENG|051142      |     2|R |                BEGIN <extended stmt>;... END | <extended stmt>
  1761. ENG|051143      |     1|  |    <extended stmt> ::=
  1762. ENG|051143      |     2|  |                 <stmt>
  1763. ENG|051143      |     3| I|               | ##051124<page^stmt>
  1764. ENG|051143      |     4| I|               | ##051123<pick^stmt>
  1765. ENG|051143      |     5| I|               | ##051123<put^stmt>
  1766. ENG|051143      |     6| I|               | ##051144<nextfield^stmt>
  1767. ENG|051143      |     7|RI|               | ##051145<nextgroup^stmt>
  1768. ENG|051144      |     1|  |    <nextfield stmt> ::=
  1769. ENG|051144      |     2|R |                NEXTFIELD <field name>
  1770. ENG|051145      |     1|  |    <nextgroup stmt> ::=
  1771. ENG|051145      |     2|R |                NEXTGROUP <group name>
  1772. ENG|051146      |     1|  |    <autonext spec> ::=
  1773. ENG|051146      |     2|R |                NOAUTONEXT
  1774. ENG|051147      |     1|  |    <menu> ::=
  1775. ENG|051147      |     2| I|              MENU ##0203040101<prog^name>.##0203040102<mod^name> [PARMS ( ##0203040104<parm^decl> ,...)]
  1776. ENG|051147      |     3| I|              ##051150<actionbar^stmt>
  1777. ENG|051147      |     4|RI|              [ ##051151<pulldown^stmt> ]
  1778. ENG|051148      |     1|  |    <include menu stmt> ::=
  1779. ENG|051148      |     2| I|                INCLUDE MENU  ##0203040101<prog^name>.##0203040102<mod^name>
  1780. ENG|051148      |     3|RI|              | [PARMS ( ##0203040104<parm^decl> ,...)]
  1781. ENG|051149      |     1|  |    <form>  ::=
  1782. ENG|051149      |     2| I|             FORM  ##0203040101<prog^name>.##0203040102<mod^name>
  1783. ENG|051149      |     3| I|                   [OPTIONS ( ##051180<form^option> ,...)]
  1784. ENG|051149      |     4| I|                   [PARMS ( ##0203040104<parm^decl> ,...)]
  1785. ENG|051149      |     5| I|             [ ##0203040156<var^section> ]
  1786. ENG|051149      |     6| I|             ##051159<form^layout>
  1787. ENG|051149      |     7|  |             [ ...
  1788. ENG|051149      |     8| I|              ##051150<actionbar^stmt>
  1789. ENG|051149      |     9| I|              [ ##051151<pulldown^stmt> ]
  1790. ENG|051149      |    10|R |                   ... ]
  1791. ENG|051150      |     1|  |    <actionbar stmt> ::=
  1792. ENG|051150      |     2| I|                ACTIONBAR [WITH FRAME] ( ##051182<menupoint^def> ,... )
  1793. ENG|051150      |     3|RI|              | ACTIONBAR [WITH FRAME] ( ##051182<menupoint^group> ;... )
  1794. ENG|051151      |     1|  |    <pulldown stmt> ::=
  1795. ENG|051151      |     2| I|                PULLDOWN ##0203040118<name> ( ##051182<menupoint^def> ,... )
  1796. ENG|051151      |     3|RI|              | PULLDOWN ##0203040118<name> ( ##051182<menupoint^group> ;... )
  1797. ENG|051152      |     1|  |    <action clause> ::=
  1798. ENG|051152      |     2|  |              [<comment>] [<activate cond>] [<action>]
  1799. ENG|051152      |     4|  |    <comment> ::=
  1800. ENG|051152      |     5| I|              COMMENT ##0203040136<expr>
  1801. ENG|051152      |     7|  |    <activate cond> ::=
  1802. ENG|051152      |     8| I|              WHEN ##0203040146<boolean^expr>
  1803. ENG|051152      |    10|  |    <action> ::=
  1804. ENG|051152      |    11|  |                <pulldown call>
  1805. ENG|051152      |    12|  |              | <releasekey spec>
  1806. ENG|051152      |    14|  |    <pulldown call> ::=
  1807. ENG|051152      |    15| I|              PULLDOWN ##0203040118<name>
  1808. ENG|051152      |    17|S |    <releasekey spec> ::=
  1809. ENG|051152      |    19|  |              RELEASEKEY <key literal>
  1810. ENG|051152      |    21|  |    <key literal> ::=
  1811. ENG|051152      |    22| I|                ##051183<basic^key>
  1812. ENG|051152      |    23|RI|              | ##051183<additional^hardkey>
  1813. ENG|051153      |     1|R |    <form lib option> ::= LIB [<username>.]<libname>
  1814. ENG|051154      |     1|R |    <form wrap option> ::=  WRAP
  1815. ENG|051155      |     1|  |    <keyswap stmt> ::=
  1816. ENG|051155      |     2|  |             KEYSWAP ( <key pair>,... )
  1817. ENG|051155      |     4|  |    <key pair> ::=
  1818. ENG|051155      |     5| I|             ##051183<basic^key> <swap sign> <basic key>
  1819. ENG|051155      |     7|  |    <swap sign> ::=
  1820. ENG|051155      |     8|R |             '<->'
  1821. ENG|051156      |     1|  |    <insertmode stmt> ::=
  1822. ENG|051156      |     2| I|             INSERTMODE ( POS ( ##0203040136<expr> , <expr> )
  1823. ENG|051156      |     3|  |                       [, LABEL ( <expr> ) ]
  1824. ENG|051156      |     4|RM|                       [, ATTR ( #051181<attr^name> ) ] )
  1825. ENG|051157      |     1|RI|    <autoput option> ::=  AUTOPUT ( ##0203040133<variable> )
  1826. ENG|051158      |     1|  |    <langdep literal> ::= ##!0203040118<name> (<literal size>)
  1827. ENG|051158      |     3|  |    <literal size>    ::= S | M | L | XL
  1828. ENG|051158      |     5|  |    <langdep literal> ::=
  1829. ENG|051158      |     6|  |             ##!0203040118<name>           <-- nur im Maskenlayout
  1830. ENG|051158      |     7|  |           | ##!0203040118<name> (<literal size>)
  1831. ENG|051158      |     9|R |    <literal size>    ::= S | M | L | XL
  1832. ENG|051159      |     1|  |    <form layout>  ::=
  1833. ENG|051159      |     2| I|             ##051103<begin^layout^line>
  1834. ENG|051159      |     3|  |               +------------------------------------+
  1835. ENG|051159      |     4| I|               |  any ##051160<layout^item> elements        |
  1836. ENG|051159      |     5|  |               |  required may be placed between    |
  1837. ENG|051159      |     6|  |               |  the lines, beginning with         |
  1838. ENG|051159      |     7|  |               |     'LAYOUT' and 'ENDLAYOUT'       |
  1839. ENG|051159      |     8|  |               +------------------------------------+
  1840. ENG|051159      |     9|R |             ENDLAYOUT
  1841. ENG|051160      |     1|  |    <layout item> ::=
  1842. ENG|051160      |     2| I|               ##051161<text^item>
  1843. ENG|051160      |     3| I|             | ##051162<input^item>
  1844. ENG|051160      |     4| I|             | ##051163<output^item>
  1845. ENG|051160      |     5| I|             | ##051164<continuation^field>
  1846. ENG|051160      |     6| I|             | ##051165<next^vector^component>
  1847. ENG|051160      |     7|  |             | <spec char>
  1848. ENG|051160      |     8|RI|             | ##051166<langdep^literal>
  1849. ENG|051161      |     1|  |    <text item> ::=
  1850. ENG|051161      |     2|R |             beliebiger Text
  1851. ENG|051162      |     1|  |    <input item> ::=
  1852. ENG|051162      |     2| I|             <infield symbol> ##051165<field^ref>
  1853. ENG|051162      |     4|  |    <infield symbol> :=
  1854. ENG|051162      |     5|  |               _
  1855. ENG|051162      |     6|R |             | <in char>
  1856. ENG|051163      |     1|  |    <output item> ::=
  1857. ENG|051163      |     2| I|             <outfield symbol> ##051165<field^ref>
  1858. ENG|051163      |     3|  |              /<varying length symbol>/
  1859. ENG|051163      |     5|  |    <outfield symbol> :=
  1860. ENG|051163      |     6|  |              <
  1861. ENG|051163      |     7|  |             | <out char>
  1862. ENG|051163      |     9|  |    <varying length symbol> :=
  1863. ENG|051163      |    10|R |             >>
  1864. ENG|051164      |     1|  |    <continuation field> :=
  1865. ENG|051164      |     2|  |               <infield symbol>"
  1866. ENG|051164      |     3|R |             | <outfield symbol>"
  1867. ENG|051165      |     1|  |    <next vector component> :=
  1868. ENG|051165      |     2|  |               <infield symbol><blank>
  1869. ENG|051165      |     3|  |             | <outfield symbol><blank>
  1870. ENG|051165      |     5|  |    <field ref> ::=
  1871. ENG|051165      |     6| I|               ##0203040133<variable>
  1872. ENG|051165      |     7|  |             | <vector slice>
  1873. ENG|051165      |     8|  |             | <field number>
  1874. ENG|051165      |     9|  |    <vector slice> ::=
  1875. ENG|051165      |    10| I|             ##0203040118<name> (<lower bound> .. <upper bound>)
  1876. ENG|051165      |    11|  |             +-------------------------------------------+
  1877. ENG|051165      |    12|  |             | as many <next vector component> elements  |
  1878. ENG|051165      |    13|  |             | must be entered here, one below the other,|
  1879. ENG|051165      |    14|  |             | as are determined by:                     |
  1880. ENG|051165      |    15|  |             | <upper bound>-<lower bound>+1             |
  1881. ENG|051165      |    16|S |             +-------------------------------------------+
  1882. ENG|051165      |    19|  |    <lower bound> ::=
  1883. ENG|051165      |    20| I|             ##0203040120<numeric>
  1884. ENG|051165      |    22|  |    <upper bound> ::=
  1885. ENG|051165      |    23| I|             ##0203040120<numeric>
  1886. ENG|051165      |    25|  |    <field number> ::=
  1887. ENG|051165      |    26|RI|             ##0203040120<numeric>
  1888. ENG|051166      |     1|R |    <langdep literal> ::=   ##!0203040118<name>
  1889. ENG|051180      |     1|  |    <form option> ::=
  1890. ENG|051180      |     2| I|             ##051154<form^wrap^option>
  1891. ENG|051180      |     3|RI|           | ##051153<form^lib^option>
  1892. ENG|051181      |     1|  |    <attr name> ::=
  1893. ENG|051181      |     2|  |                LOW | HIGH | INV | BLK | UNDERL
  1894. ENG|051181      |     3|R |              | ATTR1 | ... | ATTR16
  1895. ENG|051182      |     1|  |    <menupoint group> ::=
  1896. ENG|051182      |     2|  |              <menupoint def>,...
  1897. ENG|051182      |     4|  |    <menupoint def> ::=
  1898. ENG|051182      |     5| I|              <function label> [ : ##051152<action^clause> ]
  1899. ENG|051182      |     7|  |    <function label> ::=
  1900. ENG|051182      |     8| I|                ##0203040133<variable>
  1901. ENG|051182      |     9| I|              | ##0203040126<string^literal>
  1902. ENG|051182      |    10|RI|              | ##051158<langdep^literal>
  1903. ENG|051183      |     1|  |    <basic key> ::=
  1904. ENG|051183      |     2|  |               F1  | F2  | F3  | F4  | F5  | F6  | F7  | F8  |  F9
  1905. ENG|051183      |     3|  |             | F10 | F11 | F12 | HELP | UP | DOWN
  1906. ENG|051183      |     5|  |    <additional hardkey> ::=
  1907. ENG|051183      |     6|R |              CMDKEY | ENDKEY | UPKEY | DOWNKEY | RIGHTKEY | LEFTKEY
  1908. ENG|051184      |     1|  |    <noinp spec> ::=
  1909. ENG|051184      |     2|R |            NOINPUT
  1910. ENG|051185      |     1|  |    <scrollfield stmt> ::=
  1911. ENG|051185      |     2|  |             SCROLLFIELD ( <offset var> [, <max count>
  1912. ENG|051185      |     3|  |                                        [, <page count> ] ] )
  1913. ENG|051185      |     4| I|             [ ( TOPKEY ##051183<basic^key> , BOTTOMKEY <basic key> ) ]
  1914. ENG|051185      |     6|  |     <offset var> ::= <variable>
  1915. ENG|051185      |     8|  |     <max count>  ::= <expr>
  1916. ENG|051185      |    10|R |     <page count>  ::= <expr>
  1917. ENG|051186      |     1|  |    <keys stmt> ::=
  1918. ENG|051186      |     2|  |           KEYS ( <function key spec>,... )
  1919. ENG|051186      |     4|  |    <function key spec> ::=
  1920. ENG|051186      |     5|  |           <key function> = <key> [ | <key> ... ]
  1921. ENG|051186      |     7|  |    <key function> ::=
  1922. ENG|051186      |     8|  |           HELP | MENU | UP | DOWN | LEFT | RIGHT
  1923. ENG|051186      |    10|  |    <key> ::=
  1924. ENG|051186      |    11| I|           ##051183<basic^key>
  1925. ENG|051186      |    12|R |           | <additional hardkey>
  1926. ENG|051187      |     1|  |    <button stmt>     ::=
  1927. ENG|051187      |     2|  |                BUTTON [WITH FRAME] (<buttonpoint def>,...)
  1928. ENG|051187      |     4|  |    <buttonpoint def> ::=
  1929. ENG|051187      |     5| I|                ##051182<function label> [ : <button action> ]
  1930. ENG|051187      |     7|  |    <button action>   ::=
  1931. ENG|051187      |     8|R |                [ ##051152<comment> ] [<activate cond>] [<releasekey spec>]
  1932.