home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC Treasures, Inc.
/
pctreasures.mdf
/
WINDOWS
/
adabas
/
f_0001
/
env
/
form.enh
< prev
next >
Wrap
Text File
|
1999-11-01
|
140KB
|
1,932 lines
ENG|05 | 0 FORM.enh 10.05.01 1998-04-24
ENG|05 | 1| | Forms
ENG|05 | 2| | -----
ENG|05 | 4| M| #01Examples of Form Definitions
ENG|05 | 5| M| #05Structure of a Form
ENG|05 | 6| M| #03Form Fields
ENG|05 | 7| M| #04Processing Statements in Forms
ENG|05 | 8| M| #06Options on Form Calls
ENG|05 | 9| M| #07Parameters on Form Calls
ENG|05 | 10| M| #08Options for the FORM Compiler
ENG|05 | 11|RM| #10Action Bar and Pulldown Menus
ENG|0501 | 1| | Example 1 : LAYOUT Design
ENG|0501 | 3| E|
ENG|0501 | 4| E| FORM customer.mastercard
ENG|0501 | 5| E| LAYOUT
ENG|0501 | 6| E| <user CUSTOMER CARD <today
ENG|0501 | 7| E| -------------------------------------
ENG|0501 | 8| E| customer_no : _cno
ENG|0501 | 9| E| firstname : _cfname
ENG|0501 | 10| E| name : _cname
ENG|0501 | 12| E| bank_balance : _(account)
ENG|0501 | 14| E| -------------------------------------
ENG|0501 | 15| E| <MESSAGE
ENG|0501 | 16|SE| ENDLAYOUT
ENG|0501 | 19| E|
ENG|0501 | 21| | Example 2 : LAYOUT and Options
ENG|0501 | 24| | FORM customer.modification
ENG|0501 | 25| | LAYOUT HIGH = % LOW = + PROMPT = .
ENG|0501 | 26| | <user %<headtext +<today
ENG|0501 | 27| | -------------------------------------------------------
ENG|0501 | 29| | Customer : % <cno>> <ctit>> <cname>> <cfname
ENG|0501 | 30| | Old address % New address
ENG|0501 | 31| | ----------- % -----------
ENG|0501 | 32| | City : <ccty + % City : _newcity
ENG|0501 | 33| | Zip code : <czip % Zip code : _newzip +
ENG|0501 | 34|S | <" + _" +
ENG|0501 | 37| | -------------------------------------------------------
ENG|0501 | 38| | <MESSAGE
ENG|0501 | 39| | ENDLAYOUT
ENG|0501 | 40| | ACCEPT ( F1='UPDATE', F9='RETURN' );
ENG|0501 | 42| | FIELD MESSAGE INIT 'correct specifications, if nec.';
ENG|0501 | 44| | FIELD newcity INIT NULL
ENG|0501 | 45| | CHECK IS ALPHA;
ENG|0501 | 47| | FIELD newzip INIT NULL SIZE 5
ENG|0501 | 48| | CHECK BETWEEN 1 AND 99999
ENG|0501 | 49| | ELSE 'Please: 5 digits numeric';
ENG|0501 | 51| | IGNORE newcity, newzip WHEN $KEY = F9;
ENG|0501 | 53|S | CONTROL CASE $KEY OF
ENG|0501 | 55| | F1 : CALL PROC alter;
ENG|0501 | 56| | F9 : RETURN;
ENG|0501 | 57|R | END;
ENG|0503 | 1| | Form Fields
ENG|0503 | 2| | -----------
ENG|0503 | 4| M| #01Simple Form Fields
ENG|0503 | 5| M| #02Multiple-line Form Fields
ENG|0503 | 6| M| #03Form Fields of Varying Lengths
ENG|0503 | 7| M| #04Vector Variables (Subscripted Variables) in Forms
ENG|0503 | 8| M| #05Vector Slices as an Abbreviated Notation
ENG|0503 | 9| M| #06Field Numbers Substituting Variable Names
ENG|0503 | 10| M| #07Vector Variables with Dynamic Index
ENG|0503 | 11|RI| ##051160->^Syntax
ENG|050301 | 1| | Simple Form Fields
ENG|050301 | 3| | <today -> Output field : current value of the variable 'today'
ENG|050301 | 4| | is displayed here; it c a n n o t be overwritten.
ENG|050301 | 6| | _cno -> Input field : the current value of the variable 'cno'
ENG|050301 | 7| | is displayed here; it c a n be overwritten.
ENG|050301 | 9| | _(passw) -> Input field without display and echo (password input).
ENG|050301 | 11| | <MESSAGE -> The variable MESSAGE sends system messages.
ENG|050301 | 12| | If the form contains no MESSAGE field, the last
ENG|050301 | 13| | screen line is reserved for the message.
ENG|050301 | 14| | After display, MESSAGE is implicitly set to NULL.
ENG|050301 | 16| | Just in front of an input/output field either a blank or an intensity
ENG|050301 | 17|R | sign or an input/output field may occur.
ENG|050302 | 1| | Multiple-line Form Fields
ENG|050302 | 3| | <ccity + -> multiple-line output field _newcity +
ENG|050302 | 4| | <" + multiple-line input field -> _" +
ENG|050302 | 6| | The field segments of the multiple-line fields must begin immediately
ENG|050302 | 7| | one below the other in the same column; but they may have various
ENG|050302 | 8| | lengths.
ENG|050302 | 10| | Definition:
ENG|050302 | 11| E|
ENG|050302 | 12| E| FORM test.m_ln
ENG|050302 | 13| E| LAYOUT PROMPT = .
ENG|050302 | 14| E| _newcity +
ENG|050302 | 15| E| _" +
ENG|050302 | 16|SE| ENDLAYOUT
ENG|050302 | 19| E|
ENG|050302 | 21| | Input: | Bond St. 110...... |
ENG|050302 | 22| | | New York 10580.... |
ENG|050302 | 24| | Values of newcity
ENG|050302 | 25|R | after input: 'Bond St. 110 New York 10580'
ENG|050303 | 1| | Form Fields of Varying Lengths
ENG|050303 | 3| | <item_no>> -> output field with variable length.
ENG|050303 | 5| | '>>' has the effect that the following form fields are attached to
ENG|050303 | 6| | the portion of field having a variable length.
ENG|050303 | 8| | Example: item_no := '4711'; item_des := 'screw';
ENG|050303 | 10| | Definition:
ENG|050303 | 11| | LAYOUT
ENG|050303 | 12| | ... Item <item_no>>, <item_des>>, unavailable...
ENG|050303 | 13| | ENDLAYOUT
ENG|050303 | 15| | Output:
ENG|050303 | 16|R | ... Item 4711 , screw , unavailable...
ENG|050304 | 1| | Subscripted Variables in Forms (Vector Variables)
ENG|050304 | 3| | C.No. | Firstname | Name
ENG|050304 | 4| | -----------|----------------|------------------
ENG|050304 | 5| | _cno(1) | _firstname(1) | _name(1) + -> processing tables
ENG|050304 | 6| | _cno(2) | _firstname(2) | _name(2) + -> using
ENG|050304 | 7| | ... | ... | ... + -> subscripted
ENG|050304 | 8| | _cno(8) | _firstname(8) | _name(8) + -> variables
ENG|050304 | 10|R | A vector variable can consist of up to 255 components.
ENG|050305 | 1| | Vector Slices as an Abbreviated Notation
ENG|050305 | 3| | C.No. | Firstname | Name
ENG|050305 | 4| | -----------|-------------------|------------------
ENG|050305 | 5| | _cno(1..8) | _firstname(1..8) | _name(1..8) +
ENG|050305 | 6| | _ | _ | _ +
ENG|050305 | 7| | ... | ... | ... +
ENG|050305 | 8| | _ | _ | _ +
ENG|050305 | 10| | fo.
ENG|050305 | 11| | Vector components which are listed one below the other may
ENG|050305 | 12|R | be described in an abbreviated notation as vector slices.
ENG|050306 | 1| | Field Numbers Substituting Variable Names
ENG|050306 | 2| E|
ENG|050306 | 3| E| FORM test.fld_nr
ENG|050306 | 4| E| LAYOUT GRAPHIC = *
ENG|050306 | 5| E| C.No. * Firstname
ENG|050306 | 6| E| ***************************
ENG|050306 | 7| E| _1 * _firstname(1..4) *
ENG|050306 | 8| E| _ * _ *
ENG|050306 | 9| E| _ * _ *
ENG|050306 | 10| E| _ * _ *
ENG|050306 | 11| E| ENDLAYOUT
ENG|050306 | 12| E| FIELD 1:cno(1..4)
ENG|050306 | 14| E|
ENG|050306 | 16| | - A form field can be represented by a field number. This makes
ENG|050306 | 17|S | the field size independent of the length of the variable name.
ENG|050306 | 19| | - Field number and variable are associated with each other
ENG|050306 | 20|R | within the FIELD statement.
ENG|050307 | 1| | Vector Variables with Dynamic Index
ENG|050307 | 2| E|
ENG|050307 | 3| E| FORM test.vec_fld
ENG|050307 | 4| E| LAYOUT GRAPHIC = *
ENG|050307 | 5| E| ******************************
ENG|050307 | 6| E| _1 * _firstname(1..4) *
ENG|050307 | 7| E| _ * _ *
ENG|050307 | 8| E| _ * _ *
ENG|050307 | 9| E| _ * _ *
ENG|050307 | 10| E| ENDLAYOUT
ENG|050307 | 11| E| FIELD 1:cno(1..4), firstname(1..4) OFFSET x;
ENG|050307 | 13| E|
ENG|050307 | 15| | - If the variable after OFFSET (here x) has a value greater than 0,
ENG|050307 | 16| | then the value of the vector component firstname(1+x) appears in the
ENG|050307 | 17|S | form field of the vector component firstname(1).
ENG|050307 | 19| | - This rule applies accordingly to all vector components that are
ENG|050307 | 20| | given in the FIELD statement.
ENG|050307 | 22|R | - Numeric expressions can be specified instead of the variable x.
ENG|0504 | 1| | Processing Statements in Forms
ENG|0504 | 2| | ------------------------------
ENG|0504 | 4| M| #01PROMPT : Representing a field with NULL Value
ENG|0504 | 5| M| #02ATTR1,... : Display Attributes
ENG|0504 | 6| M| #03IN^and^OUT : Identifiers for Input/Output Fields
ENG|0504 | 7| M| #14GRAPHIC : Graphics Characters in Forms
ENG|0504 | 8| M| #04FIELD/... : Options for the FIELD Statement
ENG|0504 | 9| M| #08ACCEPT : Activating the Release Key
ENG|0504 | 10| M| #15MARK : Initializing the Cursor Position
ENG|0504 | 11| M| #09IGNORE : Suppressing Input Checking
ENG|0504 | 12| M| #10KEYSWAP : Interchanging the Key Functions
ENG|0504 | 13| M| #18SPECIALATTR : Situation-dependent Display Attributes
ENG|0504 | 14| M| #19INSERTMODE : Display of the Input Mode
ENG|0504 | 15| M| #11CONTROL : The Form as Controlling Module
ENG|0504 | 16| M| #16RETURNONLAST : Leaving the Form via the Return Key
ENG|0504 | 17|SM| #06PICK/PUT : PICK/PUT Mechanism
ENG|0504 | 19| M| #05AUTOPAGE : Support of Scrolling
ENG|0504 | 20| M| #17HEADERLINES/
ENG|0504 | 21| M| #17BOTTOMLINES : Header and Bottomlines
ENG|0504 | 23| M| #22BEFORE/AFTER^FIELD : What's to do on Entering and Leaving a Field
ENG|0504 | 24| M| #23GROUP : Several Fields can be summarized to a Group
ENG|0504 | 25| M| #24BEFORE/AFTER^GROUP : What's to do on Entering and Leaving a Group
ENG|0504 | 26| M| #25NEXTFIELD : Continue with Another Field of the Group
ENG|0504 | 27| M| #26NEXTGROUP : Continue with Another Group
ENG|0504 | 28| M| #27NOAUTONEXT : Continue with Next Field
ENG|0504 | 29| M| #28SCROLLFIELD : Move Vector Slices
ENG|0504 | 30| M| #29KEYS : Assign Function to Keys
ENG|0504 | 31|RI| ##051138->^Syntax
ENG|050401 | 1| | PROMPT : Representing a Field with NULL Value
ENG|050401 | 2| E|
ENG|050401 | 3| E| FORM test.fld_prompt
ENG|050401 | 4| E| LAYOUT PROMPT = .
ENG|050401 | 5| E| ...
ENG|050401 | 6| E| Firstname : _cfname
ENG|050401 | 7| E| ...
ENG|050401 | 8| E| ENDLAYOUT
ENG|050401 | 9| E| FIELD cfname INIT NULL SIZE 20;
ENG|050401 | 11| E|
ENG|050401 | 13| | The PROMPT option in the LAYOUT line fills the entire length of fields
ENG|050401 | 14| | the variables of which are NULL with the specified character.
ENG|050401 | 16| | After user input, the prompt characters are truncated to the left and
ENG|050401 | 17|S | to the right of the input ( like TRIM (cfname,'.') ).
ENG|050401 | 19|RI| ##051103->^Syntax
ENG|050402 | 1| | ATTR1,...ATTR16, HIGH, HI, LOW, INV, BLK, UNDERL : Display Attributes
ENG|050402 | 2| E|
ENG|050402 | 3| E| FORM test.lopt_attr
ENG|050402 | 4| E| LAYOUT HIGH = % LOW = + ATTR16 = *
ENG|050402 | 5| E| <user CUSTOMER CARD *<today
ENG|050402 | 6| E| -------------------------------------
ENG|050402 | 7| E| %customer_no. : +_cno
ENG|050402 | 8| E| ENDLAYOUT
ENG|050402 | 9| E| FIELD user INIT $USER;
ENG|050402 | 10| E| FIELD today INIT DATE(DD.MM.YY);
ENG|050402 | 11| E| FIELD cno INIT '.'(6);
ENG|050402 | 13| E|
ENG|050402 | 15| | The options ATTR1,...,ATTR16 (HIGH, HI,
ENG|050402 | 16| | LOW, INV, BLK, UNDERL) can be used to define special
ENG|050402 | 17|S | characters for controlling the intensity of the display.
ENG|050402 | 19| | Normally input fields are displayed brightly, output fields and text
ENG|050402 | 20| | parts darkly (SET parameter ATTR2/HI and ATTR1/LOW).
ENG|050402 | 21| | As soon as one of the special characters appears,
ENG|050402 | 22| | the line is output according to the intensity defined, starting
ENG|050402 | 23| | with the special character until the end of line or up to
ENG|050402 | 24| | the next occurrence of a special character.
ENG|050402 | 26| | In the example: '<user' and '_cno' appear dark, 'customer_no.' bright
ENG|050402 | 27| | '<today' SET parameter ATTR16.
ENG|050402 | 29|RI| ##051103->^Syntax
ENG|050403 | 1| | IN and OUT : Identfiers for Input/Output Fields
ENG|050403 | 2| E|
ENG|050403 | 3| E| FORM bsp_form.l_in_out
ENG|050403 | 4| E| LAYOUT IN = & OUT = @
ENG|050403 | 5| E| @user CUSTOMER CARD @today
ENG|050403 | 6| E| -------------------------------------
ENG|050403 | 7| E| customer_no.: &cno
ENG|050403 | 8| E| ....
ENG|050403 | 9| E| ENDLAYOUT
ENG|050403 | 11| E| FIELD user INIT $USER;
ENG|050403 | 12| E| FIELD today INIT DATE(DD.MM.YY);
ENG|050403 | 13| E| FIELD cno INIT '.'(6);
ENG|050403 | 15| E|
ENG|050403 | 17|S | IN and OUT can be used to define explicitly characters other than the
ENG|050403 | 19| | given '_' (underscore) and '<' (less than) to denote the beginning of
ENG|050403 | 20| | an input or output field.
ENG|050403 | 22| | Thus 'user' and 'today' are output fields in this example, whereas
ENG|050403 | 23| | 'cno' is an input field.
ENG|050403 | 25|RI| ##051103->^Syntax
ENG|050404 | 1| | Options of the FIELD Statement
ENG|050404 | 2| | ------------------------------
ENG|050404 | 4| M| #02FIELD/INIT^^^^^^: Initializations
ENG|050404 | 5| M| #01FIELD/SIZE^^^^^^: Explicit Field Delimitation
ENG|050404 | 6| M| #06FIELD/WIDTH^^^^^: Field Delimitation in case of
ENG|050404 | 7| | Multiple-line Form Fields
ENG|050404 | 8| M| #04FIELD/CHECK^^^^^: Input Checking
ENG|050404 | 9| M| #07FIELD/DOMAIN^^^^: Using DOMAIN Definitions
ENG|050404 | 10| M| #03FIELD/HELP^FORM^: Output of HELP Forms
ENG|050404 | 11| M| #08FIELD/HELP^MSG^^: Output of HELP Messages
ENG|050404 | 12| M| #05FIELD/DISPLAY^^^: Editing the Display
ENG|050404 | 13| M| #09FIELD/OFFSET^^^^: Vector Components with Dynamic Index
ENG|050404 | 14| M| #10FIELD/ATTR^^^^^^: Assignment of Field Attributes
ENG|050404 | 15| M| #11FIELD/NOINPUT^^^: Positioning Cursor without overwriting the field
ENG|050404 | 16|RI| ##051105->^Syntax
ENG|05040401 | 1| | FIELD/SIZE : Field Delimitation
ENG|05040401 | 3| E|
ENG|05040401 | 4| E| FORM test.fld_size
ENG|05040401 | 5| E| LAYOUT PROMPT = . HIGH = % LOW = +
ENG|05040401 | 6| E| Amount1 : _amount1
ENG|05040401 | 7| E| .............................................
ENG|05040401 | 8| E| Amount2 : _amount2 $
ENG|05040401 | 9| E| ........
ENG|05040401 | 10| E| Amount3 : _amount3 +
ENG|05040401 | 11| E| ...........
ENG|05040401 | 12| E| Amount4 : _amount4
ENG|05040401 | 13| E| ..........
ENG|05040401 | 14| E| ENDLAYOUT
ENG|05040401 | 16|SE| FIELD amount4 SIZE 10;
ENG|05040401 | 19| E|
ENG|05040401 | 21| | This example illustrates the various possibilities of precisely
ENG|05040401 | 22| | limiting a field. The dots denote the lengths of the input areas.
ENG|05040401 | 24|RI| ##051107->^Syntax
ENG|05040402 | 1| | FIELD/INIT : Initializations
ENG|05040402 | 3| E|
ENG|05040402 | 4| E| FORM test.fld_init
ENG|05040402 | 5| E| LAYOUT
ENG|05040402 | 6| E| <user CUSTOMER CARD <today
ENG|05040402 | 7| E| ------------------------------------
ENG|05040402 | 8| E| customer_no : _cno
ENG|05040402 | 9| E| ...
ENG|05040402 | 10| E| ENDLAYOUT
ENG|05040402 | 12| E| FIELD user INIT $USER;
ENG|05040402 | 13| E| FIELD today INIT DATE(DD.MM.YY);
ENG|05040402 | 14| E| FIELD cno INIT '.'(6);
ENG|05040402 | 16|SE|
ENG|05040402 | 19| | Whenever the form is called, the variables 'user', 'today' and 'cno'
ENG|05040402 | 20| | are initialized according to the INIT option.
ENG|05040402 | 21| | The initializations can be suppressed dynamically at runtime by calling
ENG|05040402 | 22| | the form with NOINIT option :
ENG|05040402 | 24| | CALL FORM mastercard ( NOINIT );
ENG|05040402 | 26| | In this case, the current values of the variables appear in the fields.
ENG|05040402 | 28| | Fields for which no INIT option has been specified always contain the
ENG|05040402 | 29| | current values of the variables. If their value is NULL, they will be
ENG|05040402 | 30| | filled with the PROMPT character.
ENG|05040402 | 32|RI| ##051106->^Syntax
ENG|05040403 | 1| | FIELD/HELP FORM : Output of HELP Forms
ENG|05040403 | 3| | The FIELD/HELP statement can be used to assign HELP information in form
ENG|05040403 | 4| I| of a HELP form or ##05040408HELP message to a form field or group of form fields.
ENG|05040403 | 5| | A HELP form is a special form starting with the keyword 'HELPFORM'. In
ENG|05040403 | 6| | a HELP form only local variables may be used, and the CONTROL statement
ENG|05040403 | 7| | must not contain CALL, SWITCH, or SWITCHCALL statements.
ENG|05040403 | 9| | Example of a HELP form definition:
ENG|05040403 | 11| E|
ENG|05040403 | 12| E| HELPFORM customer.helpinfo
ENG|05040403 | 13| E| LAYOUT
ENG|05040403 | 14| E| customerno : 5 digits numeric
ENG|05040403 | 15| E| ENDLAYOUT
ENG|05040403 | 16|SE| FIELD message INIT 'Continue with ENTER';
ENG|05040403 | 19| E|
ENG|05040403 | 21| | Example of a HELP form call:
ENG|05040403 | 23| | FORM customer.mastercard
ENG|05040403 | 24| | LAYOUT
ENG|05040403 | 25| | customerno: _cno
ENG|05040403 | 26| | ENDLAYOUT
ENG|05040403 | 28| | ACCEPT( F10='INFO', ENTER, F3='RETURN' );
ENG|05040403 | 29| | FIELD cno
ENG|05040403 | 30| | HELP FORM helpinfo;
ENG|05040403 | 32| | If the F10 KEY (HELP key) is pressed at runtime while the cursor is
ENG|05040403 | 33| | placed on the field 'cno' of the form 'mastercard', the HELP form
ENG|05040403 | 34| | 'helpinfo' will be displayed. It will be positioned on the current
ENG|05040403 | 35|S | screen in such a way that the field 'cno' remains visible.
ENG|05040403 | 37| | Position, size, and section of the HELP screen may also be specified
ENG|05040403 | 38| | explicitly as call options (see SCREENPOS, SCREENSIZE, and FORMPOS).
ENG|05040403 | 40| | If the cursor is placed on a form field for which no HELP option has
ENG|05040403 | 41| | been specified and the HELP form is released, then the F10 key (HELP
ENG|05040403 | 42| | key) will have the same effect as any other key.
ENG|05040403 | 44|RI| ##051111->^Syntax
ENG|05040404 | 1| | FIELD/CHECK: Input Checking
ENG|05040404 | 3| | For each input field, one condition and an associated message can be
ENG|05040404 | 4| | specified via the CHECK option of the FIELD instructions.
ENG|05040404 | 6| | If an input value does not fulfil the required condition, the cursor is
ENG|05040404 | 7| | set to the field concerned and the message behind ELSE in the CHECK
ENG|05040404 | 8| | option is displayed via MESSAGE. The user can then correct the input
ENG|05040404 | 9| | immediately.
ENG|05040404 | 11| | If no message text was specified behind ELSE, a substitute message is
ENG|05040404 | 12| | displayed.
ENG|05040404 | 14| | The CHECK conditions are processed in the sequence of their definition.
ENG|05040404 | 16| | If no CHECK condition has been infringed, FORM sets the MESSAGE
ENG|05040404 | 17|S | variable to NULL.
ENG|05040404 | 19| | There are several other ways of formulating a CHECK condition.
ENG|05040404 | 21| M| 1. The list of fields to be checked contains only #01simple^variables (no
ENG|05040404 | 22| | vector slices).
ENG|05040404 | 24| M| 2. The list of fields to be checked contains only #02vector^slices
ENG|05040404 | 26| M| 3. #03Other^conditions
ENG|05040404 | 28|RI| ##051109->^Syntax
ENG|0504040401 | 1| | The list of fields to be checked contains only simple variables
ENG|0504040401 | 3| I| - Behind CHECK a ##0203040148<check^cond> can be used without using the field
ENG|0504040401 | 4| | name again. The <check cond> condition can also consist of arbitrary
ENG|0504040401 | 5| | partial conditions joined by AND or OR. All IS, IN, BETWEEN or LIKE
ENG|0504040401 | 6| | conditions and their negations are permitted as partial conditions
ENG|0504040401 | 7| | The formulated condition holds for all variables of the field list.
ENG|0504040401 | 9| I| - Behind CHECK, ##0203040136<expr> followed by <check cond> can be used.
ENG|0504040401 | 10| | With <expr> a function value of the field e.g. can be checked.
ENG|0504040401 | 12| | Take note : 'FIELD a, b CHECK UPPER (a) in (....)'
ENG|0504040401 | 13| | checks the condition formulated regarding field a
ENG|0504040401 | 14| | in field a as well as in field b.
ENG|0504040401 | 15| E|
ENG|0504040401 | 16| E| FORM customer.mastercard
ENG|0504040401 | 17|SE| LAYOUT
ENG|0504040401 | 19| E| zip cno ctit cfname ccname
ENG|0504040401 | 20| E| ------------------------------------------------
ENG|0504040401 | 21| E| _zip _cno _ctit _cfname _ccname
ENG|0504040401 | 23| E| ...
ENG|0504040401 | 24| E| ENDLAYOUT
ENG|0504040401 | 26| E| /* composite expressions
ENG|0504040401 | 27| E| FIELD zip SIZE 5
ENG|0504040401 | 28| E| CHECK BETWEEN 1000 AND 9999
ENG|0504040401 | 29| E| AND IS NOT NULL OR IS BLANK;
ENG|0504040401 | 31| E| /* regular expressions in the LIKE condition
ENG|0504040401 | 32| E| FIELD cno SIZE 5
ENG|0504040401 | 33| E| CHECK LIKE '(a-Z)(0-9)(0-9)(0-9)(0-9)'
ENG|0504040401 | 34|SE| ELSE 'alpha followed by 4 digits';
ENG|0504040401 | 37| E| /* checking a function expression
ENG|0504040401 | 38| E| FIELD ctit
ENG|0504040401 | 39| E| CHECK UPPER(ctit) IN ('MS','MR','FIRM')
ENG|0504040401 | 40| E| ELSE 'specify either Ms, Mr or Firm';
ENG|0504040401 | 42| E| /* composite expression for list with simple fields
ENG|0504040401 | 43| E| FIELD cfname, cname INIT NULL
ENG|0504040401 | 44| E| CHECK IS NOT NULL AND IS ALPHA
ENG|0504040401 | 45| E| ELSE 'please enter complete name';
ENG|0504040401 | 47| E|
ENG|0504040401 | 48|RI| ##051109->^Syntax
ENG|0504040402 | 1| | The list of fields to be checked contains only vector slices
ENG|0504040402 | 3| | The predicates ALL, ANY and ONE must be used for a precise formulation.
ENG|0504040402 | 4| I| Behind CHECK and a predicate, a ##0203040148<check^cond> can be specified.
ENG|0504040402 | 5| E|
ENG|0504040402 | 6| E| FORM customer.list
ENG|0504040402 | 7| E| LAYOUT
ENG|0504040402 | 8| E| _1 _2
ENG|0504040402 | 9| E| _ _
ENG|0504040402 | 10| E| _ _
ENG|0504040402 | 11| E| ENDLAYOUT
ENG|0504040402 | 13| E| FIELD 1:cno_alt(1..3), 2:cno_neu(1..3)
ENG|0504040402 | 14| E| CHECK ANY BETWEEN 1000 and 9999 OR IS BLANK
ENG|0504040402 | 15| E| ELSE 'specify at least one 4 digit number per column';
ENG|0504040402 | 17|SE|
ENG|0504040402 | 19|RI| ##051109->^Syntax
ENG|0504040403 | 1| | Other conditions
ENG|0504040403 | 3| I| Behind CHECK an arbitrary ##0203040146<boolean^expr> can be specified. A mixture of
ENG|0504040403 | 4| | simple variables and vector slices is permitted as variable list of the
ENG|0504040403 | 5| | fields to be checked. However, in most cases it will be sensible to
ENG|0504040403 | 6| | check only a definite field with this variant and not a field list.
ENG|0504040403 | 8| | nf Examples:
ENG|0504040403 | 9| | FIELD cno CHECK cno > 1000 ...
ENG|0504040403 | 10| | ELSE 'customer numbers start at 1000';
ENG|0504040403 | 11| | or
ENG|0504040403 | 12| | FIELD cno CHECK ( cno DIV 2 ) * 2 = cno
ENG|0504040403 | 13| | ELSE 'all customer numbers must be even';
ENG|0504040403 | 15| | Example for checking date values:
ENG|0504040403 | 17|S | form execution
ENG|0504040403 | 22| | date format from to
ENG|0504040403 | 23| | ____________ __________ __________
ENG|0504040403 | 24| | .......... mm/dd/yyyy 01/01/1993 30/06/1993
ENG|0504040403 | 29| | please enter a date with the specified date format and within
ENG|0504040403 | 30| | the interval specified
ENG|0504040403 | 32| E|
ENG|0504040403 | 33| E| FORM date.input
ENG|0504040403 | 34| E| LAYOUT LOW=+ PROMPT = .
ENG|0504040403 | 35|SE| date format from to
ENG|0504040403 | 37| E| ____________ __________ __________
ENG|0504040403 | 38| E| _date <datformat <from_date <to_date
ENG|0504040403 | 40| E| ENDLAYOUT
ENG|0504040403 | 42| E| FIELD message INIT 'please enter a date with the specified date '
ENG|0504040403 | 43| E| & 'format and in the specified interval';
ENG|0504040403 | 45| E| FIELD datformat INIT SET (DATE);
ENG|0504040403 | 46| E| FIELD from_date INIT DATE ( , '19930101', yyyymmdd );
ENG|0504040403 | 47| E| FIELD to_date INIT DATE ( , '19930630', yyyymmdd );
ENG|0504040403 | 49| E| FIELD date SIZE 10
ENG|0504040403 | 50| E| CHECK
ENG|0504040403 | 51| E| DATE (yyyymmdd,date ) BETWEEN 19930101 AND 19930630
ENG|0504040403 | 52| E| ELSE 'date must be in the specified range'
ENG|0504040403 | 53|SE| & 'and be notated in the specified format';
ENG|0504040403 | 56| E|
ENG|0504040403 | 57| | In this example it is checked whether a date input (field 'date') is
ENG|0504040403 | 58| | within a certain interval. The test whether a value is in a certain
ENG|0504040403 | 59| | interval is only possible for date values by means of the internal
ENG|0504040403 | 60| | representation of the date values. The function DATE (yyyymmdd, date)
ENG|0504040403 | 61| | converts the variable value 'date' from the format set in the SET
ENG|0504040403 | 62| | parameters into the internal date format.
ENG|0504040403 | 64| | The subsequent BETWEEN predicate checks finally whether the value is in
ENG|0504040403 | 65| | the specified interval.
ENG|0504040403 | 67| | Since the DATE function only returns a valid value if the input value
ENG|0504040403 | 68| | has the format expected by the SET parameters, in this way, the date
ENG|0504040403 | 69| | format of the date input is also checked automatically.
ENG|0504040403 | 71|RI| ##051109->^Syntax
ENG|05040405 | 1| | FIELD/DISPLAY : Editing the Display
ENG|05040405 | 3| | The FIELD/DISPLAY statement can be used to format the values of the
ENG|05040405 | 4| | variables before their display. Numeric values can be formatted via a
ENG|05040405 | 5| | FORMAT statement and be left- or right-justified in addition.
ENG|05040405 | 7| | e.g.: FIELD amount DISPLAY FORMAT ('+999.999,99');
ENG|05040405 | 8| | FIELD amount DISPLAY FORMAT ('+999.999,99') RIGHT;
ENG|05040405 | 10| | Alphanumeric values may be displayed in lower or upper case characters
ENG|05040405 | 11| | and be left- or right-justified.
ENG|05040405 | 13|S | e.g.: FIELD name DISPLAY UPPER;
ENG|05040405 | 19| | Example of the Formatting of Numeric Values
ENG|05040405 | 21| | Form Definition
ENG|05040405 | 22| | -----------------
ENG|05040405 | 23| E|
ENG|05040405 | 24| E| FORM account.display
ENG|05040405 | 25| E| LAYOUT LOW=+
ENG|05040405 | 26| E| ...
ENG|05040405 | 27| E| bank_balance: <amount + <today
ENG|05040405 | 28| E| ...
ENG|05040405 | 29| E| ENDLAYOUT
ENG|05040405 | 31| E| FIELD amount INIT 12345678 DISPLAY FORMAT ('-999.999.999,99') RIGHT;
ENG|05040405 | 32| E| FIELD today INIT DATE(dd/mm/yy);
ENG|05040405 | 34|SE|
ENG|05040405 | 37|RI| ##051112->^Syntax
ENG|05040406 | 1| | FIELD/WIDTH : Field Delimitation in case of Multiple-line Form Fields
ENG|05040406 | 3| | In case of multiple-line fields it is desirable to be able to specify
ENG|05040406 | 4| | the total length of the field and the length of each subfield.
ENG|05040406 | 5| | FIELD/SIZE defines the total length of the multiple-line field.
ENG|05040406 | 6| | FIELD/WIDTH defines the length of the individual subfields.
ENG|05040406 | 8| | These functions facilitate the writing of tools which generate an
ENG|05040406 | 9| | appropriate form field for a table field occurring in the database.
ENG|05040406 | 11|RI| ##051108->^Syntax
ENG|05040407 | 1| | FIELD/DOMAIN : Using DOMAIN Definitions for Form Fields
ENG|05040407 | 3| | If DOMAIN objects are defined, these can be used for the definition of
ENG|05040407 | 4| | a form field. The FIELD/DOMAIN specification has the effect that FORM
ENG|05040407 | 5| | accesses the DOMAIN definition stored in the database using it for the
ENG|05040407 | 6| | definition of SIZE, WIDTH, INIT, and CHECK.
ENG|05040407 | 8| | The length in the DOMAIN definition specified under LENGTH has the
ENG|05040407 | 9| | effect of an explicit FIELD/SIZE specification. The width specified in
ENG|05040407 | 10| | the DOMAIN definition under COLS has the effect of a FIELD/WIDTH
ENG|05040407 | 11| | specification. The DEFAULT value of the DOMAIN definition has the same
ENG|05040407 | 12| | effect as a FIELD/INIT specification with the same value. The RANGE
ENG|05040407 | 13| | specification of the DOMAIN definition has the effect of a FIELD/CHECK
ENG|05040407 | 14| | specification defined explicitly. Example:
ENG|05040407 | 16| | Let a DOMAIN be defined in the database in the following way (the
ENG|05040407 | 17|S | interactive component DOMAIN should always be used for defining):
ENG|05040407 | 19| | domainname : TITLE
ENG|05040407 | 20| | length (length): 5
ENG|05040407 | 21| | data type : char
ENG|05040407 | 22| | range : IN ('Mr','Ms','-')
ENG|05040407 | 23| | default : -
ENG|05040407 | 25| | Then ...
ENG|05040407 | 27| | FIELD tit SIZE 5
ENG|05040407 | 28| | INIT '-'
ENG|05040407 | 29| | CHECK IN ('Mr','Ms','-')
ENG|05040407 | 31| | is equivalent to ...
ENG|05040407 | 33| | FIELD tit DOMAIN title
ENG|05040407 | 35|S | Sometimes it may be desirable that only some of the definitions which
ENG|05040407 | 37| | have been made for the object DOMAIN are used. In such a case those
ENG|05040407 | 38| | parts of the DOMAIN definition which shall have an effect on the field
ENG|05040407 | 39| | concerned may be specified after the domain name by means of the
ENG|05040407 | 40| | keywords SIZE, WIDTH, INIT, and CHECK.
ENG|05040407 | 42| | Example:
ENG|05040407 | 43| | FIELD tit DOMAIN tit ( SIZE, CHECK );
ENG|05040407 | 45| | has the same effect as:
ENG|05040407 | 47| | FIELD tit SIZE 5
ENG|05040407 | 48| | CHECK IN ('Mr','Ms','-')
ENG|05040407 | 50|RI| ##051110->^Syntax
ENG|05040408 | 1| | FIELD/HELP MSG : Output of HELP Messages in the MESSAGE Line
ENG|05040408 | 3| | The statement FIELD a HELP MSG <str expr> has the effect that the
ENG|05040408 | 4| | specified message is displayed in the message line as soon as the F10
ENG|05040408 | 5| | key (HELP key) is pressed. If both kinds of HELP information (HELP MSG
ENG|05040408 | 6| I| and ##05040403HELP^FORM) are specified, pressing the F10 key (HELP key) once will
ENG|05040408 | 7| | display the message, pressing the F10 key (HELP key) a second time will
ENG|05040408 | 8| | display the form.
ENG|05040408 | 11| | Example:
ENG|05040408 | 13| E|
ENG|05040408 | 14| E| FORM test.help_msg
ENG|05040408 | 15| E| LAYOUT
ENG|05040408 | 16| E| _func
ENG|05040408 | 17|SE| ENDLAYOUT
ENG|05040408 | 19| E| ACCEPT ( ENTER, F10='HELP INFO');
ENG|05040408 | 20| E| FIELD func
ENG|05040408 | 21| E| HELP MSG
ENG|05040408 | 22| E| 'The menu items describe the possible activities'
ENG|05040408 | 23| E| HELP FORM
ENG|05040408 | 24| E| menu_info;
ENG|05040408 | 26| E|
ENG|05040408 | 28|RI| ##051111->^Syntax
ENG|05040409 | 1| | FIELD/OFFSET : Vector Components with Dynamic Index
ENG|05040409 | 2| E|
ENG|05040409 | 3| E| FORM customer.registration
ENG|05040409 | 5| E| LAYOUT GRAPHIC=*
ENG|05040409 | 6| E| cno * name *
ENG|05040409 | 7| E| *****************************
ENG|05040409 | 8| E| _1 * _name(1..4) *
ENG|05040409 | 9| E| _ * _ *
ENG|05040409 | 10| E| _ * _ *
ENG|05040409 | 11| E| _ * _ *
ENG|05040409 | 13| E| ENDLAYOUT
ENG|05040409 | 15| E| FIELD 1:cno(1..4), name(1..4) OFFSET x;
ENG|05040409 | 17|SE|
ENG|05040409 | 19| | If the expression behind OFFSET (here the variable x) has a value greater
ENG|05040409 | 20| | than 0, the value of the vector component 'name(1+x)' appears in the form
ENG|05040409 | 21| | field of the vector component 'name(1)'.
ENG|05040409 | 23| | This rule accordingly applies for all vector components that are addressed in
ENG|05040409 | 24| | this FIELD instruction.
ENG|05040409 | 26| | Instead of the variable x, numerical expressions are also permitted.
ENG|05040409 | 28|RI| ##051113->^Syntax
ENG|05040410 | 1| | FIELD/ATTR : Assignment of Field Attributes
ENG|05040410 | 3| | With the aid of the FIELD/ATTR instruction, an attribute can be
ENG|05040410 | 4| | assigned to each input or output field without an additional character
ENG|05040410 | 5| | having to be placed before the fields in the LAYOUT. The attributes of
ENG|05040410 | 6| | the text fields, however, can only be altered with the help of the
ENG|05040410 | 7| | control characters.
ENG|05040410 | 9| E|
ENG|05040410 | 10| E| LAYOUT UNDERL=+
ENG|05040410 | 11| E| ...
ENG|05040410 | 12| E| +Name : <name
ENG|05040410 | 13| E| ...
ENG|05040410 | 14| E| ENDLAYOUT
ENG|05040410 | 16|SE| FIELD name SIZE 18 ATTR INV;
ENG|05040410 | 20| E|
ENG|05040410 | 22|RI| ##051114->^Syntax
ENG|05040411 | 1| | FIELD/NOINPUT : Positioning Cursor without overwriting the field
ENG|05040411 | 3| | A frequent application of forms is to choose a certain field in a list
ENG|05040411 | 4| | of fields by means of the cursor without overwriting the field.
ENG|05040411 | 6| | The option NOINPUT ensures that a field defined as input field in the
ENG|05040411 | 7| | layout cannot be overwritten, but can nevertheless be chosen by the
ENG|05040411 | 8| | cursor.
ENG|05040411 | 9| E|
ENG|05040411 | 10| E| FORM test.noinp
ENG|05040411 | 11| E| LAYOUT
ENG|05040411 | 13| E| _Z(1..5)
ENG|05040411 | 14| E| _
ENG|05040411 | 15| E| _
ENG|05040411 | 16| E| _
ENG|05040411 | 17|SE| _
ENG|05040411 | 20| E| ENDLAYOUT
ENG|05040411 | 21| E| ACCEPT ( ENTER, F3= 'END' );
ENG|05040411 | 23| E| SPECIALATTR CURSORLINE INV;
ENG|05040411 | 24| E| FIELD Z(1..5) NOINPUT;
ENG|05040411 | 25| E| CONTROL CASE $KEY OF
ENG|05040411 | 26| E| ENTER : CALL PROC display (Z($CURSOR));
ENG|05040411 | 27| E| F3 : RETURN;
ENG|05040411 | 28| E| END;
ENG|05040411 | 29| E|
ENG|05040411 | 31|RI| ##051184->^Syntax
ENG|050405 | 1| | AUTOPAGE/PAGE : Scrolling Support
ENG|050405 | 3| | Scrolling (paging) in forms is necessary when a form is larger that the
ENG|050405 | 4| | screen segment in which it is displayed. There are three ways of
ENG|050405 | 5| | scrolling in forms.
ENG|050405 | 7| | 1. In the CONTROL instruction of the form, the instructions PAGE UP,
ENG|050405 | 8| | PAGE DOWN, PAGE LEFT and PAGE RIGHT are used.
ENG|050405 | 10| E|
ENG|050405 | 11| E| CONTROL
ENG|050405 | 12| E| CASE $KEY OF
ENG|050405 | 13| E| UP : PAGE UP; (* one page up *)
ENG|050405 | 14| E| DOWN : PAGE DOWN n; (* n lines down *)
ENG|050405 | 15| E| ...
ENG|050405 | 16|SE| END;
ENG|050405 | 19| E|
ENG|050405 | 21| | 2. The instruction AUTOPAGE is used which assigns the scrolling
ENG|050405 | 22| | functions automatically to the keys and supports scrolling in all
ENG|050405 | 23| | directions depending on the size of the screen segment.
ENG|050405 | 25| | ...
ENG|050405 | 26| | ENDLAYOUT
ENG|050405 | 27| | ACCEPT ( ... );
ENG|050405 | 28| | AUTOPAGE;
ENG|050405 | 29| | FIELD ...
ENG|050405 | 30| | ...
ENG|050405 | 32| | FORM occupies definite keys for scrolling with AUTOPAGE. If these are
ENG|050405 | 33| | already occupied by the program, FORM cannot use these keys for
ENG|050405 | 34|S | scrolling. The function is thus switched off.
ENG|050405 | 37| | If a keyboard has engraved scroll keys, FORM activates them for
ENG|050405 | 38| | scrolling; this applies to all directions of scrolling.
ENG|050405 | 40| | For all the other keyboards F12 (=DOWN) releases scrolling towards the
ENG|050405 | 41| | bottom and F11 (=UP) releases scrolling towards the top. For scrolling
ENG|050405 | 42| | to the right/left in case of keyboards without engraved keys, FORM
ENG|050405 | 43| | implicitly distinguishes two modes. If the screen section is so wide
ENG|050405 | 44| | that the left or right part of the form is shown, FORM provides the F9
ENG|050405 | 45| | key for alternating scrolling. If the screen section is so small that
ENG|050405 | 46| | horizontal scrolling can be done several times, then FORM provides two
ENG|050405 | 47| | keys, F8 and F9, for scrolling to the left or to the right.
ENG|050405 | 49| | For keyboards with nine function keys only, there must be one key
ENG|050405 | 50| | combination at least be assigned to vt_up_key and vt_down_key in order
ENG|050405 | 51| | that AUTOPAGE may be operative. If also vt_left_key and vt_right_key
ENG|050405 | 52| | are realized via key combinations, FORM will recognize this and handle
ENG|050405 | 53|S | them like engraved keys.
ENG|050405 | 55| | Example :
ENG|050405 | 57| | ...
ENG|050405 | 58| | ENDLAYOUT
ENG|050405 | 59| | ACCEPT ( ... );
ENG|050405 | 60| | AUTOPAGE;
ENG|050405 | 61| | FIELD ...
ENG|050405 | 64| I| ##051119AUTOPAGE-Syntax
ENG|050405 | 65|RI| ##051124PAGE-Syntax
ENG|050406 | 1| | PICK/PUT Mechanism in Forms
ENG|050406 | 3| | The PICK/PUT statements can be used to define forms from which example
ENG|050406 | 4| | values may be picked for input fields.
ENG|050406 | 5| | PICK and PUT may only occur in the CONTROL block of forms.
ENG|050406 | 7| | Function of PICK without argument:
ENG|050406 | 8| | stores the value of the field where the cursor is positioned into the
ENG|050406 | 9| | PICK buffer. Usually the argument will be formulated argument in
ENG|050406 | 10| | dependence on the cursor position. If the cursor is not positioned on
ENG|050406 | 11| | an input field, an error message will be output.
ENG|050406 | 13| | Function of PICK with argument:
ENG|050406 | 14| | stores the argument in the PICK buffer. Usually the argument is
ENG|050406 | 15| | formulated according to the cursor position. If the cursor is not
ENG|050406 | 16|S | positioned on an input field, an error message will be output.
ENG|050406 | 19| | Example:
ENG|050406 | 20| E|
ENG|050406 | 21| E| HELPFORM tpick.test
ENG|050406 | 22| E| LAYOUT
ENG|050406 | 23| E| _1 <@menu(1)
ENG|050406 | 24| E| _ <@menu(2)
ENG|050406 | 25| E| _ <@menu(3)
ENG|050406 | 26| E| ENDLAYOUT
ENG|050406 | 27| E| FIELD 1:@choice(1..3);
ENG|050406 | 28| E| FIELD @menu(1) INIT 'insert';
ENG|050406 | 29| E| FIELD @menu(2) INIT 'update';
ENG|050406 | 30| E| FIELD @menu(3) INIT 'delete';
ENG|050406 | 31| E| ACCEPT ( ENTER, F3='end' );
ENG|050406 | 32| E| CONTROL CASE $KEY OF
ENG|050406 | 33| E| ENTER: PICK(@menu($CURSOR));
ENG|050406 | 34| E| ELSE : RETURN;
ENG|050406 | 35|SE| END;
ENG|050406 | 38| E|
ENG|050406 | 39| |
ENG|050406 | 42| | Function of PUT without argument :
ENG|050406 | 44| | stores the PICK buffer contents as value of the field where the
ENG|050406 | 45| | cursor is positioned. If the cursor is not positioned on an input
ENG|050406 | 46| | field, an error message will be output.
ENG|050406 | 49| | Function of PUT with argument :
ENG|050406 | 51| | stores the PICK buffer contents as value of the specified variable.
ENG|050406 | 52| | This variant is needed in the case that an output field shall be
ENG|050406 | 53|S | filled with a picked value.
ENG|050406 | 55| | Example:
ENG|050406 | 57| E|
ENG|050406 | 58| E| FORM tpick.m1
ENG|050406 | 59| E| LAYOUT
ENG|050406 | 60| E| _1 _2
ENG|050406 | 61| E| _ _
ENG|050406 | 62| E| _ _
ENG|050406 | 63| E| _ _
ENG|050406 | 64| E| ENDLAYOUT
ENG|050406 | 65| E| ACCEPT ( enter, f5='PUT', f10='PICK FORM' );
ENG|050406 | 66| E| FIELD 1:title(1..4) HELP FORM p_title ( frame );
ENG|050406 | 67| E| FIELD 2:city(1..4) HELP FORM p_city ( frame );
ENG|050406 | 68| E| CONTROL
ENG|050406 | 69| E| CASE $KEY of
ENG|050406 | 70| E| F5: PUT;
ENG|050406 | 71|SE| END;
ENG|050406 | 74| E|
ENG|050406 | 76| I| To facilitate the handling of PICK within forms, the ##050610AUTOPUT option can
ENG|050406 | 77| | be used when calling a form.
ENG|050406 | 79|RI| ##051123->^Syntax
ENG|050408 | 1| | ACCEPT : Activating the Release Key
ENG|050408 | 2| | sp 1 The ACCEPT statement can be used to determine the release keys
ENG|050408 | 3| | which are to be accepted by the form.
ENG|050408 | 5| | The permitted release keys are:
ENG|050408 | 6| | ENTER, F1, ..., F12, HELP, UP, DOWN
ENG|050408 | 8| | The ACCEPT option can be specified either in the form definition or as
ENG|050408 | 9| | a call option.
ENG|050408 | 11| | The rule is that ACCEPT as call option overrides the ACCEPT definition
ENG|050408 | 12| | in the form.
ENG|050408 | 14| | If no ACCEPT option is set, then only ENTER will be accepted by the
ENG|050408 | 15| | form.
ENG|050408 | 17|S | An example is following:
ENG|050408 | 19| | Form Definition:
ENG|050408 | 20| | ----------------
ENG|050408 | 21| E|
ENG|050408 | 22| E| FORM test.acc_msk
ENG|050408 | 23| E| LAYOUT
ENG|050408 | 24| E| ...
ENG|050408 | 25| E| ENDLAYOUT
ENG|050408 | 26| E| ACCEPT ( ENTER, F3='END', F4='INSERT', F5='SEARCH', F6='UPDATE' );
ENG|050408 | 28| E|
ENG|050408 | 30| | Call:
ENG|050408 | 31| | -----
ENG|050408 | 32| | CALL FORM ... ( ACCEPT (ENTER, F3='RETURN', F5, F6));
ENG|050408 | 35|S | Resultant Key Menu:
ENG|050408 | 37| | -------------------
ENG|050408 | 39| | 3=RETURN 5=SEARCH 6=UPDATE
ENG|050408 | 41| | In addition to the keys described so far required by FORM independent
ENG|050408 | 42| | of the type of hardware, there is the possibility of using further keys
ENG|050408 | 43| | that depend on the installation.
ENG|050408 | 45| | The following additional key literals can be used at the most: ENDKEY,
ENG|050408 | 46| | CMDKEY, LEFTKEY, and RIGHTKEY.
ENG|050408 | 48|RI| ##051117->^Syntax
ENG|050409 | 1| | IGNORE : Suppressing Input Checking
ENG|050409 | 2| E|
ENG|050409 | 3| E| FORM test.ignore_form
ENG|050409 | 4| E| LAYOUT
ENG|050409 | 5| E| ... _cno... _cfname ... _cname
ENG|050409 | 6| E| ENDLAYOUT
ENG|050409 | 8| E| ACCEPT ( F1='INSERT', F3='RETURN' );
ENG|050409 | 10| E| FIELD cno, cfname, cname INIT NULL
ENG|050409 | 11| E| CHECK IS NOT NULL ELSE 'input is incomplete';
ENG|050409 | 13| E| IGNORE cfname, cname WHEN ( $KEY = F3 )
ENG|050409 | 15| E|
ENG|050409 | 17|S | If the user strikes the F3 key after input, then input testing via the
ENG|050409 | 19| | FIELD/CHECK option will be suppressed for the variables 'cfname' and
ENG|050409 | 20| | 'cname'.
ENG|050409 | 22| | If there is a great number of fields to be ignored, then the following
ENG|050409 | 23| | IGNORE variants can be used:
ENG|050409 | 25| | IGNORE ALL WHEN ( $KEY = F3 )
ENG|050409 | 27| | Here none of the input fields will be checked if F3 is pressed.
ENG|050409 | 29| | Or:
ENG|050409 | 30| | IGNORE ALL EXCEPT cno, cname WHEN ( $KEY = F3 )
ENG|050409 | 31| | Here only the fields 'cno' and 'cname' will be checked if F3 is
ENG|050409 | 32| | pressed.
ENG|050409 | 34|RI| ##051115->^Syntax
ENG|050410 | 1| | KEYSWAP : Interchanging the Key Functions
ENG|050410 | 3| | The KEYSWAP option can be used to interchange the functions of every
ENG|050410 | 4| | two release keys.
ENG|050410 | 6| | So it is possible to change the key setting without having to modify
ENG|050410 | 7| | the routines and forms.
ENG|050410 | 9| | The KEYSWAP option is valid up to the end of the program or up to the
ENG|050410 | 10| | occurrence of the next KEYSWAP option.
ENG|050410 | 12| | KEYSWAP may be specified either in the form definition after the layout
ENG|050410 | 13|S | part or as a routine option after the routine header.
ENG|050410 | 19| | Example 1:
ENG|050410 | 21| | Without KEYSWAP:
ENG|050410 | 22| | ----------------
ENG|050410 | 23| | ACCEPT ( F10='HELP', F3='END', F4='INSERT', F5='SEARCH' );
ENG|050410 | 25| | produces:
ENG|050410 | 26| | 3=END 4=INSERT 5=SEARCH 10=HELP
ENG|050410 | 28| | with KEYSWAP:
ENG|050410 | 29| | -------------
ENG|050410 | 30| | ACCEPT ( F10='HELP', F3='END', F4='INSERT', F5='SEARCH' );
ENG|050410 | 31| | KEYSWAP ( F10<->F1 )
ENG|050410 | 33| | produces:
ENG|050410 | 34|S | 1=HELP 3=END 4=INSERT 5=SEARCH
ENG|050410 | 37| | Example 2:
ENG|050410 | 39| | with KEYSWAP:
ENG|050410 | 40| | -------------
ENG|050410 | 41| | ACCEPT ( F10='HELP', F3='END', F4='INSERT', F5='SEARCH' );
ENG|050410 | 42| | KEYSWAP ( F10<->F1, F2<->F3, F3<->F4, F4<->F5 )
ENG|050410 | 44| | produces:
ENG|050410 | 45| | 1=HELP 2=END 3=INSERT 4=SEARCH
ENG|050410 | 47|RI| ##051155->^Syntax
ENG|050411 | 1| | CONTROL : The Form as Controlling Module
ENG|050411 | 2| E|
ENG|050411 | 3| E| FORM customer.mastercard
ENG|050411 | 4| E| LAYOUT
ENG|050411 | 5| E| ENDLAYOUT
ENG|050411 | 7| E| ACCEPT ( F3='RETURN',F4='INSERT',F5='ALTER' );
ENG|050411 | 8| E| CONTROL CASE $KEY OF
ENG|050411 | 9| E| F3 : RETURN;
ENG|050411 | 10| E| F4 : CALL PROC insert;
ENG|050411 | 11| E| F5 : CALL PROC alter;
ENG|050411 | 12| E| END;
ENG|050411 | 14| E|
ENG|050411 | 16| | If the user presses the F4 key after input, then the SQL-PL routine
ENG|050411 | 17|S | 'customer.insert' will be called out of the form.
ENG|050411 | 19| | RETURN, CALL, SWITCH, SWITCHCALL, PICK, PUT, and further CASE
ENG|050411 | 20| | statements may be included within the CASE statement.
ENG|050411 | 22| | The following equivalent SQL-PL routine shall illustrate the effect of
ENG|050411 | 23| | the CONTROL statement:
ENG|050411 | 25| | PROC customer.start
ENG|050411 | 26| | ...
ENG|050411 | 27| | REPEAT
ENG|050411 | 28| | CALL FORM customer.mastercard;
ENG|050411 | 29| | CASE $KEY OF
ENG|050411 | 30| | F3 : RETURN;
ENG|050411 | 31| | F4 : CALL PROC insert;
ENG|050411 | 32| | F5 : CALL PROC alter;
ENG|050411 | 33| | END
ENG|050411 | 34|S | UNTIL $KEY = F3;
ENG|050411 | 37|RI| ##051122->^Syntax
ENG|050414 | 1| | GRAPHIC : Graphics Characters in Forms
ENG|050414 | 3| | In FORM it can be determined whether or not a sequence of characters
ENG|050414 | 4| | (vertical or horizontal) is to be displayed as a single line.
ENG|050414 | 6| | Example:
ENG|050414 | 7| E|
ENG|050414 | 8| E| FORM box.test
ENG|050414 | 9| E| LAYOUT GRAPHIC=*
ENG|050414 | 10| E| **************
ENG|050414 | 11| E| * *
ENG|050414 | 12| E| * *
ENG|050414 | 13| E| * *
ENG|050414 | 14| E| * *
ENG|050414 | 15| E| **************
ENG|050414 | 16|SE| ENDLAYOUT
ENG|050414 | 19| E|
ENG|050414 | 21| | At graphics terminals the rectangle defined in the example will be
ENG|050414 | 22| | displayed with traced lines. At terminals without graphics
ENG|050414 | 23| | representation the horizontal line will be displayed as a sequence of
ENG|050414 | 24| | '-' (dashes), the vertical line as a sequence of '|' (vertical bars),
ENG|050414 | 25| | and the corners as '*'.
ENG|050414 | 27|RI| ##051103->^Syntax
ENG|050415 | 1| | MARK : Initialization of the Cursor Position
ENG|050415 | 3| | When calling a form, the cursor is usually placed on the first input
ENG|050415 | 4| | field of the form. If the form has no input fields, then FORM positions
ENG|050415 | 5| | the cursor to the upper lefthand corner of the form. In addition to the
ENG|050415 | 6| | call option MARK, the MARK statement can be used within the form, if
ENG|050415 | 7| | the cursor shall be placed to an input field other than the first one.
ENG|050415 | 9| | The MARK option specified for the call overrides the MARK statement
ENG|050415 | 10| | defined within the form.
ENG|050415 | 12| | Example: ENDLAYOUT
ENG|050415 | 13| | ...
ENG|050415 | 14| E|
ENG|050415 | 15| E| MARK ( 3 );
ENG|050415 | 17|SE|
ENG|050415 | 19|RI| ##051116->^Syntax
ENG|050416 | 1| | RETURNONLAST : Leaving the Form via the Return Key
ENG|050416 | 3| | Usually a form is left via a function key.
ENG|050416 | 5| | The statement (directive) RETURNONLAST as the effect that the form will
ENG|050416 | 6| | be left, when the cursor is placed on the last field of the form and
ENG|050416 | 7| | the TAB key (or the NEXTFIELD key, if available) is pressed. In this
ENG|050416 | 8| | case the form produces ENTER as value of $KEY.
ENG|050416 | 9|RI| ##051118->^Syntax
ENG|050417 | 1| | HEADERLINES, BOTTOMLINES : Header and Bottomlines
ENG|050417 | 3| | In forms that shall be scrolled it is possible to define the first and
ENG|050417 | 4| | last lines of the layout as frame lines.
ENG|050417 | 6| | The declarations HEADERLINES and BOTTOMLINES determine the amount of
ENG|050417 | 7| | the header and bottom lines that shall belong to the constant frame.
ENG|050417 | 8| | The remaining part of the form is used for scrolling.
ENG|050417 | 10| | Example:
ENG|050417 | 12| | ...
ENG|050417 | 13| | ENDLAYOUT
ENG|050417 | 14| E|
ENG|050417 | 15| E| HEADERLINES (2);
ENG|050417 | 16|SE| BOTTOMLINES (1);
ENG|050417 | 19| E|
ENG|050417 | 21|RI| ##051120->^Syntax
ENG|050418 | 1| | SPECIALATTR : Situation-dependent Display Attributes
ENG|050418 | 3| | With the aid of the form processing instruction SPECIALATTR, a field can also
ENG|050418 | 4| | be displayed with a certain special display attribute depending on the
ENG|050418 | 5| | situation.
ENG|050418 | 7| | The instruction SPECIALATTR CHECK causes the field whose CHECK
ENG|050418 | 8| | condition is not satisfied to be represented with the specified
ENG|050418 | 9| | attribute.
ENG|050418 | 11| | The instruction SPECIALATTR INPUT causes all currently active input
ENG|050418 | 12| | fields to be displayed with the specified display attribute.
ENG|050418 | 14| | The instruction SPECIALATTR MSG causes the automatically displayed
ENG|050418 | 15| | message line to appear with the desired display attribute. If the
ENG|050418 | 16| | instruction SPECIALATTR MSG is not specified, the message line is
ENG|050418 | 17|S | displayed with the attribute preset by the system.
ENG|050418 | 19| | The instruction SPECIALATTR CURSORLINE causes the form line in which
ENG|050418 | 20| | the cursor is positioned to be displayed with the defined attribute.
ENG|050418 | 21| | The form line appears as a bar when the selected logical attribute is
ENG|050418 | 22| | defined as 'inverse' or distinguishes its background color from the
ENG|050418 | 23| | background of the form.
ENG|050418 | 25| | The start and end position of the bar is determined by the left and
ENG|050418 | 26| | right margin of the form if not otherwise explicitly specified. If the
ENG|050418 | 27| | form is output in a window, the bar is restricted by the forms window
ENG|050418 | 28| | size.
ENG|050418 | 30| | The SPECIALATTR instruction applies to all fields of the form and can
ENG|050418 | 31| | only be specified once for each form. Thus the above examples can be
ENG|050418 | 32| | defined in a SPECIALATTR instruction as follows.
ENG|050418 | 34| E|
ENG|050418 | 35|SE| FORM customer.mastercard
ENG|050418 | 38| E| LAYOUT PROMPT = .
ENG|050418 | 40| E| CUST-NO : _cno
ENG|050418 | 41| E| ...
ENG|050418 | 42| E| ENDLAYOUT
ENG|050418 | 44| E| FIELD cno CHECK BETWEEN 1000 and 9999;
ENG|050418 | 46| E| SPECIALATTR INPUT underl
ENG|050418 | 47| E| CHECK inv
ENG|050418 | 48| E| MSG ATTR12;
ENG|050418 | 50| E|
ENG|050418 | 52|RI| ##051121->^Syntax
ENG|050419 | 1| | INSERTMODE : Display of the Input Mode
ENG|050419 | 3| | With the instruction DISPLAY INSERTMODE it can be displayed in which
ENG|050419 | 4| | input mode (overwrite or insert) the keyboard is in.
ENG|050419 | 6| | If the input mode is set to insert by pressing the key, at the position
ENG|050419 | 7| | specified by POS the expression defined by LABEL is output (default:
ENG|050419 | 8| | 'INSERT') in the attribute ATTR (default: ATTR5). By switching back to
ENG|050419 | 9| | overwrite mode, the label is extinguished.
ENG|050419 | 11| | The position POS must be specified in the instruction DISPLAY
ENG|050419 | 12| | INSERTMODE, the specification of LABEL and ATTR is optional. The INSERT
ENG|050419 | 13| | label is output in the specified length up to a maximum of eight
ENG|050419 | 14| | characters.
ENG|050419 | 16| E|
ENG|050419 | 17|SE| FORM customer.mastercard
ENG|050419 | 20| E| LAYOUT PROMPT = .
ENG|050419 | 22| E| CUST-NO : _cno
ENG|050419 | 23| E| ...
ENG|050419 | 24| E| ENDLAYOUT
ENG|050419 | 26| E| DISPLAY INSERTMODE ( POS ( 20,3),
ENG|050419 | 27| E| LABEL ( 'INSERT' ),
ENG|050419 | 28| E| ATTR ( ATTR7 ) );
ENG|050419 | 30| E|
ENG|050419 | 32|RI| ##051156->^Syntax
ENG|050422 | 1| | BEFORE/AFTER FIELD
ENG|050422 | 3| | In addition to the statements INIT, HELP MSG, HELP FORM, CHECK, and
ENG|050422 | 4| | DISPLAY already known the statements BEFORE and AFTER FIELD have been
ENG|050422 | 5| | provided for the processing of fields in forms.
ENG|050422 | 7| | BEFORE FIELD and AFTER FIELD precede a block of SQL-PL statements.
ENG|050422 | 9| | Statements formulated after BEFORE FIELD are executed when the
ENG|050422 | 10| | corresponding field has been activated and is therefore enabled for
ENG|050422 | 11| | writing.
ENG|050422 | 13| | In practice there will mainly be guidance texts which will be specified
ENG|050422 | 14| | here for the particular field.
ENG|050422 | 16|S | Example:
ENG|050422 | 19| | FIELD firstname BEFORE FIELD message := 'firstname of customer';
ENG|050422 | 21| | All the other statements which are allowed in SQL-PL may be used as
ENG|050422 | 22| | well. The SQL-PL programmer may even use a REPORT or SQL statement.
ENG|050422 | 24| | As for BEFORE FIELD all statements which are allowed in SQL-PL may be
ENG|050422 | 25| | specified for AFTER FIELD. Statements formulated behind AFTER FIELD are
ENG|050422 | 26| | executed when the corresponding field has to be left and the CHECK
ENG|050422 | 27| | condition - if any - has been met.
ENG|050422 | 29| | The AFTER FIELD statements are not executed when the field is skipped.
ENG|050422 | 30| | A field can be skipped if it has not been filled by the user, but the
ENG|050422 | 31| | NEXTFIELD key has been pressed instead.
ENG|050422 | 33|RI| ##051140->^Syntax
ENG|050423 | 1| | GROUP : Comprising Fields to Form Groups
ENG|050423 | 3| | In forms fields may be comprised to form groups. This helps to assign
ENG|050423 | 4| | fields of one form to various tables. A form without GROUP statement
ENG|050423 | 5| | has the same effect as a form with just one GROUP statement specifying
ENG|050423 | 6| | every field of the form.
ENG|050423 | 8| | If a GROUP statement is formulated in a form, FORM expects that every
ENG|050423 | 9| | field is assigned to a group. Fields which are not explicitly specified
ENG|050423 | 10| | in a GROUP statement are implicitly assigned by FORM to a remainder
ENG|050423 | 11| | group which will be executed first of all groups.
ENG|050423 | 13| | A group of fields will be left when all fields of the group are
ENG|050423 | 14| | processed. Of course, this depends on the individual field statements
ENG|050423 | 15| | defined.
ENG|050423 | 17|RI| ##051141->^Syntax
ENG|050424 | 1| | BEFORE/AFTER GROUP
ENG|050424 | 3| | In analogy to the statements BEFORE/AFTER FIELD, the statements BEFORE
ENG|050424 | 4| | GROUP and AFTER GROUP can be formulated for the groups of fields.
ENG|050424 | 6| | In this case there is the restriction that a group name may only occur
ENG|050424 | 7| | in one BEFORE GROUP statement and in one AFTER GROUP statement.
ENG|050424 | 9|RI| ##051141->^Syntax
ENG|050425 | 1| | The NEXTFIELD Statement
ENG|050425 | 3| | The order in which the fields are executed is defined either by the
ENG|050425 | 4| | order of fields within the layout or by the field statements. The
ENG|050425 | 5| | NEXTFIELD statement which may occur in forms in place of any SQL-PL
ENG|050425 | 6| | statement allows the sequence of processing be modified dynamically.
ENG|050425 | 9| | Example:
ENG|050425 | 11| E|
ENG|050425 | 12| E| FORM test.nxt_fld
ENG|050425 | 13| E| LAYOUT
ENG|050425 | 14| E| accountno : _cno
ENG|050425 | 15| E| name : _name
ENG|050425 | 16|SE| firstname : _f_name
ENG|050425 | 19| E| bank balance : _account
ENG|050425 | 20| E| ENDLAYOUT
ENG|050425 | 21| E| GROUP a
ENG|050425 | 22| E| FIELD cno
ENG|050425 | 23| E| BEFORE FIELD
ENG|050425 | 24| E| message := 'number of customer, if known'
ENG|050425 | 25| E| AFTER FIELD
ENG|050425 | 26| E| BEGIN
ENG|050425 | 27| E| SQL ( SELECT DIRECT name, firstname INTO :name, :f_name
ENG|050425 | 28| E| FROM customer
ENG|050425 | 29| E| key cno = :cno );
ENG|050425 | 30| E| NEXTFIELD account;
ENG|050425 | 31| E| END;
ENG|050425 | 32| E| FIELD name ...
ENG|050425 | 33| E| FIELD f_name ...
ENG|050425 | 34| E| FIELD account ...
ENG|050425 | 35|SE| END;
ENG|050425 | 38| E|
ENG|050425 | 40| | The field name used in the NEXTFIELD statement must designate a field
ENG|050425 | 41| | of the form.
ENG|050425 | 43| | The statement NEXTFIELD has the effect that, when leaving the field, a
ENG|050425 | 44| | branch is made to the specified field as continuation field,
ENG|050425 | 45| | irrespective of a NEXTFIELD statement definition for BEFORE FIELD or
ENG|050425 | 46| | AFTER FIELD.
ENG|050425 | 48|RI| ##051144->^Syntax
ENG|050426 | 1| | The NEXTGROUP Statement
ENG|050426 | 3| | The order in which the groups will be executed is defined by the order
ENG|050426 | 4| | of the GROUP statements. The NEXTGROUP statement may be used in case
ENG|050426 | 5| | that the order has to be modified e.g. depending on a condition. The
ENG|050426 | 6| | NEXTGROUP statement may occur at any place, like the NEXTFIELD
ENG|050426 | 7| | statement.
ENG|050426 | 9| | The group name which is used in the NEXTGROUP statement must be defined
ENG|050426 | 10| | via the GROUP statement in the same form, otherwise FORM returns a
ENG|050426 | 11| | translation error when storing.
ENG|050426 | 13|RI| ##051145->^Syntax
ENG|050427 | 1| | NOAUTONEXT Fields
ENG|050427 | 3| | Example: FIELD name NOAUTONEXT
ENG|050427 | 5| | This option specifies that the cursor is not automatically positioned
ENG|050427 | 6| | to the next input field, when the field 'name' has been filled with
ENG|050427 | 7| | writing.
ENG|050427 | 9|RI| ##051146->^Syntax
ENG|050428 | 1| | SCROLLFIELD : Move Vector Slices
ENG|050428 | 3| | The SCROLLFIELD statement has to be defined within the AFTER FIELD
ENG|050428 | 4| | statement for every vector slice with OFFSET option which is defined as
ENG|050428 | 5| | input field in the layout and which is to be moved by pressing the
ENG|050428 | 6| | cursor keys.
ENG|050428 | 8| | The SCROLLFIELD statement acts according to the keys and modifies the
ENG|050428 | 9| | value of the OFFSET variable to be specified as argument. Several
ENG|050428 | 10| | adjacent vector slices can be moved with one SCROLLFIELD statement, if
ENG|050428 | 11| | these vector slices depend on the same OFFSET variable.
ENG|050428 | 13| | As first argument, the SCROLLFIELD statement expects the variable which
ENG|050428 | 14| | was specified with the OFFSET option. Without OFFSET option the
ENG|050428 | 15| | SCROLLFIELD statement has not effect.
ENG|050428 | 17|S | As second - optional - argument of the SCROLLFIELD statement, the
ENG|050428 | 19| | maximum number of values can be specified. If the second argument is
ENG|050428 | 20| | not specified, the SCROLLFIELD statement assumes that the end of the
ENG|050428 | 21| | list is reached with the 255th vector element.
ENG|050428 | 23| | As third optional argument, the number of lines can be specified which
ENG|050428 | 24| | are to be used as scrolling unit for the key.
ENG|050428 | 26| | If a user wants to position directly to the end or to the beginning
ENG|050428 | 27| | within the entries, the keys serving this purpose can be defined in the
ENG|050428 | 28| | second parentheses of the SCROLLFIELD statement behind the keywords
ENG|050428 | 29| | TOPKEY and BOTTOMKEY.
ENG|050428 | 31| E|
ENG|050428 | 32| E| FORM selection.list PARMS ( selection(), max_number, length )
ENG|050428 | 33| E| LAYOUT
ENG|050428 | 34| E| _selection (1..5)
ENG|050428 | 35|SE| _
ENG|050428 | 37| E| _
ENG|050428 | 38| E| _
ENG|050428 | 39| E| _
ENG|050428 | 40| E| ENDLAYOUT
ENG|050428 | 41| E| SPECIALATTR INPUT INV;
ENG|050428 | 43| E| FIELD selection(1..5)
ENG|050428 | 44| E| OFFSET x
ENG|050428 | 45| E| AFTER FIELD SCROLLFIELD ( x, max_number, $screenlns
ENG|050428 | 46| E| ( TOPKEY F7, BOTTOMKEY F8 );
ENG|050428 | 47| E|
ENG|050428 | 49|RI| ##051185->^Syntax
ENG|050429 | 1| | KEYS : Assign Function to Keys
ENG|050429 | 3| | In FORM particular functions are assigned to a series of keys. For
ENG|050429 | 4| | example, the HELP key releases the execution of the FIELD/HELP
ENG|050429 | 5| | statement. For the AUTOPAGE statement, too, the scrolling functions are
ENG|050429 | 6| | assigned to definite keys.
ENG|050429 | 8| | The KEYS statement allows one or more keys to be assigned as release
ENG|050429 | 9| | keys to the functions HELP, MENU, UP, DOWN, LEFT, and RIGHT. The
ENG|050429 | 10| | function MENU designates the key which releases switching between
ENG|050429 | 11| | action bar and form.
ENG|050429 | 13| E|
ENG|050429 | 14| E| KEYS ( UP = F7 | UPKEY
ENG|050429 | 15| E| DOWN = F8 | DOWNKEY
ENG|050429 | 16| E| HELP = F1 | HELPKEY )
ENG|050429 | 17|SE|
ENG|050429 | 19|RI| ##051186->^Syntax
ENG|0505 | 1| | Structure of a Form
ENG|0505 | 3| | FORM customer.mastercard -> This is the form 'mastercard' belonging
ENG|0505 | 4| | -> to the program 'customer'.
ENG|0505 | 5| | LAYOUT -> Here starts the layout design.
ENG|0505 | 6| | ... -> Here in/output fields and any desired
ENG|0505 | 7| | ... -> text fields are defined here.
ENG|0505 | 8| | ENDLAYOUT -> Here ends the layout design.
ENG|0505 | 10| | GROUP ..
ENG|0505 | 11| | FIELD -> With BEFORE/AFTER it is determined what
ENG|0505 | 12| | BEFORE FIELD ... -> shall be done on entering and leaving a
ENG|0505 | 13| | AFTER FIELD ... -> field or a group.
ENG|0505 | 14| | FIELD ...; -> All the other form processing statements are
ENG|0505 | 15| | END; -> usable as well ( IGNORE, ACCEPT or
ENG|0505 | 16| | -> ACTION, HEADERLINES, BOTTOMLINES ...).
ENG|0505 | 17|S | AFTER GROUP .. -> In BEFORE/AFTER statements any SQL-PL
ENG|0505 | 19| | BEGIN ... END; -> statement can be used.
ENG|0505 | 20|RI| ##051102->^Syntax
ENG|0506 | 1| | Form Call Options
ENG|0506 | 2| | -----------------
ENG|0506 | 4| M| #01ACCEPT^^^^^: restricts the permitted release keys
ENG|0506 | 5| M| #02ATTR^^^^^^^: overrides the attributes of fields
ENG|0506 | 6| M| #10AUTOPUT^^^^: copies the PICK buffer contents
ENG|0506 | 7| M| #08BACKGROUND^: keeps the form as background
ENG|0506 | 8| M| #03CLEAR^^^^^^: clears the background
ENG|0506 | 9| M| #03FORMPOS^^^^: left upper corner of the form section
ENG|0506 | 10| M| #03FRAME^^^^^^: displays the form in a box
ENG|0506 | 11| M| #04INPUT^^^^^^: activates particular input fields
ENG|0506 | 12| M| #05MARK^^^^^^^: positions the cursor
ENG|0506 | 13| M| #06NOINIT^^^^^: suppresses the FIELD/INIT option
ENG|0506 | 14| M| #04NOINPUT^^^^: deactivates particular input fields
ENG|0506 | 15| M| #07PRINT^^^^^^: prints the form
ENG|0506 | 16| M| #03SCREENPOS^^: left upper corner of the form on the screen
ENG|0506 | 17|SM| #03SCREENSIZE^: length and width of the screen section
ENG|0506 | 19| M| #09RESTORE^^^^: restores the background of the form
ENG|0506 | 20| M| #11ACTION^^^^^: activating the action bar
ENG|0506 | 21|RI| ##051125->^Syntax
ENG|050601 | 1| | ACCEPT(ENTER,F1=<label>,...) has the effect that only the specified
ENG|050601 | 2| | keys with the pertinent labels are displayed.
ENG|050601 | 4| | If an ACCEPT option is already defined in the form, then this set of
ENG|050601 | 5| | valid release keys will be overridden (possible release keys: ENTER,
ENG|050601 | 6| | F1..F12)
ENG|050601 | 8| | Labels can be defined for all keys, except ENTER.
ENG|050601 | 10| | ACCEPT() has the effect that the form is displayed without expecting
ENG|050601 | 11| | any user interaction.
ENG|050601 | 13| | Example :
ENG|050601 | 14| E|
ENG|050601 | 15| E| CALL FORM form1 OPTIONS (ACCEPT (F1,F3='STOP',ENTER) );
ENG|050601 | 17|SE|
ENG|050601 | 19|RI| ##051128->^Syntax
ENG|050602 | 1| | Examples:
ENG|050602 | 3| | CALL FORM customer ( ATTR ( name, INV ) );
ENG|050602 | 5| | CALL FORM customer ( ATTR ( cno, ATTR16 ) );
ENG|050602 | 7| | ATTR alters the display attributes of the specified form field for this
ENG|050602 | 8| | form call.
ENG|050602 | 10| | Possible attributes are ATTR1,...,ATTR16 (HIGH, HI, LOW, INV, BLK,
ENG|050602 | 11| | UNDERL).
ENG|050602 | 13|RI| ##051129->^Syntax
ENG|050603 | 1| | FORMPOS(L,C) defines the start position of a section of the
ENG|050603 | 2| | form, (l)ine, (c)olumn.
ENG|050603 | 3| | This option should be used to display a form sectionwise.
ENG|050603 | 5| I| ##051131->^Syntax
ENG|050603 | 8| | SCREENSIZE (L,W) defines the size of a window on the screen,
ENG|050603 | 9| | (l)ength, (w)idth.
ENG|050603 | 11| | SCREENPOS (L,C) defines the position of the window on the
ENG|050603 | 12| | screen, (l)ine, (c)olumn.
ENG|050603 | 14| | CLEAR has the effect that the background of the form is
ENG|050603 | 15| | erased.
ENG|050603 | 17|SI| ##051130->^Syntax
ENG|050603 | 19| | FRAME has the effect that the form is displayed in a box.
ENG|050603 | 20| | FRAME ( title ) has the effect that the value of the variable
ENG|050603 | 21| | title is displayed in the center of the box's top line.
ENG|050603 | 23|RI| ##051132->^Syntax
ENG|050604 | 1| | INPUT (running...) has the effect that input can be made
ENG|050604 | 2| | only to the specified fields. Field sequence numbers,
ENG|050604 | 3| | variables, and vector slices may be specified.
ENG|050604 | 5| | INPUT() If an empty list is specified for input, then all
ENG|050604 | 6| | the fields in the form appear as output fields.
ENG|050604 | 8| | NOINPUT (running...) has the effect that N O input
ENG|050604 | 9| | can be made to the specified fields. Field sequence numbers,
ENG|050604 | 10| | variables, and vector slices may be specified.
ENG|050604 | 12| | NOINPUT() is not convenient because all input fields remain active.
ENG|050604 | 14| | Example:
ENG|050604 | 15| | CALL FORM mastercard ( INPUT (cno, city(1..4), 10, 11 ));
ENG|050604 | 17|RI| ##051136->^Syntax
ENG|050605 | 1| | MARK (n) places the cursor on the n-th input field, when the
ENG|050605 | 2| | form is displayed, counting the defined input fields
ENG|050605 | 3| | from the top left to the bottom right.
ENG|050605 | 5| | Example: CALL FORM input OPTIONS ( MARK(4), INPUT(3,4,5) );
ENG|050605 | 8| | MARK(v) places the cursor in the field related to the
ENG|050605 | 9| | variable v. In case the variable v does not exist in the form,
ENG|050605 | 10| | the value of v is interpreted as field sequence number.
ENG|050605 | 12| | Example: CALL FORM mastercard OPTIONS ( MARK(cno) );
ENG|050605 | 14| | Once the form is called, $CURSOR displays the field sequence
ENG|050605 | 15| | number of that input field, upon which the cursor was placed last.
ENG|050605 | 17|RI| ##051127->^Syntax
ENG|050606 | 1| | The option NOINIT suppresses the initializations of variables defined
ENG|050606 | 2| | in the form. Thus, the current values of the variables appear in the
ENG|050606 | 3| | fields.
ENG|050606 | 5| | Example:
ENG|050606 | 7| | CALL FORM mastercard OPTIONS ( NOINIT );
ENG|050606 | 9| | or shorter
ENG|050606 | 11| | CALL FORM mastercard ( NOINIT );
ENG|050606 | 13|RI| ##051126->^Syntax
ENG|050607 | 1| | PRINT transmits the called form into the printer's spool area. The
ENG|050607 | 2| | print will be started at the program's end. With PRINT ( opt1 , opt2 ,
ENG|050607 | 3| | ... ) the print output may be influenced :
ENG|050607 | 5| | CLOSE causes the immediate output via printer,
ENG|050607 | 6| | LINEFEED creates empty lines before printing,
ENG|050607 | 7| | LINESPACE creates empty lines between print lines,
ENG|050607 | 8| | NEWPAGE outputs a new page,
ENG|050607 | 9| | CPAGE outputs a new page, depending to the number
ENG|050607 | 10| | of free lines.
ENG|050607 | 11| | 'X' sets Print Format 'X' for this print
ENG|050607 | 13| | Example:
ENG|050607 | 15| | CALL FORM form3 OPTIONS ( PRINT (LINEFEED 2, NEWPAGE));
ENG|050607 | 16|S | CALL FORM form4 ( PRINT ('X',LINESPACE 2));
ENG|050607 | 19|RI| ##051135->^Syntax
ENG|050608 | 1| | The option BACKGROUND has the effect that a form is n o t output
ENG|050608 | 2| | immediately to the display, but is stored as background.
ENG|050608 | 4| | Any number of screens can be superimposed with the BACKGROUND option.
ENG|050608 | 5| | They will only be displayed, when a form is called w i t h o u t
ENG|050608 | 6| | BACKGROUND option or when READ or WRITE is executed.
ENG|050608 | 8| | The output of the form can also be triggered by calling a REPORT. In
ENG|050608 | 9| | this case the REPORT output should only use a part of the display (also
ENG|050608 | 10| | see report command WINDOW).
ENG|050608 | 12|RI| ##051133->^Syntax
ENG|050609 | 1| | The RESTORE option implicitly saves the background of a form. This
ENG|050609 | 2| | enables the form, when disappearing from the screen, to restore its
ENG|050609 | 3| | background to the format it had before the call.
ENG|050609 | 5| | In case of HELP forms specified in the FIELD statement FORM uses the
ENG|050609 | 6| | RESTORE option implicitly.
ENG|050609 | 8| | Example:
ENG|050609 | 10| | CALL FORM form OPTIONS ( RESTORE );
ENG|050609 | 13|RI| ##051134->^Syntax
ENG|050610 | 1| | The AUTOPUT option has the effect that after leaving the form the
ENG|050610 | 2| | picked value will be assigned automatically to the variable belonging
ENG|050610 | 3| | to the field where the cursor was placed before calling the form. The
ENG|050610 | 4| | PUT statement is therefore no longer required within the CONTROL
ENG|050610 | 5| | statement and the end user does not need any more to press the PUT key.
ENG|050610 | 6| | It is sufficient to choose the value with PICK.
ENG|050610 | 8| | Example:
ENG|050610 | 9| | FORM tpick.m1
ENG|050610 | 10| | LAYOUT
ENG|050610 | 11| | _1 _2
ENG|050610 | 12| | _ _
ENG|050610 | 13| | _ _
ENG|050610 | 14| | ENDLAYOUT
ENG|050610 | 15| | ACCEPT ( enter, f5='PICK' );
ENG|050610 | 16| | FIELD 1:title(1..3) HELP FORM p_title ( FRAME, AUTOPUT );
ENG|050610 | 17|S | FIELD 2:city(1..3) HELP FORM p_city ( FRAME, AUTOPUT );
ENG|050610 | 19| | The AUTOPUT option can also be used with a variable as argument. This
ENG|050610 | 20| | usage makes sense if the value taken by PICK is not meant for the
ENG|050610 | 21| | calling form, but has to be passed as parameter from the calling form.
ENG|050610 | 23| | Example:
ENG|050610 | 24| | CALL FORM choice OPTION ( AUTOPUT(@choi) );
ENG|050610 | 26|RI| ##051157->^Syntax
ENG|050611 | 1| | Activating the ACTIONBAR
ENG|050611 | 3| | The calling option ACTION determines that the given action of the
ENG|050611 | 4| | action shall be activ when the form is displayed.
ENG|050611 | 6| | Example:
ENG|050611 | 7| | CALL FORM x OPTIONS ( ACTION ( 5 ));
ENG|050611 | 9|RI| ##051137->^Syntax
ENG|0507 | 1| | Parameters on Form Calls
ENG|0507 | 3| | Current parameters may be specified for the transfer of data via
ENG|0507 | 4| | SWITCH. The current parameters will be assigned to the formal
ENG|0507 | 5| | parameters specified in the form definition.
ENG|0507 | 7| | Definition : FORM customer.mastercard PARMS (@cno,@today)
ENG|0507 | 9| | Call : SWITCH customer CALL FORM mastercard PARMS (cno, DATE (yymmdd))
ENG|0507 | 11| | Variables as well as expressions may be used as current parameters.
ENG|0507 | 12| | Since the parameters are positional parameters, current parameters may
ENG|0507 | 13| | be omitted for the call; e.g.: PARMS ( , DATE(yymmdd)).
ENG|0507 | 15| | If more parameters are specified for the call than are defined in the
ENG|0507 | 16|S | module, then these will be simply ignored.
ENG|0507 | 19| | Take into account that for a simple CALL the current parameters must be
ENG|0507 | 20| | handled like input/output parameters.
ENG|0507 | 22| | The definition :
ENG|0507 | 23| | FORM customer.mastercard PARMS ( @cno, @today )
ENG|0507 | 25| | and the call :
ENG|0507 | 26| | CALL FORM mastercard PARMS ( cno, DATE(yymmdd) ).
ENG|0507 | 28|R | After the call the variable 'cno' might have another value.
ENG|0508 | 1| | Compiler Options
ENG|0508 | 2| | ----------------
ENG|0508 | 4| M| #01LIB^Option
ENG|0508 | 5|RM| #01WRAP^Option
ENG|050801 | 1| | The LIB Option
ENG|050801 | 2| | displays the name of the function library from which the
ENG|050801 | 3| | SQL-PL functions are called which are used in the form (see
ENG|050801 | 4| | section 'User-defined SQL-PL Functions').
ENG|050801 | 6| | Example : FORM ... OPTION ( LIB libname );
ENG|050801 | 8| I| ##051153->^Syntax
ENG|050801 | 10| | The WRAP Option
ENG|050801 | 11| | has the effect that multiple-line fields of a form are used
ENG|050801 | 12| | as a continuation field on those terminals which allow such
ENG|050801 | 13| | usage.
ENG|050801 | 15| | Example: FORM ... OPTION ( WRAP );
ENG|050801 | 17|RI| ##051154->^Syntax
ENG|0510 | 1| | Action bar with Pulldown Menus
ENG|0510 | 2| | ------------------------------
ENG|0510 | 4| M| #01Definition of a separate MENU Module
ENG|0510 | 5| M| #02Defining the Action Bar within a Form
ENG|0510 | 6| M| #05Definition of Action Bar and Pulldown Menus
ENG|0510 | 7| M| #06Definition of Buttons
ENG|0510 | 8| M| #04Examples of Action Bars with Pulldown Menus
ENG|0510 | 9|RM| #03Operating an Action Bar with Pulldown Menus
ENG|051001 | 1| | Definition of a separate MENU Module
ENG|051001 | 3| | If the same action bar and the associated pulldown menus are to be used
ENG|051001 | 4| | in various forms in a SQL-PL program, a separate MENU module can be
ENG|051001 | 5| | defined that is linked to a form with the instruction INCLUDE MENU.
ENG|051001 | 7| | In the MENU module, the action bar and the pulldown menus are defined
ENG|051001 | 8| | one after the other.
ENG|051001 | 10| E|
ENG|051001 | 11| E| MENU general.pd_menu
ENG|051001 | 13| E| ACTIONBAR ('LIST',
ENG|051001 | 14| E| 'PROCESS' : PULLDOWN process,
ENG|051001 | 15| E| 'DELETE' );
ENG|051001 | 17|SE| PULLDOWN process ( 'START',
ENG|051001 | 19| E| 'ENTER' : PULLDOWN entry );
ENG|051001 | 21| E| PULLDOWN entry ( 'NEW',
ENG|051001 | 22| E| 'OLD' );
ENG|051001 | 24| E|
ENG|051001 | 27| I| ##051147->^Syntax
ENG|051001 | 30| | In a form the key-word ACTIONBAR must be entered with the instruction
ENG|051001 | 31| | INCLUDE MENU in the layout part, as in the definition of the action bar
ENG|051001 | 32| | within a form.
ENG|051001 | 34| | Example:
ENG|051001 | 35|S | LAYOUT
ENG|051001 | 37| | ACTIONBAR
ENG|051001 | 38| | ...
ENG|051001 | 40| | ENDLAYOUT
ENG|051001 | 42| | INCLUDE MENU general.pd_menu;
ENG|051001 | 43| | ...
ENG|051001 | 45|RI| ##051148->^Syntax
ENG|051002 | 1| | Defining the Action Bar within a Form
ENG|051002 | 3| | For smaller applications or for testing menus, it is sensible to define
ENG|051002 | 4| | the menu directly in the form.
ENG|051002 | 6| | For this purpose, the instructions for defining the menu (ACTIONBAR-,
ENG|051002 | 7| | PULLDOWN instruction) are formulated in the processing part of the
ENG|051002 | 8| | form.
ENG|051002 | 11|RI| ##051149->^Syntax
ENG|051003 | 1| | Operating an Action Bar with Pulldown Menus
ENG|051003 | 3| | When calling up the form, the action bar is not activated and the form
ENG|051003 | 4| | can be worked on in the usual way.
ENG|051003 | 6| | The action bar can be activated in the following ways:
ENG|051003 | 8| | - function key F12
ENG|051003 | 10| | With the function key F12 the action bar is activated and the cursor is
ENG|051003 | 11| | positioned on the first field.
ENG|051003 | 13| | - CNTR / <char>
ENG|051003 | 15| | By pressing the CNTR key and the letter highlighted as choice letter
ENG|051003 | 16| | simultaneously, the corresponding action is selected directly. If there
ENG|051003 | 17|S | is a pulldown menu for the action, it is pulled down; otherwise,
ENG|051003 | 19| | $ACTION returns the action chosen.
ENG|051003 | 21| | If the action bar is activated, the corresponding action can be started
ENG|051003 | 22| | by the key for the first letter of the label, e.g. the pulldown menu of
ENG|051003 | 23| | the field with the label 'PROCESS' is pulled down with the key p. The
ENG|051003 | 24| | appropriate letter is determined automatically by the system and
ENG|051003 | 25| | represented with the attribute 'choice character' (ATTR8) or 'choice
ENG|051003 | 26| | character active' (ATTR9).
ENG|051003 | 28| | In an active pulldown menu, the functions can be chosen and started
ENG|051003 | 29| | analogously.
ENG|051003 | 31| | If the action bar is activated, the cursor can be positioned on the
ENG|051003 | 32| | fields to choose a field of the action bar with the cursor keys. If a
ENG|051003 | 33| | pulldown menu is defined behind a field of the action bar, the menu can
ENG|051003 | 34| | be pulled down by positioning on the field and then pressing the ENTER
ENG|051003 | 35|S | key.
ENG|051003 | 37| | If the program is positioned in a pulldown menu on the first level, the
ENG|051003 | 38| | pulldown menus to the right or left can be chosen directly with the aid
ENG|051003 | 39| | of the NEXTFIELD and PREVFIELD keys or CURSOR-RIGHT and CURSOR-LEFT.
ENG|051003 | 41| | Fields of the action bar or the pulldown menus behind which a further
ENG|051003 | 42| | pulldown menu is defined are identified by '..'.
ENG|051003 | 44| | The action bar is displayed with the attribute 'menu items' (ATTR10),
ENG|051003 | 45| | the active field with the attribute 'menu item active' (ATTR11) and the
ENG|051003 | 46| | passive fields with the attribute 'menu item passive' (ATTR12).
ENG|051003 | 48| | If an action of a field of the action bar or a pulldown menu is
ENG|051003 | 49| | triggered, e.g. if the cursor is positioned on this field and the key
ENG|051003 | 50| | ENTER is pressed, control is returned to the associated form and the
ENG|051003 | 51| | dollar variables $ACTION, $FUNCTION or also $KEY are assigned the
ENG|051003 | 52|S | labels of the chosen fields.
ENG|051003 | 55| | If one wants to return to the form without starting an action, this is
ENG|051003 | 56| | done with the key F12. Control is now returned to the associated form
ENG|051003 | 57| | and the dollar variables $ACTION, $FUNCTION and $KEY have the NULL
ENG|051003 | 58| | value.
ENG|051003 | 60| | By pressing the key END, the pulldown menus are closed step by step.
ENG|051003 | 61|R | The associated dollar variables are assigned NULL.
ENG|051004 | 1| | Example:
ENG|051004 | 2| E|
ENG|051004 | 3| E| LAYOUT
ENG|051004 | 4| E| ACTIONBAR
ENG|051004 | 6| E| ...
ENG|051004 | 8| E| ENDLAYOUT
ENG|051004 | 10| E| ACTIONBAR ( 'process' : PULLDOWN proc,
ENG|051004 | 11| E| ... );
ENG|051004 | 13| E| PULLDOWN proc ( 'module' : PULLDOWN fctn,
ENG|051004 | 14| E| ...
ENG|051004 | 15| E| 'trigger' : PULLDOWN fctn );
ENG|051004 | 17|SE| PULLDOWN fctn ( 'display',
ENG|051004 | 19| E| ...
ENG|051004 | 20| E| 'print' );
ENG|051004 | 22| E| CONTROL CASE $ACTION OF
ENG|051004 | 23| E| 'process' :
ENG|051004 | 24| E| CASE $FUNCTION1 OF
ENG|051004 | 25| E| 'module' :
ENG|051004 | 26| E| CASE $FUNCTION OF
ENG|051004 | 27| E| 'display' : CALL PROC mod_no.;
ENG|051004 | 28| E| ...
ENG|051004 | 29| E| 'print' : CALL PROC mod_print;
ENG|051004 | 30| E| END;
ENG|051004 | 31| E| ...
ENG|051004 | 32| E| 'trigger' : ...
ENG|051004 | 33| E| END;
ENG|051004 | 34| E| ...
ENG|051004 | 35|SE| END;
ENG|051004 | 38| E|
ENG|051004 | 40| | In the following example labels are specified that are not string
ENG|051004 | 41| | constants. The above procedure is thus possible in the same way.
ENG|051004 | 43| | Example:
ENG|051004 | 45| | ACTIONBAR ( !ADM(s),
ENG|051004 | 46| | !PROC(s): PULLDOWN proc );
ENG|051004 | 48| | PULLDOWN proc ( 'START','ENTER' );
ENG|051004 | 50| | CONTROL CASE $ACTION OF
ENG|051004 | 51| | !ADM(s) : ...
ENG|051004 | 52| | !PROC(s) : CASE $FUNCTION OF
ENG|051004 | 53|S | 'START' : CALL FORM start;
ENG|051004 | 55| | 'ENTER' : CALL FORM enter;
ENG|051004 | 56| | END;
ENG|051004 | 57| | END;
ENG|051004 | 60| | Example:
ENG|051004 | 63| | ACTIONBAR (!AUF(s) : RELEASEKEY F4,
ENG|051004 | 64| | !AB(s) : RELEASEKEY F5 );
ENG|051004 | 66| | CONTROL CASE $KEY OF
ENG|051004 | 67| | F4 : ...
ENG|051004 | 68| | F5 : ...
ENG|051004 | 69|R | END;
ENG|051005 | 1| | Definition of Action Bar and Pulldown Menus
ENG|051005 | 2| | --------------------------------------------
ENG|051005 | 4| M| #01Definition of the Action Bar (ACTIONBAR)
ENG|051005 | 5| M| #02Definition of Pulldown Menus (PULLDOWN)
ENG|051005 | 6| M| #03Definition of Guide Texts (COMMENT clause)
ENG|051005 | 7| M| #04Making a Label Passive Dynamically (WHEN clause)
ENG|051005 | 8|RM| #05Optical Grouping of Menu Items
ENG|05100501 | 1| | ACTIONBAR : Definition of the Action Bar
ENG|05100501 | 3| | An action bar consists of up to eleven fields that can be output in a
ENG|05100501 | 4| | line of the form one after the other. When defining the action bar, the
ENG|05100501 | 5| | labels of the fields are specified behind the key-word ACTIONBAR. Apart
ENG|05100501 | 6| | from that, the position of the action bar in the form is defined by
ENG|05100501 | 7| | specifying the key-word ACTIONBAR in the layout. The layout line in
ENG|05100501 | 8| | which the action bar is to be output must not contain any other fields.
ENG|05100501 | 10| | The dollar variable $ACTION, which returns the activated field of the
ENG|05100501 | 11| | action bar, corresponds to the fields of the action bar .
ENG|05100501 | 14| E|
ENG|05100501 | 15| E| LAYOUT
ENG|05100501 | 16|SE| ACTIONBAR
ENG|05100501 | 19| E| ...
ENG|05100501 | 21| E| ENDLAYOUT
ENG|05100501 | 23| E| ACTIONBAR ( 'LIST','PROCESS','DELETE' );
ENG|05100501 | 25| E|
ENG|05100501 | 27| | String constants, language-dependent literals, variables and key
ENG|05100501 | 28| | literals are admissible as labels.
ENG|05100501 | 30| | The labels can be up to 16 characters long, If there is no subsequent
ENG|05100501 | 31| | pulldown menu, the label may have 18 characters.
ENG|05100501 | 33| | It must be noted that the dollar variables $ACTION, $FUNCTION1, ...
ENG|05100501 | 34| | $FUNCTION4 and $FUNCTION return the value truncated to 16 (or 18)
ENG|05100501 | 35|S | characters if longer labels are used.
ENG|05100501 | 37| | If an action bar is defined in the form, the number of header lines is
ENG|05100501 | 38| | implicitly set on the line in which the action bar is output, i.e. the
ENG|05100501 | 39| | header lines comprise the area of the form from the first line to the
ENG|05100501 | 40| | action bar.
ENG|05100501 | 43| | ACTIONBAR WITH FRAME ( !LIST(s),
ENG|05100501 | 44| | !PROC(s),
ENG|05100501 | 45| | !DATA(s) );
ENG|05100501 | 47| | The option WITH FRAME causes the action bar to be output in a form.
ENG|05100501 | 48| | Care must be taken that the lines before and after the key-word
ENG|05100501 | 49| | ACTIONBAR in the layout is left empty, since otherwise they will be
ENG|05100501 | 50| | overwritten.
ENG|05100501 | 52|RI| ##051150->^Syntax
ENG|05100503 | 1| | COMMENT : Definition of Guide Texts
ENG|05100503 | 3| | For each label of the menu line or a pulldown menu, a brief comment can
ENG|05100503 | 4| | be defined behind the key-word COMMENT. The brief comment appears in
ENG|05100503 | 5| | the message line as soon as the associated label is activated.
ENG|05100503 | 8| E|
ENG|05100503 | 9| E| LAYOUT
ENG|05100503 | 10| E| ACTIONBAR
ENG|05100503 | 11| E| ...
ENG|05100503 | 13| E| ENDLAYOUT
ENG|05100503 | 15| E| ACTIONBAR ('LIST': COMMENT 'Compile a list of all objects',
ENG|05100503 | 16| E| 'PROCESS' :
ENG|05100503 | 17|SE| COMMENT 'further processing functions',
ENG|05100503 | 19| E| PULLDOWN proc,
ENG|05100503 | 20| E| 'DELETE': COMMENT 'delete object);
ENG|05100503 | 22| E| PULLDOWN proc ( 'START' : COMMENT !progstart,
ENG|05100503 | 23| E| 'ENTER' : COMMENT !enter_object );
ENG|05100503 | 24| E|
ENG|05100503 | 26|RI| ##051152->^Syntax
ENG|05100504 | 1| | WHEN : Making a Label Passive Dynamically
ENG|05100504 | 3| | A pulldown menu represents the functions that can be chosen from the form.
ENG|05100504 | 4| | Depending on various conditions, it may be desirable to make certain parts
ENG|05100504 | 5| | of the functions passive, but to display them nevertheless.
ENG|05100504 | 7| | This can be done with the WHEN condition that can be specified behind every
ENG|05100504 | 8| | label of a pulldown menu. Depending on this condition, the corresponding
ENG|05100504 | 9| | label is displayed with the display attribute 'menu item passive' (ATTR12),
ENG|05100504 | 10| | and the associated function cannot be chosen.
ENG|05100504 | 13| E|
ENG|05100504 | 14| E| PULLDOWN enter
ENG|05100504 | 15| E| ( 'back' : WHEN level > 1,
ENG|05100504 | 16| E| 'trigger funct.' : WHEN modtype ='TRIGGER'
ENG|05100504 | 17|SE| PULLDOWN trigger_funcs );
ENG|05100504 | 20| E|
ENG|05100504 | 22| | If in the example the variable 'level' has a value less than or equal
ENG|05100504 | 23| | to 1, the label 'back' is set passive. If the variable 'modtype' does
ENG|05100504 | 24| | not have the value 'TRIGGER', the label 'trigger functions' is made
ENG|05100504 | 25| | passive and the following pulldown menu cannot be called up.
ENG|05100504 | 28|RI| ##051152->^Syntax
ENG|05100505 | 1| | Optical Grouping of Menu Items
ENG|05100505 | 3| | To be able to group the menu items of a pulldown menu according to
ENG|05100505 | 4| | logical criteria, a semi-colon can be specified in the list of menu
ENG|05100505 | 5| | items instead of a comma. The semi-colon causes a separating line to be
ENG|05100505 | 6| | output between the menu items separated in this way.
ENG|05100505 | 9| E|
ENG|05100505 | 10| E| PULLDOWN proc ( 'Insert',
ENG|05100505 | 11| E| 'Delete';
ENG|05100505 | 12| E| 'Import',
ENG|05100505 | 13| E| 'Export' );
ENG|05100505 | 15| E|
ENG|05100505 | 17|R | In this example two groups of menu items are displayed.
ENG|051006 | 1| | Definition of Buttons
ENG|051006 | 3| | Alternatively to the action bar a series of release fields (BUTTON bar)
ENG|051006 | 4| | can be defined at the bottom form margin. The BUTTON bar is defined in
ENG|051006 | 5| | the same way as an action bar. A list of labels is specified behind the
ENG|051006 | 6| | keyword BUTTON, and the position of the BUTTON bar is defined in the
ENG|051006 | 7| | layout part of the form by means of the keyword BUTTON.
ENG|051006 | 10| E|
ENG|051006 | 11| E| LAYOUT
ENG|051006 | 12| E| ...
ENG|051006 | 13| E| BUTTON
ENG|051006 | 14| E| ENDLAYOUT
ENG|051006 | 15| E| ...
ENG|051006 | 16| E| BUTTON ( 'Help', 'Start', 'Exit' );
ENG|051006 | 17|SE|
ENG|051006 | 19|RI| ##051187->^Syntax
ENG|0511 | 1|R | FORM-Syntax
ENG|051101 | 1| | <form block oriented> ::=
ENG|051101 | 2| I| FORM ##0203040101<prog^name>.##0203040102<mod^name>
ENG|051101 | 3| I| [OPTIONS ( ##051180<form^option> ,...)]
ENG|051101 | 4| I| [PARMS ( ##0203040104<parm^decl> ,...)]
ENG|051101 | 5| I| [ ##0203040156<var^section> ]
ENG|051101 | 6| I| ##051159<form^layout>
ENG|051101 | 7|RI| [ ##051104<processing^stmt> ,... ]
ENG|051102 | 1| | <form field oriented> ::=
ENG|051102 | 2| I| FORM ##0203040101<prog^name>.##0203040102<mod^name>
ENG|051102 | 3| I| OPTIONS ( FIELD [, ##051180<form^option> ,...] )
ENG|051102 | 4| I| [PARMS ( ##0203040104<parm^decl> ,...)]
ENG|051102 | 5| I| [ ##0203040156<var^section> ]
ENG|051102 | 6| I| ##051159<form^layout>
ENG|051102 | 7|RI| [ ##051138<field^processing^stmt> ,... ]
ENG|051103 | 1| | <begin layout line> ::=
ENG|051103 | 2| | LAYOUT [ <layout char spec> ... ]
ENG|051103 | 4| | <layout char spec> ::=
ENG|051103 | 5| | <layout attr char spec>
ENG|051103 | 6| | | <layout inout char spec>
ENG|051103 | 7| | | <layout prompt char spec>
ENG|051103 | 8| | | <layout graphic char spec>
ENG|051103 | 10| | <layout attr char spec> ::=
ENG|051103 | 11| I| ##051181<attr^name> = <spec char>
ENG|051103 | 13| | <layout inout char spec> ::=
ENG|051103 | 14| | IN = <spec char>
ENG|051103 | 15| | | OUT = <spec char>
ENG|051103 | 17|S | <layout prompt char spec> ::=
ENG|051103 | 19| | PROMPT = <spec char>
ENG|051103 | 21| | <layout graphic char spec> ::=
ENG|051103 | 22|R | GRAPHIC = <spec char>
ENG|051104 | 1| | <processing stmt> ::=
ENG|051104 | 2| I| ##051116<mark^stmt>
ENG|051104 | 3| I| | ##051105<field^stmt>
ENG|051104 | 4| I| | ##051115<ignore^stmt>
ENG|051104 | 5| I| | ##051117<accept^stmt>
ENG|051104 | 6| I| | ##051155<keyswap^stmt>
ENG|051104 | 7| I| | ##051118<returnonlast^stmt>
ENG|051104 | 8| I| | ##051119<autopage^stmt>
ENG|051104 | 9| I| | ##051120<bottomlines^stmt>
ENG|051104 | 10| I| | ##051120<headerlines^stmt>
ENG|051104 | 11| I| | ##051121<special^attr^stmt>
ENG|051104 | 12| I| | ##051122<control^stmt>
ENG|051104 | 13| I| | ##051150<actionbar^stmt>
ENG|051104 | 14| I| | ##051151<pulldown^stmt>
ENG|051104 | 15| I| | ##051148<include^stmt>
ENG|051104 | 16|RI| | ##051156<insertmode^stmt>
ENG|051105 | 1| | <field stmt> ::=
ENG|051105 | 2| | FIELD <field name>,... [<field proc spec>...]
ENG|051105 | 4| | <field name> ::=
ENG|051105 | 5| I| ##0203040133<variable>
ENG|051105 | 6| I| | ##0203040134<vector^slice>
ENG|051105 | 7| | | <field number>:<field name>
ENG|051105 | 9| | <field proc spec> ::=
ENG|051105 | 10| I| ##051106<init^spec>
ENG|051105 | 11| I| | ##051107<size^spec>
ENG|051105 | 12| I| | ##051109<check^spec>
ENG|051105 | 13| I| | ##051113<offset^spec>
ENG|051105 | 14| I| | ##051112<display^spec>
ENG|051105 | 15| I| | ##051111<help^spec>
ENG|051105 | 16| I| | ##051110<domain^spec>
ENG|051105 | 17|SI| | ##051114<attr^spec>
ENG|051105 | 19|RI| | ##051184<noinp^spec>
ENG|051106 | 1| | <init spec> ::=
ENG|051106 | 2| | INIT <assign expr>
ENG|051106 | 4| | <assign expr> ::=
ENG|051106 | 5|RI| ##0203040136<expr> | NULL
ENG|051107 | 1| | <size spec> ::=
ENG|051107 | 2|RI| SIZE ##0203040120<numeric>
ENG|051108 | 1| | <width spec> ::=
ENG|051108 | 2|RI| WIDTH ##0203040120<numeric>
ENG|051109 | 1| | <check spec> ::=
ENG|051109 | 2| | CHECK <check pred> / ELSE <msg spec> /
ENG|051109 | 4| | <check pred> ::=
ENG|051109 | 5| | <simple var pred>
ENG|051109 | 6| | | <vector var pred>
ENG|051109 | 7| I| | ##0203040146<boolean^expr>
ENG|051109 | 9| | <simple var pred> ::=
ENG|051109 | 10| I| / ##0203040136<expr> / ##0203040148<check^cond>
ENG|051109 | 12| | <vector var pred> ::=
ENG|051109 | 13| I| <quant> ##0203040148<check^cond>
ENG|051109 | 15| | <quant> ::=
ENG|051109 | 16|R | ALL | ANY | ONE
ENG|051110 | 1| | <domain spec> ::=
ENG|051110 | 2| | DOMAIN <domain name> [ ( <domain spec>,... ) ]
ENG|051110 | 4| | <domain spec> ::=
ENG|051110 | 5|R | SIZE | WIDTH | INIT | CHECK
ENG|051111 | 1| | <help spec> ::=
ENG|051111 | 2| | HELP <help form>
ENG|051111 | 3| | | HELP <help msg>
ENG|051111 | 4| | | HELP <help form> <help msg>
ENG|051111 | 6|RI| <help msg > ::= ##0203040142<str^expr>
ENG|051112 | 1| | <display spec> ::=
ENG|051112 | 2| | DISPLAY <display spec>,...
ENG|051112 | 4| | <display spec> ::=
ENG|051112 | 5| | FORMAT ( '<char>...' )
ENG|051112 | 6| | | UPPER | LOWER
ENG|051112 | 7|R | | RIGHT | LEFT
ENG|051113 | 1| | <offset spec> ::=
ENG|051113 | 2|RI| OFFSET ##0203040136<expr>
ENG|051114 | 1| | <attr spec> ::=
ENG|051114 | 2|RI| ATTR ##051181<attr^name>
ENG|051115 | 1| | <ignore spec> ::=
ENG|051115 | 2| I| IGNORE <ignore field spec> WHEN ##0203040146<boolean^expr>
ENG|051115 | 4| | <ignore field spec> ::=
ENG|051115 | 5| | <field name>,...
ENG|051115 | 6| | | ALL
ENG|051115 | 7|R | | ALL EXCEPT <field name>,...
ENG|051116 | 1| | <mark stmt> ::=
ENG|051116 | 2|RI| MARK ( ##0203040136<expr> ) | MARK ( ##0203040133<variable> )
ENG|051117 | 1| | <accept stmt> ::=
ENG|051117 | 2| | ACCEPT ( <key spec>,... )
ENG|051117 | 4| | <key spec> ::=
ENG|051117 | 5| | ENTER
ENG|051117 | 6| I| | ##051183<basic^key> [ = <key label>]
ENG|051117 | 7| I| | ##051183<additional^hardkey>
ENG|051117 | 9| | <key label> ::=
ENG|051117 | 10|R | <char sequence> maximal 8 Character
ENG|051118 | 1| | <returnonlast stmt> ::=
ENG|051118 | 2|R | RETURNONLAST
ENG|051119 | 1| | <autopage stmt> ::=
ENG|051119 | 2|R | AUTOPAGE
ENG|051120 | 1| | <headerlines stmt> ::=
ENG|051120 | 2| I| HEADERLINES ( ##0203040136<expr> )
ENG|051120 | 3| I| | HEADERLINES ( ##0203040133<variable> )
ENG|051120 | 5| | <bottomlines stmt> ::=
ENG|051120 | 6| I| BOTTOMLINES ( ##0203040136<expr> )
ENG|051120 | 7|RI| | BOTTOMLINES ( ##0203040133<variable> )
ENG|051121 | 1| | <special attr stmt> ::=
ENG|051121 | 2| I| SPECIALATTR [ INPUT ##051181<attr^name> ]
ENG|051121 | 3| I| [ CHECK ##051181<attr^name> ]
ENG|051121 | 4| I| [ MSG ##051181<attr^name> ]
ENG|051121 | 5|RI| [ CURSORLINE [ (<first pos>,<last pos>) ] ##051181<attr^name> ]
ENG|051122 | 1| | <control spec> ::=
ENG|051122 | 2| | CONTROL <control case spec>
ENG|051122 | 4| | <control case spec> ::=
ENG|051122 | 5| I| CASE ##0203040136<expr> OF <control case> [ <else case> ] END
ENG|051122 | 7| | <else case> ::=
ENG|051122 | 8| | OTHERWISE <control action>
ENG|051122 | 10| | <control case> ::=
ENG|051122 | 11| | <value spec> : <control action> [ ; <control case> ]
ENG|051122 | 13| | <control action> ::=
ENG|051122 | 14| | <stmt>
ENG|051122 | 15| I| | ##051123<pick^stmt>
ENG|051122 | 16| I| | ##051123<put^stmt>
ENG|051122 | 17|RI| | ##051124<page^stmt>
ENG|051123 | 1| | <pick stmt> ::=
ENG|051123 | 2| I| PICK [ ##0203040136<expr> ]
ENG|051123 | 4| | <put stmt> ::=
ENG|051123 | 5|R | PUT [<simple var>]
ENG|051124 | 1| | <page stmt> ::=
ENG|051124 | 2| I| PAGE UP [ ##0203040136<expr> ]
ENG|051124 | 3| | | PAGE DOWN [<expr>]
ENG|051124 | 4| | | PAGE LEFT [<expr>]
ENG|051124 | 5|R | | PAGE RIGHT [<expr>]
ENG|051125 | 1| | <form calling option> ::=
ENG|051125 | 2| I| ##051126<noinit^option>
ENG|051125 | 3| I| | ##051127<mark^option>
ENG|051125 | 4| I| | ##051128<accept^option>
ENG|051125 | 5| I| | ##051129<attr^option>
ENG|051125 | 6| I| | ##051130<clear^option>
ENG|051125 | 7| I| | ##051130<screensize^option>
ENG|051125 | 8| I| | ##051130<screenpos^option>
ENG|051125 | 9| I| | ##051131<formpos^option>
ENG|051125 | 10| I| | ##051132<frame^option>
ENG|051125 | 11| I| | ##051133<background^option>
ENG|051125 | 12| I| | ##051134<restore^option>
ENG|051125 | 13| I| | ##051136<input^option>
ENG|051125 | 14| I| | ##051137<action^option>
ENG|051125 | 15| I| | ##051135<print^option>
ENG|051125 | 16|RI| | ##051157<autoput^option>
ENG|051126 | 1|R | <noinit option> ::= NOINIT
ENG|051127 | 1| | <mark option> ::=
ENG|051127 | 2|RI| MARK ( ##0203040136<expr> ) | MARK ( ##0203040133<variable> )
ENG|051128 | 1| | <accept option> ::=
ENG|051128 | 2| | ACCEPT (<key spec>,...)
ENG|051128 | 4| | <key spec> ::=
ENG|051128 | 5| | ENTER
ENG|051128 | 6| I| | ##051183<basic^key> [ = <key label>]
ENG|051128 | 7|RI| | ##051183<additional^hardkey>
ENG|051129 | 1| | <attr option> ::=
ENG|051129 | 2|RI| ATTR ( <form var>, ##051181<attr^name> )
ENG|051130 | 1| | <window option> ::=
ENG|051130 | 2| I| SCREENPOS ( ##0203040136<expr> ,<expr>)
ENG|051130 | 3| | | SCREENSIZE (<expr>,<expr>)
ENG|051130 | 4|R | | CLEAR
ENG|051131 | 1| | <formpos option> ::=
ENG|051131 | 2|RI| FORMPOS ( ##0203040136<expr> ,<expr>)
ENG|051132 | 1| | <frame option> ::=
ENG|051132 | 2|R | FRAME [ (<frame title>) ]
ENG|051133 | 1| | <background option> ::=
ENG|051133 | 2|R | BACKGROUND
ENG|051134 | 1| | <restore option> ::=
ENG|051134 | 2|R | RESTORE
ENG|051135 | 1| | <print option> ::=
ENG|051135 | 2| | PRINT [(<print option>,...)]
ENG|051135 | 4| | <print option> ::=
ENG|051135 | 5| | | CLOSE
ENG|051135 | 6| | | CPAGE <natural>
ENG|051135 | 7| | | LINEFEED <natural>
ENG|051135 | 8| | | LINESPACE <natural>
ENG|051135 | 9| | | NEWPAGE
ENG|051135 | 10|RI| | PRINTFORMAT ##0203040136<expr>
ENG|051136 | 1| | <input option> ::=
ENG|051136 | 2| | NOINPUT (<input field>,...)
ENG|051136 | 3| | | INPUT (<input field>,...)
ENG|051136 | 5| | <input field> ::=
ENG|051136 | 6| | <natural>
ENG|051136 | 7| I| | ##0203040133<variable>
ENG|051136 | 8|RI| | ##0203040134<vector^slice>
ENG|051137 | 1| | <action option> ::=
ENG|051137 | 2|RI| ACTION ( ##0203040136<expr> )
ENG|051138 | 1| | <field processing stmt> ::=
ENG|051138 | 2| I| ##051104<processing^stmt>
ENG|051138 | 3| | | <extended field stmt>
ENG|051138 | 4| | | <before group stmt>
ENG|051138 | 5| | | <after group stmt>
ENG|051138 | 6| | | <extended control stmt>
ENG|051138 | 8| | <extended field stmt> ::=
ENG|051138 | 9| | FIELD <field name>,... [<extended field proc>...]
ENG|051138 | 11| | <field name> ::=
ENG|051138 | 12| I| ##0203040133<variable>
ENG|051138 | 13| I| | ##0203040134<vector^slice>
ENG|051138 | 14| | | <field number>:<field name>
ENG|051138 | 16| | <extended field proc spec> ::=
ENG|051138 | 17|SI| ##051105<field^proc^spec>
ENG|051138 | 19| I| | ##051140<before^field^spec>
ENG|051138 | 20| I| | ##051140<after^field^spec>
ENG|051138 | 21|RI| | ##051146<autonext^spec>
ENG|051140 | 1| | <before field spec> ::=
ENG|051140 | 2| | BEFORE FIELD <extended compound>
ENG|051140 | 4| | <after field spec> ::=
ENG|051140 | 5|R | AFTER FIELD <extended compound>
ENG|051141 | 1| | <group spec> ::=
ENG|051141 | 2| | GROUP <group name>
ENG|051141 | 3| | <extended field stmt>;...
ENG|051141 | 4| | END;
ENG|051141 | 6| | <before group spec> ::=
ENG|051141 | 7| | BEFORE GROUP <extended compound>
ENG|051141 | 9| | <after group spec> ::=
ENG|051141 | 10|R | AFTER GROUP <extended compound>
ENG|051142 | 1| | <extended compound> ::=
ENG|051142 | 2|R | BEGIN <extended stmt>;... END | <extended stmt>
ENG|051143 | 1| | <extended stmt> ::=
ENG|051143 | 2| | <stmt>
ENG|051143 | 3| I| | ##051124<page^stmt>
ENG|051143 | 4| I| | ##051123<pick^stmt>
ENG|051143 | 5| I| | ##051123<put^stmt>
ENG|051143 | 6| I| | ##051144<nextfield^stmt>
ENG|051143 | 7|RI| | ##051145<nextgroup^stmt>
ENG|051144 | 1| | <nextfield stmt> ::=
ENG|051144 | 2|R | NEXTFIELD <field name>
ENG|051145 | 1| | <nextgroup stmt> ::=
ENG|051145 | 2|R | NEXTGROUP <group name>
ENG|051146 | 1| | <autonext spec> ::=
ENG|051146 | 2|R | NOAUTONEXT
ENG|051147 | 1| | <menu> ::=
ENG|051147 | 2| I| MENU ##0203040101<prog^name>.##0203040102<mod^name> [PARMS ( ##0203040104<parm^decl> ,...)]
ENG|051147 | 3| I| ##051150<actionbar^stmt>
ENG|051147 | 4|RI| [ ##051151<pulldown^stmt> ]
ENG|051148 | 1| | <include menu stmt> ::=
ENG|051148 | 2| I| INCLUDE MENU ##0203040101<prog^name>.##0203040102<mod^name>
ENG|051148 | 3|RI| | [PARMS ( ##0203040104<parm^decl> ,...)]
ENG|051149 | 1| | <form> ::=
ENG|051149 | 2| I| FORM ##0203040101<prog^name>.##0203040102<mod^name>
ENG|051149 | 3| I| [OPTIONS ( ##051180<form^option> ,...)]
ENG|051149 | 4| I| [PARMS ( ##0203040104<parm^decl> ,...)]
ENG|051149 | 5| I| [ ##0203040156<var^section> ]
ENG|051149 | 6| I| ##051159<form^layout>
ENG|051149 | 7| | [ ...
ENG|051149 | 8| I| ##051150<actionbar^stmt>
ENG|051149 | 9| I| [ ##051151<pulldown^stmt> ]
ENG|051149 | 10|R | ... ]
ENG|051150 | 1| | <actionbar stmt> ::=
ENG|051150 | 2| I| ACTIONBAR [WITH FRAME] ( ##051182<menupoint^def> ,... )
ENG|051150 | 3|RI| | ACTIONBAR [WITH FRAME] ( ##051182<menupoint^group> ;... )
ENG|051151 | 1| | <pulldown stmt> ::=
ENG|051151 | 2| I| PULLDOWN ##0203040118<name> ( ##051182<menupoint^def> ,... )
ENG|051151 | 3|RI| | PULLDOWN ##0203040118<name> ( ##051182<menupoint^group> ;... )
ENG|051152 | 1| | <action clause> ::=
ENG|051152 | 2| | [<comment>] [<activate cond>] [<action>]
ENG|051152 | 4| | <comment> ::=
ENG|051152 | 5| I| COMMENT ##0203040136<expr>
ENG|051152 | 7| | <activate cond> ::=
ENG|051152 | 8| I| WHEN ##0203040146<boolean^expr>
ENG|051152 | 10| | <action> ::=
ENG|051152 | 11| | <pulldown call>
ENG|051152 | 12| | | <releasekey spec>
ENG|051152 | 14| | <pulldown call> ::=
ENG|051152 | 15| I| PULLDOWN ##0203040118<name>
ENG|051152 | 17|S | <releasekey spec> ::=
ENG|051152 | 19| | RELEASEKEY <key literal>
ENG|051152 | 21| | <key literal> ::=
ENG|051152 | 22| I| ##051183<basic^key>
ENG|051152 | 23|RI| | ##051183<additional^hardkey>
ENG|051153 | 1|R | <form lib option> ::= LIB [<username>.]<libname>
ENG|051154 | 1|R | <form wrap option> ::= WRAP
ENG|051155 | 1| | <keyswap stmt> ::=
ENG|051155 | 2| | KEYSWAP ( <key pair>,... )
ENG|051155 | 4| | <key pair> ::=
ENG|051155 | 5| I| ##051183<basic^key> <swap sign> <basic key>
ENG|051155 | 7| | <swap sign> ::=
ENG|051155 | 8|R | '<->'
ENG|051156 | 1| | <insertmode stmt> ::=
ENG|051156 | 2| I| INSERTMODE ( POS ( ##0203040136<expr> , <expr> )
ENG|051156 | 3| | [, LABEL ( <expr> ) ]
ENG|051156 | 4|RM| [, ATTR ( #051181<attr^name> ) ] )
ENG|051157 | 1|RI| <autoput option> ::= AUTOPUT ( ##0203040133<variable> )
ENG|051158 | 1| | <langdep literal> ::= ##!0203040118<name> (<literal size>)
ENG|051158 | 3| | <literal size> ::= S | M | L | XL
ENG|051158 | 5| | <langdep literal> ::=
ENG|051158 | 6| | ##!0203040118<name> <-- nur im Maskenlayout
ENG|051158 | 7| | | ##!0203040118<name> (<literal size>)
ENG|051158 | 9|R | <literal size> ::= S | M | L | XL
ENG|051159 | 1| | <form layout> ::=
ENG|051159 | 2| I| ##051103<begin^layout^line>
ENG|051159 | 3| | +------------------------------------+
ENG|051159 | 4| I| | any ##051160<layout^item> elements |
ENG|051159 | 5| | | required may be placed between |
ENG|051159 | 6| | | the lines, beginning with |
ENG|051159 | 7| | | 'LAYOUT' and 'ENDLAYOUT' |
ENG|051159 | 8| | +------------------------------------+
ENG|051159 | 9|R | ENDLAYOUT
ENG|051160 | 1| | <layout item> ::=
ENG|051160 | 2| I| ##051161<text^item>
ENG|051160 | 3| I| | ##051162<input^item>
ENG|051160 | 4| I| | ##051163<output^item>
ENG|051160 | 5| I| | ##051164<continuation^field>
ENG|051160 | 6| I| | ##051165<next^vector^component>
ENG|051160 | 7| | | <spec char>
ENG|051160 | 8|RI| | ##051166<langdep^literal>
ENG|051161 | 1| | <text item> ::=
ENG|051161 | 2|R | beliebiger Text
ENG|051162 | 1| | <input item> ::=
ENG|051162 | 2| I| <infield symbol> ##051165<field^ref>
ENG|051162 | 4| | <infield symbol> :=
ENG|051162 | 5| | _
ENG|051162 | 6|R | | <in char>
ENG|051163 | 1| | <output item> ::=
ENG|051163 | 2| I| <outfield symbol> ##051165<field^ref>
ENG|051163 | 3| | /<varying length symbol>/
ENG|051163 | 5| | <outfield symbol> :=
ENG|051163 | 6| | <
ENG|051163 | 7| | | <out char>
ENG|051163 | 9| | <varying length symbol> :=
ENG|051163 | 10|R | >>
ENG|051164 | 1| | <continuation field> :=
ENG|051164 | 2| | <infield symbol>"
ENG|051164 | 3|R | | <outfield symbol>"
ENG|051165 | 1| | <next vector component> :=
ENG|051165 | 2| | <infield symbol><blank>
ENG|051165 | 3| | | <outfield symbol><blank>
ENG|051165 | 5| | <field ref> ::=
ENG|051165 | 6| I| ##0203040133<variable>
ENG|051165 | 7| | | <vector slice>
ENG|051165 | 8| | | <field number>
ENG|051165 | 9| | <vector slice> ::=
ENG|051165 | 10| I| ##0203040118<name> (<lower bound> .. <upper bound>)
ENG|051165 | 11| | +-------------------------------------------+
ENG|051165 | 12| | | as many <next vector component> elements |
ENG|051165 | 13| | | must be entered here, one below the other,|
ENG|051165 | 14| | | as are determined by: |
ENG|051165 | 15| | | <upper bound>-<lower bound>+1 |
ENG|051165 | 16|S | +-------------------------------------------+
ENG|051165 | 19| | <lower bound> ::=
ENG|051165 | 20| I| ##0203040120<numeric>
ENG|051165 | 22| | <upper bound> ::=
ENG|051165 | 23| I| ##0203040120<numeric>
ENG|051165 | 25| | <field number> ::=
ENG|051165 | 26|RI| ##0203040120<numeric>
ENG|051166 | 1|R | <langdep literal> ::= ##!0203040118<name>
ENG|051180 | 1| | <form option> ::=
ENG|051180 | 2| I| ##051154<form^wrap^option>
ENG|051180 | 3|RI| | ##051153<form^lib^option>
ENG|051181 | 1| | <attr name> ::=
ENG|051181 | 2| | LOW | HIGH | INV | BLK | UNDERL
ENG|051181 | 3|R | | ATTR1 | ... | ATTR16
ENG|051182 | 1| | <menupoint group> ::=
ENG|051182 | 2| | <menupoint def>,...
ENG|051182 | 4| | <menupoint def> ::=
ENG|051182 | 5| I| <function label> [ : ##051152<action^clause> ]
ENG|051182 | 7| | <function label> ::=
ENG|051182 | 8| I| ##0203040133<variable>
ENG|051182 | 9| I| | ##0203040126<string^literal>
ENG|051182 | 10|RI| | ##051158<langdep^literal>
ENG|051183 | 1| | <basic key> ::=
ENG|051183 | 2| | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9
ENG|051183 | 3| | | F10 | F11 | F12 | HELP | UP | DOWN
ENG|051183 | 5| | <additional hardkey> ::=
ENG|051183 | 6|R | CMDKEY | ENDKEY | UPKEY | DOWNKEY | RIGHTKEY | LEFTKEY
ENG|051184 | 1| | <noinp spec> ::=
ENG|051184 | 2|R | NOINPUT
ENG|051185 | 1| | <scrollfield stmt> ::=
ENG|051185 | 2| | SCROLLFIELD ( <offset var> [, <max count>
ENG|051185 | 3| | [, <page count> ] ] )
ENG|051185 | 4| I| [ ( TOPKEY ##051183<basic^key> , BOTTOMKEY <basic key> ) ]
ENG|051185 | 6| | <offset var> ::= <variable>
ENG|051185 | 8| | <max count> ::= <expr>
ENG|051185 | 10|R | <page count> ::= <expr>
ENG|051186 | 1| | <keys stmt> ::=
ENG|051186 | 2| | KEYS ( <function key spec>,... )
ENG|051186 | 4| | <function key spec> ::=
ENG|051186 | 5| | <key function> = <key> [ | <key> ... ]
ENG|051186 | 7| | <key function> ::=
ENG|051186 | 8| | HELP | MENU | UP | DOWN | LEFT | RIGHT
ENG|051186 | 10| | <key> ::=
ENG|051186 | 11| I| ##051183<basic^key>
ENG|051186 | 12|R | | <additional hardkey>
ENG|051187 | 1| | <button stmt> ::=
ENG|051187 | 2| | BUTTON [WITH FRAME] (<buttonpoint def>,...)
ENG|051187 | 4| | <buttonpoint def> ::=
ENG|051187 | 5| I| ##051182<function label> [ : <button action> ]
ENG|051187 | 7| | <button action> ::=
ENG|051187 | 8|R | [ ##051152<comment> ] [<activate cond>] [<releasekey spec>]