9.128 HEXTOBIN
英数字のソース文字列をバイナリー形式に変換します。ソースの文字が2文字ずつ同等のバイナリーに変換されます。
ソース文字列には0-9、A-Fの文字だけを含めます。無効な文字がある場合、それはゼロとして扱われエラー・ステータスが戻ります。ソース文字列の長さは2の倍数にする必要があります。
例えば、ソースにC1C2(IBM i)、4142(Windows)という英数字文字列を含めた場合、戻される値はABになります。
各製品の対応
LANSA/AD |
使用可 |
Visual LANSA for Windows |
使用可 |
Visual LANSA for Linux |
使用可 |
引数
番号 |
タイプ |
必須/任意 |
記述 |
最小長 |
最大長 |
最小小数桁数 |
最大小数桁数 |
---|---|---|---|---|---|---|---|
1 |
A |
必須 |
ソース: |
2 |
無制限 |
||
2 |
A |
任意 |
Y = 真のバイナリー値を返す N = (デフォルト)「文字列のような」バイナリー値を返す。戻り値の最初のNULLバイトは文字列の終了文字 |
1 |
1 |
戻り値
番号 |
タイプ |
必須/任意 |
記述 |
最小長 |
最大長 |
最小小数桁数 |
最大小数桁数 |
---|---|---|---|---|---|---|---|
1 |
w |
必須 |
戻されるバイナリー値 |
1 |
無制限 |
||
2 |
A |
任意 |
戻りコード |
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バイトよりも短くなります。