上一頁|下一頁

SASMSGL 函數

指定資料集中的訊息。訊息是根據指定的地區設定值和指定的索引鍵值。

類別: 地區設定

語法

SASMSGL(("BASENAME", "KEY", "LOCALE", <<"Q"|"D"|"N">
<, "substitution 1", ..., "substitution 6">>)

必要的引數

BASENAME

訊息所在資料集的名稱。

KEY

訊息索引鍵。

附註: 如果您指定無效索引鍵名稱,則會傳回索引鍵名稱。

LOCALE

posix 地區設定值 (ll_RR)。

QUOTE|DQUOTE|NOQUOTE

指定增加至訊息文字和替換字串的引號類型。

預設 DQUOTE

substitution

字串替換。 最大字串替換是 6。

詳細資料

SAS 訊息資料集必須是 7 位元 ASCII 資料集。任何不能以 7 位元 ASCII 編碼表示的字元,都會以 Unicode 逸出輸出格式 '\uxxxx 來表示,其中 xxxx 是字元之 Unicode 值的基底 10 數值表示法。
SASMSGL 函數所使用的資料集必須是特別針對與此函數搭配使用而建立。資料集必須包含下列變數:
#
變數名稱
類型
長度
描述
1
locale
char
5
訊息的語言
2
key
char
60
識別訊息的索引鍵
3
lineno
num
5
反向的訊息行號
4
text
text
1200
訊息的文字
資料集必須根據下列變數進行排序:localekeylineno。變數 lineno 的順序必須為遞減。必須定義根據 locale 和 key 的複合索引。下列是排序和建立索引資料集的範例程式:
%let basename=MyProduct;

proc sort data=t.&basename;
by locale key descending lineno;
run;

proc datasets lib=t 
memtype=data;
modify &basename;
index create indx=(LOCALE KEY);
run;
quit;
傳回的訊息是根據 LOCALE 系統選項。LOCALE 選項表示為 ll_RR,其中 ll 代表兩個字母的語言碼,而 RR 代表兩個字母的區碼。如果找不到相符項目,則函數會搜尋只含有語言的相符項目。如果仍然找不到 locale 和 key 配對,則函數會預設為英文 (en)。如果沒有英文 (en) 的 key,則會傳回 key 名稱。
您可以變更輸出格式。 您可以使用輸出格式碼 %s 來使用字串替換。您可以變更替換順序。在部分情況下,將訊息轉譯為非英文的語言,可能需要變更替換順序。在輸出格式字串內放入引數編號規格 #nn (其中 nn 是引數在替換清單中的編號),就可以變更順序。下列範例示範如何變更順序:
陳述式
結果
msg = sasmsgl
("nls.mymsg","IN_CD_LOG","en_US","N",
"cat","dog");
IN_CD_LOGINFO = My %#1s. Your %#2s
msg= My cat. Your dog.
IN_CD_LOGINFO = My %#2s. Your %#1s
msg= My dog. Your cat.
SASMSGL 函數可以與 %SYSFUNC 巨集函數搭配使用,以用於開放式代碼巨集。
傳遞給 %SYSFUNC 巨集所呼叫函數的引數不得用引號括住,而傳遞給 %SYSFUNC 外部之 SASMSGL 函數的引數則必須用引號括住。
SASMSGL 函數與 %SYSFUNC 巨集函數搭配使用時,會使用 %NRBQUOTE 函數包裝傳回的字串。

範例

範例 1

下列範例示範 SASMSGL 的輸出格式功能:
陳述式
結果
sasmsgl("nls.mymsg", "IN_APW_SAVE_OK", "en_US", "n"));
The Access Control key was successfully saved.
sasmsgl("nls.mymsg", "IN_APW_SAVE_OK", "es_ES", "n"));
La clave de control de acceso se ha guardado.
sasmsgl("nls.mymsg", "IN_APW_SAVE_OK", "fr", "n"));
La clé de contrôle d'accès a bien été enregistrée.

範例 2

下列範例示範開放式巨集功能:
SAS 陳述式
結果
%PUT %SYSFUNC(SASMSGL(NLS.MYDS, IN_ASD_LABEL, en_US));
"Edit"
%PUT %SYSFUNC(SASMSGL(NLS.MYDS, IN_ASD_LABEL, es_ES));
"Editar"
%PUT %SYSFUNC(SASMSGL(NLS.MYDS, IN_ASD_LABEL, fr));
"Modifier"
上一頁|下一頁|頁面頂端