執行條件字串處理。 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--| 陳述式區塊 |------------------------'
註:
值
如果其中一個條件非真,則執行一般字串比較。
上下文
在這些上下文中可找到 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