Fortran Coder

查看: 3543|回复: 4
打印 上一主题 下一主题

[流程控制] do循环

[复制链接]

7

帖子

4

主题

0

精华

新人

F 币
11 元
贡献
24 点
跳转到指定楼层
楼主
发表于 2022-1-21 18:01:28 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
各位老师,大家好!
我想请教一个问题
enddo循环结束后,后面写啥都不执行了,我的do循环是读取文件5中的内容,然后输入到9,但是我在enddo后面的内容是往文件6中写的,其他语句写在do循环之前就能执行,真的不知道为啥了,请各位老师不吝赐教!谢谢大家!

1642758949(1).jpg (67.17 KB, 下载次数: 245)

1642758949(1).jpg

~1F1G8@%P7WO%LY{4{6ECHJ.png (60.73 KB, 下载次数: 259)

~1F1G8@%P7WO%LY{4{6ECHJ.png
分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

737

帖子

4

主题

0

精华

大师

农村外出务工人员

F 币
705 元
贡献
361 点

新人勋章爱心勋章水王勋章元老勋章热心勋章

沙发
发表于 2022-1-21 20:31:51 | 只看该作者
代码看不全,所以逻辑也不好分析。
不保密的话,把全部代码给出来。

7

帖子

4

主题

0

精华

新人

F 币
11 元
贡献
24 点
板凳
 楼主| 发表于 2022-1-22 01:14:46 | 只看该作者
楚香饭 发表于 2022-1-21 20:31
代码看不全,所以逻辑也不好分析。
不保密的话,把全部代码给出来。
[Fortran] 纯文本查看 复制代码
program PDBtodata


implicit none

character chr1*6,chr2*2,chr3*6,chr4*4,chr5*8,header*80,atmnam*8,ww*200,xx*80,cc*80,&
vv*80,nn*80,sss*100
  character elmname*3,tt*5
  character filename*12,kk*50,jj*200
character*10 bb(3)
  integer i,j,atomtypes,atomtyp,atomser,natom,nf,R,zz,o,gg,mm,n(9),ntype,ios
  integer:: date_time(8)
  real(kind=8) a,b,c,xlo,xhi,ylo,yhi,zlo,zhi,alpha,beta,gamma,&
  xy,xz,yz,charge,mass(1:7),lx,ly,lz,x,y,z,q,qq,ff
real(kind=8), parameter :: pi=3.1415926

write(*,*)'filename: '
  read(*,*)filename
open(5,file=filename,status='old')
   open(6,file='105.data')
    open(7,file='data')
open(8,file='da2222ta')
open(9,file='da333333ta')
open(15,file='dqa')
open(20,file='fort.7',status='old')

write(6,*)


   xlo=0.0
   ylo=0.0
   zlo=0.0
   mass=0.0
   atomtyp=0
   q=0.0

read(5,*)
read(5,*)
read(5,*)chr3,a,b,c,alpha,beta,gamma,chr4
alpha=(alpha/180.0)*Pi
        beta=(beta/180.0)*Pi
        gamma=(gamma/180.0)*Pi
        lx=a
        xy=b*dcos(gamma)
        xz=c*dcos(beta)
        ly=dsqrt(b*b-xy*xy)
        yz=(b*c*dcos(alpha)-xy*xz)/ly
        lz=dsqrt(c*c-xz*xz-yz*yz)
        xhi=lx
        yhi=ly
        zhi=lz
write(6,*)'1','    1000cddd'
        write(6,*)xlo,xhi,'xlo xhi'
        write(6,*)ylo,yhi,'ylo yhi'
        write(6,*)zlo,zhi,'zlo zhi'
        write(6,*)
        write(6,*)xy,xz,yz,'xy xz yz'
        write(6,*)
mass(1)=12.011150
        mass(2)=1.007970
        mass(3)=15.999400
        mass(4)=14.006700
        mass(7)=26.981539
        write(6,*)'Masses'
        write(6,*)
        do i=1,6

read(5,*)

enddo
write(6,*)'1','    1000cddd'
do

read(5,"(a)")jj
if(index(jj,"ATOM") > 0) then
i=i+1
read(jj(32:),"(a)")kk
kk=adjustl(kk)

read(kk,*)x,y,z,ff,charge,elmname

if (index(elmname,"C") > 0)   then
           atomtyp=1
           
         else if (index(elmname,"H") > 0) then
           atomtyp=2
         
         else if (index(elmname,"O") > 0) then
           atomtyp=3

         else if (index(elmname,"N") > 0) then

         else if (index(elmname,"Al") > 0) then
           atomtyp=5




         write(9,500)i,atomtyp,q,x,y,z


endif
endif

enddo




200 FORMAT(I6,A8)
300 FORMAT(I6,A12)
500 FORMAT(I6,I3,F9.6,3F15.9)

close(5)
close(6)

if(.true.) then
open(22,file='105.data')
write(22,*)'1','    1000cddd'

endif


end


7

帖子

4

主题

0

精华

新人

F 币
11 元
贡献
24 点
地板
 楼主| 发表于 2022-1-22 01:18:05 | 只看该作者
楚香饭 发表于 2022-1-21 20:31
代码看不全,所以逻辑也不好分析。
不保密的话,把全部代码给出来。

我就是像从文件5中摘取出来一些东西,然后进行统计,再写入6中,但是我在进行完      write(9,500)i,atomtyp,q,x,y,z


endif
endif

enddo
这一步后,我想再写点命令就运行不了了,只有把write(22,*)'1','    1000cddd'放在do

read(5,"(a)")jj
if(index(jj,"ATOM") > 0) then
i=i+1
read(jj(32:),"(a)")kk的前面才能运行,请老师赐教这是为啥呢

2033

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1641 元
贡献
709 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

5#
发表于 2022-1-22 17:28:41 | 只看该作者
read(5,"(a)")jj
改为:
read(5,"(a)",ioStat=zz)jj
if(zz/=0)exit

如果你不加任何判断,5号文件读取结束时,程序接着读取,就会出错。后面的代码自然无法执行。
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-12-25 12:16

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表