だから私はそれに次のようなものを含むプログラムを持っています:
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
ますか?