[
|../../index.htm#lansa/hextobin.htm]
現在地:
注意: 9.1 組み込み関数の規則 利用オプション
英数字のソース文字列をバイナリー形式に変換します。ソースの文字が2文字ずつ同等のバイナリーに変換されます。
ソース文字列には0-9、A-Fの文字だけを含めます。無効な文字がある場合、それはゼロとして扱われエラー・ステータスが戻ります。ソース文字列の長さは2の倍数にする必要があります。
例えば、ソースにC1C2(IBM i)、4142(Windows)という英数字文字列を含めた場合、戻される値はABになります。
引数
番号 |
タイプ |
必須/任意 |
記述 |
最小長 |
最大長 |
最小小数桁数 |
最大小数桁数 |
1 |
A |
必須 |
ソース: 0~9、A~Fの文字しか含められません。 長さは2の倍数とします。 |
2 |
無制限 |
|
|
2 |
A |
任意 |
Y = 真のバイナリー値を返す |
1 |
1 |
|
|
戻り値
番号 |
タイプ |
必須/任意 |
記述 |
最小長 |
最大長 |
最小小数桁数 |
最大小数桁数 |
1 |
w |
必須 |
戻されるバイナリー値 |
1 |
無制限 |
|
|
2 |
A |
任意 |
戻りコード OK = アクションが完了した ER = エラーが発生した |
2 |
2 |
|
|
技術上の注記
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バイトよりも短くなります。
[
|../../index.htm#lansa/hextobin.htm]