DECIDE
ON
|
||||||||||
{ | } [VALUES ] [OF ]
|
|||||||||
{ | } | |||||||||
{ | VALUES |
{ | } | |||||||
[[,{ | }] ... | |||||||||
[: { | } ]] | statement ...} | ||||||||
[ANY [VALUES ]
statement
]
|
||||||||||
[ALL [VALUES ]
statement
]
|
||||||||||
NONE [VALUES ]
statement
|
||||||||||
END-DECIDE
|
This document covers the following topics:
For an explanation of the symbols used in the syntax diagram, see Syntax Symbols.
Related Statements: DECIDE
FOR
| IF
|
IF SELECTION
|
ON ERROR
Belongs to Function Group: Processing of Logical Conditions
The DECIDE ON
statement is used to specify multiple actions
to be performed depending on the value (or values) contained in a variable.
Note:
If no action is to be performed under a certain condition,
you must specify the statement IGNORE
in the corresponding clause of
the DECIDE ON
statement.
Operand Definition Table:
Operand | Possible Structure | Possible Formats | Referencing Permitted | Dynamic Definition | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
operand1 |
S | A | N | A | U | N | P | I | F | B | D | T | L | G | O | yes | no | |||
operand2 |
C | S | A | A | U | N | P | I | F | B | D | T | L | G | O | yes | no | |||
operand3 |
S | A | A | U | B | yes | no | |||||||||||||
operand4 |
C | S | A | A | U | B | yes | no | ||||||||||||
operand5 |
C | S | N | P | I | B * | yes | no | ||||||||||||
operand6 |
C | S | N | P | I | B * | yes | no | ||||||||||||
operand7 |
C | S | N | P | I | B * | yes | no | ||||||||||||
operand8 |
C | S | N | P | I | B * | yes | no |
* Format B of operand5
,
operand6
,
operand7
and
operand8
may be used only with a length
of less than or equal to 4.
Syntax Element Description:
Syntax Element | Description |
---|---|
FIRST/EVERY
|
Processing of Values:
With one of these keywords, you indicate whether only the first or every value that is found is to be processed. |
operand1
|
Selection Field:
As |
VALUES operand2
[[,operand2] ...
[:operand2]statement
...
|
VALUES Clause:
With this clause, you specify the value
( You can specify one value, multiple values, or a range of values optionally preceded by one or more values. Multiple values must be separated from one another either by the
input delimiter character (as specified with the session parameter
For a range of values, you specify the starting value and ending value of the range, separated from each other by a colon. |
SUBSTRING
(operand3,operand5,operand6)
|
SUBSTRING Option:
Without the After the field name
( |
SUBSTRING
(operand4,operand7,operand8) |
SUBSTRING Option:
After the field name
( |
ANY statement
|
ANY Clause:
With |
ALL statement
|
ALL Clause:
With The |
NONE statement
|
NONE Clause:
With |
END-DECIDE
|
End of DECIDE ON Statement:
The Natural reserved word |
** Example 'DECEX3': DECIDE ON (with FIRST option) ************************************************************************ * SET KEY ALL INPUT 'Enter any PF key' / 'and check result' / * DECIDE ON FIRST VALUE OF *PF-KEY VALUE 'PF1' WRITE 'PF1 key entered.' VALUE 'PF2' WRITE 'PF2 key entered.' ANY VALUE WRITE 'PF1 or PF2 key entered.' NONE VALUE WRITE 'Neither PF1 nor PF2 key entered.' END-DECIDE * END
Enter any PF key and check result
Page 1 05-01-11 15:08:50 PF1 key entered. PF1 or PF2 key entered.
** Example 'DECEX4': DECIDE ON (with EVERY option) ************************************************************************ DEFINE DATA LOCAL 1 #FIELD (N1) END-DEFINE * INPUT 'Enter any value between 1 and 9:' #FIELD (SG=OFF) * DECIDE ON EVERY VALUE OF #FIELD VALUE 1 : 4 WRITE 'Content of #FIELD is 1-4' VALUE 2 : 5 WRITE 'Content of #FIELD is 2-5' ANY VALUE WRITE 'Content of #FIELD is 1-5' ALL VALUE WRITE 'Content of #FIELD is 2-4' NONE VALUE WRITE 'Content of #FIELD is not 1-5' END-DECIDE * END
ENTER ANY VALUE BETWEEN 1 AND 9: 4
4
:
Page 1 05-01-11 15:11:45 Content of #FIELD is 1-4 Content of #FIELD is 2-5 Content of #FIELD is 1-5 Content of #FIELD is 2-4