3.1 Szekvencia
3.2. Blokk
3.3 Elágazás
3.4. Elöltesztelő ciklus
3.5. Iteráció
3.6. Case szerkezet
3.7. Ugró utasítások
Nem szükséges, hogy az utasításokat termináljuk vagy elválasszuk egymástól, a pontosvessző használata megengedett, de nem kötelező.
A megjegyzést % jel kezdi, és a sor végéig tart.
Összetett utasítást képezhetünk a begin és az end utasítások segítségével. Ezt a lehetőséget azonban csak ritkán használják ki a programozók, mivel a fenti programkonstrukciók már automatikusan biztosítják az új blokkot, ahol újabb deklarációk is elhelyezhetők.
A blokkban bárhol szerepelhet változódeklaráció, annak láthatósága a blokk fennmaradó részéig tart, élettartama a blokkal együtt befejeződik. (A deklarációnak tehát nem kötelező a blokk elején lennie.)
begin
<body>
end
Többágú elágazást használhatunk az if...then...elseif...else utasítással. Az elágazás ágai blokknak számítanak.
if <expression> then <body> else <body> end
A megszokott while utasítás bekerült a nyelvbe:
while <condition> do <body> end
continue, break
A CLU-ban definiálták az iteráció rutint, mely formailag teljesen megegyezik a függvényekkel, csak return kulcsszó helyett a yield kulcsszót használja. (A típusleírásban, és a törzsben is.) A vezérlés is hasonló, csakhogy az iteráció nem fejezi be a futását a yield utasításnál, hanem várakozik, hogy újra megkapja a vezélést, és végrehajtsa a legutóbbi yield-et követő utasításokat. Az iteráció minden yield utasításnál visszad egy (vagy több) értéket. Az iteráció egy return utasításnál vagy az iteráció végén ér véget.
Iterációt a for ciklussal tudunk hívni. (A for ciklus csak iterátorral használható. Iterátorokat az egyes típusokhoz szokás készíteni)
for (<i1 vált/dekl> ,<i2 vált/dekl>,...) in <iterációhívás> do <body> end
continue, breakAz iteráció az eljáráshoz hasonlóan adhat vissza többszörös értéket, ezekkel meg kell egyezniük a ciklusváltozóknak (darabra és típusra). A ciklusváltozók lehetnek már definiált változók, de deklaráció is szerepelhet a for utáni felsorolásban, ekkor a ciklus bokkjában lokális változók lesznek. Az iteráció minden egyes visszadott értékére lefut a ciklusmag, ha az iteráció befejeződik, akkor a ciklus is befejeződik. Ha a ciklust megszakítja egy break utasítás, akkor az iteráció is véget ér.
A megszokott értelemben vett Case szerkezet nincs a nyelvben.
Valamelyest hasonló jellegű a tagcase szerkezet, ami a cimkézett unió típusokhoz tartozik - egyéb célra nem használható.
return (...)Az eljárástörzs bármely pontjáról visszatérhetünk a hívóhoz az utasítás segítségével a visszatérési értékeknek megfelelő kifejezésértékekkel. Ezt az utasítást mindenképpen használni kell, ha van visszatérési értéke az eljárásnak, egyébként opcionális a használata.
continueAz utasítás befejezi a kurrens ciklus aktuális iterációját (ciklusmagját), és a vezérlés a ciklus következő iterációjával folytatódik.
breakAz utasítás terminálja a kurrens ciklust, és a vezérlés a közvetlenül a befejezett ciklus után álló utasítással folytatódik.
gotoA CLU-ban nincs (!!!) goto utasítás, mert az nem lenne elég biztonságos.