1

我有一行 Fortran 代码,其中包含一些文本。我正在更改文本,这使得 Fortran 的代码行太长,所以我使用“a”将它分成两行。

曾是:

  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' 和第一个 ' 之间的空格是否被附加到字符串中?还是我需要 ' 作为旁边的字符 a 以防止额外的空白?

如您所知,我不习惯 Fortran ......

4

4 回答 4

3

如果您担心超过 72 列的限制,那么我假设您使用的是 Fortran 77。Fortran 77 的语法要求您从第 7 列开始,但连续行除外,它需要在第 6 列中使用续行符。我使用下面的方法告诉我一个语句要延续多少行(第一行只是为了显示列):

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

这将打印:

Lorem Ipsum Foo Bar

您不必担心引号中没有的空格。无论如何,所有空格都会在 Fortran 中被压缩。

学习如何使用格式语句是值得的。它们可以使输出更容易。它有点类似于 printf 语句,如果您来自 C 语言。您指定具有不同类型参数的格式,然后提供变量或文字来填写该格式。

不要担心您没有使用当今最热门的新语言。你可以从 Fortran 甚至 Fortran 77 中学到很多东西,如果使用得当,Fortran 甚至可以很优雅。我已经看到 Fortran 77 好像是一种面向对象的语言一样编写,并带有动态内存。我喜欢说,“old.ne.bad”。

于 2008-12-17T03:46:54.660 回答
0

对我来说,记住 FORTRAN 的旧列要求已经太久了(它们甚至可能不像以前那样严格)。

但是 - 这不是快速测试运行会直接告诉你的吗?

于 2008-12-17T01:38:20.580 回答
0
  1. 是的,thea是一个延续字符,基本上它只是意味着将这一行的其余部分从延续字符(第 6 列,对吗?)开始附加到上一行。
  2. 您的 Fortran 编译器可能有一个选项来打开“自由格式”输入,而不是使用“固定格式”输入。使用它,您将不必担心行长。
  3. 如果您的 Fortran 编译器早于 F90 —— 我认为自由格式输入功能是在那时开始的,您有我的哀悼。
于 2008-12-17T01:50:56.593 回答
0

@迈克乙:

在理想的世界中是的,但在这种情况下,代码是在一台机器上开发的,并提交给构建服务器,该服务器具有可用于构建的适当的第 3 方软件/SDK/许可证。构建也不是很快。

于 2008-12-17T01:52:53.127 回答