我已经找到了想要在这里询问的答案:Looping over variable file names
但问题是,当我运行该程序时,它给了我一个奇怪的符号,就像一个微笑。
代码是这样的:
DIMENSION NWGRAIN(NWMAXGRAIN)
CHARACTER*2 FLABEL
NWMAXGRAIN=5
$c GRAINS TO WRITE THE OUTPUT (NW STANDS FOR NUMBER WRITING)
DO I=1,NWMAXGRAIN
NWGRAIN(I)=0
END DO
NWGRAIN(1)=1
NWGRAIN(2)=6
NWGRAIN(3)=100
NWGRAIN(4)=1000
NWGRAIN(5)=1500
DO I=1,NWMAXGRAIN
IUNIT=901+I
flabel=char(nwgrain(i))
OPEN(IUNIT,FILE='DDRX_GRAIN'//FLABEL//'.OUT',
# STATUS='UNKNOWN')
END DO
我想要几个文件,我必须写一个名为'DDRX_GRAIN1.OUT'的数据, 'DDRX_GRAIN6.OUT','DDRX_GRAIN100.OUT'等等。
但是你可以看到它给了我一个错误,其中数字被微笑取代......
不知道这是否是我的编译器的笑话:)
编辑:我很抱歉,但我不明白。 正如其他主题所述,我修改了我的代码: CHARACTER*2 FLABEL,x1
character(len=8) fmt ! format descriptor (italo)
fmt = '(I5.5)' ! an integer of width 5 with zeros at the left
DO I=1,NWMAXGRAIN
IUNIT=901+I
i1=nwgrain(i)
write (x1,fmt) i1 ! converting integer to string using a 'internal file'
OPEN(IUNIT,FILE='DDRX_GRAIN'//trim(x1)//'.OUT',
# STATUS='UNKNOWN')
END DO
新错误是:
forrtl:severe(66):输出语句溢出记录,单位-5,文件内部格式化写入
答案 0 :(得分:0)
嗯,你声称你在链接上找到了你的答案,但你没有读得很好。
你不应该使用
flabel=char(nwgrain(i))
只是将flabel
设置为某些字符表中具有数字nwgrain(i)
的某个特定于机器的字符,并且该字符恰好是笑容。
您必须使用内部写入语句作为链接建议。请参阅链接和其他重复链接以获取准确的解决方案Convert integers to strings to create output filenames at run time
您可能还需要'DDRX_GRAIN'//TRIM(FLABEL)//'.OUT'
。