2

我想在DATA语句中初始化 Fortran 77 中的长字符串,如下所示:

      DATA Lipsum /
     *'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendi
     *sse tincidunt, velit id hendrerit bibendum, erat nisl dignissim ar
     *cu'/

但是我参与的程序的内部政策不喜欢它,因为它禁止带有奇数引号的行。

我可以通过使用双引号或'用作延续字符(在第一行和最后一行)来“欺骗”策略检查器,但我想知道是否有其他方法可以在DATA语句中包含长字符串,其中//似乎不允许使用连接运算符。

4

2 回答 2

1

一种方法是声明一个短字符串数组并与你的长字符串等价:

character*63 cshort(3)/
     *'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspen',
     *'disse tincidunt, velit id hendrerit bibendum, erat nisl digniss',
     *'im arcu'/
character*180 clong
equivalence (cshort,clong)

为此,您需要计算字符数并确保每一行但最后一行具有短字符串的确切长度。注意 63 是与引号和逗号一起适合 72 列的最大字符串长度。

于 2013-09-11T18:40:40.363 回答
0

gfortran 中存在着对过去时代的回归。其他编译器可能也有,我没有检查过。对于长字符串,在任何续行的第 73 列放置一个 & 符号,并在第 6 列(第 1-5 列保留用于标签)中始终使用 & 符号作为续行的开始。这是一个显示一长串数字的代码片段:

character (*), parameter :: &
p = '31415926535897932384626433832795028841971693993751058209749445923&
   &078164062862089986280348253421170679821480865132823066470938446095&
   &50582231725359408128481117450284102701938521105559644622948954930'
于 2016-07-25T18:04:57.217 回答