fortran如果条件不适用于模块中的逻辑

时间:2015-01-20 08:42:08

标签: gcc fortran

我在Fortran计划下工作,并面临着一种奇怪的行为,如果"言。

我在主程序所在的文件中有一个模块:

module platform
    character (*) SLASH, NULLDEV, COPY_CMD, MKDIR_CMD
    parameter (SLASH="\", COPY_CMD="cp -r ", NULLDEV="nul", MKDIR_CMD="mkdir")    
    !parameter (SLASH="/", COPY_CMD="cp ", NULLDEV="/dev/null", MKDIR_CMD="mkdir -p")

    logical        binary
    parameter ( binary = .TRUE. )
    !parameter ( binary = .FALSE. )
end module platform

以下主程序代码是条件语句:

     ...

     use module platform

     ...

     if ( .NOT. binary ) 
      call system(MKDIR_CMD // ' ' // outdir //' 2>' // NULLDEV)     
    endif

"二进制"参数为false。为了以防万一,我在调试器中检查了它。但程序没有执行调用!

但是,如果我通过添加上面的任何运算符修改语句"调用",例如:

if ( .NOT. binary ) then
      a = 1
      call system(MKDIR_CMD // ' ' // outdir //' 2>' // NULLDEV)      
endif

一切正常!

UPD: ' outdir'定义为:

character*255 ssadir, evname, outdir, evlst 
...
call getarg(2, evname)    
call getarg(3, outdir)

outdir = trim(outdir) // SLASH // trim(evname)

0 个答案:

没有答案