No.44-2 |
プログラムを短くしたい。 |
回答者 早瀬 壮一 | 1997年01月 180号 P.20 |
質問箱 No.44(1996年12月号)の回答-2
キーを頼りにデータを取り込む方法は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;
|
|