文字列の部分文字列を生成します。
カテゴリ: | DBCS |
種類: | NLSマクロ関数 |
文字列またはテキスト式です。argumentが後述する特殊文字またはニーモニック演算子を含む場合は、%QKSUBSTRを使用します。
整数または整数を生成する (テキスト、論理、算術)式です。この整数は、部分文字列の先頭文字の位置を表します。positionが文字列の文字数より大きい場合、%KSUBSTRと%QKSUBSTRは警告メッセージを発行して、NULL値を返します。
整数または整数を生成する(テキスト、論理、算術)式です(オプション)。この整数は、部分文字列の文字数を表します。lengthがargument内のposition以降の文字数より大きい場合、%KSUBSTRと%QKSUBSTRは警告メッセージを発行して、positionから文字列の末尾までの文字で構成される部分文字列を返します。デフォルトで、 %KSUBSTRと%QKSUBSTRはpositionから文字列の末尾までの文字で構成される文字列を作成します。
%macro makefref(fileref,file); %if %klength(&fileref) gt 8 %then %let fileref = %ksubstr(&fileref,1,8); filename &fileref "&file"; %mend makefref; %makefref(humanresource,/dept/humanresource/report96)
FILENAME HUMANRES "/dept/humanresource/report96";
%macro sepmsg(msg); %let i=1; %let start=1; %if %length(&msg)>40 %then %do; %do %until(%klength(&&msg&i)<40); %let msg&i=%qksubstr(&msg,&start,40); %put Message &i is: &&msg&i; %let i=%eval(&i+1); %let start=%eval(&start+40); %let msg&i=%qksubstr(&msg,&start); %end; %put Message &i is: &&msg&i; %end; %else %put No subdivision was needed.; %mend sepmsg; %sepmsg(%nrstr(A character operand was found in the %EVAL function or %IF condition where a numeric operand is required. A character operand was found in the %EVAL function or %IF condition where a numeric operand is required.));
Message 1 is: A character operand was found in the %EV Message 2 is: AL function or %IF condition where a nu Message 3 is: meric operand is required. A character Message 4 is: operand was found in the %EVAL function Message 5 is: or %IF condition where a numeric operan Message 6 is: d is required.
%let a=one; %let b=two; %let c=%nrstr(&a &b); %put C: &c; %put With KSUBSTR: %ksubstr(&c,1,2); %put With QKSUBSTR: %qKsubstr(&c,1,2);
C: &a &b With KSUBSTR: one With QKSUBSTR: &a