SOUNDEX関数は、Margaret K. OdellとRobert C. Russel(米国特許1261167(1918)および1435663(1922))によって開発されたアルゴリズムに従って文字列をエンコードします。このアルゴリズムはKnuthの
The Art of Computer Programming, Volume 3で説明されています。(
リファレンスを参照。)SOUNDEXアルゴリズムは英語中心に機能するため、英語以外の言語ではあまり有効ではありません。
SOUNDEX関数は、次のステップに従ってエンコードしたargumentのコピーを返します。
-
argumentの最初の文字を保持し、後続の文字を破棄します。
A E H I O U W Y
-
-
2つ以上の隣接する文字がステップ2の同一クラスとなる場合、最初の文字を除いてすべてを破棄します。(ここでの隣接は、文字を破棄する前の単語中の位置を意味します)。
Knuthによって説明されているアルゴリズムでは、末尾にゼロを付加して結果の長さが4となるよう切り捨てます。これらの処理は、他のSAS関数で実行できます。