我目前正在尝试通过Fortran中的行继续来解决问题,而且我是该语言的新手。我写这篇文章是为了与ABAQUS软件包一起使用,其中所有的编译都是使用RegisterClientScript
完成的。我相信编译设置为与Fortran 90兼容。我已经在ifort
语句的中间尝试了以下所有配置的续行:
WRITE
FILENAME = TRIM(KMC_DATADIR) // '/elementInfo.txt'
OPEN(1001, FILE=FILENAME, STATUS="REPLACE", ACTION="WRITE")
FS = '(I5,I5,I5,F12.10)'
DO K1=1,KMC_NUMELEM
WRITE(1001,FS) KMC_ELEMENTS(K1)%IDNUM, KMC_ELEMENTS(K1)%MATID,
& KMC_ELEMENTS(K1)%TRANSFORMED, KMC_ELEMENTS(K1)%ORIENT%RMAT(1,1)
END DO
CLOSE(1001)
FILENAME = TRIM(KMC_DATADIR) // '/elementInfo.txt'
OPEN(1001, FILE=FILENAME, STATUS="REPLACE", ACTION="WRITE")
FS = '(I5,I5,I5,F12.10)'
DO K1=1,KMC_NUMELEM
WRITE(1001,FS) KMC_ELEMENTS(K1)%IDNUM, KMC_ELEMENTS(K1)%MATID, &
KMC_ELEMENTS(K1)%TRANSFORMED, KMC_ELEMENTS(K1)%ORIENT%RMAT(1,1)
END DO
CLOSE(1001)
我不断得到的编译错误是:
TRIPTrans.f(55):错误#5082:语法错误,找到'&'期待以下之一:(...
FILENAME = TRIM(KMC_DATADIR) // '/elementInfo.txt'
OPEN(1001, FILE=FILENAME, STATUS="REPLACE", ACTION="WRITE")
FS = '(I5,I5,I5,F12.10)'
DO K1=1,KMC_NUMELEM
WRITE(1001,FS) KMC_ELEMENTS(K1)%IDNUM, KMC_ELEMENTS(K1)%MATID, &
& KMC_ELEMENTS(K1)%TRANSFORMED, KMC_ELEMENTS(K1)%ORIENT%RMAT(1,1)
END DO
CLOSE(1001)
----------------------------------------------- -------------------------------------------------- --- ^
我是否允许将写入语句拆分为多行?
答案 0 :(得分:1)
如果有人遇到过这个问题,我的问题就是上面发布的答案以及源代码中空白区域的性质。延续字符需要在第6列,有关我的设置(编译设置?)导致它无法识别'标签'作为多列。我必须明确地空间(使用空格键)5次然后放置延续字符。制表符和空格的组合无法正确编译。
鉴于我对FORTRAN缺乏经验,我不确定这是否是一个常见问题。
答案 1 :(得分:0)
您的代码与<{1}}英特尔Fortran编译器选项 不兼容。
该选项的作用是它将行的长度从72个字符扩展到132个字符,用于固定表单源。这可能很方便,然而,许多代码使用第72列之后的空格来存储注释。
确实,你的-extend_source
&
应该是注释,对编译器不可见。通常用于创建与固定和自由格式同时兼容的文件。但由于WRITE(1001,FS) KMC_ELEMENTS(K1)%IDNUM,KMC_ELEMENTS(K1)%MATID, &
,它并不是不可见的。
如果您需要-extend source
选项,则只能在新行的第6列中使用-extend source
。你不能在前一行使用额外的一个。
另一方面,如果代码应该是自由格式,(你还没有告诉我们!),那么你必须使用{{1}指示编译器选项。