1 <NAME> 【 Ver.01 Rev.01X 19971028 】
2 **************************************************************************/
3 /* V1 姓名のカナ */
4 /* V2 姓のカナ */
5 /* V3 名のカナ */
6 /* V4 検索した姓または名の漢字 */
7 /* V5 表示のための文字("姓"か"名") */
8 /* V11 姓漢字と名漢字を合成した文字列(目的の姓名漢字) */
9 /* V12 確定した姓(漢字) */
10 /* V13 確定した名(漢字) */
11 /* V20 INPUT文の受け皿(姓または名選択の番号) */
12 /* V22 検索した姓または名から選択した漢字 */
13 /* V30 INPUT文の受け皿(Y or N) */
14 /* V33 表示のための検索データの1行の文字列 */
15 /* X1 検索データ(サブバッファ)の行番号 */
16 /* X21 入力表の行番号 */
17 /* X30 メッセージ表示の行番号 */
18 /* X31 辞書から検索したデータの番号 */
19 /* X32 検索データ表示の行番号 */
20 /* X33 表示のための検索データの行番号の初期値 */
21 /* X34 姓または名の検索データ(サブバッファ)の行番号 */
22 /*************************************************************************/
23
24 IUSE "JISHO:SEI"; IUSE "JISHO:MEI";
25 DISP OPEN(1,2,80,ENV(6)-3);
26 $SS: G;氏名入力/1;
27 LET X21=H; /* 入力表の行番号 */
28 $入力: LET X30=4; /* メッセージ表示の行番号 */
29 $入力2: DISP COLOR(C),[05,X30],"姓名(半角カナ)は?";
30 INPUT [25,X30],V1,U(XXXXXXXXXXXXXX/AF/CY/P/); /* 姓名のカナ */
31 $CHK01: IF ERR(0)=55 THEN GOTO $END; /* [ESC]が押された */
32 $CHK02: IF INSTR(2,V1," ")=0 THEN GOTO $入力2;/* 区切りのスペースがない*/
33 LET X30=X30+2;
34 LET [X21,@カナ ]=V1; /* 入力表に書込む */
35 /*## 姓の辞書検索 ##*/
36 $姓: LET V2=LEFT$(V1,INSTR(1,V1," ")-1); /* 姓のカナ */
37 G/S;氏名検索/1;
38 ISEARCH "JISHO:SEI",V2; /* 姓辞書を検索 */
39 LET X31=1; /* 検索辞書データの最初の番号 */
40 FOR X1={H} TO {T};
41 $SREAD: IREAD "JISHO:SEI",V4=@姓漢字 ; /* 該当する漢字を読込む */
42 $SWRITE: LET {X1,@No. }=NUM$(X31); /* 番号の書込 */
43 LET {X1,@辞書 }=V4; /* 姓の書込 */
44 $SNEXT: INEXT "JISHO:SEI"; /* 次候補の検索 */
45 IF ERR(0)=36 THEN BREAK; /* 該当する姓なければ終り */
46 LET X31=X31+1;
47 NEXT;
48 LET V5="姓"; GOSUB DISP; /* 表示のためのサブプログラムへ */
49 LET V12=V22; /* 確定した姓 */
50
51 CLEAR V4/22;
52 /*## 名の辞書検索 ##*/
53 $名: LET V3=RIGHT$(V1,INSTR(1,V1," ")+1); /* 名のカナ */
54 G/S;氏名検索/1;
55 ISEARCH "JISHO:MEI",V3; /* 名辞書を検索 */
56 LET X31=1; /* 検索辞書データの最初の番号 */
57 FOR X1={H} TO {T};
58 $MREAD: IREAD "JISHO:MEI",V4=@名漢字 ; /* 該当する漢字を読込む */
59 $MWRITE: LET {X1,@No. }=NUM$(X31); /* 番号の書込 */
60 LET {X1,@辞書 }=V4; /* 名の書込 */
61 $MNEXT: INEXT "JISHO:MEI"; /* 次候補の検索 */
62 IF ERR(0)=36 THEN BREAK; /* 該当する名なければ終り */
63 LET X31=X31+1;
64 NEXT;
65 LET V5="名"; GOSUB DISP; /* 表示のためのサブプログラムへ */
66 LET V13=V22; /* 確定した名 */
67 /*## 姓名の書込 ##*/
68 LET V11=V12+" "+V13; /* 姓漢字と名漢字の合成 */
69 DISP COLOR(C),[05,X30],"姓名漢字 = ",COLOR(Y),V11;
70 LET X30=X30+2;
71 LET [X21,@漢字 ]=V11; /* 漢字姓名を書込む */
72 $継続?: DISP COLOR(C),[05,X30],"入力を続けますか?";
73 LET X30=X30+1;
74 DISP [15,X30],"はい[Y],いいえ[N] [Enter]=Y ";
75 INPUT [44,X30],V30,U(E/AS/CY/P/);
76 IF ERR(0)=55 THEN GOTO $END;
77 IF V30="" THEN LET V30="Y";
78 IF INSTR(1,"YyYy",V30)=0 THEN GOTO $END;
79 $継続: LET X21=X21+1; DISP CLR; GOTO $入力;
80 $END: CLOSE; STOP;
81
82
83 <DISP>
84 FOR X34=1 TO 3;
85 DISP COLOR(G),[55,X34],{L%X34};
86 NEXT;
87 LET X32=4; /* 表示行番号 */
88 LET X33=4; /* サブバッファの行番号 */
89 $SS: FOR X34=X33 TO X33+19;
90 $読込: LET V33={L%X34};
91 IF {X34,@辞書 }="" THEN BREAK;
92 $表示: DISP COLOR(G),[55,X32],V33;
93 LET X32=X32+1;
94 NEXT;
95 DISP COLOR(G),[55,X32]," └───────┘";
96
97 $選択?: DISP COLOR(C),[05,X30],"何番のデータ? [+]=UP, [-]=DOWN";
98 INPUT [44,X30],V20,U(EEE/AS/CY/P/);
99 IF V20="+" THEN GOTO $+;IF V20="-" THEN GOTO $-;
100 IF IVAL(V20)>0 THEN GOTO $選択; GOTO $選択?;
101
102 $+: IF {X34,@辞書 }="" THEN GOTO $選択?;
103 FOR X32=4 TO 24; DISP [55,X32],SP20;NEXT;
104 LET X33=X33+20; LET X32=4; GOTO $SS;
105
106 $-: IF X33=4 THEN GOTO $選択?;
107 FOR X32=4 TO 24; DISP [55,X32],SP20; NEXT;
108 LET X33=X33-20; LET X32=4; GOTO $SS;
109
110 $選択: LET X30=X30+2;
111 LET V22={@%V20 ,@辞書 };
112 DISP COLOR(C),[05,X30],V5,"の漢字 = ",COLOR(Y),V22;
113 LET X30=X30+2;
114 FOR X32=1 TO 24; DISP [55,X32],SP20; NEXT;
115 RETURN;
|