Fortran 77: оператор IF, в качестве аргумента которого указана переменная, за которой следует оператор метки

Я сталкивался с этим утверждением на Фортране из модели, написанной на Фортране 77 . Я понятия не имею, что это значит. Был бы рад, если кто-то может пролить свет.

Вот как выглядит код:

ЕСЛИ (NC), 20,20,10

Примечание: NC - это переменная (я думаю), а цифры, которые следуют, являются метками (я думаю).

Мой вопрос: что означает приведенное выше утверждение? Я понимаю, что обычно после оператора "IF" в скобках должен быть аргумент, например (a < 20). Однако в этом случае в скобках есть только переменная.

1 ответ

Это арифметика, если из Фортрана я дней. Больше не доступен с F90. Это прямой перевод инструкции IBM 3 way jump в ассемблере IBM. Не многие машинные архитектуры в настоящее время имеют 3 способа прыжков.

if (x) 10, 20, 30

средства

if (x .lt. 0) goto 10
if (x .eq. 0) goto 20
if (x .gt. 0) goto 30  ! if statement not strictly necessary

Так что в вашем случае это означает

if (nc .le. 0) goto 20
if (nc .gt. 0) goto 10
Другие вопросы по тегам