上一頁|下一頁

%KSCAN 和 %QKSCAN 函數

依其在字串中的位置,來搜尋所指定的單字。

類別: DBCS
類型: NLS 巨集函數

語法

%KSCAN (argument, n<,delimiters > )
%QKSCAN (argument, n<,delimiters > )

必要的引數

argument

是字元字串或文字運算式。如果 argument 包含特殊字元或助憶運算子 (如此處所列),請使用 %QKSCAN。

n

是整數,或產生整數的文字運算式 (指定要傳回單字的位置)。如果 n 大於 argument 中的單字數,則函數會傳回 Null 字串。如果 n 是負值,則 %KSCAN 會檢查字元字串,以及選取在字串結尾處開始的單字,並往回搜尋。

delimiter

指定字元變數,以產生要讓 %QKSCAN 在字元運算式中作為文字分隔符號的字元。

詳細資料

%KSCAN 和 %QKSCAN 函數會搜尋 argument,並傳回第 n 個單字。單字是一或多個用一或多個分隔符號隔開的字元。
%KSCAN 不會在其結果中遮罩特殊字元或助憶運算子,即使先前已使用巨集引號函數遮罩過引數也是一樣。%QKSCAN 會在其結果中遮罩下列特殊字元和助憶運算子:
& % ' " ( ) + − * / < > = ¬ ^ ~ ; , # blank
AND OR NOT EQ NE LE LT GE GT IN
delimiter 是用來隔開單字之數個字元的任何一個。
在 %KSCAN 函數中,word 指的是具有下列所有特徵的子字串:
  • 左邊是分隔符號或字串開頭
  • 右邊是分隔符號或字串結尾
  • 未含分隔符號
如果字串開頭或結尾有分隔符號,或字串包含兩個以上的連續分隔符號,則單字的長度可能為零。
如果您使用只含有兩個引數的 %KSCAN 函數,則預設分隔符號取決於電腦使用 ASCII 還是 EBCDIC 字元:
  • 如果電腦使用 ASCII 字元,則預設分隔符號如下:
    空白 ! $ % & ( ) * + , - . / ; < ^¦
    在未含 ^ 字元的 ASCII 環境中,%KSCAN 函數會改用 ~ 字元。
  • 如果電腦使用 EBCDIC 字元,則預設分隔符號如下:
    空白 ! $ % & ( ) * + , - . / ; < ¬ | ¢¦
%KSCAN 函數允許字元引數為 Null。Null 引數是視為長度為零的字元字串。數值引數不能為 Null。

範例: 比較 %KSCAN 與 %QKSCAN 的動作

此範例說明 %KSCAN 和 %QKSCAN 的動作:
%macro a;
aaaaaa
%mend a;
%macro b;
bbbbbb
%mend b;
%macro c;
cccccc
%mend c;
%let x=%nrstr(%a*%b*%c);
%put X: &x;
%put The third word in X, with KSCAN: %kscan(&x,3,*);
%put The third word in X, with QKSCAN: %qkscan(&x,3,*);
%PUT 陳述式會將下列各行寫入至日誌:
X: %a*%b*%c
The third word in X, with KSCAN: cccccc
The third word in X, with QKSCAN: %c
上一頁|下一頁|頁面頂端