機能: | メッセージ・パラメータの値を作成します。 | ||
構文: | rc = ArxMPFROM2SHORT( s1 , s2 , rad ) | ||
rc = ArxMPFROMSH2CH( s , c1 , c2 , rad ) | |||
s1,s2,s | ··· | short(16bit)値 | |
c1,c2 | ··· | char(8bit)値 | |
rad | ··· | 戻り値の形式(省略可) |
OS/2ツールキット(開発環境)で定義されているマクロ、MPFROM2SHORT / MPFROMSH2CH と同じ機能を提供します。
ArxSendMessage などと併用して下さい。
「戻り値の形式」には、戻り値に16進数を希望する場合に「HEX」を指定します。
その文字列の中に 「H」の字が含まれているかどうかで、
「戻り値の形式」を何れにするかを決めるので、先頭の1字以外は省略可能です。
(省略時は10進数)
なお、MPFROMLONG / MPFROMHWND 等に対応する関数は、用意されていません。
例: | ||
mp1 = ArxMPFROMSH2CH('H0006',1,1) | /* KC_VIRTUALKEY|KC_SCANCODE */ | |
mp2 = ArxMPFROM2SHORT(0,'H0F') | /* VK_ESC */ | |
rc = ArxPostMessage('FOCUS','WM_CHAR',mp1,mp2) |
機能: | メッセージ・パラメータの値もしくはメッセージ・リザルトの値を分解します。 | ||
構文: | rc = ArxCHAR1FROMMP( mp , rad ) | ||
rc = ArxCHAR2FROMMP( mp , rad ) | |||
rc = ArxCHAR3FROMMP( mp , rad ) | |||
rc = ArxCHAR4FROMMP( mp , rad ) | |||
rc = ArxSHORT1FROMMP( mp , rad ) | |||
rc = ArxSHORT2FROMMP( mp , rad ) | |||
rc = ArxSHORT1FROMMR( mr , rad ) | |||
rc = ArxSHORT2FROMMR( mr , rad ) | |||
mp | ··· | メッセージ・パラメータの値 | |
mr | ··· | メッセージ・リザルトの値 | |
rad | ··· | 戻り値の形式(省略可) |
OS/2ツールキット(開発環境)で定義されているマクロ、SHORT1FROMMP / CHAR1FROMMP などと同じ機能を提供します。
ArxQueryMsgParam などと併用して下さい。
(ArxSHORT1FROMMR / ArxSHORT2FROMMR は、それぞれ ArxSHORT1FROMMP / ArxSHORT2FROMMP と全く同じ動作をします)
(精神衛生上使い分けたい、という方のために、個別に用意してあります:-))
「戻り値の形式」には、戻り値に16進数を希望する場合に「HEX」を指定します。
その文字列の中に 「H」の字が含まれているかどうかで、
「戻り値の形式」を何れにするかを決めるので、先頭の1字以外は省略可能です。
(省略時は10進数)
なお、LONGFROMMP / HWNDFROMMP などに対応する関数は、用意されていません。
例: | ||
call ArxQueryMsgParam 'msg' | ||
if msg.MSG='H0000007A' then do | ||
/* WM_CHAR */ | ||
fs = ArxSHORT1FROMMP(msg.MP1) | ||
crepeat = ArxCHAR3FROMMP(msg.MP1) | ||
scancode = ArxCHAR4FROMMP(msg.MP1) | ||
chr = ArxSHORT1FROMMP(msg.MP2) | ||
vkey = ArxSHORT2FROMMP(msg.MP2) |
機能: | 10進数の値を16進数の値に変換します。 | ||
構文: | rc = ArxD2X( dec , n ) | ||
dec | ··· | 変換対象の10進数の値 | |
n | ··· | 変換対象の桁数(1以上、省略可) |
この関数は、10進数の値を、先頭に 「H」の字が付加された16進数の表記に変換します。
(REXX の関数 D2X() に相当します。「REXX情報」を参照して下さい)
「変換対象桁数」が省略されると、8桁(32bit)の値を返します。
「変換対象桁数」が指定されると、変換後の値が、下の桁から数えて「変換対象桁数」に切り詰められ、また必要に応じて、符号拡張も行われます。
例: | ||
say ArxD2X(9) | /* 'H00000009' ← 出力される文字列 */ | |
say ArxD2X(129) | /* 'H00000081' */ | |
say ArxD2X(129,1) | /* 'H1' */ | |
say ArxD2X(129,2) | /* 'H81' */ | |
say ArxD2X(129,4) | /* 'H0081' */ | |
say ArxD2X(257,2) | /* 'H01' */ | |
say ArxD2X(-127,2) | /* 'H81' */ | |
say ArxD2X(-127,4) | /* 'HFF81' */ | |
say ArxD2X(12,0) | /* ← エラー */ |
機能: | 16進数の値を10進数の値に変換します。 | ||
構文: | rc = ArxX2D( hex , n ) | ||
hex | ··· | 変換対象の16進数の値 | |
n | ··· | 変換対象の桁数(1以上、省略可) |
この関数は、先頭に 「H」の字が付加された16進数の表記の文字列を、10進数の値に変換します。
(REXX の関数 X2D() に相当します。「REXX情報」を参照して下さい)
「変換対象桁数」が指定されると、変換前の値を、下の桁から数えて「変換対象桁数」に切り詰め、
また必要に応じて、符号拡張を行ってから、変換します。
「変換対象桁数」が省略されると、符号無し16進数の値として変換します。
何れの場合でも、変換後の値が符号有り 32bit の値の限界(0x7FFFFFFF)を越えた場合は、
負の値を返します。
例: | ||
say ArxX2D('H0E') | /* '14' ← 出力される文字列 */ | |
say ArxX2D('H81') | /* '129' */ | |
say ArxX2D('HF81') | /* '3969' */ | |
say ArxX2D('HFF81') | /* '65409' */ | |
say ArxX2D('H81',2) | /* '-127' */ | |
say ArxX2D('H81',4) | /* '129' */ | |
say ArxX2D('HF081',4) | /* '-3967' */ | |
say ArxX2D('HF081',3) | /* '129' */ | |
say ArxX2D('HF081',2) | /* '-127' */ | |
say ArxX2D('HF081',1) | /* '1' */ | |
say ArxX2D('HF081',0) | /* ← エラー */ |
機能: | 文字列を16進数の値に変換します。 | ||
構文: | rc = ArxC2X( chr ) | ||
chr | ··· | 変換対象文字列 |
この関数は、文字列を、先頭に「H」の字が付加された16進数の表記に変換します。
(REXX の関数 C2X() に相当します。「REXX情報」を参照して下さい)
なお、「変換対象文字列」に指定可能な最大長は、128字です。
例: | ||
say ArxC2X('0123'x) | /* 'H0123' ← 出力される文字列 */ | |
say ArxC2X('ZD8') | /* 'H5A4438' */ | |
say ArxC2X('A') | /* 'H41' */ |
機能: | 16進数の値を文字列に変換します。 | ||
構文: | rc = ArxX2C( hex ) | ||
hex | ··· | 変換対象の16進数の値 |
この関数は、先頭に 「H」の字が付加された16進数の表記の文字列を、文字列に変換します。
(REXX の関数 X2C() に相当します。「REXX情報」を参照して下さい)
なお、変換対象の16進数の値に指定可能な最大長は、512字です。
例: | ||
say ArxX2C('H48656C6C6F') | /* 'Hello' ← 出力される文字列 */ | |
say ArxX2C('H373273') | /* '72s' */ | |
say ArxX2C('H9') | /* ← TAB を出力 */ |
機能: | 32bit 論理演算を行います。 | ||
構文: | rc = ArxNOT( val1 , rad ) | ||
rc = ArxAND( val1 , val2 ... , rad ) | |||
rc = ArxOR( val1 , val2 ... , rad ) | |||
rc = ArxXOR( val1 , val2 ... , rad ) | |||
rc = ArxNAND( val1 , val2 ... , rad ) | |||
rc = ArxNOR( val1 , val2 ... , rad ) | |||
val1,val2 | ··· | 演算対象値 | |
rad | ··· | 戻り値の形式(省略可) |
これらの関数は、与えられた数値を符号無し 32bit の値に展開して論理演算を行い、その結果を(符号有り 32bit の値で)返します。
ArxNOT は、「演算対象値」を1つだけ指定し、それ以外の関数は、「演算対象値」を2つ以上指定します。
「戻り値の形式」には、戻り値に16進数を希望する場合に「HEX」を指定します。
その文字列の中に 「H」の字が含まれているかどうかで、
「戻り値の形式」を何れにするかを決めるので、先頭の1字以外は省略可能です。
(省略時は10進数)
例: | ||
say ArxNOT(1) | /* '-2' ← 出力される文字列 */ | |
say ArxAND(65535,1) | /* '1' */ | |
say ArxOR(7,8,'H') | /* 'H0000000F' */ | |
say ArxXOR('H1234','H8888','HFFFF0000','H') | /* 'HFFFF9ABC' */ |