回答箱 No.84: 自動車の登録番号の数字だけを半角にしたい

  ◆ 質問箱No.84 質問者: 入川 精二  1998年09月 200号 P.28
      ◆ 質問箱 目次へ
No.84-1   自動車の登録番号の数字だけを半角にしたい 回答者
  西村 重幸
1998年10月
201号 P.14
   ◆ No.84(1998年 9月号)の回答-1

 ASCIIコードで処理しました。
 なお、蛇足ながら以前発表された区点変換プログラムも利用してみました。
 この区点コード変換を利用して、全角文字を暗証コードに使用しています。

<CAR>
  INPUT [9,9],"登録番号を入力  ",V1,U(JJJJJJJJJJJJJJJJJJJJJJJJ/AK/P・);
  ESC;
    LET V20=FORM$(V1,3);                               /* スペース削除  */
    CLEAR V9;                                                /*  表示文字列  */
  FOR X1=1 TO KLEN(V20);
    LET V2=KMID$(V20,%X1,1);                             /*1文字毎判断*/
$A1:                                                            /*区点の場合は$A2へ*/
 /**********************************************************************/
 /*****       1.ASCIIコードで検索した場                                               *****/
 /**********************************************************************/
       LET X2=ASCII(V2)*-1;                                        /* 正の整数に */
         IF X2>=32168 & <=32177 THEN LET V2=FORM$(V2,4); /* 数字コード */
           LET V9=V9+V2;
             CONTINUE;
$A2:
 /**********************************************************************/
 /*****       2.区点コードで検索した場合                                               *****/
 /**********************************************************************/
        LET V3=HEX$(ASCII(V2));
        LET V4=LEFT$(V3,2); LET Z4=DCML(HEXVAL(V4));       /* 上位2バイト  */
        LET V5=RIGHT$(V3,3);LET Z5=DCML(HEXVAL(V5));     /* 下位2バイト  */

     LET Z7=(Z4-128)*200+(Z5-158);
        IF Z5<DCML(HEXVAL("9F")) THEN LET Z7=Z7-6;
        IF Z5<DCML(HEXVAL("80")) THEN LET Z7=Z7+1;
        IF Z7>6299 THEN LET Z7=Z7-12800;
     LET V7=NUM$(Z7);IF LEN(V7)=3 THEN LET V7="0"+V7;

     IF V7>="0316" & <="0325" THEN LET V2=FORM$(V2,4);   /* 数字コード */
     LET V9=V9+V2;
   NEXT;
  DISP "→ ",V9;STOP;                                                   /* 画面表示   */


このページのTOPへ戻る