関数リファレンス - スクリプト補助関数


ArxMPFROM2SHORT / ArxMPFROMSH2CH

[3.4][KEY][MOU][WIN][OTH]
機能:メッセージ・パラメータの値を作成します。

構文: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)


ArxCHAR...FROMMP / ArxSHORT...FROMMP / ArxSHORT...FROMMR

[3.4][KEY][MOU][WIN][OTH]
機能:メッセージ・パラメータの値もしくはメッセージ・リザルトの値を分解します。

構文: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)


ArxD2X

[3.4][KEY][MOU][WIN][OTH]
機能: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) /* ← エラー */


ArxX2D

[3.4][KEY][MOU][WIN][OTH]
機能: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) /* ← エラー */


ArxC2X

[3.4][KEY][MOU][WIN][OTH]
機能:文字列を16進数の値に変換します。

構文:rc = ArxC2X( chr )

chr ··· 変換対象文字列

 この関数は、文字列を、先頭に「H」の字が付加された16進数の表記に変換します。
(REXX の関数 C2X() に相当します。「REXX情報」を参照して下さい)

 なお、「変換対象文字列」に指定可能な最大長は、128字です。

例:
say ArxC2X('0123'x) /* 'H0123' ← 出力される文字列 */
say ArxC2X('ZD8') /* 'H5A4438' */
say ArxC2X('A') /* 'H41' */


ArxX2C

[3.4][KEY][MOU][WIN][OTH]
機能: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 を出力 */


ArxNOT / ArxAND / ArxOR / ArxXOR / ArxNAND / ArxNOR

[3.4][KEY][MOU][WIN][OTH]
機能: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' */


戻る