注意: 9.1 組み込み関数の規則 利用オプション
英数字のソース文字列をバイナリー形式に変換します。ソースの文字が2文字ずつ同等のバイナリーに変換されます。
ソース文字列には0-9、A-Fの文字だけを含めます。無効な文字がある場合、それはゼロとして扱われエラー・ステータスが戻ります。ソース文字列の長さは2の倍数にする必要があります。
例えば、ソースにC1C2(IBM i)、4142(Windows)という英数字文字列を含めた場合、戻される値はABになります。
引数
|
戻り値
|
技術上の注記
2番目の引数に'Y'を指定した場合は、戻り値を受け取るフィールドとしてBinary (またはAlpha)フィールドを使用してください。他のフィールド・タイプを使用すると、戻り値が切り捨てられるか、使用できなくなる可能性があります。
例:
FUNCTION OPTIONS(*DIRECT)
DEFINE FIELD(#MYHEX) TYPE(*CHAR) LENGTH(100)
DEFINE FIELD(#MYHEX2) TYPE(*CHAR) LENGTH(100)
DEFINE FIELD(#MYRET) TYPE(*CHAR) LENGTH(2)
DEFINE FIELD(#MYLEN) TYPE(*DEC) LENGTH(3) DECIMALS(0)
CHANGE FIELD(#MYHEX) TO('''414D5120414D5359443337202020002044B826A420C12563''')
USE BUILTIN(HEXTOBIN) WITH_ARGS(#MYHEX 'Y') TO_GET(#MYBIN #MYRET) (1)
CHANGE FIELD(#MYLEN) TO('24') (3)
USE BUILTIN(BINTOHEX) WITH_ARGS(#MYBIN #MYLEN) TO_GET(#MYHEX2 #MYRET) (2)
RETURN
#MYBINが24バイト以上のBinary (またはAlpha) フィールドの場合、(2)のBINTOHEX は、#MYHEXと同じ値の#MYHEX2を返します。#MYRETの値は'OK'です。
#MYBINがStringタイプの場合、(2)のBINTOHEX は#MYHEX2に何も返さず、#MYRET の値は 'ER' になります。
理由:(1)のHEXTOBIN は真のバイナリー値を返すよう指定されていますが、この例の #MYBIN はStringタイプの性質を持つため、完全な結果を保持することができません。実際、#MYBIN はバイナリー形式の'414D5120414D5359443337202020'のみを受け取り、次の '00' は文字列終了文字と見なされます。したがって、(2)のBINTOHEX では、#MYBIN が14バイトのみとなり、予期される24バイトよりも短くなります。