编写测量程序时,有时需要满足一些给定条件测量程序才可执行条件中的语句,否则执行条件外的其它程序。
如果想改变程序的运行方向就要使用跳转语句,在DMIS里有几种命令可实现有条件的跳转,条件跳转就是必须满足给定的条件程序才能跳转。
DMIS5.2标准如下:
根据一个逻辑表达式的条件执行转移程序的控制。表达式可以由先前定义的变量、算数表达式或逻辑表达式构成。嵌套的IF...ENDIF块也是支持的。
一个逻辑IF必须以一个IF语句开始和以一个ENDIF语句结束.ELSE语句是可选的,然而,当IF语句是嵌套的时,在一个逻辑IF序列中可能有几个ELSE语句。当IF语句是嵌套的时,应该小心
为每一个IF语句包含相应的ENDIF语句。JUMPTO语句可以被用在一个IF块中任何地方转移控制到块的外面。
如果逻辑表达式求值为真(.TRUE.),程序控制转移到跟随在IF语句后的语句和执行,直到遇见一个ELSE或ENDIF,如果逻辑表达式是伪(.FALSE.),程序控制转移到跟随在下面出现的ELSE后的语句。如果一个ENDIF在一个ELSE之前被遇见,条件结束。
RationalDMIS高级指令(IF条件语句)
IF…ENDIF程序块
IF语句是执行判断的,它能够判断是否满足某个条件,然后执行相应的动作。
IF语句以IF开头,ENDIF结尾,它可以使程序在满足规定的逻辑条件下跳转到其他行。逻辑条件由已定义的变量、算法或逻辑表达式组成。IF语句允许嵌套,语句格式如下:
IF/(表达式)
$$ DMIS程序
ENDIF
表达式:已定义的变量、算法或逻辑表达式
打开RationalDMIS的DMIS编辑器,找到DMIS模板,里面其他分项的高级语言中IF条件分支,拖放到编辑器里就可以用了。
DMIS5.2标准 示例如下:
RationalDMIS7.0高级指令程序案例:
示例一:
如果变量V1的数值比V2的大,就会弹出提示“A比B大”。
DECL/COMMON,DOUBLE,V1
V1 = ASSIGN/2
DECL/COMMON,DOUBLE,V2
V2 = ASSIGN/1
IF/ (V1.GT.V2)
TEXT/OPER,'A比B大'
ENDIF
示例二:
圆2直径是否在公差之内,超差继续测量圆2。
示例三:
下面的程序模拟登陆过程,密码正确提示可以登陆,错误的话要重新输入密码。
(LOGIN)
KNPTN1 = PROMPT/TITLE,'登录',TEXT,'姓名:',EDIT,KNPTC1,TEXT,'密码:',EDIT,KNPTC2
IF/(KNPTC1.EQ.'DAVE').AND.(KNPTC2.EQ.'1234')
TEXT/OPER, '登录成功!'
ELSE
TEXT/OPER, '姓名或密码错误,请重新输入!'
JUMPTO/(LOGIN)
ENDIF
示例四:
下面的的程序让坐标机沿S型路径走一个矩形区域,注意“AND”运算符的用法。
DECL/LOCAL,DOUBLE,XVAR,YVAR
(STARTGO)
GOTO/XVAR,YVAR,50
XVAR=ASSIGN/XVAR+100
IF/(XVAR.EQ.500)
XVAR=ASSIGN/0
YVAR=ASSIGN/YVAR+100
ENDIF
IF/((XVAR.LE.500).AND.(YVAR.LE.500))
JUMPTO/(STARTGO)
ENDIF
示例五:
输入是否继续测量!
示例六:
IF/(NCYCLE .EQ. 10)
$$instructions
ELSE
$$instructions
ENDIF
$$ instructions为输入的表达式,在NCYCLE的值和10比较后选择执行哪一句表达式。