在Fortran 77中包含字符变量的if / then语句的问题

时间:2014-01-06 07:18:58

标签: if-statement fortran character fortran77 word-count

我目前正在尝试在Fortran 77中编写一个程序来计算文本文件中的单词数。文本文件如下所示:

你好世界。你好,世界。你好,世界。你好,世界。你好,世界。你好,世界。你好,世界。你好,世界。你好,世界。你好,世界。你好,世界。你好,世界。你好世界。

我的程序目前看起来像这样:

       program COUNT
       implicit none

       character text*100000
       integer i, a, nw
       nw=1 !number of words                                                     

       open(9, FILE='file.txt', STATUS='old')
       read(9, '(A)') text

       a=0
  10   do i=1, LEN_TRIM(text)
          if (text(i:i) .ne. " ") then
             if (a .eq. 0) then
                goto 10
             else
                a=0
                nw=nw+1
                goto 10
             endif
          else
             if (a .eq. 0) then
                a=a+1
                goto 10
             else
                goto 10
             endif
          endif
       enddo

       print *, "Number of words: ", nw

       end

我在纸上做了这个并且它应该可以工作,但是,我的程序被困在do循环中。我认为这可能与此陈述有关:

       if (text(i:i) .ne. " ") then

我是否可以通过这种方式编写逻辑表达式?如果没有,有没有人有任何关于如何重写此代码的提示?如果我的程序有点乱,我很抱歉;我对此比较陌生。我正在努力提高我的编码技能,以进行计算化学。非常感谢你的帮助!

1 个答案:

答案 0 :(得分:2)

所有if分支都转到goto 10,它指向循环的开头。没有办法结束,因为这将从头开始重新启动循环。不要使用goto来启动新的迭代end do