Condizioni e cicli
Condizioni
If Then Else
Le seguenti forme sono equivalenti:
If I=1 Then J=2 Else J=3 : Endif
If I=1 : J=2 Else J=3 : Endif # i due punti permettono di scrivere un'istruzione dopo l'altra
If I=1 J=2 Else J=3 Endif
Nel caso di più condizioni poste in and, le valutazioni vengono fatte nell’ordine scritto, e il programma si ferma alla prima condizione falsa trovata; nel caso qui sotto se CondizioneA è falsa le altre due condizioni non vengono valutate (quindi in caso di istruzioni non vengono eseguite):
If CondizioneA & CondizioneB and CondizioneC
Esempi:
L’operatore <>
significa “diverso da”; per esempio per controllare che una stringa non sia vuota:
If [M:YCE1]YSEZFIL <> "" Endif
Il punto esclamativo corrisponde a not
If !clalev([F:YADI]) Local File ATABDIV [F:YADI] Endif
Condizioni inline
Per porre una condizione “inline”, per esempio nei campi selezione di un oggetto si può usare string$
per esempio per far comparire un valore solo per una certa transazione: string$(GFLAG='YOFQ',[F:POH]YPOHORE)
Cicli
Si possono utilizzare due forme di cicli,
For…Next
e
While…Wend
con sintassi diverse in base ai casi. Riportiamo sotto alcuni esempi
Ciclo su variabile numerica
Lo step se non specificato altrimenti è 1.
For I = 1 To 13 Step 2.5 : Infbox num$(I) : Next I : Infbox 'FIN='+num$(I) # visualizza: 1 3.5 6 8.5 11 FIN=13.5 For I = 15 To 20 : Infbox I : Next I : Infbox 'FIN='+num$(I) # visualizza: 15 16 17 18 19 20 FIN=21 For I = 15 To 11 Step -1 : Infbox I : Next I : Infbox 'FIN='+num$(I) # visualizza: 15 14 13 12 11 FIN=10
Ciclo su variabile alfanumerica
For CHN='A','EF','X','ZZZ' : Infbox CHN : Next CHN : Infbox 'FIN='-CHN # visualizza: A EF X ZZZ FIN=ZZZ For USER="Giovanni","Matteo","Luca" Call PARAMUSER(USER,ALTRO) From YLIB ... Next USER
Ciclo su tabella
For [F:ITM] Where [F:ITM]YCAT='COD' ... Next
While INDEX>0 ... Wend
Break
E’ possibile utilizzare la parola chiave break
per interrompere il ciclo:
For [F:ITM] ... Break Next
Condizioni multiple
Per gestire condizioni multiple si può far ricorso l’istruzione Case:
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