前のページ|次のページ

CALL COMPCOSTルーチン

後からCOMPGED関数で使えるように演算のコストを設定します。

カテゴリ: 文字
制限事項: COMPGED関数と合わせて使用します。
操作: %SYSCALLマクロステートメントで呼び出されると、CALL COMPCOSTの引数から引用符が削除されます。詳細については、CALLルーチンと%SYSCALLマクロステートメントを使用するを参照してください。

構文

CALL COMPCOST(operation-1, value-1 <, operation-2, value-2 …>);

必須引数

operation

COMPGED関数で実行する演算を指定する文字の定数、変数または式です。

value

先行する引数で示す演算のコストを指定する数値の定数、変数または式です。

制限事項 –32767から32767の整数か、欠損値とする必要があります。

詳細

演算のコストの計算

演算を指定する各引数の文字列の値とする必要があります。文字列は、COMPGED関数が実行する演算を表す語句に対応します。COMPGED関数が使用する演算を確認するには、一般化編集距離の計算 を参照してください。
演算を指定する文字列には大文字、小文字、または大文字と小文字を混在させることができます。空白は無視されます。文字列はすべて等号(=)で終わる必要があります。演算の有効な値と、デフォルトの演算のコストを次の表に示します。
演算
デフォルトコスト
APPEND=
very large
BLANK=
very large
DELETE=
100
DOUBLE=
very large
FDELETE=
equal to DELETE
FINSERT=
equal to INSERT
FREPLACE=
equal to REPLACE
INSERT=
100
MATCH=
0
PUNCTUATION=
very large
REPLACE=
100
SINGLE=
very large
SWAP=
very large
TRUNCATE=
very large
COMPCOSTルーチンの呼び出しで演算が出現しない場合、または演算に欠損値が続く場合、演算にはデフォルトのコストが割り当てられます。コストの"very large"は、COMPGED関数が対応する演算を使わない程に十分大きいコストを示します。
プログラムからCOMPCOSTルーチンが呼び出された後、指定コストはCOMPCOSTルーチンがプログラムから再度呼び出されるまで、またはCOMPCOSTへの呼び出しを含むステップが終了するまで有効です。

文字列の短縮

文字列は短縮できます。特定の演算の最初の1文字または数文字を語全体のかわりに使えます。ただし、語を一意に区別するのに十分な数の文字を使用します。たとえば、INSERT=演算を"in="と指定し、REPLACE=演算を"r="と指定できます。 DELETE=演算またはDOUBLE=演算を指定するには、DELETE=およびDOUBLE=の両者が"d"で始まるため、最初の2文字を使う必要があります。文字列は常に等号(=)で終わる必要があります。

COMPCOSTルーチンを呼び出して、指定した演算の一般化編集距離を計算する例を次に示します。
options pageno=1 nodate linesize=80 pagesize=60;
data test;
   length String $8 Operation $40;
   if _n_ = 1 then call compcost('insert=', 10, 'DEL=', 11, 'r=', 12);
   input String Operation;
   GED=compged(string, 'baboon');
   datalines;
baboon  match
xbaboon insert
babon   delete
baXoon  replace
;
proc print data=test label;
   label GED='Generalized Edit Distance';
   var String Operation GED;
run;
出力結果を次に示します。
演算に基づく一般化編集距離
演算に基づく一般化編集距離

関連項目:

前のページ|次のページ|ページの先頭へ