範囲から外れる値を扱う必要がある場合は、文字列でやりとりすることで、エディションを問わない共通のマクロにすることができます。
例
js{ //数値型変数に渡すときは、どのエディションでも32bitの数値で最大 2147483647 最小 -2147483648 hidemaru.setVar("#intMax",2147483647); hidemaru.setVar("#intMin",-2147483648); //32bit版でも64bit版でも通常版でも浮動小数点数版でも超えたら0 hidemaru.setVar("#intMaxOver",2147483647+1); hidemaru.setVar("#intMinOver",-2147483648-1); //文字列化でOK hidemaru.setVar("$intMaxOver2",(2147483647+1).toString() ); hidemaru.setVar("$intMinOver2",(-2147483648-1).toString() ); //js内では、32bit版でも64bit版でも、数値は32bit超え可能(ただし通常52bitで、64bit全部はBigInt) hidemaru.setVar("$strOver32", (0xfffffffff*2).toString(16) ); //通常版でも浮動小数点数版でも "0.3333333333333333" hidemaru.setVar("$strFloat", 1/3 ); } message "" + str(#intMax)+"\n" //どのエディションでも2147483647 + str(#intMin)+"\n" //どのエディションでも-2147483648 + str(#intMaxOver)+"\n" //どのエディションでも0 + str(#intMinOver)+"\n" //どのエディションでも0 + $intMaxOver2+"\n" //どのエディションでも2147483648 + $intMinOver2+"\n" //どのエディションでも-2147483649 + $strOver32+"\n" //どのエディションでも1ffffffffe + $strFloat+"\n" //どのエディションでも0.3333333333333333 ;
例
js{ golineend2(); var s=gettext2(0,lineno(),linelen2(),lineno()); insert("\n"+eval(s.match( /((0x[0-9a-fA-F]+)|[ \t\-\+\*\/\.\(\)0-9])+/ )[0]) ); } endmacro; /* ↓この行で実行 4000*1.1 3.14159265359*12756.274*1000*1000 0xFFFFFFFF 0x1FFFFFFFFFFFFF */