文字および4文字タイプ

1バイト文字をASCIIコードで数値に変換するには、"CHAR"というプレフィックスを使います。例えば、
CHAR A
とすれば、実行時には文字Aに当たるASCII値(64)がスタックに積まれます。これは、ワードやメソッドが引数としてcないしcharを必要とするときに便利です。

なお、Mopsでは"CHAR"の簡約形として、"&"を使うことができます。つまり、
& A
とすれば上のコードと同値です。

ASCII文字は1バイトですから、その値を4つ並置すれば4バイトでちょうど1セル分になります(32ビットパソコンの場合)。Macintoshではこのように併置した4文字列をOSタイプとして頻繁に利用します。そこで、Mopsでは4文字列をASCII値の並置に変換するプレフィックスとして「'TYPE」が準備されています。例えば、
'TYPE TEXT
とすれば、実行時には、"TEXT"タイプに該当する値がスタックに積まれます。ツールボックス関数のパラメターとして使われることがあるでしょう。なお、"'TYPE"の頭の点はゴミや汚れではなく、ティック(tick : ASCII 39)と呼ばれる文字が先頭になければなりません。特に、全く異なる働きをするTYPEというワードも定義されているので、注意して下さい。

なお、iMopsでは 'TYPEはコンパイルモードでしか動作しません。ワード定義内で使用してください。

エンコードについて:
現在のところ、Mopsでは文字は1バイトのASCII文字であり、例えば、日本語の文字をユニコードエンコーディングで文字として扱うことはできないようです(少なくとも、私は、この機構が提供されているかどうか知りません。)。それをしたい場合、最も容易と思われるのは、OSが提供するエンコーディング転換ユーティリティを用いて、ワードセット、あるいはストリングクラスを書くことであると思われます。


関連項目:
-[[データスタック]]






最終更新:2019年11月20日 08:25