その他の引数のパターンによって指定された、その引数の最初のバイトを、置換したり省略した結果として、バイトシーケンスを返します。
$ZTRANSLATE()関数のフォーマット:
$ZTR[ANSLATE](expr1[,expr2[,expr3]])
最初の式(expr1)は、$ZTRANSLATE() 操作をする対象の文字列を指定します。もし他の引数が省略されている場合は、 $ZTRANSLATE() は、この式expr1を返します。
オプションの第2式(expr2)は、$ZTRANSLATE()に置換するためのバイトを指定します。もしバイトが2番目の式に複数回出現する場合、最初の出現は変換を制御し、そして、$TRANSLATE() は後続の出現を無視します。もしこの引数が省略された場合、$ZTRANSLATEは、変更せずに、最初の式を返します。
オプションの3番目の式は、2番目の式で位置的に対応するバイトの置換バイトを指定します。もしこの引数を省略するか、または、2番目の式よりも短い場合は、$ZTRANSLATE は、3番目の式に対応する位置に置換がない2番目の式の中で発生するすべてのバイトを削除します。
$ZTRANSLATE() は、暗号化などタスクのためのツールを提供しています。
$ZTRANSLATEのアルゴリズムは、以下のように理解することができます:
$ZTRANSLATE() は、マッチするものを探し2番目の式にバイトによりそのバイトを比較し、最初の式で各バイトを評価します。もし2番目の式での一致がない場合、式の結果は変更していないバイトが含まれています。
一致するバイトが位置している時に、$ZTRANSLATE() はオリジナルの式の適切な置換を識別するために、2番目の式の中で一致の位置を使用します。もし2番目の式が3番目の式より多くのバイトがある場合は、$ZTRANSLATE()は null でオリジナルのバイトを置き換え、それによって、結果からそれを削除します。この原理の拡張によって、もし3番目の式が欠落している場合は、$ZTRANSLATE() は2番目の式で発生する最初の式からすべてのバイトを削除します。
例:
GTM>set hiraganaA=$char(12354) ; $zchar(227,129,130) GTM>set temp1=$zchar(130) GTM>set temp2=$zchar(140) GTM>set tr=$ztranslate(hiraganaA,temp1,temp2) GTM>w $ascii(tr) 12364 GTM>
上記の例では、$ZTRANSLATE() はバイト$ZCHAR(130) を最初の式に置き換え、2番目の式の最初の(そして唯一の)バイトを$ZCHAR(140) - 3番目の式の対応するバイトと照合します。