嵌套IF中的错误:在(1)处的表达式中期望右括号

时间:2015-02-27 11:52:26

标签: fortran fortran90 gfortran

我有一个嵌套的IF构造如下:

if(tt-t(ind)<=t(ind+1)-tt) then
        t(ind)=tt
        y(:,ind)=yy
    else
        if((y:,ind) == 0) then
            y(:,ind)=y(:,ind-1)
        ! If a certain sample point is skipped
        ! then assign previous sample value to it
        endif
    ind=ind+1
    t(ind)=tt
    y(:,ind)=yy
endif

我收到错误说

                if((y:,ind) == 0) then
                     1
Expected a right parenthesis in expression at (1)

当我删除内部IF时,编译就可以了。我无法理解IF语句的错误。我也试过if((y:,ind) .EQ. 0),但这也没有任何区别。

行长为52,包括空格,并且完全在限制范围内。这有什么不对?

1 个答案:

答案 0 :(得分:3)

好吧,索引切片应该是y(:,ind)。此外,如果语句需要标量逻辑,那么您可以使用allany,具体取决于您要实现的目标:

if( all( y(:,ind) == 0 ) ) then

if( any( y(:,ind) == 0 ) ) then