Ошибка Fortran, используйте '-fcoarray =', чтобы включить - PullRequest
0 голосов
/ 04 сентября 2018

У меня проблемы с неловкой ошибкой в ​​фортране, это код, который мне нужен для симуляции материалов в твердом состоянии

  PROGRAM EUCLID
    PRINT *, 'A?'
    READ *, NA
    IF (NA.LE.0) THEN
      PRINT *, 'A must be a positive integer.'
      STOP
    END IF
    PRINT *, 'B?'
    READ *, NB
    IF (NB.LE.0) THEN
      PRINT *, 'B must be a positive integer.'
      STOP
    END IF
    PRINT *, 'The GCD of', NA, ' and', NB, ' is', NGCD(NA, NB), '.'
    STOP
  END

  FUNCTION NGCD(NA, NB)
    IA = NA
    IB = NB
1   IF (IB.NE.0) THEN
      ITEMP = IA
      IA = IB
      IB = MOD(ITEMP, IB)
      GOTO 1
    END IF
    NGCD = IA
    RETURN
  END

Ошибка говорит о том, что Coarrays отключен в (1), используйте '-fcoarray =', чтобы включить |, но я не использую никаких массивов, так что мне делать?

Я использую кодовые блоки в качестве компилятора, и у меня не было проблем с некоторыми предыдущими программами, которые я написал

Ответы [ 2 ]

0 голосов
/ 04 сентября 2018

Если вы не планируете использовать coarrays и не беспокоитесь о потоках и изображениях, просто оставьте эту пользовательскую подпрограмму init_random_seed и замените ее встроенной подпрограммой random_seed. Из справочника функций здесь :

Если RANDOM_SEED вызывается без аргументов, он засевается случайным образом данные, полученные из операционной системы.

Иначе, если вы планируете использовать функции coarray и беспокоитесь о потоках и изображениях (рекомендуется только для расширенного использования), вы можете использовать новый встроенный random_init, если он доступен в вашем компиляторе. Если это не так, то желательно использовать библиотеку, например OpenCoarrays , или реализовать ее самостоятельно.

0 голосов
/ 04 сентября 2018

init_random_seed, которое я использовал, было реализовано неверно, поэтому я полностью удалил его и отредактировал код

...