參考手冊

IF 區塊

目的

執行條件字串處理。 IF 區塊提供測試一或多個條件的能力, 然後基於條件測試的結果執行一區塊的陳述式。 您可以在 Net.Data 巨集內宣告部份、HTML 區塊、MACRO_FUNCTION 區塊、 REPORT 區塊、WHILE 區塊及 ROW 區塊中使用 IF 區塊,亦可 在另一個 IF 區塊內建立巢狀。

條件列示中的字串值, 如果是代表整數且前端或尾端沒有空白時,將被作為數字來比較。 它們可以有單一加號 (+) 或減號 (-) 置於前端。

限制:Net.Data 不支援非整數的數值比較;例如,浮點數字。

巢狀 IF 區塊:IF 區塊語法的規則由巨集中區塊的位置決定。 如果 IF 區塊在宣告部份任何其它區塊之外的 IF 區塊之中建立巢狀, 則其之外區塊能使用的任何元素它也可以使用。 如果 If 區塊在一個 IF 區塊中的其它區塊之中建立巢狀,則它依循所在之區塊的語法規則。

在下列範例,巢狀 IF 區塊必須遵循當它在 HTML 區塊之中時的規則。

     %IF 區塊
...
     %HTML 區塊
...
     %IF 區塊

您最多可以用巢狀方式設定 1024 個 IF 區塊。

語法

>>-%IF--| 條件列示 |-------------------------------------------->
 
>-----| 陳述式區塊 |--| else_if 規格 |--%ENDIF-----------------><
 
條件列示
 
|---(--+-(--條件列示--)----------+---)--------------------------|
       +-條件列示--&&--條件列示--+
       +-條件列示--||--條件列示--+
       +-!--條件列示-------------+
       +-| 條件 |----------------+
       '-| 詞彙 |----------------'
 
陳述式區塊
 
    .--------------------------------.
    V                                |
|------+--------------------------+--+--------------------------|
       |             (1)          |
       +-define 區塊--------------+
       |               (1)  (2)   |
       +-define 陳述式------------+
       |          (1)             |
       +-函數區塊-----------------+
       +-函數呼叫-----------------+
       |           (1)            |
       +-HTML 區塊----------------+
       |             (2)          |
       +-HTML 陳述式--------------+
       +-if 區塊------------------+
       +-include 陳述式-----------+
       |                     (1)  |
       +-macro_function 區塊------+
       |          (1)             |
       +-訊息區塊-----------------+
       |      (2)                 |
       +-字串---------------------+
       |          (2)             |
       +-變數參照-----------------+
       |            (2)           |
       '-while 區塊---------------'
 
條件
 
|---詞彙--+-<--+---詞彙-----------------------------------------|
          +->--+
          +-<=-+
          +->=-+
          +-!=-+
          '-==-'
 
詞彙
 
|---+-變數名稱------------------+-------------------------------|
    +-變數參照------------------+
    +-函數呼叫------------------+
    |    .---------------.      |
    |    V               |      |
    '-"----+-字串-----+--+---"--'
           +-變數參照-+
           '-函數呼叫-'
 
else_if 規格
 
|---+----------------------------------------------------+------|
    |     .-----------------------------------------.    |
    |     V                                         |    |
    '--+----%ELIF--(--條件列示--)--| 陳述式區塊 |---+-+--'
       '-%ELSE--| 陳述式區塊 |------------------------'
 

註:

  1. 當 IF 區塊位於巨集的宣告部份中任何其它區塊之外時, 這個語言結構有效。

  2. 當 IF 區塊位於 HTML 區塊、MACRO_FUNCTION 區塊、REPORT 區塊、 ROW 區塊或 WHILE 區塊中時,這個語言結構有效。

%IF
此關鍵字指定條件字串處理。

條件列示
比較條件及詞彙的值。使用布林運算子,可以連接條件列示。 您可以在另一個條件列示中建立巢狀條件列示。

陳述式區塊
下列有效的 Net.Data 巨集結構。請參閱圖解及附註, 以決定巨集結構有效的上下文。

DEFINE 陳述式
DEFINE 區塊或陳述式。定義變數,設定架構變數。 變數名稱必須以一個字母或底線開頭, 可以使用任何英數字元或底線。 有關語法及範例,請參閱 DEFINE 區塊或陳述式

FUNCTION 區塊
一種關鍵字,指定一個可以從 Net.Data 巨集呼叫的次常式。 FUNCTION 區塊中的可執行檔陳述式, 可以包含直接由語言環境解譯的語言陳述式, 也可以指示呼叫外部程式。有關語法及範例,請參閱 FUNCTION 區塊

函數呼叫
呼叫一或多個 FUNCTION 或 MACRO_FUNCTION 區塊, 或一個具有指定引數的 Net.Data 內建函數。 有關語法及範例,請參閱函數呼叫 (@)

HTML 區塊
包含任何英數字元,以及從屬站瀏覽器的格式化 HTML 標籤。

HTML 陳述式
包含任何英數字元,以及從屬站瀏覽器的格式化 HTML 標籤。

IF 區塊
此為 IF 區塊。 執行條件字串處理。 條件列示中的字串值, 如果是代表整數且前端或尾端沒有空白時,將被作為數字來比較。 它們可以有單一加號 (+) 或減號 (-) 置於前端。

include 陳述式
INCLUDE 陳述式。讀取及納入檔案到 Net.Data 巨集。 有關語法及範例,請參閱 INCLUDE 陳述式

macro_function 區塊
一種關鍵字,指定一個可以從 Net.Data 巨集呼叫的次常式。 在 MACRO_FUNCTION 區塊中的可執行的陳述式可以包含 Net.Data 巨集語言來源陳述式。 有關語法及範例,請參閱 MACRO_FUNCTION 區塊

訊息區塊
MESSAGE 區塊。為一組回覆碼、相關訊息以及傳回函數呼叫時 Net.Data 執行的動作。 有關語法及範例,請參閱 MESSAGE 區塊

字串
字串中可使用任何英文字母、數字與標點符號。 若是條件列示之詞彙內的字串,則可以是包括換行字元的任何字元。若是可執行區塊碼內的字串, 則可以是包括換行字元的任何字元。

變數參照
傳回變數值,並以 $ 及 () 符號指定。例如: 如果 VAR='abc', 則 $(VAR) 傳回值 'abc'。 有關語法的詳細資訊, 請參閱變數參照

WHILE 區塊
WHILE 區塊。以條件式字串處理程序執行迴路。 有關語法及範例,請參閱 WHILE 區塊

條件
使用比較運算子,比較兩個項目。 如果下列兩個條件為真,則 IF 條件被作為數字比較:

如果其中一個條件非真,則執行一般字串比較。

詞彙
一個變數名稱、字串、變數參照或函數呼叫。

%ELIF
此關鍵字可以啟動替代處理路徑,可以包含條件列示及大部份的 Net.Data 巨集陳述式。

%ENDIF
此關鍵字可以關閉 %IF 區塊。

%ELSE
此關鍵字可以在不符合其它條件列示時,執行相關陳述式。

上下文

在這些上下文中可找到 IF 區塊:

限制

當 IF 區塊位於巨集的宣告部份中任何其它區塊之外時, 可以包含這些元素。

當 IF 區塊位於 HTML 區塊、MACRO_FUNCTION 區塊、REPORT 區塊 或 WHILE 區塊中時,可以包含這些元素。

您最多可以用巢狀方式設定 1024 個 IF 區塊。

範例

範例 1:Net.Data 巨集宣告部份中的 IF 區塊

%DEFINE a = "1"
%DEFINE b = "2"
...
%IF ($(DTW_HTML_TABLE) == "YES")
%define OUT_FORMAT = "HTML"
%ELSE
%define OUT_FORMAT = "CHARACTER"
%ENDIF
 
%HTML(REPORT){
 ...
%}
 

範例 2: HTML 區塊內的 IF 區塊

%HTML(REPORT){
@myFunctionCall()
%IF ($RETURN_CODE) == $(failure_rc))
   <p> 函數呼叫失敗,其回覆碼為 $(RETURN_CODE)。
%ELIF ($(RETURN_CODE) == $(warning_rc))
   <p> 函數呼叫繼續,其警告碼為 $(RETURN_CODE)。
%ELIF ($(RETURN_CODE) == $(success_rc))
   <p>函數呼叫順利完成。
%ELSE
   P>函數呼叫傳回不明回覆碼 $(RETURN_CODE)。
%ENDIF
%}
 

範例 3: 數字比較

%IF (ROW_NUM < "100")
    <p>表格尚未填滿...
%ELIF (ROW_NUM == "100")
    <p>表格已滿...
%ELSE
    <p>表格溢位...
%ENDIF
 

數字比較之所以能完成是 由於隱含的表格變數 ROW_NUM 總是傳回整數值, 且這個被比較的值也是整數。

範例 4: 巢狀 IF 區塊

%IF (MONTH == "January")
  %IF (DATE = "1")
    新年快樂!
%ELSE
    哈,又是另一天。
%ENDIF
%ENDIF
 


[ 頁面頂端 | 前一頁 | 下一頁 | 目錄 | 索引 ]