Loops and conditions
Conditions
If Then Else
The following scripts are equivalent:
If I=1 Then J=2 Else J=3 : Endif
If I=1 : J=2 Else J=3 : Endif # the ":" allow to write one instruction after the other
If I=1 J=2 Else J=3 Endif
In the case of multiple conditions placed in and, the evaluations are made in the written order, and the program stops at the first false condition found; in the case below, if ConditionA is false the other two conditions are not evaluated (therefore, in case of instructions, they are not executed):
If CondizioneA & CondizioneB and CondizioneC
Examples:
<>
mathematical operator means “different from”;for example if you want check if a string is not null:
If [M:YCE1]YSEZFIL <> "" Endif
The exclamation mark corresponds to not
If !clalev([F:YADI]) Local File ATABDIV [F:YADI] Endif
Inline conditions
To put an “inline” condition, for example in the selection fields of an object, you can use stringstring$
or to make a value appear only for a certain transaction: string$(GFLAG='YOFQ',[F:POH]YPOHORE)
Loops
You can use two forms of loops,
For…Next
and
While…Wend
with different syntaxes based on the cases.
See below some examples
Loop on numerical variable
The step if not specified is 1.
For I = 1 To 13 Step 2.5 : Infbox num$(I) : Next I : Infbox 'FIN='+num$(I) # displays : 1 3.5 6 8.5 11 FIN=13.5 For I = 15 To 20 : Infbox I : Next I : Infbox 'FIN='+num$(I) # displays : 15 16 17 18 19 20 FIN=21 For I = 15 To 11 Step -1 : Infbox I : Next I : Infbox 'FIN='+num$(I) # displasy : 15 14 13 12 11 FIN=10
Loop on alfanumerical variable
For CHN='A','EF','X','ZZZ' : Infbox CHN : Next CHN : Infbox 'FIN='-CHN # displays : A EF X ZZZ FIN=ZZZ For USER="John","Matteo","Lucas" Call PARAMUSER(USER,OTHER) From YLIB ... Next USER
Loop on table
For [F:ITM] Where [F:ITM]YCAT='COD' ... Next
While INDEX>0 ... Wend
Break
It is possible to use the break
keyword to interrupt the cycle:
For [F:ITM] ... Break Next
Multiple conditions
The Case statement can be used to manage multiple conditions:
Case YI When 1 : Infbox '1' When 2 YFILE = "C:\TEMP\test2.pdf" Infbox '2' When 3 Local Char V2(250) YFILE = "C:\TEMP\test3.pdf" Infbox '3' - YFILE - V2 When Default Endcase