• ベストアンサー

Date型の適当な日付を秀丸マクロで作成したい

Oracle9iにinsertする適当なデモデータを秀丸のマクロで作成しようとしています。 例えば、04年の7月から9月までの3ヶ月間、実在する日付を適当に(ランダムに)作成することは可能ですか? 作成したい日付データの例 "04-07-12" "04-09-29" "04-08-01" ... お手数ですがご存知の方いらっしゃったらご教授をお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Bo_Bo
  • ベストアンサー率65% (97/149)
回答No.2

以下のマクロはどうですか!? ただし、何の根拠もない処理をしているので、『何でこうなの?』と突っ込 まないでくださいね。 【注意】  投稿用に、全角空白のインデントを用いています。  マクロ部分をコピーした後、全角空白1個を半角空白2個に  置き換えてください。 // マクロ ここから ------------------------------------------- // 2004年限定 #m[0] = 31; #m[6] = 31; #m[1] = 29; #m[7] = 31; #m[2] = 31; #m[8] = 30; #m[3] = 30; #m[9] = 31; #m[4] = 31; #m[10] = 30; #m[5] = 30; #m[11] = 31; call ChkMonth val( input("開始月を入力") ); if( ##return == 0 ) {   message "不正な数値!";   endmacro; } #start = ##return; call ChkMonth val( input("終了月を入力") ); if( ##return == 0 || ##return < #start ) {   message "不正な数値!";   endmacro; } #stop = ##return; newfile; disabledraw; #i = #start; while( #i <= #stop ) {   #months = #m[#i - 1];   #d = 1;   while( #d <= #months )   {     $buff = str(tickcount % (lineno * 99)) + ":04-";     call SetNumCol #i;     $buff = $buff + $$return + "-";     call SetNumCol #d;     insert $buff + $$return + "\n";     #d = #d + 1;   }   #i = #i + 1; } selectall; run "sort.exe" + " <con >con"; replaceall "^[^:]+:", "", regular; gofiletop; enabledraw; endmacro; ChkMonth:   if( ##1 < 1 || ##1 > 12 ) return 0; return ##1; SetNumCol:   if( ##1 < 10 ) return "0" + str(##1); return str(##1); // マクロ ここまで -------------------------------------------

rio_grande
質問者

お礼

Bo_Boさん、有難うございました。 すごいですね、本当にできました。 処理の内容は理解できませんでしたが。。 大変助かりましたが、LinuxにはPerlというものが入っていたのでこちらでも勉強することにしました。 有難うございました。

その他の回答 (1)

回答No.1

以前に調べた際、秀丸マクロに乱数生成機能はなかった、と記憶しています。 手元の秀丸のヘルプを見ても、そのような機能は見つけられませんでした。 本来であれば、Excelあたりで作れば楽なのですが・・・。

rio_grande
質問者

お礼

space_needleさん、度々ご回答有難うございました。 ご指摘の通り、エクセルでやると速いのですが、30万件のデータを作成することができないためやはりスクリプトを書くしかないようでした。 どうも有難うございました。

関連するQ&A