管理与程序设计指南

条件逻辑:IF 块

将 IF 块用于 Net.Data 宏中的条件处理。在大多数高级语言中 IF 块类似于 IF 语句,因 为 IF 块提供测试一个或多个条件的能力,然后基于条件测试的结果执行一个语句块。

您可以在宏中的几乎任何地方指定 IF 块并可以嵌套它们。Net.Data 参考中的语言结构章中显示了 IF 块的语法。

IF 块的规则:IF 块的语法规则是由该块在宏中的位置确定的。IF 块中语句的可执行块允许的元 素取决于 IF 块自身的位置。

IF 块字符串比较

Net.Data 根据组成条件的项目的内容,用两种方式中的一种来处理 IF 块条 件列表。缺省操作是将所有项目作为字符串对待,并如条件中所指定的那样执行字符串比较。当然, 如果比较是在两个代表整数的字符串之间进行的,那么这个比较也是数字的。如果字符串中仅包含数字, 则 Net.Data 假定它是数字的,任选地前导以一个 '+' 或 '-' 字符。字符串不能包含任何非数字字符,'+' 或 '-' 除外。Net.Data 不支持非整数的数值比较。

有效整数字符串的示例:
+1234567890
-47
000812
92000

无效整数字符串的示例:
-  20     (包含空格字符)
234,000   (包含一个逗号)
57.987    (包含一个十进制小数点)
 

Net.Data 在执行 IF 块的时侯求解 IF 条件,此时间可能与 Net.Data 初始读块的时间不同。例如, 如果您在 REPORT 块中指定一个 IF 块,Net.Data 在读取包含 REPORT 块的 FUNCTION 块定义 时不估计与 IF 块相关联的条件列表,而是在调用和执行它时进行。对于 IF 块的条件列表部分和 要执行的语句块,都是这样的。

IF 块的示例: 一个在其他块中包含 IF 块的宏

%{ This macro is called from another macro, passing the operating system
   and version variables in the form data.
%}
 
%IF (platform == "AS400")
  %IF (version == "V3R2")
     %INCLUDE "as400v3r2_def.hti"
  %ELIF (version == "V3R7")
     %INCLUDE "as400v3r7_def.hti"
  %ELIF (version == "V4R1")
     %INCLUDE "as400v4r1_def.hti"
%ENDIF
%ELSE
     %INCLUDE "default_def.hti"
%ENDIF 
 
%MACRO_FUNCTION numericCompare(IN term1, term2, OUT result) {
%IF (term1 < term2)
  @dtw_assign(result, "-1")
%ELIF (term1 > term2)
  @dtw_assign(result, "1")
%ELSE
  @dtw_assign(result, "0")
%ENDIF
%}
  
%HTML(report){
  %WHILE (a < "10") {
    outer while loop #$(a)<br />
    %IF (@dtw_rdivrem(a,"2") == "0")
      this is an even number loop<br />
    %ENDIF
    @DTW_ADD(a, "1", a)
  %}
%}


[ 页的顶部 | 上一页 | 下一页 | 目录 | 索引 ]