Фортран: строка в длинную / добавочную строку - но с текстом в конце? - PullRequest
1 голос
/ 17 декабря 2008

У меня есть строка кода на Фортране, которая включает в себя некоторый текст. Я изменяю текст, что делает строку кода слишком длинной для Фортрана, поэтому я разделил ее на две строки, используя «а».

Был:

  IF (MYVAR .EQ. 1) THEN
    WRITE(iott,'(A) (A)') 'ABC=', SOMEVAR

Изменено на:

  IF (MYVAR .EQ. 1) THEN
    WRITE(iott,'(A) (A)') 'ABC DEF GHI JK
a ' // 'L=', SOMEVAR

Мой вопрос в новой строке (начинающейся с 'a'), добавляется ли к строке пробел между 'a' и первым '? Или мне нужно, чтобы символ 'был рядом с символом', чтобы предотвратить появление дополнительных пробелов?

Как вы можете сказать, я не привык к Фортрану ...

Ответы [ 4 ]

3 голосов
/ 17 декабря 2008

Если вы беспокоитесь о превышении лимита в 72 столбца, то я предполагаю, что вы используете Fortran 77. Синтаксис для Fortran 77 требует, чтобы вы начинали со столбца 7, за исключением продолжения строк, которым требуется символ продолжения в столбце 6. Я использую следующий метод, чтобы сказать мне, сколько строк продолжается для одного оператора (первая строка просто для отображения столбцов):

!234567890
      write(*,*)"Lorem Ipsum",
     1 " Foo",
     2 " Bar"

Это напечатало бы:

Lorem Ipsum Foo Bar

Вам не нужно беспокоиться о пробелах, которых нет в кавычках. В любом случае, все пробелы сжимаются в Фортране.

Стоит научиться использовать формат операторов. Они могут сделать вывод намного проще. Это несколько похоже на операторы printf, если вы исходите из C. Укажите формат с различными типами параметров, а затем укажите переменные или литералы для заполнения этого формата.

И не волнуйтесь, что вы не работаете с горячим, новым языком дня. Вы можете многому научиться у Fortran, даже Fortran 77, и при правильном использовании Fortran может быть даже элегантным. Я видел Fortran 77, написанный так, как будто это объектно-ориентированный язык с динамической памятью. Мне нравится говорить "old.ne.bad".

0 голосов
/ 17 декабря 2008
  1. Да, a - это символ продолжения, и в основном это просто означает добавление остальной части этой строки, начиная с символа продолжения (столбец 6, верно?) К предыдущей строке.
  2. Ваш компилятор Фортрана, вероятно, имеет возможность включить ввод "свободной формы" вместо использования ввода "фиксированной формы". Используйте это, и вам не придется беспокоиться о длине линии.
  3. Если ваш компилятор на Фортране старше, чем F90 - именно тогда я думаю, что появилась возможность ввода произвольной формы, у вас мои соболезнования.
0 голосов
/ 17 декабря 2008

@ Майк Б:

В идеальном мире да, но в этом случае код разрабатывается на одной машине и передается на сервер сборки, на котором имеются соответствующие сторонние программы / SDK / лицензии, доступные для сборки. Сборка тоже не совсем быстрая.

0 голосов
/ 17 декабря 2008

Мне было слишком долго вспоминать старые требования к колонкам в Фортране (и они могут быть даже не такими строгими, как в те времена)

Но - это не то, что быстрый тест покажет вам сразу?

...