ナンバーリングの印刷で、面付けの番号を計算します。
10,000を4面付けで印刷する場合、1〜、2500〜、5000〜、7500〜のように2500ずつの小間で印刷すれば後工程が楽になります。
このような計算をするためのソースコードです。
便宜上は/ 乗算Xは*で表してあります
"KAISHI NO"?->S #開始番号 "MENTUKE "?->M #面付け数 "JISSUU "?->J #実数 While (J-(M*Int(J/M))) #面付けで割ったときに余りが0になるように実数を増やす J+1->J WhileEnd J / M->T #実数/面付け=通し数 Cls For 1->I To M I - 1 ->P S + T * P ->P 1=K P=>1+Int(Log(P))->D #桁数 I-(2*Int(I/2)) -> X #x座標 0:右 1:左 (I+1) / 2 -> Y #Y座標 X=1=>Locate 7-D,Y,P X=0=>Locate 16-D,Y,P Next If Y<4 then Locate 1,4,"print-suu=" Locate 11,4,J IfEnd
注意することは、伝票などで、面付け数で割り切れない場合は実数を増やします。
例えば50枚綴り50冊で4面付けの場合 25004=625枚です、50枚綴りですから650枚あれば都合が良いので、逆算して52冊出来る事になります。
ナンバーリングは50x52冊2600で計算させます
use strict; my ($kaishi_no,$mentsuke,$jissuu); print("印刷用ナンバーリングの面付けを計算します\n数値で入力します\n"); do{ print ("\n 開始番号?"); $kaishi_no = <>; chomp($kaishi_no); }while($kaishi_no eq ""); do{ print ("\n 面付け数?"); $mentsuke= <>; chomp($mentsuke); }while($mentsuke eq ""); do{ print ("\n 小数枚数?"); $jissuu = <>; chomp($jissuu); }while($jissuu eq ""); my @num_array; while ($jissuu - ($mentsuke * int($jissuu / $mentsuke))){ $jissuu++; } my $men_num=$jissuu / $mentsuke; print ("---------------------------\n"); for (my $i=0; $i<$mentsuke; $i++){ $num_array[$i] =$kaishi_no + $men_num * $i; } print("開始番号:$kaishi_no 面付け数:$mentsuke 小数枚数:$jissuu 印刷通し数:$men_num\n"); foreach my $nn (@num_array){ print "$nn\n"; } print("----------------------------\n");