24小时热门版块排行榜    

CyRhmU.jpeg
查看: 2147  |  回复: 24

snoopyzhao

至尊木虫 (职业作家)

【答案】应助回帖

★ ★ ★ ★ ★
Gina88: 金币+5, ★★★★★最佳答案 2012-12-18 08:47:13
引用回帖:
7楼: Originally posted by Gina88 at 2012-12-17 09:22:12
加路径试过了,还是不行。
主要问题是,一旦将call system部分注释去掉了。
编译的时候总是说定义或者宣称变量那部分不正确。

未命名.jpg
...

我按前面给你的提示测试了一下,没有问题,可以新建一个文件夹,把 DOSCAR 弄进去,在里面生成 33 个新文件……

当然,你的程序在我这里编译还是有一些问题的,比如 deallocate 语句要改成下面的样子:
CODE:
deallocate(energy)
deallocate(dos)

CALL SYSTEM 语句要放在变量声明语句之后,另外,
CODE:
!call system("cd DOSCARsplit/")
!ISTATUS=CHDIR(DOSCARsplit)

是不需要的。不能进入 DOSCARsplit 之后再执行程序,因为你的可执行文件在 DOSCARsplit 之外……
11楼2012-12-17 13:56:51
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

Gina88

木虫 (正式写手)

引用回帖:
11楼: Originally posted by snoopyzhao at 2012-12-17 13:56:51
我按前面给你的提示测试了一下,没有问题,可以新建一个文件夹,把 DOSCAR 弄进去,在里面生成 33 个新文件……

当然,你的程序在我这里编译还是有一些问题的,比如 deallocate 语句要改成下面的样子:


de ...

非常感谢,这样就成功了:)
12楼2012-12-18 08:46:54
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

Gina88

木虫 (正式写手)

引用回帖:
11楼: Originally posted by snoopyzhao at 2012-12-17 13:56:51
我按前面给你的提示测试了一下,没有问题,可以新建一个文件夹,把 DOSCAR 弄进去,在里面生成 33 个新文件……

当然,你的程序在我这里编译还是有一些问题的,比如 deallocate 语句要改成下面的样子:


de ...

哦,对了,还请教您一个问题。
就是有文件,假设该文件为aaa.bbb,也就是该文件的后缀名为bbb,并且bbb文件夹中只有这一个后缀名为bbb的文件。但是它前面aaa部分总是千变万化的。
所以对于程序来说,aaa是不知道的,bbb是知道的,需要该程序去自动识别bbb文件,并找到aaa究竟是什么,然后读取该文件,不知道fortran能不能实现这个功能啊?
13楼2012-12-18 09:51:35
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

snoopyzhao

至尊木虫 (职业作家)

引用回帖:
13楼: Originally posted by Gina88 at 2012-12-18 09:51:35
哦,对了,还请教您一个问题。
就是有文件,假设该文件为aaa.bbb,也就是该文件的后缀名为bbb,并且bbb文件夹中只有这一个后缀名为bbb的文件。但是它前面aaa部分总是千变万化的。
所以对于程序来说,aaa是不知道 ...

这种事情还是别让 Fortran 去做了,如果一定要在 Fortran 中完成,就用 call system 这样的与系统相关的调用吧……
CODE:
call system('ls -1 *.bbb > filename')
open(unit = 15, file = 'filename', status = 'old')
read(15, '(a)') file_you_want
open(unit = 25, file = file_you_want, status = 'old')
read(25,....

哦,顺便问一下,system 这个是 Fortran 标准中的东西吗?感觉是编译器的扩展……

如果一定不用扩展,那就用脚本程序把相关的东西准备好,然后再调用 Fortran....

» 本帖已获得的红花(最新10朵)

14楼2012-12-18 10:26:14
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

Gina88

木虫 (正式写手)

引用回帖:
14楼: Originally posted by snoopyzhao at 2012-12-18 10:26:14
这种事情还是别让 Fortran 去做了,如果一定要在 Fortran 中完成,就用 call system 这样的与系统相关的调用吧……

call system('ls -1 *.bbb > filename')
open(unit = 15, file = 'filename', status = ' ...

不知道啊,在百度的时候看见的,然后就用了。
非常非常的感谢您啊!
15楼2012-12-18 14:33:03
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

Gina88

木虫 (正式写手)

送鲜花一朵
引用回帖:
14楼: Originally posted by snoopyzhao at 2012-12-18 10:26:14
这种事情还是别让 Fortran 去做了,如果一定要在 Fortran 中完成,就用 call system 这样的与系统相关的调用吧……

call system('ls -1 *.bbb > filename')
open(unit = 15, file = 'filename', status = ' ...

call system('ls -1 *.bbb > filename')
open(unit = 15, file = 'filename', status = 'old')
我用上面的命令了,还是不行啊。
谢谢了!
16楼2012-12-19 16:16:31
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

snoopyzhao

至尊木虫 (职业作家)

引用回帖:
16楼: Originally posted by Gina88 at 2012-12-19 16:16:31
call system('ls -1 *.bbb > filename')
open(unit = 15, file = 'filename', status = 'old')
我用上面的命令了,还是不行啊。
谢谢了!...

不行是什么意思?没有生成 filename 这个文件,还是别的?有提示信息吗?
17楼2012-12-19 17:26:35
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

Gina88

木虫 (正式写手)

引用回帖:
17楼: Originally posted by snoopyzhao at 2012-12-19 17:26:35
不行是什么意思?没有生成 filename 这个文件,还是别的?有提示信息吗?...

可以生成filename文件,但是估计是打开filename文件的时候不能识别filename文件就是*.bbb文件。
现在我用以下的方法可以实现,就是比较麻烦,呵呵:)
   call system("basename *.bbb > filename"
   open(unit=18,file="filename"
   read(18,*)filename
   close(18)
   call system("rm filename"
   filename=adjustl(trim(filename))   
   open(unit=18,file=filename,status="old"
18楼2012-12-20 10:10:59
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

snoopyzhao

至尊木虫 (职业作家)

引用回帖:
18楼: Originally posted by Gina88 at 2012-12-20 10:10:59
可以生成filename文件,但是估计是打开filename文件的时候不能识别filename文件就是*.bbb文件。
现在我用以下的方法可以实现,就是比较麻烦,呵呵:)
   call system("basename *.bbb > filename" ...

不应该啊, 我这里的测试完全没有问题啊……
CODE:
program test

character(len = 80) :: file_you_want, line

call system('ls -1 *.bbb > filename')
open(unit = 15, file = 'filename', status = 'old')
read(15, '(a)') file_you_want
write(*, '(a)') file_you_want
open(unit = 25, file = file_you_want, status = 'old')
read(25,'(a)') line
write (*,'(a)') line

end program test

» 本帖已获得的红花(最新10朵)

19楼2012-12-20 13:56:37
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

Gina88

木虫 (正式写手)

送鲜花一朵
引用回帖:
19楼: Originally posted by snoopyzhao at 2012-12-20 13:56:37
不应该啊, 我这里的测试完全没有问题啊……


program test

character(len = 80) :: file_you_want, line

call system('ls -1 *.bbb > filename')
open(unit = 15, file = 'filename', status = 'ol ...

非常非常的感谢您
20楼2012-12-20 21:38:00
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 Gina88 的主题更新
信息提示
请填处理意见