home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
DOS/V Power Report 1998 January (DVD)
/
VPR980100.ISO
/
OLS
/
WIN32
/
KAKIMAC
/
KAKIMAC8.LZH
/
K_RENB10.MAC
next >
Wrap
Text File
|
1994-10-04
|
15KB
|
443 lines
//【マクロ名】 k_RenB10.mac by 水銀水(Suigwinsui)/小田 明夫 (HGD01603)
// 日本語文書作成支援「書きマクロ」シリーズ第8集「連番マクロ」Ver.1 #1/2
// 1994年10月04日(火曜日) 午後03時35分26秒
//【主な用途】 秀丸に、連番挿入機能を付加する。
//【使用対象】秀丸 for Windows 上で日本語文章を快適に処理したい全てのみなさま。
//【機能概略】(1)連番を挿入する。
// (2)深さ5までの連番(頭部・尾部・数字部全独立)で、16種類の番号を設定できる。
// (3)連番の反転/非反転を選択可能
// (4)重複連番を二重にチェック。(連番候補表示時は選択可能)。
// (5)将来の展開に柔軟に対応できる配慮。
//【マクロ構成】(k_RenB Ver.1 は全2マクロで構成)
// k_RenB10.mac……「連番マクロ」本体(実行&登録はこのマクロだけで良い)
// k_RenB1s.mac……従属マクロ(「連番マクロ」設定用マクロ)
// 各連番には、個別に表示番号を持つ[*1][*2][*3]ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹ[*1][*2]
// 連番全体の頭と尾に符号を付けられる
// 個別連番の頭と尾に符号を付けられる
// 連番の情報を記憶し、次回起動時には、最深連番が直前の1つ次にアップしている
// 連番決定時には、決定連番と重複する文字列があるかどうかをチェックして、重複情報を明示する(2段階設定可能)
$RIFn="k_renb11.kdf";
$RIF=hidemarudir+"\\kakimac\\"+$RIFn;//$Renban Information File = $RIF
call getFileOnly1;//file test (Limited Only <1> file on this version)
top:// for all start of this macro...//get initisal information
call getiniALL;
call TransDispRenban;
call SetDispRenban;
#x1=x;#y1=y;
if(!#RenCautionYN)call containsOnlyYN;
while(1){//main
moveto #x1,#y1;
insert $d[#RenLen];
if(#invertYN)disableinvert;
#ex=x;#ey=y;beginsel;
moveto #x1,#y1;
#ic=inputchar("●連番操作 [↑]昇番 [↓]降番 [←]縮節 [→]延節 [^s]設定 [Ret]決定 [Esc]破棄");
if(#ic==27){//.......[Esc]破棄
delete;
call endmacroNothingDo;
}else if(#ic==28){// [←]縮連 短(昇・縮)節
if(#RenLen==1)continue;
#RenLen=#RenLen-1;
delete;
}else if(#ic==30){// [→]延連 長(降・延)節
if(#RenLen==5)continue;
#RenLen=#RenLen+1;
delete;
}else if(#ic==29){// [↑]昇番
#BN[#RenLen]=#BN[#RenLen]+1;
call TransDispRenban;
call SetDispRenban;
delete;
}else if(#ic==19){// [^s]設定メニュー表示
delete;
execmacro "k_renb1s.mac";
goto top;
}else if(#ic==31){// [↓]降番
if(#BN[#RenLen]==1)continue;
#BN[#RenLen]=#BN[#RenLen]-1;
call TransDispRenban;
call SetDispRenban;
delete;
}else if(#ic==13){// [Ret]挿入位置決定/
call checkSameRenban ;
goto endmacroWritten;
}
if(!#RenCautionYN)call containsOnlyYN;
}
checkSameRenban:
$ScH=$d[#RenLen];
call contains;
return;
endmacroNothingDo:
escape;
endmacro;
endmacroWritten:
writeinistr $RIF,"BaseNumber","orgFile",filename;
writeininum $RIF,"BaseNumber","RenLen",#RenLen;
if(#RenLen==1){
writeininum $RIF,"BaseNumber","BN1",#BN[1]+1;
writeininum $RIF,"BaseNumber","BN2",1;
writeininum $RIF,"BaseNumber","BN3",1;
writeininum $RIF,"BaseNumber","BN4",1;
writeininum $RIF,"BaseNumber","BN5",1;
}else if(#RenLen==2){
writeininum $RIF,"BaseNumber","BN1",#BN[1];
writeininum $RIF,"BaseNumber","BN2",#BN[2]+1;
writeininum $RIF,"BaseNumber","BN3",1;
writeininum $RIF,"BaseNumber","BN4",1;
writeininum $RIF,"BaseNumber","BN5",1;
}else if(#RenLen==3){
writeininum $RIF,"BaseNumber","BN1",#BN[1];
writeininum $RIF,"BaseNumber","BN2",#BN[2];
writeininum $RIF,"BaseNumber","BN3",#BN[3]+1;
writeininum $RIF,"BaseNumber","BN4",1;
writeininum $RIF,"BaseNumber","BN5",1;
}else if(#RenLen==4){
writeininum $RIF,"BaseNumber","BN1",#BN[1];
writeininum $RIF,"BaseNumber","BN2",#BN[2];
writeininum $RIF,"BaseNumber","BN3",#BN[3];
writeininum $RIF,"BaseNumber","BN4",#BN[4]+1;
writeininum $RIF,"BaseNumber","BN5",1;
}else if(#RenLen==5){
writeininum $RIF,"BaseNumber","BN1",#BN[1];
writeininum $RIF,"BaseNumber","BN2",#BN[2];
writeininum $RIF,"BaseNumber","BN3",#BN[3];
writeininum $RIF,"BaseNumber","BN4",#BN[4];
writeininum $RIF,"BaseNumber","BN5",#BN[5]+1;
}
moveto #ex,#ey;
endmacro;
endmacroErace:
moveto #x1,#y1;beginsel;
moveto #ex,#ey;
delete;
endmacro;
containsOnlyYN:
$ScH=$d[#RenLen];
call CheckOnTarget;
#CheckOnTarget=##return;
call checkDownUp;
#checkDownUp=##return;
if(#CheckOnTarget==1||#checkDownUp==1){beep;
message "●重複連番のご注意!!! k_RenB Ver.1 水銀水\n"+
"━━━━━━━━━━━━━━━━━━━━━━━━━\n"+
"■重複連番="+$d[#RenLen]+
"\n━━━━━━━━━━━━━━━━━━━━━━━━━\n"+
"この連番は、この文書中の他の場所に既に存在しています。\n"+
"老婆心ながら、「警告設定中」ですので、ご注意まで.....(^^)\n"+
" なお、「設定」で「重複連番の警告をしない」に設定すると\n"+
" 「連番入力中」の重複候補の注意をしません。\n"+
" ただし、「確定時」の重複チェックは常時実行されます\n"+
" (C)1994 水銀水(Suigwinsui)/小田明夫(HGD01603)My Friend Office";
}
return;
contains:
containsTOP:
#GDN=0;#GUN=0;#Inner=0;#cKai=0;#GAN=0;
call CheckOnTarget;
#CheckOnTarget=##return;
call checkDownUp;
#checkDownUp=##return;
if(#CheckOnTarget==1&checkDownUp==0){goto endmacroWritten;}
#GDNd=#GDN;#GUNd=#GUN;
#GAN=#GDN+#GUN;
if(#CheckOnTarget){#Inner=1;#GAN=#GAN+1;}
#cKai=1;// checkKaisuu
while(1){containsW:beep;
#ic=inputchar("●重複検索中 "+$ScH+" "+str(#GAN)+"個 [↑]<"+str(#GUNd)+"> [↓]<"+str(#GDNd)+"> [^o]元所 [Ret]決定 [Esc]破棄");
if(#ic==13){escape;right;left;goto endmacroWritten;}
else if(#ic==27){call endmacroErace;message "escape and ending without doing anything...";}
else if(#ic==29||#ic==28 ){findup; #IdouHoukou=1;}
else if(#ic==31||#ic==30 ){finddown;#IdouHoukou=0;}
else if(#ic==15){
moveto #x1,#y1;goto containsTOP;
}
if(result){
if(#IdouHoukou){
if(#Inner){#GUNd=#GUNd-1;#GDNd=#GDNd+1;}
else{#Inner=1;if(#GDNd==0){#GUNd=#GUNd-1;#GDNd=0;}else{#GUNd=#GUNd-1;#GDNd=#GDNd;}}
}else{
if(#Inner){#GUNd=#GUNd+1;#GDNd=#GDNd-1;}
else{#Inner=1;if(#GUNd==0){#GUNd=0;#GDNd=#GDNd-1;}else{#GUNd=#GUNd;#GDNd=#GDNd-1;}}
}
}else {beep;}
else if(!result){beep;}
}
checkDownUp:
disabledraw;
moveto #x1,#y1;//right;
while(1){
searchdown $ScH;
if(result){#GDN=#GDN+1;##GNyn=1;}
else break;
}
moveto #x1,#y1;//right;
while(1){
searchup $ScH;
if(result){#GUN=#GUN+1;##GNyn=1;}
else break;
}
moveto #x1,#y1;
enabledraw;
return ##GNyn;
CheckOnTarget:
##xx=#x1;##yy=#y1;
##sLen=strlen($ScH);
$$conpC=gettext(##xx,##yy,##xx+##sLen,##yy);//Limited Target on 1 line
if($$conpC==$ScH)return 1;
else return 0;
SetDispRenban:// 無条件に全ての5連番に再代入
$d[1]=$SP1+$HR1+$t[1]+$TR1+$SP6;
$d[2]=$SP1+$HR1+$t[1]+$TR1+$SP2+$HR2+$t[2]+$TR2+$SP6;
$d[3]=$SP1+$HR1+$t[1]+$TR1+$SP2+$HR2+$t[2]+$TR2+$SP3+$HR3+$t[3]+$TR3+$SP6;
$d[4]=$SP1+$HR1+$t[1]+$TR1+$SP2+$HR2+$t[2]+$TR2+$SP3+$HR3+$t[3]+$TR3+$SP4+$HR4+$t[4]+$TR4+$SP6;
$d[5]=$SP1+$HR1+$t[1]+$TR1+$SP2+$HR2+$t[2]+$TR2+$SP3+$HR3+$t[3]+$TR3+$SP4+$HR4+$t[4]+$TR4+$SP5+$HR5+$t[5]+$TR5+$SP6;
return;
//-----------------------------------------------------------------------------------------------------
TransDispRenban:// for dispaly
call TransNum #TransType[1],#BN[1];
$t[1]=$$return;
call TransNum #TransType[2],#BN[2];
$t[2]=$$return;
call TransNum #TransType[3],#BN[3];
$t[3]=$$return;
call TransNum #TransType[4],#BN[4];
$t[4]=$$return;
call TransNum #TransType[5],#BN[5];
$t[5]=$$return;
//-----------------------------------------------------------------------------------------------------
TransNum:// translation BasicNumber to DisplayTypeNumber
##cn=##1;##bn=##2;
if(##cn==0){//半角数字へ
return str(##2);
}else if(##cn==1){//全角数字へ
call HS2ZS ##bn;
return $$return;
}if(##cn==2){//ローマ数字大文字へRomaSuuzi
call HS2RU ##bn;
return $$return;
}if(##cn==3){//ローマ数字小文字へRomaSuuzi
call HS2RL ##bn;
return $$return;
}if(##cn==4){//丸囲み数字MarukakomiSuuzi
call HS2MS ##bn;
return $$return;
}if(##cn==5){//漢数字、位なしHS2K1
call HS2K1 ##bn;
return $$return;
}if(##cn==6){//漢数字、位ありHS2K2
call HS2K2 ##bn;
return $$return;
}else if(##cn==8){//アルファベット(半角大文字).....
call HS2AHU ##bn;
return $$return;
}else if(##cn==9){//アルファベット(半角小文字).....
call HS2AHL ##bn;
return $$return;
}else if(##cn==10){//アルファベット(全角大文字).....
call HS2AZU ##bn;
return $$return;
}else if(##cn==11){//アルファベット(全角小文字).....
call HS2AZL ##bn;
return $$return;
}else if(##cn==12){//ひらがな(全角)...........
call HS2HZ ##bn;
return $$return;
}else if(##cn==13){//カタナカ(全角)...........
call HS2KZ ##bn;
return $$return;
}else if(##cn==14){//カタナカ(半角)...........
call HS2KH ##bn;
return $$return;
}else if(##cn==15){//ギリシャ数字(大文字)........
call HS2GU ##bn;
return $$return;
}else if(##cn==16){//ギリシャ数字(小文字)........
call HS2GL ##bn;
return $$return;
}
//-----------------------------------------------------------------------------------------------------
HS2ZS://半角数字を全角数字に
$$hansuu=str(##1);
##n=0;
##hslength=strlen($$hansuu);
$$rets="";
while(##n<##hslength){
if(midstr($$hansuu,##n,1)==" ")$$rets=$$rets+" ";
else $$rets=$$rets+char(ascii(midstr($$hansuu,##n,1))+33311);
##n=##n+1;
}
return $$rets;
HS2MS://丸囲み数字MarukakomiSuuzi 1-20 以外は、通常の半角数字
if(##1>=1<=20)return char(##1-1+0x8740);
else return str(##1);
HS2RU://ローマ数字大文字(Upper) RomaSuuzi 1-20 以外は通常半角表示
if(##1>=1<=10)return char(##1-1+0x8754);
else if(##1==11)return "ⅩⅠ";
else if(##1==12)return "ⅩⅡ";
else if(##1==13)return "ⅩⅢ";
else if(##1==14)return "ⅩⅣ";
else if(##1==15)return "ⅩⅤ";
else if(##1==16)return "ⅩⅥ";
else if(##1==17)return "ⅩⅦ";
else if(##1==18)return "ⅩⅧ";
else if(##1==19)return "ⅩⅨ";
else if(##1==20)return "ⅩⅩ";
else return str(##1);
HS2RL://ローマ数字小文字(Lower) RomaSuuzi 1-20 以外は通常半角表示
if(##1>=1<=10)return char(##1-1+0xeeef);//0xfa40
else if(##1==11)return "ⅹⅰ";
else if(##1==12)return "ⅹⅱ";
else if(##1==13)return "ⅹⅲ";
else if(##1==14)return "ⅹⅳ";
else if(##1==15)return "ⅹⅴ";
else if(##1==16)return "ⅹⅵ";
else if(##1==17)return "ⅹⅶ";
else if(##1==18)return "ⅹⅷ";
else if(##1==19)return "ⅹⅸ";
else if(##1==20)return "ⅹⅹ";
else return str(##1);
///////////////////
HS2K1://半角数字を漢数字(位表示なし)に。(ケタ数制限なし)(type1:123456:一二三四五六)。
$$zensuu=str(##1);
##hslength=strlen($$zensuu);
##n=0;
$$ks0="";
while(##n<##hslength){
$$ks1=midstr($$zensuu,##n,1);
if($$ks1=="1")$$ks1="一";
else if($$ks1=="2")$$ks1="二";
else if($$ks1=="3")$$ks1="三";
else if($$ks1=="4")$$ks1="四";
else if($$ks1=="5")$$ks1="五";
else if($$ks1=="6")$$ks1="六";
else if($$ks1=="7")$$ks1="七";
else if($$ks1=="8")$$ks1="八";
else if($$ks1=="9")$$ks1="九";
else if($$ks1=="0")$$ks1="〇";
$$ks0=$$ks0+$$ks1;
##n=##n+1;
}
return $$ks0;
///////////////////
HS2K2://半角数字を漢数字(位表示あり)に。(4ケタまで)(type1:1234:千二百三十四)。
$$zensuu=str(##1);
##ketasuu=strlen($$zensuu);
##n=0;
$$ks0="";
while(##n<##ketasuu){
##kurai=##ketasuu-##n;
$$ks1=midstr($$zensuu,##n,1);
if($$ks1=="1")$$ks1="一";
else if($$ks1=="2")$$ks1="二";
else if($$ks1=="3")$$ks1="三";
else if($$ks1=="4")$$ks1="四";
else if($$ks1=="5")$$ks1="五";
else if($$ks1=="6")$$ks1="六";
else if($$ks1=="7")$$ks1="七";
else if($$ks1=="8")$$ks1="八";
else if($$ks1=="9")$$ks1="九";
else if($$ks1=="0")$$ks1="〇";
if(##kurai==1){if($$ks1=="〇")$$ks1="";}//1 no kurai
else if(##kurai==2){if($$ks1=="〇")$$ks1="";else if($$ks1!="一")$$ks1=$$ks1+"十";else $$ks1="十";}//10 no kurai
else if(##kurai==3){if($$ks1=="〇")$$ks1="";else if($$ks1!="一")$$ks1=$$ks1+"百";else $$ks1="百";}//100 no kurai
else if(##kurai==4){if($$ks1=="〇")$$ks1="";else if($$ks1!="一")$$ks1=$$ks1+"千";else $$ks1="千";}//1000 no kurai
$$ks0=$$ks0+$$ks1;
##n=##n+1;
}
return $$ks0;
////--------------
HS2AHL://アルファベット(半角小文字)
if(##1>=1<=26)return char(##1-1+97);
else return str(##1);
HS2AHU://アルファベット(半角大文字)
if(##1>=1<=26)return char(##1-1+65);
else return str(##1);
HS2AZU://アルファベット(全角大文字)
if(##1>=1<=26)return char(##1-1+0x8260);
else return str(##1);
HS2AZL://アルファベット(全角小文字)
if(##1>=1<=26)return char(##1-1+0x8281);
else return str(##1);
HS2HZ://ひらがな(全角)
if(##1>=1<=83)return char(##1-1+0x829f);
else return str(##1);
HS2KZ://カタナカ(全角)
if(##1>=1<=87)return char(##1-1+0x8340);
else return str(##1);
HS2KH://カタナカ(半角)
if(##1>=1<=45)return char(##1-1+177);
else return str(##1);
HS2GU://ギリシャ文字(大文字)
if(##1>=1<=24)return char(##1-1+0x839f);
else return str(##1);
HS2GL://ギリシャ文字(小文字)
if(##1>=1<=24)return char(##1-1+0x83bf);
else return str(##1);
//////////////////////////////
getFileOnly1:
$$fNow=getinistr($RIF,"BaseNumber","orgFile");
if($$fNow==filename){
}else{
writeininum $RIF,"BaseNumber","BN1",1;
writeininum $RIF,"BaseNumber","BN2",1;
writeininum $RIF,"BaseNumber","BN3",1;
writeininum $RIF,"BaseNumber","BN4",1;
writeininum $RIF,"BaseNumber","BN5",1;
writeininum $RIF,"BaseNumber","RenLen",1;
}return;
//-----------------------------------------------------------------------------------------------------
getiniALL:
#BN[1]=getininum($RIF,"BaseNumber","BN1");if(#BN[1]==0)#BN[1]=1;
#BN[2]=getininum($RIF,"BaseNumber","BN2");if(#BN[2]==0)#BN[2]=1;
#BN[3]=getininum($RIF,"BaseNumber","BN3");if(#BN[3]==0)#BN[3]=1;
#BN[4]=getininum($RIF,"BaseNumber","BN4");if(#BN[4]==0)#BN[4]=1;
#BN[5]=getininum($RIF,"BaseNumber","BN5");if(#BN[5]==0)#BN[5]=1;
#TransType[1]=getininum($RIF,"BaseNumber","TransType1");
#TransType[2]=getininum($RIF,"BaseNumber","TransType2");
#TransType[3]=getininum($RIF,"BaseNumber","TransType3");
#TransType[4]=getininum($RIF,"BaseNumber","TransType4");
#TransType[5]=getininum($RIF,"BaseNumber","TransType5");
#OrgRenLen=getininum($RIF,"BaseNumber","RenLen");
if(#OrgRenLen==0)#OrgRenLen=1;
#RenLen=#OrgRenLen;
#invertYN=getininum($RIF,"BaseNumber","InvertYN");
#RenCautionYN=getininum($RIF,"BaseNumber","RenCautionYN");
$SP1=getinistr($RIF,"SP","SP1");
$SP2=getinistr($RIF,"SP","SP2");
$SP3=getinistr($RIF,"SP","SP3");
$SP4=getinistr($RIF,"SP","SP4");
$SP5=getinistr($RIF,"SP","SP5");
$SP6=getinistr($RIF,"SP","SP6");
$HR1=getinistr($RIF,"SP","HR1");
$TR1=getinistr($RIF,"SP","TR1");
$HR2=getinistr($RIF,"SP","HR2");
$TR2=getinistr($RIF,"SP","TR2");
$HR3=getinistr($RIF,"SP","HR3");
$TR3=getinistr($RIF,"SP","TR3");
$HR4=getinistr($RIF,"SP","HR4");
$TR4=getinistr($RIF,"SP","TR4");
$HR5=getinistr($RIF,"SP","HR5");
$TR5=getinistr($RIF,"SP","TR5");
return;