我在FORTRAN 77中有这个代码(我必须使用它,因为它用作我的Abaqus程序的子程序),我要求子程序打印我的应力和应变结果,每个元素和每个时间增量后,在某个特定的地方。现在,我的目录路径很长(由于几个原因)。因此,我必须在两行中写入目录的路径,因为FORTRAN 77只能识别第6到77列之间的任何内容(我相信!)。
现在,我尝试了很多东西!
我放了&下一行第6列的符号,下一行第6列的数字(如1),甚至是同一地方的星号(*)!
然而,我一直收到错误#5082!
以下是ifort编译器中未接受的代码部分:
subroutine uvarm(uvar,direct,t,time,dtime,cmname,orname,
1 nuvarm,noel,npt,layer,kspt,kstep,kinc,ndi,nshr,coord,
2 jmac,jmatyp,matlayo,laccfla)
include 'aba_param.inc'
character*80 cmname, orname
character*3 flgray(15)
character*80 file1, file2
dimension uvar(nuvarm),direct(3,3),t(3,3),time(2)
dimension array(15),jarray(15),jmac(*),jmatyp(*),coord(*)
C integer i
call getvrm('E',array,jarray,flgray,jrcd,jmac,jmatyp,
1 matlayo,laccfla)
uvar(1) = array(1)
uvar(2) = array(2)
uvar(3) = array(4)
call getvrm('S',array,jarray,flgray,jrcd,jmac,jmatyp,
1 matlayo,laccfla)
uvar(4) = array(1)
uvar(5) = array(2)
uvar(6) = array(4)
file1 = '/gpfs/work/m/mfg5310/fracture/ResearchWork'
1 '/fracture_subroutines/frac_in_mid_Mode2_case1_strains.txt'
file2 = '/gpfs/work/m/mfg5310/fracture/ResearchWork'
2 '/fracture_subroutines/frac_in_mid_Mode2_case1_stress.txt'
open(unit=101,file=file1)
open(unit=103,file=file2)
write(101,350) uvar(1),uvar(2),uvar(3),coord(1),coord(2)
write(103,350) uvar(4),uvar(5),uvar(6),coord(1),coord(2)
350 format(e12.5,6x,e12.5,6x,e12.5,6x,e12.5,6x,e12.5)
C close(unit=101)
C close(unit=103)
return
end
我该怎么办?
我知道我总是可以缩短路径,以便整个目录适合一行。但由于两个原因,我想知道如何将字符串继续到Fortran 77中的下一行:
原因1:我真的很想知道这一点。 原因2:打印的文件更加井井有条!我将能够将文件命名为我想要的名称。
答案 0 :(得分:2)
只需使用Fortran字符串连接运算符//就像这样
file1 = '/gpfs/work/m/mfg5310/fracture/ResearchWork'//
& '/fracture_subroutines/frac_in_mid_Mode2_case1_strains.txt'