|
● kan2arabic.mac
// ---------------------------------------------------------------
kan2arabic:
// 選択範囲の漢数字を算用数字に変換する。
// '万'以上の桁を代入。1文字のみ有効。大きな桁は左側。京 > 兆 > 億 > 万
// '萬'は内部処理で'万'にしている。
$KETA = "垓京兆億万";
// ---------------------------------------------------------------
if( ! selecting ) endmacro;
if( $KETA=="" ) $KETA="垓京兆億万";
if( #KETASIZE==0 ) #KETASIZE = strlen($KETA)/2;
##tx = seltopx; ##ty = seltopy;
##ex = selendx; ##ey = selendy;
escape;
moveto ##ex, ##ey; insert " ";
moveto ##tx, ##ty;
// ------------------------------
// 一桁の零を認める場合。例 負債総額 零円
// if( code == '零' ){ delete; insert "0"; return 1; }
// ------------------------------
##num = 0; ##sum = 0;
##i = 0;
while( ##i < #KETASIZE ){
##keta[##i] = 0;
##i = ##i + 1;
}
while( code != ' ' )
{
if( code == '壱' ){
delete; insertfix "一";
}else if( code == '弐' ){
delete; insertfix "二";
}else if( code == '参' ){
delete; insertfix "三";
}else if( code == '萬' ){
delete; insertfix "万";
}else if( code == '拾' ){
delete; insertfix "十";
}
$$ch = char(code);
##k = strstr( "一二三四五六七八九", $$ch );
if( ##k != -1 ){
if( ##num ){
moveto ##ex, ##ey; delete;
moveto ##tx, ##ty;
endmacro;
// return 0; // 無効。
}
##num = (##k / 2) + 1;
}else{
// ここのエラー処理は面倒だ。
##k = strstr( "十百千", $$ch );
if( ##k != -1 ){
##k = (##k / 2) + 2; // みそ。
##k = val( leftstr("1000",##k) );
if( ##num == 0 ) ##num = 1;
##sum = ##sum + (##num * ##k);
##num = 0;
}else{
##k = strstr($KETA,$$ch);
if( ##k == -1 ){
moveto ##ex, ##ey; delete;
moveto ##tx, ##ty;
endmacro;
// return 0; // 無効。
}
##k = (##k / 2);
##keta[##k] = ##sum + ##num;
##sum = 0; ##num = 0;
}
}
right;
}// end of while( code != ' ' )
// ------------------------------
##num = ##sum + ##num;
// ------------------------------
moveto ##tx, ##ty; beginsel;
moveto ##ex, ##ey; right; // space
delete;
// ------------------------------
// $KETA = "垓京兆億万";
##i = 0;
while( ##i < #KETASIZE ){
if( ##keta[##i] ) break;
##i = ##i + 1;
}
if( ##i < #KETASIZE ){
insert str(##keta[##i]);
##i = ##i + 1;
while( ##i < #KETASIZE ){
##tmp = ##keta[##i];
insert rightstr("0000"+str(##tmp),4);
##i = ##i + 1;
}
insert rightstr("0000"+str(##num),4);
}else{
insert str(##num);
}
moveto ##tx, ##ty;
endmacro;
// return 1;
// kansuuji2arabicnumerals
// ---------------------------------------------------------------
● kan2arabic.mac の使い方。
(1) kan2arabic.mac を秀丸マクロフォルダにコピーする。
(2) 変換したい漢数字を選択して、kan2arabic.mac を実行する。
これは、目で確認して使うタイプ。
つづく。
|
|