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

Leave a Reply