上一頁|下一頁

SASMSG 函數

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

類別: 地區設定

語法

SASMSG (BASENAME", "KEY", <<"QUOTE"|"DQUOTE"|"NOQUOTE">
<, "substitution 1", ..., "substitution 7">>)

必要的引數

BASENAME

訊息所在資料集的名稱。

KEY

訊息索引鍵。

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

QUOTE|DQUOTE|NOQUOTE

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

預設 DQUOTE

substitution

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

詳細資料

SAS 訊息資料集必須是 7 位元 ASCII 資料集。任何不能以 7 位元 ASCII 編碼表示的字元,都會以 Unicode 逸出輸出格式 '\uxxxx' 來表示,其中 'xxxx' 是字元之 Unicode 值的基底 10 數值表示法。
SASMSG 函數所使用的資料集必須是特別針對與此函數搭配使用而建立。資料集必須包含下列變數:
#
變數名稱
類型
長度
描述
1
locale
char
5
訊息的語言
2
key
char
60
識別訊息的索引鍵
3
lineno
num
5
反向的訊息行號
4
text
text
1,200
訊息的文字
資料集必須根據下列變數進行排序: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 = sasmsg
("nls.mymsg","IN_CD_LOG",
"noquote","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.
SASMSG 函數可以與 %SYSFUNC 巨集函數搭配使用,以用於開放式代碼巨集。
傳遞給 %SYSFUNC 巨集所呼叫函數的引數不得用引號括住,而傳遞給 %SYSFUNC 外部之 SASMSG 函數的引數則必須用引號括住。
SASMSG 函數與 %SYSFUNC 巨集函數搭配使用時,會使用 %NRBQUOTE 函數包裝傳回的字串。

範例

範例 1

下列範例示範 SASMSG 的輸出格式功能:
%macro demo_sasmsg;
data _null_;
msg = sasmsg("nls.mymsg","IN_APW_SAVE_OK","noquote");
put msg=;
run;
%mend demo_sasmsg;
SAS 陳述式
結果
options locale = en_US;
%demo_sasmsg ;
msg=The Access Control key was successfully saved.
options locale = es_ES;
%demo_sasmsg;
msg=La clave de control de acceso se ha guardado.
options locale = french_France;
%demo_sasmsg;
msg=La clé de contrôle d'accès a bien été enregistrée.

範例 2

下列範例示範開放式巨集功能:
%MACRO PRT(loc,tb,key);
option locale=&loc;
%PUT %SYSFUNC(SASMSG(&tb,&key) );
%MEND PRT;
SAS 陳述式
結果
%PRT(en_US,&TABLEID,IN_EDIT)
"Edit"
%PRT(es_ES,&TABLEID,IN_EDIT)
"Editar"
%PRT(fr_FR,&TABLEID,IN_EDIT)
"Modifier"
上一頁|下一頁|頁面頂端