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

Lascia un commento

Scopri di più da SageDev

Abbonati ora per continuare a leggere e avere accesso all'archivio completo.

Continue reading