ZLOAD
Synopsis
ZLOAD:pc routine ZL:pc routine
引数
pc | オプション — 後置条件式。 |
routine | オプション — ロードされるルーチン。省略される場合、Caché は現在のデバイスからルーチンをロードします。 |
概要
ZLOAD コマンドは、ObjectScript ルーチンをルーチン・バッファにロードします。ZLOAD には、以下の 2 つの形式があります。
-
引数なしの ZLOAD
-
引数付きの ZLOAD
引数なしの ZLOAD
引数なしの ZLOAD は、ObjectScript ルーチンを、現在のデバイスからユーザのルーチン・バッファにロードします。デバイスからルーチンをロードするには、以下を実行します。
-
デバイスを開くための OPEN コマンド
-
デバイスを現在のデバイスにするための USE コマンド
-
引数なしの ZLOAD コマンド
Caché が NULL 文字列行 ("") を読み取るまで、行のロードを継続します。ロードされたこのルーチンは、ZSAVE コマンドで保存するまで名前がありません。
引数付きの ZLOAD
ZLOADroutine は、指定された (既存の) ルーチンを、現在のネームスペースからユーザのルーチン・バッファにロードします。
ZLOAD は、ルーチンをロードするときに暗黙的に引数なしの ZREMOVE を実行します。つまり、ZLOAD はロードされたルーチンを書き込むときに、以前ロードされたすべてのルーチンを削除します。$ZNAME 特殊変数で、現在ロードされているルーチンを判別できます。ルーチンをロードすると、ZLOAD は、ルーチンの先頭で行ポインタを配置します。
一度ロードされると、ユーザが別のルーチンを ZLOAD コマンドで明示的にロードするか、あるいは DO コマンドや GOTO コマンドで暗示的にロードするまで、ルーチンは現在のユーザ・プロセスのままです。
ルーチンが現在のものである限り、(ZINSERT および ZREMOVE コマンドで) ルーチンを編集し、ZPRINT コマンドで行を 1 行以上表示したり、$TEXT 関数で単一行を返すことができます。
プログラマ・プロンプトから入力したり、XECUTE コマンドまたは $XECUTE 関数で呼び出したりする場合は、ZLOAD コマンドのみ使用できます。このオペレーションはルーチンの実行に影響を与える可能性があるので、ルーチンの本体にコード化するべきではありません。ルーチン内で ZLOAD を指定すると、コンパイル・エラーが返されます。また、ルーチンから ZLOAD を実行しようとしても、エラーが生成されます。
引数
pc
オプションの後置条件式。Caché は、後置条件式が True (0 以外の数値に評価される) の場合にこのコマンドを実行します。Caché は、後置条件式が False (0 に評価される) の場合はコマンドを実行しません。詳細は、"Caché ObjectScript の使用法" の "コマンド後置条件式" を参照してください。
routine
ロードされるルーチン名。ルーチン名は、大文字と小文字を区別します。指定されたルーチンが存在しない場合、システムは <NOROUTINE> エラーを生成します。
ZLOAD を可能にするために routine への実行許可を持つ必要があります。この許可がない場合は、Cache は <PROTECT> エラーを生成します。
ZLOAD が routine のロードに成功すると、その後のすべてのエラーは現在ロードされているルーチンの名前を追加します。これは、エラーがルーチンと関係があるかどうかにかかわらずネームスペース全体にわたって実行されます。詳細は、"$ZERROR" 特殊変数を参照してください。
例
以下のターミナルの例では、ディスクに保存されているルーチン ROUT をロードします。
USER>ZLOAD ROUT
以下のターミナルの例では、デバイス dev から最初のルーチンをロードします。
USER>OPEN dev
USER>USE dev
USER>ZLOAD
メモ
ZLOAD でのルーチンの振る舞い
routine を指定する場合、Caché はメモリ内のルーチン・バッファのプールのルーチンを検索します。ルーチンがない場合、Caché はルーチンの ObjectScript オブジェクト・コード・バージョンをバッファの 1 つにロードします。ObjectScript ソース (中間) コードは、現在のネームスペースの ^ROUTINE グローバルに残りますが、編集を行って編集結果を保存した場合には更新されます。
例えば、ZLOAD Test は (まだロードされていない場合に) ルーチン Test のオブジェクト・コード・バージョンをロードします。管理ポータルを使用して、^ROUTINE グローバルの内容を表示し、編集することができます。システム, グローバル オプションを選択し、左側の列のリストから現在のネームスペースを選択します。
routine を省略した場合、Caché は、ユーザが NULL 行を入力する (つまり、[Return] を押す) ことでコードを終了するまで、現在のデバイスから (通常はキーボードから) 入力した新しいコード行をロードします。このルーチンは、次の ZSAVE コマンドで保存するまで名前がありません。
ZLOAD と言語モード
ルーチンがロードされるとき、現在の言語モードはロードされたルーチンの言語モードに変換されます。呼び出されたルーチンの終了時、言語モードは呼び出し元のルーチンの言語モードに復元されます。しかし、ZLOAD でロードされたルーチンの終了時、言語モードは前の言語モードに復元されません。言語モードの確認と設定の詳細は、%SYSTEM.ProcessOpens in a new tab クラスの LanguageMode()Opens in a new tab メソッドを参照してください。