Visita il nuovo sito: https://www.markonetools.it/cicli-e-strutture-di-controllo-in-clp/
Da IBM i 5.3 sono stati introdotti nei CLP i comandi per gestire i cicli e le strutture di selezione.
DOFOR
: ciclo iterativo per un numero specifico di passiDCL VAR(&INT) TYPE(*INT) LEN(2)
DCL VAR(&START) TYPE(*INT) LEN(2)
DCL VAR(&END) TYPE(*INT) LEN(2)
DCL VAR(&STEP) TYPE(*INT) LEN(2)
:
CHGVAR VAR(&START) VALUE(100)
CHGVAR VAR(&END) VALUE(0)
CHGVAR VAR(&STEP) VALUE(-1)
:
DOFOR VAR(&INT) FROM(&START) TO(&END) BY(&STEP)
: (group of CL commands)
ENDDO
DOWHILE: ciclo iterativo in base a condizione. La condizione viene verificata all'inizio del ciclo, quindi se è falsa il ciclo non verrà mai eseguito.
DOUNTIL: ciclo iterativo in base a condizione. La condizione viene verificata alla fine del ciclo, quindi se il ciclo verrà eseguito almeno 1 volta
LEAVE: esce immediatamente dal ciclo e passa il controllo all'istruzione immediatamente successiva al corrispondente ENDDO
ITERATE: riprende l'esecuzione del ciclo al passo successivo (ovvero passa il controllo al corrispondente ENDDO)
SELECT
: apre una struttura di selezione. Le condizioni specificate dai successivi comandi WHEN vengono valutate in ordine. La prima condizione vera viene eseguita. Se nessuna condizione è vera viene eseguito il codice del comando OTHERWISE se presente.WHEN
OTHERWISE
ENDSELECT
: chiude una struttura di selezioneDCL VAR(&INT) TYPE(*INT) LEN(4)
:
SELECT
WHEN COND(&INT *LT 0) THEN(DO)
: (group of CL commands)
ENDDO
WHEN COND(&INT *EQ 0) /* Do nothing when zero */
OTHERWISE CMD(CHGVAR &INT (&INT - 1)
ENDSELECT
..