Az APL programozási nyelv

Vezérlési szerkezetek

A nyelv explicit módon nem definiál vezérlési szerkezeteket. Viszont a programozónak lehetősége van ezeket megkerülni.
Létezik néhány APL disztribúció, amely támogat számos vezérlési struktúrát (APLX, APL2000, stb).
APL-ben vezérlés átadására a … szimbólumot használjuk. Az elágazás lehet feltétel nélküli vagy feltételes.
A … szimbólumot egész skalár, vektor vagy címke követheti, amely az ugrás sorát jelöli ki. Vektor esetében a legelső elem van figyelembe véve. Ha az ugrandó sorszám nem létezik, a függvény futása terminál. Gyakran erre a célra a 0-át használják. Ha a sorszám egy üres vektor, a futás folytatódik a következő kifejezéssel. Ugrás a 10-es sorból vissza a 3-as sorba
[10] …3
A címkét egy kettőspont követi és a sor elején helyezkedik el. A címke futásidőben lokális változóként viselkedik. Értéke pedig a sor száma, ahol definiálva lett. Az ugró operátor után közvetlenül használható. Feltétel nélküli elágazás a LAB2-es címkével jelölt sorra:
[10] …LAB2 [11] ... [12] LAB2:TOTAL„QTY×PRICE

Feltételes elágazás az argumentum futásidejű változtatásával programozható le.

Elágazás a LAB2 sorra, ha a LOOP értéke 10.
A kifejezés egy üres vektort ad eredményül, ha értéke hamis, különben a címke értékét
[10] …(LOOP=10)/LAB2 [11] ... [12] LAB2:TOTAL„QTY×PRICE

Többirányú elágazás az INDEX értéke alapján
[6] …(CASE1 CASE2 CASE3)[INDEX]

Többirányú elágazás egy boolean vekor segítségével, ahol az ugrandó sort az első 1-es érték határozza meg.  Ha nincs egy nullától különböző érték sem, akkor a szöveg kiíródik és a függvény futása terminál
[6] …SELECT/(CASE1 CASE2 CASE3) Ş 'No case applies' Ş …0

Speciális esetként merül fel az argumentum nélküli ugró operátor. Hatására az aktuális és az őt hívó összes függvény futása terminálódik.
A ciklust következőképpen definiálhatunk:
[0] loop_fn [1] i„0 [2] BEGIN: [3] i„i+1 [4] (ciklusmag) [n] …<(i<=10)/BEGIN