Difference between revisions of "Lianja Flow Control and Looping"
Yvonne.milne (Talk | contribs) |
m (Text replace - "Recital" to "Lianja") |
||
Line 1: | Line 1: | ||
− | == | + | ==Lianja Flow Control and Looping== |
− | === | + | ===Lianja Conditional Statements=== |
− | + | Lianja supports the following conditional statements: | |
* [[DO CASE|do case...enddo]] | * [[DO CASE|do case...enddo]] | ||
* [[IF|if...endif]] | * [[IF|if...endif]] | ||
− | === | + | ===Lianja do case statements=== |
The [[DO CASE|do case]] command selects one course of action out of one or more alternatives. | The [[DO CASE|do case]] command selects one course of action out of one or more alternatives. | ||
Line 38: | Line 38: | ||
</code> | </code> | ||
− | ===The | + | ===The Lianja if Statement=== |
The [[IF|if]] command processes commands based on the evaluation of a logical condition. | The [[IF|if]] command processes commands based on the evaluation of a logical condition. | ||
Line 66: | Line 66: | ||
</code> | </code> | ||
− | === | + | ===Lianja Looping Statements=== |
− | + | Lianja supports the following looping statements: | |
* [[FOR|for...next]] | * [[FOR|for...next]] | ||
Line 73: | Line 73: | ||
* [[FOREACH|foreach...endfor]] | * [[FOREACH|foreach...endfor]] | ||
− | === | + | ===Lianja for loops=== |
The [[FOR|for...next]] command repeats the commands between the ''for'' and the ''next'' statements for a specified number of times. | The [[FOR|for...next]] command repeats the commands between the ''for'' and the ''next'' statements for a specified number of times. | ||
Line 96: | Line 96: | ||
</code> | </code> | ||
− | === | + | ===Lianja do while loops=== |
The [[DO WHILE|do while]] command repeats the commands between the ''do while'' and the ''enddo'' statements until the specified ''condition'' becomes false (.F.). | The [[DO WHILE|do while]] command repeats the commands between the ''do while'' and the ''enddo'' statements until the specified ''condition'' becomes false (.F.). | ||
Line 106: | Line 106: | ||
</pre> | </pre> | ||
− | Once the condition evaluates to false, | + | Once the condition evaluates to false, Lianja will skip down to the first statement following the ''enddo'' to continue execution. |
If an ''exit'' statement is encountered, the loop is exited. If a ''loop'' statement is encountered, control returns to the head of the loop. | If an ''exit'' statement is encountered, the loop is exited. If a ''loop'' statement is encountered, control returns to the head of the loop. | ||
Line 142: | Line 142: | ||
</code> | </code> | ||
− | === | + | ===Lianja foreach loops=== |
The [[FOREACH|foreach...endfor]] command is used to iterate over each element in an array or member in an object or associative array. | The [[FOREACH|foreach...endfor]] command is used to iterate over each element in an array or member in an object or associative array. | ||
Line 163: | Line 163: | ||
// associative array | // associative array | ||
− | private myarray = array("Name" => " | + | private myarray = array("Name" => "Lianja", "Description" => "database") |
foreach myarray as key => value | foreach myarray as key => value | ||
echo "key=" + key + " value=" + value + "\n" | echo "key=" + key + " value=" + value + "\n" |
Revision as of 07:45, 8 December 2012
Contents
Lianja Flow Control and Looping
Lianja Conditional Statements
Lianja supports the following conditional statements:
Lianja do case statements
The do case command selects one course of action out of one or more alternatives.
do case case <condition as logical> [<commands>] [case <condition as logical> [<commands>]] [...] [otherwise [<commands>]] endcase
Each case condition is evaluated in turn. As soon as one of the conditions evaluates to true (.T.), the commands for that case are executed and any further case statements are ignored. Following execution of the commands, the program continues after the endcase statement. If an otherwise statement is present and no case condition evaluates to true, the otherwise commands are executed.
If no case condition evaluates to true, and there is no otherwise statement specified, then control skips to the next command following the endcase.
Example
do case case month(date()) = 1 and day(date()) = 1 echo "Happy New Year\n" case month(date()) = 7 and day(date()) = 4 echo "Happy 4th July\n" otherwise echo "Today's date is " + dtoc(date()) + "\n" endcase
The Lianja if Statement
The if command processes commands based on the evaluation of a logical condition.
if <condition as logical> [elseif <condition as logical>] [else] endif
If the result of the if condition is true (.T.), then the commands that follow up to an else, elseif or endif statement are executed.
The elseif clause can be added to the control structure allowing for the testing of more than one condition. The if...endif block is now essentially the same as the do...case structure and elseif is analogous with a case statement.
The else statement is analogous with the otherwise statement. If no previous if condition or elseif condition is true, the commands following the else statement up to the endif statement are executed.
Example
if month(date()) = 1 and day(date()) = 1 echo "Happy New Year\n" elseif month(date()) = 7 and day(date()) = 4 echo "Happy 4th July\n" else echo "Today's date is " + dtoc(date()) + "\n" endif
Lianja Looping Statements
Lianja supports the following looping statements:
Lianja for loops
The for...next command repeats the commands between the for and the next statements for a specified number of times.
for <count variable> = <start as numeric> to <end as numeric> [step <step as numeric>] [exit] [loop] next
At the beginning of the for...next loop, the count is set to the start value and is increased by 1, or the value of step if specified, for each loop.
If an exit statement is encountered, the loop is exited. If a loop statement is encountered, control returns to the head of the loop.
Example
for i = 1 to 100 step 10 ? i * i next
Lianja do while loops
The do while command repeats the commands between the do while and the enddo statements until the specified condition becomes false (.F.).
do while <condition as logical> [exit] [loop] enddo
Once the condition evaluates to false, Lianja will skip down to the first statement following the enddo to continue execution.
If an exit statement is encountered, the loop is exited. If a loop statement is encountered, control returns to the head of the loop.
Note: when processing a series of records, remember to move the record pointer to the next required record. The skip command can be used do this.
skip <records as numeric> [in <cursor as numeric> | <alias as character>]
Example
open database southwind use order_details order orderid in 0 use orders in 0 total = 0 do while not eof() if shipvia = 1 skip loop endif select order_details seek orders.orderid do while order_details.orderid = orders.orderid total = total + (order_details.quantity * order_details.unitprice); * (1 - order_details.discount) skip enddo select orders echo "Order total for order " + orders.orderid + " = " + total + "\n" skip total = 0 enddo
Lianja foreach loops
The foreach...endfor command is used to iterate over each element in an array or member in an object or associative array.
foreach <array> as <value as variable> | <array> as <key variable> => <value as variable> <statements> endfor
The array must be the name of an existing array or object. The value is a reference to be loaded with the contents of each element or member in turn. Using the <key> => <value> syntax, the member names of an object or associative array can also be accessed.
Examples
// static array numbers = array(1,2,3,4,5,6,7,8,9,10) foreach numbers as elem ? elem * elem endfor // associative array private myarray = array("Name" => "Lianja", "Description" => "database") foreach myarray as key => value echo "key=" + key + " value=" + value + "\n" endfor