Странное использование метки для условия IF в цикле DO - PullRequest
1 голос
/ 22 июля 2011

Я не уверен, какая версия Fortran является этим фрагментом кода, также я не очень хорош в этом, но вот фрагмент кода, который я пытаюсь понять ...

      DO 55 J=1,N  
      IF(KODE(J)) 55,55,40  ! Can not figure out what this line does
   40 DO 50 I=1,N  
      CH=G(I,J) 
      G(I,J)=-H(I,J)
      H(I,J)=-CH
   50 CONTINUE
   55 CONTINUE

Вприведенный выше цикл, не могли бы вы помочь мне понять, что делает 2-я строка, в частности метки 55,55,40

Это код из книги по граничным элементам, которую я пытаюсь понять ...

Ответы [ 2 ]

2 голосов
/ 22 июля 2011

Ух ты ... Я давно не видел этот синтаксис.Это Фортран Арифметический оператор IF .Результатом KODE(J) является число.Если оно меньше нуля, то используется первый переход, если он равен нулю, то используется второй переход, в противном случае используется третий переход.Это примерно эквивалентно:

X=KODE(J)
IF (X.LT.0) GO TO 55
IF (X.EQ.0) GO TO 55
GO TO 40

Мои навыки Фортрана значительно ослабли, но это то, что я помню.

В этом конкретном случае программисту еще проще написать

X=KODE(J)
IF (X.LE.0) GO TO 55
GO TO 40
1 голос
/ 22 июля 2011

Арифметическим оператором if был оператор IF очень раннего Фортрана. Традиционный оператор IF (он же «логический» if) был введен в Fortran IV в 1962 году (http://en.wikipedia.org/wiki/Fortran#FORTRAN_IV).). Арифметический оператор IF является признаком действительно старого кода (FORTRAN II!) Или программиста, придерживающегося такого стиля.

Арифметический оператор If был указан как "устаревший" в Fortran 90 как предупреждение о том, что функция может быть удалена из языка в будущем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...