その引数で指定された行のソーステキストを返します。
$TEXT関数のフォーマット:
$T[EXT](entryref)
entryref は、$TEXT() が返すソース行のラベル、オフセット、ルーチン(またはトリガー名)を指定します。
もし label+offset の組み合わせがルーチン内に収まっていない場合は、$TEXTは、null 文字列を返します。
entryrefが明示的または暗黙的にルーチンの先頭(またはトリガ名)からゼロ(0)のオフセットを指定する場合、$TEXT() はルーチン名またはトリガ名を返します。
entryref がルーチン/トリガを指定していない場合、GT.Mは現在のルーチン/トリガ、つまりZSHOW "S" の先頭にあるルーチン/トリガを引き継ぎます。
GT.Mの拡張仕様では$TEXT() の負のオフセットを許可しますが; しかしながら、すべてのオフセットには、まだプラス記号(+)デリミタ(例えば、LABEL+-3)を付ける必要があります。もしゼロ行より前への行に負のオフセットポイントは、$TEXT() は実行時エラーを生成します。
$TEXT() は、ルーチンのソースコードと現在のルーチンまたはトリガーの名前を調べるためのツールを提供します。$TEXT() は、ZPRINTコマンドと共に、デバッグするプログラムを支援します。 $TEXT() はルーチンへのドライバ情報の小さなテーブルを挿入も可能です。$TEXT() は、あまり効率的ではないことと、テーブル駆動型の手法が一般的には最小限のプログラム変更に最高に適しているため、このアプローチはプロトタイピング版でベストの選択として使用され、テーブルは、プロダクション(本番環境)版ではグローバル変数に配置する必要があります。
もし$TEXT() が現在のオブジェクトのソースファイルにアクセスできない場合、それがコンパイルされた場所にはないのか、あるいは、プロセスがソースへのパスのいくつかの部分へのアクセス権を持っていないかのどちらかなので、または、もし検索されるソースがプロセスで現在使用中のオブジェクトと一致しない場合、$TEXT() は空の文字列を返します。
例:
for i=1:1 set x=$text(+i) quit:x="" write !,x
このループは、現在のルーチン全体のソースを書き出すために$TEXT() を使用しています。
例:
GTM>write $text(+0) GTM$DMOD GTM>write $text(+1) GTM>
これは、現在のルーチンの名前をWRITEするために$TEXT()を使用し、それがソースにアクセスしようとし、空の文字列を返します。デフォルトのダイレクトモードのイメージはFISによってコンパイルされるのでこれが発生し、そして、ソースなしで配信されます。正確なエラーメッセージは異なる場合があります。