A vezérlő utasítások szerepe - mint minden programozási nyelvben - az, hogy a felírási sorrendtől eltérő megfelelő végrehajtási sorrendet írjanak elő. Ezt a FORTRAN nyelvben címkékre való hivatkozással lehet megadni. Címkével sorokat lehet ellátni, erre való a sor első öt karaktere. Speciális esetben a címkét vezérlésátadó utasításban egy INTEGER típusú változó azonosító helyettesítheti. Ha az I azonosítót címke helyett szeretnénk használni, értéket az ASSIGN utasítással állíthatjuk be. Például ASSIGN 118 TO I. Ilyen esetben az ASSIGN utasítást nem helyettesíthetjük egyszerű értékadással.
A FORTRAN nyelv korai verzióiban nehéz elkerülni a GOTO használatát. A GOTO argumentuma egy címke, vagy egy címkét értékül kapott INTEGER változó lehet. Direkt vezérlés átadáskor használható a CONTINUE utasítás, ami nem csinál semmit, de viselhet címkét. A számított GOTO többirányú elágazás írását is lehetővé teszi.
A fenti példában hibát okoz, ha K értéke nem esik 1 és 3 közé. K INTEGER típusú. Másfajta GOTO utasítás:
Itt szintén hibát jelentene az, ha a 20-as címkét nem soroltuk volna fel a GOTO mögött.
A nyelvben aritmetikai és logikai IF használható. Az aritmetikai IF egy kifejezés előjele szerinti három irányú elágazást valósít meg.
Az aritmetikai IF aszerint folytatja a programot a 9,10,11-es címkén, hogy I-J<0, I-J=0, I-J>0 teljesül-e. Természetesen az I-J helyére bármilyen aritmetikai kifejezés írható, értékük lehet bármilyen szám típus.
A logikai IF egy logikai kifejezés igaz értéke esetén hajtja végre az utána álló utasítást. Nem írható az IF után sem újabb IF, sem DO utasítás.
Ha több utasítást akarunk végrehajtani egy IF mögött, akkor a következő szerkezetet használhatjuk:
Ez a struktúra többszörös elágazást tesz lehetővé, amivel kikerülhető az Assembly-szerű kesze-kusza GOTO-kkal megvalósított korábban már tárgyalt struktúra. A következő példa angol nyelvű sorszámnevek generálását teszi lehetővé.
A DO utasítással írhatunk ciklust. Ennek szintaktikája DO l I=M1, M2, M3. Itt l egy olyan címke, ami egy későbbi sor elején szerepel, az l-ig tartó utasítások képezik a ciklusmagot. Az I a ciklusváltozó, ennek M1 a kezdőértéke, M2 a felső határa és M3 a növekménye. M3 elhagyható, ilyenkor a növekmény default értéke 1. A ciklusváltozó értékét a ciklusmagon belül nem lehet változatni, csak felhasználni. A DO ciklussal ekvivalens az alábbi program:
A ciklusok természetesen egymásba ágyazhatóak, még a címkéjük is lehet azonos. A ciklusmagon belül az utasítások felsorolási sorrendben hajtódnak végre. Minden ilyen utasítás a ciklus hatókörébe tartozik. A ciklus hatásköre kiterjeszthető: GOTO-val kiugorhatunk a cikluson kívüli címkére is, az ezt követő utasításokat ilyenkor egy olyan vezérlésátadó utasítás kell kövesse, amely visszavisz a ciklus közönséges értelemben vett hatáskörébe. Egymásba ágyazott ciklusok esetén csak a legbelső ciklus hatásköre terjeszthető ki. Ilyen módon nem ugorhatunk olyan utasításra, amely bármilyen másik ciklus hatáskörébe tartozik. A kiterjesztett hatáskörben sem változtathatjuk direkt módon a ciklusváltozót.
Az END DO utasítás végre a standard nyelv részévé vált, tehát nem kell minden DO utasításban címkéket használni. A CYCLE arra alkalmas, hogy a ciklus belsejében kikényszerítsük az új iteráció megkezdését, míg az EXIT-tel a ciklus befejezését. A következő példa beolvassa a FITS fájl headereit:
Létezik a definiálatlan DO, de ebben az esetben az EXIT elhagyhatatlan, hiszen végtelen ciklust hoznánk létre:
Ez a struktúra egy elöl tesztelős ciklust valósít meg, ami addig fut, amíg az adott feltétel teljesül. Ennek működése szimulálható definiálatlan DO - EXIT struktúrával is. Egy egyszerű példa:
A PAUSE n utasítás hatására a program megáll és kiírja az n számot, majd újraindítható, szintén a PAUSE utasítással. Továbbindítás esetén a program ott folytatódik, ahol abbamaradt. A STOP úgy állítja le a programot, hogy a memóriából is törli.