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

   ◆ 質問箱 No.44  質問者:   罍 昭夫   1996年12月 179号 P.38
      ◆ 質問箱 目次へ
No.44-4    プログラムを短くしたい。 回答者
  高橋 周助
1997年02月
181号 P.28
質問箱 No.44(1996年12月号)の回答-4

 ■ 選択文字列が一定の場合:

 2文字の時 LET X2=VAL(V2);LET V3=KMID$("新規継続脱退途中年頭",2*X2-1,2);
 2文字の時 LET X2=VAL(V2);LET V3=KMID$("長谷川名古屋PUC123",3*X2-2,3);
 4文字の時                                                                                   4*X2-3,4
                                  :                                                             :
                                  :                                                             :

 ■ 選択する文字数が、一定していない場合:
   (ただし、文字の中に、半角数字が混入していないこと)
       LET X2=VAL(V2);
       LET V3="1PUC2ピップス3The PIPS4ウィンドウズ版 TPS5678910";
       LET V3=RIGHT$(V3,INSTR(1,V3,NUM$(X2  ))+1);
       LET V3= LEFT$(V3,INSTR(1,V3,NUM$(X2+1))-1);

 (文字列が10種類以上ある場合は、さらに一工夫する必要があります)

 ■ 動作確認用プログラムを、次頁に作っておきました。
    2文字の時        ..................<A1>
    3文字の時        ..................<A2>
    一定していない時 ..................<A3>

 <A1>   /*選択する文字数が、すべて文字の時*/
 $START:    CLOSE; DISP OPEN;
            INPUT [10,8],"番号選択(1〜5//0で終了)→  ",V2;
            LET X2=VAL(V2);
            IF X2=0 THEN GOTO $STP;
            IF X2<0 OR >5 THEN GOTO $START;
         LET V3=KMID$("新規継続脱退途中年頭"、2*X2-1,2);
         DISP [30,10],V3;
         INPUT [20,12],"了解したら、リターン",V4;
         GOTO $START;
 $STP:   CLOSE; STOP;

 <A2>   /*選択する文字数が、すべて3文字の時*/
 $START:    CLOSE; DISP OPEN;
            INPUT [10,8],"番号選択(1〜4//0で終了)→  ",V2;
            LET X2=VAL(V2);
            IF X2=0 THEN GOTO $STP;
            IF X2<0 OR >4 THEN GOTO $START;
         LET V3=KMID$("長谷川名古屋PUC123"、3*X2-2,3);
         DISP [30,10],V3;
         INPUT [20,12],"了解したら、リターン",V4;
         GOTO $START;
 $STP:   CLOSE; STOP;

 <A3>   /*選択する文字数が、一定していない時*/
        /*ただし、文字の中に、半角数字が混入していないこと*/
 $START:  CLOSE; DISP OPEN;
          INPUT [10,8],"番号選択(1〜4//0で終了)→  ",V2;
             LET X2=VAL(V2);
             IF X2<2 OR >4 THEN GOTO $START;
             IF X2=0 THEN GOTO $STP;
          LET V3="1PUC2ピップス3The PIPS4ウインドウズ版 TPS5678910";
          LET V3=RIGHT$(V3,INSTR(1,V3,NUM$(X2  ))+1);
          LET V3= LEFT$(V3,INSTR(1,V3,NUM$(X2+1))-1);
          DISP [30,10],V3;
          INPUT [20,12],"了解したら、リターン",V4;
          GOTO $START;
 $STP:    CLOSE; STOP;
戻る