入川氏+丸岡氏=ネットワーク改良版

     ◇   罍 昭夫  
         ◇ 事例/お薦めプログラムの目次へ
《DOSマシーンでFORMが使えません》
 弊社も、若手社員が入ってきて機械の増設を余儀なくされました。購入するときに悩みました。高価だけれども、<FORM>が使える機械がよいか? 安価で将来増設し易い機械がよいか。
 結論は、後者を選びました。将来、もしかすると<FORM>が使えるかも知れない。そうしたら、ラッキーだと思えばよいじゃないか。とりあえずは、プログラムを組むのがめんどうでも、FORMに似せる事は出来るのだから、と時代の流れに乗りました。
 みなさん、それぞれ御家の事情が違うでしょうが、スーパーPIPSよりもThe PIPSの方が遥かに使い勝手がいいですからどんどん新しいものにチャレンジして頂きたいと思います。
 そんな思いも込めて、報告致します。

《改良点》
  1. プログラムを登録してあるキャビネットに,UNIONを設定しました。
  2. プログラムのキャビネットとデータのキャビネットを別々にしました。
    USEINF(3)を使用していますので、同じキャビネットに混在していますとキャビネット使用不能になります。
  3. IUSE から IEND までの時間を、できるだけ短くしました。
  4. USEINF の3(読み書き可能)を使用しました。
        X変数=1 ------- キャビネット使用可能
        X変数=0 ------- キャビネット使用不能
  5. 次のデータを読むためにその都度 MENUを呼んでいましたが、MENU画面をDISP文で消去する方法にしました(アクセスしなくて済むし、この方が早い)。

《プログラムの手順》
THE PIPS 147号の7〜8頁と比較してください。
行数 内容
1行目
SET の F で設定します。
13〜15行目 "$読み"の中にあったのを、移動しました。IUSE から IENDまでを、できるだけ短くするためです。
16行目 IUSE する前に <USEINFCHK> でチェックします。
17行目 INDEX を OPEN します。
18行目 該当する共済NO の有無をチェックします。
22行目 共済NOがなければ、DISP文を表示します。
28行目 バインダーBANKMの項目 @# に#がなければ、“$読み”に行きます。
31行目 バインダーBANKMの項目 @# に#があれば、他のクライアントが更新中です。
36行目 IREAD で項目を読み込む前に @# に#を書き込みます。
もし、他の人が本人の使用している共済NOを入力すれば、@# に#があり、"更新中"のメッセージが表示されます。
37行目 まとめて IREAD をします。
39行目 INDEX を END します。
END しないとそのキャビネットを他の人が使用できなくなります。
57行目 質問の画面になります。
ダミー表に、IREAD で項目を読み込ませ画面上での訂正にします。
92行目 SET を解除します。
102行目 IUSE する前に <USEINFCHK> で チェックします。
104行目 まとめて IWRITE をします。
106行目 INDEX を END します。
END しないとそのキャビネットを他の人が使用できなくなります。
108行目 MENU画面 を DISP文 で消去します。
MENU画面 を G するより速いです。

《おわりに》
 147号にネットワークの事例を発表させていただいてから、入川氏に何度も弊社にご足労を煩わせまして,ご協力頂き大変感謝しております。
 また、ソードテレフォンサービスの皆様、ご協力頂き大変感謝しております。

  1 《プログラム》
  2        SET/N;F;;3;1;4;5;;;
  3        LET X40=99;
  4        DISP OPEN(1,1,80,22)/N;
  5        GOSUB H/KANRI:USEINFCHK;
  6        MENU/N/A;G;H/KANRI:2;ESC;
  7        LET V21="H/KANRI1:BKIND";
  8 $始:   DISP [01,21],SP50,COLOR(Y);
  9        DISP [55,03],"** 変更画面 **";
 10        DISP [58,21],"[ESC]=終了",COLOR(W);
 11        INPUT [14,07],V1,U(C:NNNN);
 12        IF ERR(0)=55  THEN GOTO $終了;
 13        G;H/KANRI:口座変更ダミー/1;
 14        LET [4,@共済]=V1;
 15        LET Z2=TODAY;LET V5=NUM$(Z2);LET V6=MID$(V5,3,6);
 16        GOSUB H/KANRI:USEINFCHK;
 17        IUSE V21;ISEARCH V21,V1;
 18        IF ERR(0)=34 THEN GOTO $無 ELSE GOTO $更新;
 19
 20 $無:   IEND V21;
 21        DISP [01,21],SP70;
 22        DISP [01,21],COLOR(R), "該当する共済NO ",V1," は存在していません";
 23        DISP COLOR(W);CLEAR V1;
 24        BELL;SLEEP 5;GOTO $始;
 25
 26 $更新:
 27        IREAD V21,V2=@# ;
 28        IF V2="" THEN GOTO $読み;
 29        IEND V21;
 30        DISP [01,21],SP70;
 31        DISP [01,21],COLOR(M), "共済NO ",V1,"は更新中ですので、呼び出せません!!";
 32        DISP COLOR(W);CLEAR V1;
 33        BELL;SLEEP 5;GOTO $始;
 34
 35 $読み:
 36        IWRITE V21,@# ="#";
 37        IREAD V21,V2=@氏名 ,V3=@支部 ,V4=@班 ,V6=@入力日 ,V7=@預金者名 ;
 38        IREAD V21,V8=@銀行名 ,V9=@支店名 ,V10=@ヨ ,V11=@預金 ,V12=@口座NO ,V13=@備考 ;
 39        IEND V21;
 40
 41        LET [4,@氏名]=V2;    LET [4,@支部]=V3;   LET [4,@班]=V4;    LET [4,@入力日]=V6;
 42        LET [4,@預金者名]=V7;LET [4,@銀行名]=V8; LET [4,@支店名]=V9;LET [4,@ヨ]=V10;
 43        LET [4,@預金]=V11;   LET [4,@口座NO]=V12;LET [4,@備考]=V13;
 44
 45        DISP [22,07],V2, U(%(STRING$(60,16)));
 46        DISP [41,07],V3, U(%(STRING$(60,04)));
 47        DISP [50,07],V4, U(%(STRING$(60,02)));
 48        DISP [59,07],V6, U(%(STRING$(60,06)));
 49        DISP [26,09],V7, U(%(STRING$(60,30)));
 50        DISP [26,11],V8, U(%(STRING$(60,24)));
 51        DISP [26,13],V9, U(%(STRING$(60,24)));
 52        DISP [26,15],V10,U(%(STRING$(60,01)));
 53        DISP [30,15],V11,U(%(STRING$(60,04)));
 54        DISP [26,17],V12,U(%(STRING$(60,07)));
 55        DISP [26,19],V13,U(%(STRING$(60,04)));
 56
 57 $質問: DISP [01,21],SP70;
 58        CLEAR V2,13;
 59        INPUT [16,21],"番号で訂正(1-5),[RETURN]=登録,[ESC]=キャンセル ",V10,COLOR(Y),U(X/AS);
 60        IF ERR(0)=55 THEN GOTO $取消;
 61        IF V10=""    THEN GOTO $登録;
 62        IF 1<=VAL(V10) AND VAL(V10)<=6 THEN GOTO $%V10X;
 63        IF VAL(V10)<0  OR  VAL(V10)>6  THEN GOTO $AAA;
 64 $AAA:  BELL;GOTO $質問;DISP [03,22],SP60;
 65
 66 $1X:  LET V2=[4,@預金者名];
 67       INPUT [26,09],V2,U(%(STRING$(74,30))/AF/RY);        /* 預金者名 */
 68       LET [4,@預金者名]=V2;GOTO $質問;
 69
 70 $2X:  LET V2=[4,@銀行名];
 71       INPUT [26,11],V2,U(%(STRING$(74,24))/AK/RY);        /* 銀行名   */
 72       LET [4,@銀行名]=V2;GOTO $質問;
 73
 74 $3X:  LET V2=[4,@支店名];
 75       INPUT [26,13],V2,U(%(STRING$(74,24))/AK/RY);        /* 支店名   */
 76       LET [4,@支店名]=V2;GOTO $質問;
 77
 78 $4X:  DISP  [30,15],SP4;
 79       INPUT [26,15],V2,U(%(STRING$(74,01))/AS);           /* 預金種目 */
 80       IF V2<>"1" AND V2<>"2" THEN GOTO $4X;
 81       IF V2="1" THEN LET V3="普通";IF V2="2" THEN LET V3="当座";
 82       DISP [30,15],COLOR(W),V3,U(%(STRING$(60,04)));
 83       LET [4,@ヨ]=V2;LET [4,@預金]=V3;GOTO $質問;
 84
 85 $5X:  INPUT [26,17],V2,U(C:%(STRING$(78,07))/AS/P*);      /* 口座番号 */
 86       LET [4,@口座NO]=V2;GOTO $質問;
 87
 88 $6X:  LET V2=[4,@備考];
 89       INPUT [26,19],V2,U(%(STRING$(88,04))/AS/RY);        /* 備考     */
 90       LET [4,@備考]=V2;GOTO $質問;
 91
 92 $終了:SET;F;M;4;0;;;
 93       CLOSE;STOP
 94
 95 $登録:
 96       DISP [16,21],COLOR(Y),"                     登 録 中",COLOR(W);
 97       CLEAR V2,13;
 98       LET V2=[4,@入力日];LET V3=[4,@預金者名];LET V4=[4,@銀行名];
 99       LET V5=[4,@支店名];LET V6=[4,@ヨ];       LET V7=[4,@預金];
100       LET V8=[4,@口座NO];LET V9=[4,@備考];
101
102       GOSUB H/KANRI:USEINFCHK;
103       IUSE V21;ISEARCH V21,V1;
104       IWRITE V21,@入力日 =V2,@預金者名 =V3 ,@銀行名 =V4 ,@支店名 =V5;
105       IWRITE V21,@ヨ =V6 ,@預金 =V7 ,@口座NO =V8 ,@備考 =V9 ,@# ="";
106       IEND V21;
107
108 $画面消去:
109       DISP [22,07],SP16,[41,07],SP4, [50,07],SP2, [59,07],SP6;
110       DISP [26,09],SP30,[26,11],SP24,[26,13],SP24,[26,15],SP1;
111       DISP [30,15],SP4, [26,17],SP7, [26,19],SP4;
112       GOTO $始;
113
114 $取消:IUSE V21;ISEARCH V21,V1;IWRITE V21,@# ="";IEND V21;
115       GOTO $画面消去;
116
117《USEINFCHK》
118       LET V20="H/KANRI1";    /*##### V21:サーバーのキャビネット名 #####*/
119
120 $#1: LET X2=USEINF(3,V20);
121      IF X2=1 THEN GOTO $#3;
122 $#2: DISP COLOR(Y),[01,21],"キャビネットは使用中";
123      GOTO $#1;
124 $#3: DISP [01,21],SP20;
125      RETURN;


このページのTOPへ戻る