Заявление данных в Фортран - PullRequest
0 голосов
/ 08 июня 2019

Я пытался записать некоторые данные в фортран ...

   program Problem

    DIMENSION X(8), W(8)
    DATA X /0.0950125098D0, 0.2816035507D0, 0.4580167776D0, 0.6178762444D0
 +         , 0.7554044083D0, 0.8656312023D0, 0.9445750230D0, 0.9894009349D0/
    DATA W /0.1894506104D0, 0.1826034150D0, 0.1691565193D0, 0.1495959888D0
 +        , 0.1246289712D0, 0.0951585116D0, 0.0622535239D0, 0.0271524594D0/

    D = 0.D0
    DO NJ=1,8
      D = D + X(NJ) + W(NJ) 
    ENDDO

    write(*,*) D

   end

Но я всегда получаю сообщение об ошибке Неожиданный оператор объявления атрибута в (1)

Кто-нибудь знает почему?

Ответы [ 2 ]

0 голосов
/ 13 июня 2019

Ниже вы найдете небольшое обновление вашего кода, которое позволяет его компилировать:

      program Problemless

      dimension X(8), W(8)
      data X /0.0950125098D0, 0.2816035507D0, 0.4580167776D0,
     +        0.6178762444D0, 0.7554044083D0, 0.8656312023D0,
     +        0.9445750230D0, 0.9894009349D0/
      data W /0.1894506104D0, 0.1826034150D0, 0.1691565193D0,
     +        0.1495959888D0, 0.1246289712D0, 0.0951585116D0,
     +        0.0622535239D0, 0.0271524594D0/

      D = 0.D0
      do NJ=1,8
         D = D + X(NJ) + W(NJ) 
      enddo

      write(*,*) D

      end

Ваш код написан в форме с фиксированным исходным кодом (см. Раздел 6.3.3 стандарта Fortran ). Это означает, что у вас не может быть ничего, кроме столбца 72. Все, что я сделал, это исправил это в приведенном выше.

Если вы изучаете фортран, я бы предложил прекратить использовать фиксированный формат и начать использовать бесплатный формат.

голосов за это сообщение не требуется

0 голосов
/ 13 июня 2019

Как уже было сказано другими, вы должны использовать новый стандарт Fortran. Если вы сделаете это, вы можете просто удалить «+», который вы использовали для обозначения строки продолжения (должно быть в столбце 6), и вместо этого добавить амперсанд «&» в конце строки, который следует продолжить. Затем программа компилируется и запускается. Но так как X и W одинарной точности, вы используете слишком много цифр в вашем заявлении данных. Используйте неявное none и объявите все переменные. И получить учебник.

...