8.117 HEXTOBIN

英数字のソース文字列をバイナリー形式に変換します。ソースの文字が2文字ずつ同等のバイナリーに変換されます。

ソース文字列には0-9、A-Fの文字だけを含めます。無効な文字がある場合、それはゼロとして扱われエラー・ステータスが戻ります。ソース文字列の長さは2の倍数にする必要があります。

例えば、ソースにC1C2(IBM i)、4142(Windows)という英数字文字列を含めた場合、戻される値はABになります。

 

引数

番号

タイプ

必須/任意

記述

最小長

最大長

最小小数桁数

最大小数桁数

1

A

必須

ソース:
0~9、A~Fの文字しか含められません。
長さは2の倍数とします。

2

無制限

 

 

2

A

任意

Y = 真のバイナリー値を返す

N = (デフォルト)「文字列のような」バイナリー値を返す。戻り値の最初のNULLバイトは文字列の終了文字

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バイトよりも短くなります。