簡単なプログラムを改造する

とりあえず簡単なプログラムを動かすでは画面の下にBTRONと表示しました。それではその代わりに「漢字」と表示させてみましょう。簡単ですね。

static	TC	mes01[] = {TK_B, TK_T, TK_R, TK_O, TK_N, TNULL};

static	TC	mes01[] = "漢字";

に変えればいいだけです。ですが、おや?それはおかしいですね。BTRON仕様OSではTRONコードを使わなければなりません。つまり、"漢字"の部分は(TC*)"\101\064\172\073\0"という風にしなければならないわけです。しかし、これは手動ではとてもやってられません。というわけで支援プログラムを使うことにします。

支援プログラムの利用

実は大した違いがあるわけではありません。次のようにすればよいだけです。

static	TC	mes01[] = L"漢字";

そして、このようなプログラムをmain.kとして保存します。main.cはこのL"漢字"の部分を(TC*)"\101\064\172\073\0"と変換したものとなります。一文字の場合は

static	TC	mes01 = L'漢';

のように''で囲みます。

変換プログラム wch2hex

パーソナルメディアから配布されている開発環境の中にetc/wch2hexという変換プログラムが入っています。しかし、これはなんだか腐っているので使いません。

変換プログラム mkp

というわけで、代わりにBTRONプログラミング課外授業のmkpを使います。etc/mkpに置きます。使い方は

mkp main.k > main.c

とします。このように変更したmain.cが動くかどうか確かめてみて下さい。

注記

このページではmkpを使っていますが、wch2hexを使うように順次書き換えていきます。腐れているのはwch2hexではなく私の方のようです。最終的にはwch2hexを使いますので御留意下さい。豊福さん御指摘ありがとうございます。


ちなみに、なぜwch2hexを使うべきかというと、たぶん二つの理由があって、(1)エンディアンの問題と(2)文字の結合、の二つが原因だと思います。(1)についてはすぐ分かると思うので、(2)について補足しておきます。

static  TC  mlist1[] = {
  MC_STR, L'表', L'示', 
  MC_STR, L'再', L'表', L'示', TNULL
};

のようなコードを1B時代には書いていたようですが、wch2hexならば、

static  TC  mlist1[] = {
  MC_STR, L"表示" |
  MC_STR, L"再表示"
};

のように書けるのですっきりします。(L"..."の文字列に付加される、末尾のTNULLを"|"(or)で打ち消すのがポイントですね。) 古いコード(1Bプログラミング道場)などでは、上のような冗長な方法をとっているようですが、メンテナンスしやすい後者を今後は使った方がよいと思います。


Tamakoshi Hiroki
Yashiro Takeshi <yashiromann@gmail.com>(ちょっとだけ補足)
Last modified: Tue Nov 26 21:01:23 JST 2002