我在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)