回答箱 No.44-2:   プログラムを短くしたい。

   ◆ 質問箱 No.44   質問者:  罍 昭夫   1996年12月 179号 P.38
      ◆ 質問箱 目次へ
No.44-2   プログラムを短くしたい。 回答者
  早瀬 壮一
1997年01月
180号 P.20
  質問箱 No.44(1996年12月号)の回答-2

AB
 1新規
 2継続
 3脱退
 4途中
 5年頭
   キーを頼りにデータを取り込む方法はPIPSに色々あります。インデックス、バリアブルプログラム、リファレンスリード・・  そういえばバッファに表を置きキー列を参照列にして    LET V3=[@%V2,@B]    とすることもできますね。
   そんな中でインデックスも使わず、オート登録もしないで使える昔なつかしいリファレンスを使ってみました。昔インデックスがなかった時代、インデックスの代わりによく使ったものです。

 <TEST2>
         DISP OPEN(1,1,80,26)/N;
 $質問:  LET Z1=1;
         DISP [01,21],SP80;CLEAR V24;
         DISP [01,22],SP80;
         DISP [01,22],"NOで訂正[1-12] [RETURN]=次の修正 [ESC]=前の質問";
         INPUT [65,22],V24,COLOR(Y),U(XX/AS)
         IF ERR(0)=55 THEN RETURN;
         IF V24="" THEN GOTO $次の修正;
         IF 1<=VAL(V24) AND VAL(V24)<=12 THEN GOTO $%V24;
         IF VAL(V24)<1 OR VAL(V24)>2 THEN GOTO $もう一度;
 $:もう一度: BELL;GOTO $質問;DISP [01,22],SP80;

 $3:     LET  V2=[4,@ク];
         INPUT [53,03],V2,U(%(STRIN$(78,01))/AS/RY/P//CY);
 /********************************************************************/
         REFR "今月の回答箱/1",V3=<%('"'+V2+'"')>;  /* リファレンス処理 */
         IF ERR(0)<>0 THEN GOTO $3; /* リファレンスデータにないときの処理 */
         GOTO $区分表示;
 /********************************************************************/
 $区分表示:   DISP [1,1],V3;GOTO $3;
 $次の修正:
          STOP;
戻る