- ベストアンサー
Date型の適当な日付を秀丸マクロで作成したい
Oracle9iにinsertする適当なデモデータを秀丸のマクロで作成しようとしています。 例えば、04年の7月から9月までの3ヶ月間、実在する日付を適当に(ランダムに)作成することは可能ですか? 作成したい日付データの例 "04-07-12" "04-09-29" "04-08-01" ... お手数ですがご存知の方いらっしゃったらご教授をお願いします。
- みんなの回答 (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); // マクロ ここまで -------------------------------------------
その他の回答 (1)
- space_needle
- ベストアンサー率48% (174/362)
以前に調べた際、秀丸マクロに乱数生成機能はなかった、と記憶しています。 手元の秀丸のヘルプを見ても、そのような機能は見つけられませんでした。 本来であれば、Excelあたりで作れば楽なのですが・・・。
お礼
space_needleさん、度々ご回答有難うございました。 ご指摘の通り、エクセルでやると速いのですが、30万件のデータを作成することができないためやはりスクリプトを書くしかないようでした。 どうも有難うございました。
お礼
Bo_Boさん、有難うございました。 すごいですね、本当にできました。 処理の内容は理解できませんでしたが。。 大変助かりましたが、LinuxにはPerlというものが入っていたのでこちらでも勉強することにしました。 有難うございました。