IF (wrażenie_logiczne) instrukcja
np.
IF (X.LT.0.0) X = -X
IF (X1.LT.X2) GOTO 10
IF (wyrażenie_logiczne) THEN
blok_instrukcji
ENDIF
Warunkiem można objąć nie jedną a wiele instrukcji znajdujących się pomiędzy IF...THEN a ENDIF, np.:
IF (DELTA.GT.0.0) THEN DELTA=SQRT(DELTA) X1=0.5*(-B-DELTA)/A X2=0.5*(-B+DELTA)/A ENDIF
IF (wyrażenie_logiczne_1) THEN
blok_instrukcji 1
ELSE IF (wyrażenie_logiczne_2) THEN
blok_instrukcji_2
ELSE IF (wyrażenie_logiczne_3) THEN
ELSE [IF (wyrażenie_logiczne_n) THEN]
blok_instrukcji_n
ENDIF
Warunki określone poprzez kolejne wyrażenia logiczne są sprawdzane sekwencyjnie, tj. jeżeli wyrażenie_logiczne_1 przyjmuje wartość .TRUE. to wykownywany jest blok instrukcji następujący po nim, jeżeli .FALSE. sprawdzany jest warunek określony przez wyrażenie_logiczne_2, itd. Po ostatnim ELSE nie musi następować warunek; wtedy blok_instrukcji_n jest wykonywany w przypadku, kiedy żaden z poprzednich warunków nie jest spełniony.
Przykład złożonej instrukcji warunkowej znajduje się w programie ph1.f.
IF (wrażenie_arytmetyczne) etykieta_1,etykieta_2,etykieta_3
Jeżeli wyrażenie_arytmetyczne, to skok następuje do instrukcji oznaczonej przez etykieta_1, jeżeli wyrażenie_arytmetyczne, to do etykieta_2 a jeżeli wyrażenie_arytmetyczne to do etykieta_3, np.
DELTA=B*B-4*A*C IF (DELTA) 10,20,30 10 PRINT *,"Brak pierwiastkow rzeczywistych" GOTO 40 20 X1=-0.5*B/A X2=X1 GOTO 40 30 DELTA=SQRT(DELTA) X1=0.5*(-B-DELTA)/A X2=0.5*(-B+DELTA)/A 40 CONTINUE