IF...THEN

若希望登录底稿仅在某些条件下才执行操作,则使用 IF...THEN 命令。

命令格式

IF 条件 [AND|OR [条件]] THEN

命令

[ELSE

命令]

[END]

用标识符变量来替代条件。有关标识符变量的更多信息,参见“使用变量”

用当指定条件为真时要执行的登录底稿命令来替代命令

使用 IF...THEN

以下是条件语句的一个示例

IF MEMBER OF "CLERKS"

该语句中,若登录的用户属于名为 CLERKS 组对象,则会执行某些操作。

以下是另一种类型的条件语句:

IF DAY_OF_WEEK="MONDAY"

该语句中,等号 (=) 表明了变量 (DAY_OF_WEEK) 与其值 (Monday) 之间的关系。需注意变量值 (Monday) 应放在引号中。

在使用 IF...THEN 语句时,需明确下列语法规则:

使用 AND 或 OR 以在 IF...THEN 语句中使用两个或更多的条件。

条件语句的值必须放在引号中。

比较条件语句值的前提是这些值为字符,而不是数字值。因此,在比较 21 和 100 这两个字符时,会认为 21 的值比 100 的值大。要确保系统正确计算数值而非字符值时,需在 IF...THEN 语句中使用 VALUE 修饰符。

ELSE 语句是可选的。

IF、ELSE 和 END 都必须独立成行。THEN 则不必独立成行。

若将 WRITE 命令作为 IF...THEN 命令的一部分,则 WRITE 命令必须独立成行。

IF...THEN 语句可以嵌套(最多可达 10 级)。但是,不得在嵌套的 IF...THEN 语句中使用 GOTO 命令以进入或退出一个 IF...THEN 语句体。

若 IF...THEN 语句仅由一行命令组成,那么,即使该行会发生换行也不必使用 END 命令。若 IF...THEN 语句必须有多行命令(例如,使用了 ELSE 或 WRITE 这些必须独立成行的命令),则必须使用 END。

IF...THEN 语句的各要素间有六种可能的关系。用下列符号代表这些关系:

= (等于)

<> (不等于)

> (大于)

>(大于等于)

< (小于)

<(小于等于)

示例

若登录底稿中含有如下命令,那么,用户在星期一登录时会显示“Status report is due today”的讯息,而在其它天登录时则会显示“Have a nice day!”:

IF DAY_OF_WEEK="MONDAY" THEN

WRITE "Status report is due today."

ELSE

WRITE "Have a nice day!"

END

以下命令表示“若小时(用 24 进制表示)大于等于 12,则显示afternoon”:

IF VALUE HOUR24>="12" THEN

WRITE "afternoon"

END

使用以下命令会在每星期的第四天(星期三)执行 CAPTURE 实用程序:

IF NDAY_OF_WEEK="4" THEN

#CAPTURE Q=FAST_Q NB TI=10 NFF

END

以下给出嵌套 IF...THEN 语句的示例。留意这里有两个 IF 语句,因而每一个 IF 语句都要有它自己的 END 语句:

IF DAY_OF_WEEK="MONDAY" THEN

MAP *6:=VOL1:APPL\WP

IF MEMBER OF CLERKS THEN

WRITE "Your report is due immediately!"

END

可用逗号、AND 或 OR 来连接多个条件以形成复合条件。

以下 IF...THEN 语句的第一行就是一个复合条件,意为“如果是每月第一天的傍晚”:

"EVENING" AND DAY="01" THEN

WRITE "WRITE "The system will be backed up tonight."

END

以下是意为“如果是晚上 11:59:59”的复合条件:

IF HOUR24="23" AND MINUTE="59" AND SECOND="59"

一个 IF...THEN 语句中可以包含几个当条件为真时就必须执行的命令。

以下示例中显示了必须在星期二执行的两个命令:WRITE 命令显示有关员工会议的讯息,而 INCLUDE 命令会令登录底稿处理任何包含在 sys:public\update 文件中的命令或讯息。

IF DAY_OF_WEEK="TUESDAY" THEN

WRITE "WRITE "Staff meeting today at 10 a.m."

INCLUDE SYS:PUBLIC\UPDATE

END