数据语句中的长字符串

时间:2013-09-11 14:38:09

标签: fortran fortran77

我想在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语句中包含长字符串,其中似乎不允许连接运算符//

2 个答案:

答案 0 :(得分:2)

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

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列中。

答案 1 :(得分:0)

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

character (*), parameter :: &
p = '31415926535897932384626433832795028841971693993751058209749445923&
   &078164062862089986280348253421170679821480865132823066470938446095&
   &50582231725359408128481117450284102701938521105559644622948954930'