回答箱 No.63: 読みを入力するだけでフリガナと漢字の両方を書きこみたい
        ◆ 質問箱 No.63 質問者:  罍 昭夫  1997年10月 189号 P.19
            ◆ 質問箱 目次へ
No.63-1   読みを入力するだけでフリガナと漢字の両方を書きこみたい 回答者
  内海 孝
1997年11月
190号 P.26
   ◆ No.63(1997年 10月号)の回答-01
   ご要望の通りの入力方法は、PIPSでは、なかなか難しいと思います。
そこでATOKの「誤って確定したときは[Ctrl]+[BackSpace]キーを押して、確定前の状態に戻すことが出来る」を使ってフォーム入力でやったことがありますので、オートにしてみました。

  1 <KK>
  2 $S:  G;名簿/E;IC;S;@フリガナ;14*2;姓カナ漢;名カナ漢;ATR;I;H;2,3;ATR;P;L;2,3;
 3    DISP OPEN(1,1,80,1)/N,COLOR(G),
           "終了はNOでQ;[ESC]。カナ確定直後[Ctrl]
              +[BackSpace]変換; ;[ESC],最終列入力後[ESC]";
  4 $SS:  MT;ENTRY;
  5     LET V40=[T,@NO ];IF V40="Q" THEN GOTO $EX;
  6     LET V1=[T,@姓カナ漢 ];LET X2=KLEN(V1);IF X2=0 THEN LET X2=1;
  7     FOR X1=1 TO X2; LET V2=KMID$(V1,X1,1);IF LEN(V2)=2 THEN BREAK;NEXT;
  8     LET V3=KLEFT$(V1,X1-1);LET V4=KRIGHT$(V1,X1);
  9     LET V6=[T,@名カナ漢 ];LET X3=KLEN(V6);IF X3=0 TH田LET X3=1;
 10     FOR X1=1 TO X3;LET V7=KMID$(V6,X1,1);IF LEN(V7)=2 THEN BREAK;NEXT;
 11     LET V8=KLEFT$(V6,X1-1);LET V9=KRIGHT$(V6,X1);
 12     LET V10=V3+" "+V8;LET V11=V4+" "+V9;
                   LET [T,@フリガナ ]=V10;LET [T,@氏名 ]=V11;
 13     WR;T;@AAA;ENTRY;
 14     LET X4=T;IF X4=13 THEN GOTO $MSG;
 15     GOTO $SS;
 16 $EX:  CLOSE;DR;T;;DC;2,3;;P;*;
 17 STOP
 18 $MSG: CLOSE;BELL;LET V5=[T,@NO ];
 19     DISP OPEN(20,29,80,29)/N,COLOR(R,RV),"ページを更新します。NO=",V5;
              SLEEP 3;CLOSE;DC;2,3;;P;*;P;N;DR;A;;P;*;GOTO $S;

   終了はNOでQ;[ESC]。カナ確定直後〔Ctrl+[BackSpace]変換; ;[ESC]最終列入力後[ESC]
画面図のような簡単な名簿バインダーでテストしました。

 
 2   : 『姓カナ漢』のような項目列は、プログラム実行中だけに使うことにしました。
 3   : 終了方法と、変換確定前に戻し方を表示。
 4   : ENTRY文を使ってMT指令で入力します。[ESC]キーで以下のプログラムが働きます。
 5   : NO列にQを入力して[ESC]すると、EXに飛んで、不要な行と列を削除して終了します。
 6,8  : V1に『カナ漢』のデータを格納、FOR NEXTでV1は何番目から、2バイト文字になっている
     かをチェック、カナ部をV3に漢字部をV4に格納
 9,11  : 同様に、『名カナ漢』のカナ部をV8に漢宇部をV9に格納。
 12   : カナ部をV10に、漢字部をV11にまとめ、『フリガナ』には姓と名の間隔を1バイト『氏名』に
     は姓と名の間隔を2バイトにして書き込みます。
 13   : 再度ENTRY文のWR指令で、氏名以降のデータを書き込みます。
 14,15 : 最終列で[ESC]キーを押した時の行が最終行であれば、MSGにとんで、ページを更新します。
     最終行でなければSSに飛んで、次のデータを入力します。
 16   : 不要な行と列は削除して、登録します。
 18,19 : 「ページを更新します。前ページのNO」を表示して、次ページを作成します。


このページのTOPへ戻る