Cachéのプログラミング言語の機能の1つとして文字列を数値化する方法として変数名、リテラルなどの表現式の前に+演算子を付加する方法が用意されているのを、知っている方は結構おられると思います。
しかし、この方法では数値化後、その値はキャノニック(canonic)形式に変換されます。
キャノニックはとても翻訳しにくい単語の一つですが、意味としては、余計なものを省いた最も基本的な統一的表現くらいのニュアンスです。
(正確ではないかもしれません。)
要するに例えば少数点を含む数字を表現する方法として0.1や.1は同じ値を表しています。
通常の常識では0.1が普通に小数点を含む数字表現と考えると思いますが、Caché(というか前身のMUMPS)は元々の設計思想として節約を是とするという考えがあり、
.1という表現が最も効率の良い表現形式としてキャノニック形式として採用されています。
従って、+演算子で変換された数値には、常識的に不都合な形式で値が返されるケースがあります。
これに対する対処法はいろいろあると思いますが、1つの汎用的な方法として$ZSTRIP関数を使う方法があります。
例
write $zstrip("ABC-0.100g(トク)","*E",,".0123456789-")
この方法を使うと前にある文字列も除去して数値部分だけを取り出すこともできます。