| 
			|  | マクロ仕様において破壊的変更を伴わずに正式に64bit整数をサポートする方法とし
 て、通常の32bit数値変数を
 2個使って64bit整数の代わりとする方法を用いてもよいのでは、と思いました。つま
 り、64bitのうち0〜31bitの
 下位32bitと32〜64bitの上位32bitの2個の独立した数値変数で1つのペアとすること
 です。この場合、新たに以下の
 例のような文/関数を新設して演算処理などを行うことになるでしょう。
 
 四則演算。
 単項+ (文) : unaryplusint64 #lower, #upper, #lowerReturn, #upperReturn ;
 単項- (文) : negateint64    #lower, #upper, #lowerReturn, #upperReturn ;
 +     (文) : addint64       #lowerleft, #upperleft, #lowerright, #upperright,
 #lowerReturn, #upperReturn ;
 -     (文) : subtractint64  #lowerleft, #upperleft, #lowerright, #upperright,
 #lowerReturn, #upperReturn ;
 *     (文) : multiplyint64  #lowerleft, #upperleft, #lowerright, #upperright,
 #lowerReturn, #upperReturn ;
 /     (文) : divideint64    #lowerleft, #upperleft, #lowerright, #upperright,
 #lowerReturn, #upperReturn ;
 %     (文) : moduloint64    #lowerleft, #upperleft, #lowerright, #upperright,
 #lowerReturn, #upperReturn ;
 
 bit操作。
 ^ (文) : notint64 #lower, #upper, #lowerReturn, #upperReturn ;
 | (文) : orint64  #lowerleft, #upperleft, #lowerright, #upperright, #lowerRe
 turn, #upperReturn ;
 & (文) : andint64 #lowerleft, #upperleft, #lowerright, #upperright, #lowerRe
 turn, #upperReturn ;
 
 比較。戻り値は1か0。
 <= (関数) : #result = lessthanorequalint64(    #lowerleft, #upperleft, #lowe
 rright, #upperright ) ;
 >= (関数) : #result = greaterthanorequalint64( #lowerleft, #upperleft, #lowe
 >rright, #upperright ) ;
 <  (関数) : #result = lessthanint64(           #lowerleft, #upperleft, #lowe
 rright, #upperright ) ;
 >  (関数) : #result = greaterthanint64(        #lowerleft, #upperleft, #lowe
 >rright, #upperright ) ;
 != (関数) : #result = notequalint64(           #lowerleft, #upperleft, #lowe
 rright, #upperright ) ;
 =  (関数) : #result = equalint64(              #lowerleft, #upperleft, #lowe
 rright, #upperright ) ;
 
 変換。
 Int32=>Int64        (文)   : int32toint64 #int32, #lowerReturn, #upperReturn ;
 Int64=>Int32        (関数) : #int32 = int64toint32( #lower, #upper ) ;
 文字列=>Int64       (文)   : valint64 $str, #lowerReturn, #upperReturn ;
 Int64=>10進数文字列 (関数) : $dec = strint64( #lower, #upper ) ;
 Int64=>16進数文字列 (関数) : $hex = hexint64( #lower, #upper ) ;
 
 文字数。
 文字数計算      (文) : charcountint64       #mode, #lowerReturn, #upperRetur
 n ; // #modeはcharcount( n1 ) 関数のn1と同じ。
 文字位置=>行/桁 (文) : positiontolinecolumn #lowerposition, #upperposition,
 #lowerlineReturn, #upperlineReturn, #lowercolumnReturn, #uppercolumnReturn ;
 行/桁=>文字位置 (文) : linecolumntoposition #lowerline, #upperline, #lowerco
 lumn, #uppercolumn, #lowerpositionReturn, #upperpositionReturn ;
 
 カーソル。
 x             (文) : xint64            #lowerReturn, #upperReturn ;
 y             (文) : yint64            #lowerReturn, #upperReturn ;
 column        (文) : columnint64       #lowerReturn, #upperReturn ;
 lineno        (文) : linenoint64       #lowerReturn, #upperReturn ;
 tabcolumn     (文) : tabcolumnint64    #lowerReturn, #upperReturn ;
 xview         (文) : xviewint64        #lowerReturn, #upperReturn ;
 prevposx      (文) : prevposxint64     #lowerReturn, #upperReturn ;
 prevposy      (文) : prevposyint64     #lowerReturn, #upperReturn ;
 mousecolumn   (文) : mousecolumnint64  #lowerReturn, #upperReturn ;
 mouselineno   (文) : mouselinenoint64  #lowerReturn, #upperReturn ;
 columntox     (文) : columntoxint64    #lowerc, #upperc, #lowerl, #upperl, #
 lowerReturn, #upperReturn ;
 linenotoy     (文) : linenotoyint64    #lowerc, #upperc, #lowerl, #upperl, #
 lowerReturn, #upperReturn ;
 xtocolumn     (文) : xtocolumnint64    #lowerx, #upperx, #lowery, #uppery, #
 lowerReturn, #upperReturn ;
 ytolineno     (文) : ytolinenoint64    #lowerx, #upperx, #lowery, #uppery, #
 lowerReturn, #upperReturn ;
 up            (文) : upint64           #lower, #upper ;
 down          (文) : downint64         #lower, #upper ;
 right         (文) : rightint64        #lower, #upper ;
 left          (文) : leftint64         #lower, #upper ;
 shiftup       (文) : shiftupint64      #lower, #upper ;
 shiftdown     (文) : shiftdownint64    #lower, #upper ;
 shiftright    (文) : shiftrightint64   #lower, #upper ;
 shiftleft     (文) : shiftleftint64    #lower, #upper ;
 moveto        (文) : movetoint64       #lowerx, #upperx, #lowery, #uppery ;
 movetoview    (文) : movetoviewint64   #lowerx, #upperx, #lowery, #uppery ;
 movetolineno  (文) : movetolinenoint64 #lower桁番号, #upper桁番号, #lower行
 番号, #upper行番号 ;
 moveto2       (文) : moveto2int64      #lowercolumn, #uppercolumn, #lowerlin
 eno, #upperlineno ;
 
 テキスト。
 linecount  (文)   : linecountint64  #lowerReturn, #upperReturn ;
 linecount2 (文)   : linecount2int64 #lowerReturn, #upperReturn ;
 linelen    (文)   : linelenint64    #lowerReturn, #upperReturn ;
 linelen2   (文)   : linelen2int64   #lowerReturn, #upperReturn ;
 gettext    (関数) : $str = gettextint64(  #lowerx1, #upperx1, #lowery1,#uppe
 ry1, #lowerx2, #upperx2, #lowery2, #uppery2, #n1 [ , #n2 ] ) ;
 gettext2   (関数) : $str = gettext2int64( #lowerc1, #upperc1, #lowerl1,#uppe
 rl1, #lowerc2, #upperc2, #lowerl2, #upperl2, #n1 [ , #n2 ] ) ;
 
 範囲選択。
 seltopx      (文) : seltopxint64       #lowerReturn, #upperReturn ;
 seltopy      (文) : seltopyint64       #lowerReturn, #upperReturn ;
 selendx      (文) : selendxint64       #lowerReturn, #upperReturn ;
 selendy      (文) : selendyint64       #lowerReturn, #upperReturn ;
 seltopcolumn (文) : seltopcolumnint64  #lowerReturn, #upperReturn ;
 seltoplineno (文) : seltoplinenoint64  #lowerReturn, #upperReturn ;
 selendcolumn (文) : selendcolumnint64  #lowerReturn, #upperReturn ;
 selendlineno (文) : selendlinenoint64  #lowerReturn, #upperReturn ;
 selopenx     (文) : selopenxint64      #lowerReturn, #upperReturn ;
 selopeny     (文) : selopenyint64      #lowerReturn, #upperReturn ;
 
 クリップボード。
 selectcolumn (文) : selectcolumnint64 #lower区切り1, #upper区切り1, #lower区
 切り2, #upper区切り2 [ , #lower行1, #upper行1, #lower行2, #upper行2 ] ;
 
 ウィンドウ。
 screentopy  (文) : screentopyint64  #lowerReturn, #upperReturn ;
 screenleftx (文) : screenleftxint64 #lowerReturn, #upperReturn ;
 
 検索。
 foundtopx           (文) : foundtopxint64           #lowerReturn, #upperRetu
 rn ;
 foundtopy           (文) : foundtopyint64           #lowerReturn, #upperRetu
 rn ;
 foundendx           (文) : foundendxint64           #lowerReturn, #upperRetu
 rn ;
 foundendy           (文) : foundendyint64           #lowerReturn, #upperRetu
 rn ;
 colormarker         (文) : colormarkerint64         #文字色, #背景色, #スタ
 イル, #種類, #ユーザーデータ, $レイヤー名, #lower開始行, #upper開始行, #lowe
 r開始桁, #upper開始桁, #lower終了行, #upper終了行, #lower終了桁, #upper終了桁 ;
 deletecolormarker   (文) : deletecolormarkerint64   $レイヤー名, #ユーザー
 データ, #lower開始行, #upper開始行, #lower開始桁, #upper開始桁, #lower終了行,
 #upper終了行, #lower終了桁, #upper終了桁 ;
 colormarkerallfound (文) : colormarkerallfoundint64 #文字色, #背景色, #スタ
 イル, #種類, #ユーザーデータ, $レイヤー名, #lower開始行, #upper開始行, #lowe
 r開始桁, #upper開始桁, #lower終了行, #upper終了行, #lower終了桁, #upper終了桁 ;
 colormarkersnapshot (文) : colormarkersnapshotint64 #lower開始行, #upper開始
 行, #lower開始桁, #upper開始桁, #lower終了行, #upper終了行, #lower終了桁, #u
 pper終了桁, $レイヤー名 ;
 
 設定。
 width     (文) : widthint64     #lowerReturn, #upperReturn ;
 formwidth (文) : formwidthint64 #lowerReturn, #upperReturn ;
 
 レジストリ。
 writeininum  (文) : writeininumint64  $INIファイル名, $セクション名, $キー名,
 #lower, #upper ;
 writeininumw (文) : writeininumwint64 $INIファイル名, $セクション名, $キー名,
 #lower, #upper ;
 getininum    (文) : getininumint64    $INIファイル名, $セクション名, $キー名,
 #lowerReturn, #upperReturn ;
 getininumw   (文) : getininumwint64   $INIファイル名, $セクション名, $キー名,
 #lowerReturn, #upperReturn ;
 writeregnum  (文) : writeregnumint64  $値の名前, #lower, #upper ;
 // REG_QWORD値用。
 getregnum    (文) : getregnumint64    $値の名前, #lowerReturn, #upperReturn
 ; // REG_QWORD値用。
 
 アウトライン。
 rangeedittop     (文) : rangeedittopint64     #lowerReturn, #upperReturn ;
 rangeeditend     (文) : rangeeditendint64     #lowerReturn, #upperReturn ;
 outlineitemcount (文) : outlineitemcountint64 #lowerReturn, #upperReturn ;
 
 マクロ制御。
 enabledraw  (文) : enabledrawint64 #lowery, #uppery, #lowerx, #upperx ;
 
 ※パラメーターの#lower〜は下位32bit、#upper〜は上位32bit、〜Returnは出力値を
 受け取る変数。
 
 この例は主に文字数や文字の座標(lineno/columnなど)を64bit化した場合に、既存の
 文/関数/キーワードと
 同等のものを用意したものです。命名は既存のものに末尾にint64を付けています。
 また、元々1個の数値を
 返していた関数/キーワードは一度に#lower〜と#upper〜との2値を返さないといけな
 いため、getlinecount()の
 nReturnと同様な参照渡しパラメーターで値を受け取る文として再定義しました。
 
 これはあくまで当方で思いついた一例ですので、もっとスマートな方法があるかもし
 れません。
 
 
 
 | 
 |