No.56-1 |
区点コードを知りたい |
回答者 高橋 周助 |
1997年07月 186号 P.29 |
◆ No.56(1997 06月号)の回答-01
区点コードは、単純に!6進数を10進数に変換しても、割り出せません。
もともと、シフトした時に、いくつかのブロックに分けられているので、そのブロックに応じた戻し方をしなければなりません。
なぜこうなるかについては、割愛します。PIPSユーザーにとっては、役に立たない知識だと思います。ただ、回答を出さないと、無用な悪戦苦闘の泥沼に落ち込む方がいないとも限らないと思った次第です。
それよりも、このプログラムがどんな使われ方をするのか、教えてください。
普通は、文字が入力できないために、コードを調べるわけですが、文字が入力できた後にコードを知る必要性は、どのような時に発生するのですか?
1 <KUTEN>
2 /*********** A.文字を入力 *****************************************/
3 $カクニン: DISP OPEN(1,1,80,ENV(6)一3)/N; DISP COLOR(Y);
4 DISP [20,06],"★ シフトJISコードを求める文字は? [ESCキー]=中止 ★";
5 INPUT [20,08],"→ ",V1,U(JJ/AH);
6 IF ERR(0)=55 THEN GOTO $終了;
7 IF KLEN(V1)<> THEN GOTO $カクニン;
8 /*********** B.シフトJISコードを取得 ***********************************/
9 LET V3=HEX$(ASCH(V1));
10 DISP [20,12],"シフトJISコードは ",V3;
11 LET Z3=65536+DCML(ASCII(V1));
12 DISP [20,14],"シフトJISコードの10進数 ",Z3;
13 /***** シフトJISコードの前1バイト ********************************/
14 LET V4=LEFT$(V3,2); LET Z4=DCML(HEXVAL(V4));
15 /***** シフトJISコードの後1バイト ********************************/
16 LET V5=RIGHT$(V3,3); LET Z5=DCML(HEXVAL(V5));
17 /*********** C.区点コードを割り出す*************************************/
18 LET Z7=(Z4-128)*200+(Z5-158);
19 IF Z5<DCML(HEXVAL("9F")) THEN LET Z7=Z7-6; / *-164*/
20 IF Z5<DCML(HEXVAL("80")) THEN LET Z7=Z7+1; / *-163*/
21 IF Z7>6299 THEN LET Z7=Z7-12800;
22 LET V7=NUM$(Z7); IF LEN(V7)=3 THEN LET V7="0"+V7;
23 DISP [20,16],"区点コードは ",V7;
24 INPUT [20,201,"了解したら、リターンキーを押す。",V1;
25 GOTO $カクニン;
26 /*********** Z.終わり *********************************************/
27 $終了:CLOSE; STOP;
□
|
|
| |