【 質問箱 No.80 回答 】その1. ⇒⇒⇒⇒ 質問箱 No.80(98年 6月号)の趣旨 質問者:罍 昭夫 <役職名の書き換え> 回答者:西 村 重 幸 /* 労組役員名簿編集 サンプルPRO */ O;SORT用;2;;ESC;IR;S;H;20;P;S10; /*SORT用ページを作成し仮登録*/ CC;A/PUC; /*作業キャビネットに移動*/ G/F;名簿/1; $START:G/S;S10; /*SORT用ページをサブ画面へ*/ LET V1="労組役員名簿編集PRO"; DISP OPEN(40,1,80,29),COLOR(Y),[11,2],V1,COLOR(C); $氏名: DISP [3,4], "┌────┬───────┬───┐"; DISP [3,5], "│組合員CD│ 氏名 │ 確認 │"; DISP [3,6], "├────┼───────┼───┤"; DISP [3,7], "│ │ │ Y/N │"; DISP [3,8], "└────┴───────┴───┘"; DISP [3,9]," 終了=ESC"; INPUT [6,7],X1,U(NNNN);IF ERR(0)=55 THEN GOTO $終了; LET V19=NUM$(X1); RINDEX "NAME",V19,V1=C4,V2=C6; /*氏名・役職CDを検索*/ IF ERR(0)=34 OR LEN(V1)=0 THEN GOTO $ダメ; DISP [14,7],V1,[14,10],SP20;GOTO $確認; /*氏名を表示*/ $ダメ: DISP [14,10],"該当者はいません";GOTO $氏名; $確認: INPUT [32,7],V10,U(F:R);IF V10="N" OR "n" THEN GOTO $氏名; $役職: DISP [3,9], "┌─┬─────┐┌─┬─────┐"; DISP [3,10],"│CD│ 役 職 名 ││CD│ 役 職 名 │"; DISP [3,11],"├─┼─────┤├─┼─────┤"; LET V10="│ │ ││ │ │"; FOR X2=12 TO 20;DISP [3,X2],V10;NEXT; DISP [3,X2+1],"└─┴─────┘└─┴─────┘",COLOR(G); DISP [3,X2+2],"┌───────┐┌───────┐"; DISP [3,X2+3],"│ ││ │"; DISP [3,X2+4],"└───────┘└───────┘",COLOR(C); DISP [3,X2+5]," (変更 [脱退=z]) ( 新規 )"; DISP [3,X2+7],COLOR(C,RV),"[Esc]=次へ",COLOR(G); $画面表示: LET V2=FORM$(V2,3); /*スペースの削除*/ LET X10=LEN(V2);IF X10=0 THEN GOTO $新規; /*役職なし */ LET V11=V2;LET X11=5;LET X12=4; /*SUB用設定 */ CLEAR V21,30;GOSUB 編集; $変更: INPUT [5,X2+3],V8,U(EEEEEEE);IF ERR(0)=55 THEN GOTO $新規; LET X10=LEN(V8); IF X10=0 THEN GOTO $新規; FOR X5=1 TO X10;LET V5=MID$(V8,X5,1); /*役職CD */ IF V5="z" THEN GOTO $脱退; LET X7=INSTR(1,V2,V5);IF X7=0 THEN CONTINUE; /*座標 */ DISP COLOR(W,RV),[5,X7+11],V5,[7,X7+11],V%(X7+20); /*表示*/ NEXT; $削除: S;FOR X5=1 TO X10;LET V5=MID$(V8,X5,1); /*SORT用ページ*/ LET V12='"'+V5+'"';CU;M;%V12;" ";;Y; /*退任CDをスペースに置換*/ NEXT;S; $新規: DISP COLOR(Y); INPUT [23,X2+3],V9,U(EEEEEEE);IF ERR(0)=55 THEN GOTO $確認2; LET X10=LEN(V9); IF X10=0 THEN GOTO $確認2; LET V11=V9;LET X11=23;LET X12=14;GOSUB 編集; /*SUB用設定 */ $確認2:INPUT [14,X2+7],"確 認 0=了解 1=キャンセル ",X39,COLOR(Y),U(F:N/P/); DISP [14,X2+7],SP25;IF X39=0 THEN GOTO $新役; G/S;S10;CLEAR V8,9;DISP COLOR(C);GOTO $役職; /*役職CDの初期化*/ $新役:S; /*SORT用ページ */ SORT/S;;1;A;;; NF;S;1;1/1; /*役職CD SORT */ SRC; /*行列入替 */ NF;J;1,T;LET V9=[H,1]; /*新役職CD取込*/ WINDEX "NAME",V19,C6=V9;GOTO $継続; /*新役職CD書込*/ $脱退: WINDEX "NAME",V19,C4=" ",C6=" "; /*名簿を空欄に*/ $継続: G/F;名簿/1; /*結果を確認 */ INPUT [14,X2+7],"処 理 0=継続 1=終了 ",X39,COLOR(Y),U(F:N/P/); IF X39=0 THEN GOTO $START; $終了: CLOSE;STOP; <編集> FOR X5=1 TO X10;LET V5=MID$(V11,X5,1); RINDEX "YAKU",V5,V6=C4 /* 役職名取込 */ IF ERR(0)=34 THEN GOTO $ナシ; DISP [X11,X5+11],V5,[X11+2,X5+11],V6; /*役職名画面表示*/ IF X11=23 THEN GOTO $数字; LET V%(X5+20)=V6; /* 役職名記憶 */ $数字: IF ASCII(V5)<=57 THEN LET V7="z"+V5 ELSE LET V7=V5; /*数字CD*/ LET {X5+X12,1}=V7;CONTINUE; /*SORT用ページヘ書込*/ $ナシ: DISP [X11,X5+11],V5,[X11+2,X5+11],"?????"; NEXT;RETURN;