1

だから私はそれに次のようなものを含むプログラムを持っています:

integer :: mgvn, stot, gutot, iprint, iwrit, ifail, iprnt
...
call readbh(lubnd,nbset,nchan,mgvn,stot,gutot,nstat,nbound,rr,bform,iprnt,iwrit,ifail)

そして内部readbh

      CALL GETSET(LUBND,NSET,KEYBC,BFORM,IFAIL)
      IF(IFAIL.NE.0) GO TO 99
      ...
 99   WRITE(IWRITE,98) NBSET,LUBND
      IFAIL = 1
      RETURN

他のすべての変数は定義されていますが、定義されていifailません。write(*,*) ifail関数呼び出しの前に追加すると、未定義の変数エラーが発生しますが、省略しても文句は言わず、関数で逃げて、常に失敗しIFAIL=1ます。

これは、関数内の引数の最後に到達し、readbh初期化されていないメモリを読み取っているためです-これはランダムなジベルです-そして、それらのビットをにキャストしますint-私が非常に(un)でない限り、ゼロにはなりませんラッキーで、ほぼ常に作っていifail.ne.0 trueますか?

4

1 に答える 1