No.80-1 |
役職名の書き換え |
回答者 西村 重幸 |
1998年07月 198号 P.23 |
◆ No.80(1998年 6月号)の回答-1
入力画面にこだわってみました。(質問とはかけ離れたかも?)
-
組合員CDから氏名、現職名を画面表示し、変更、脱退、新規処理する。
-
変更役職CDをスペースに変換削除し、新規役職CDを加える。
-
役職順序を編集し(ABC・・abc・・123・・の順に)、名簿に書込む。
-
役職CDは、アルファベット又は数字の1文字としています。
<TEST>
O;SORT用;2;;ESC;IR;S;H;20;P;S10; /*SORT用ページを作成し仮登録*/
CC;C/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],"│ │ │ │";
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;
|
|
|