Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.Opens in a new tab

For information on migrating to InterSystems IRISOpens in a new tab, see Why Migrate to InterSystems IRIS?

ZREMOVE

現在のルーチンから行または行の範囲を削除します。

Synopsis

ZREMOVE:pc lineref1:lineref2
ZR:pc lineref1:lineref2

引数

pc オプション — 後置条件式
lineref1 オプション — 削除される単一行、または行の範囲の最初の行。lineref1 を省略すると、ZREMOVE はすべての現在のルーチンを削除します。
:lineref2 オプション — 削除される行の範囲の最後の行

概要

ZREMOVE コマンドは、現在のルーチンからルーチン行を削除します。ZREMOVE には、以下の 2 つの形式があります。

  • 引数なし

  • 引数付き

プログラマ・プロンプトから入力したり、XECUTE コマンドで呼び出したりする場合は、ZREMOVE コマンドのみ使用できます。このオペレーションはルーチンの実行に影響を与える可能性があるので、ルーチンの本体にコード化するべきではありません。

ルーチンのローカル・コピーだけが影響を受け、ディスクに保存されたルーチンは影響を受けません。変更されたコードを保存するには、ZSAVE コマンドを使用してルーチンを保存する必要があります。

引数なし

引数なしの ZREMOVE は、現在のルーチン全体を削除します。下記のターミナル・セッションでこの処理を示します。

USER>DO ^myroutine

USER>ZLOAD myroutine

USER>WRITE $ZNAME
myroutine
USER>ZREMOVE

USER>WRITE $ZNAME

USER>

引数付き

引数付きの ZREMOVE は、現在のルーチン内のコード行を削除します。ZREMOVE lineref1 は、指定された行を削除します。ZREMOVE lineref1:lineref2 は、最初の行参照で開始し、2 番目の行参照で終了する行の範囲を削除します。

下記のターミナル・セッションでこの処理を示します。この例では、各行がその行を指定する文字列に変数を設定するダミー・ルーチン (^myroutine) を使用します。

USER>DO ^myroutine

USER>ZLOAD myroutine

USER>PRINT +8
SET x="this is line 8"
USER>ZREMOVE +8

USER>PRINT +8
SET x="this is line 9"
USER>

引数

pc

オプションの後置条件式。Caché は、後置条件式が True (0 以外の数値に評価される) の場合にこのコマンドを実行します。Caché は、後置条件式が False (0 に評価される) の場合はコマンドを実行しません。詳細は、"Caché ObjectScript の使用法" の "コマンド後置条件式" を参照してください。

lineref1

削除する行、あるいは削除する行の範囲の最初の行。以下の形式のいずれかで指定することができます。

+offset ルーチン内の行番号を指定します。1 から始まる正の整数。
label ルーチン内のラベルを指定します。ZREMOVE は、ラベル行だけを削除します。これには、その行のラベルに続くすべてのコードが含まれます。
label+offset ラベル化されたセクション内で、ラベルとオフセットする行番号を指定します (ラベル行を行 1 としてカウントします)。

ラベルは、31 文字よりも長くすることができますが、最初の 31 文字は一意である必要があります。ZREMOVE は、指定された label の最初の 31 文字のみと一致します。ラベル名では大文字と小文字が区別され、Unicode 文字を含めることができます。

lineref1 を使用することで、削除する単一のコード行を指定できます。ルーチンの先頭からのオフセットとして (+lineref1)、または指定したラベルからのオフセットとして (module2+lineref1) コード行を指定します。

  • ZREMOVE +7 : ルーチンの先頭から数えて 7 番目の行を削除します。

  • ZREMOVE +0 : 何も処理を行わず、エラーも生成しません。

  • ZREMOVE +999 : 999 がルーチン内の行数よりも大きい場合は、何も処理を行わず、エラーも生成しません。

  • ZREMOVE Test1 : ラベル行 Test1 を削除します。

  • ZREMOVE Test1+0 : ラベル行 Test1 を削除します。

  • ZREMOVE Test1+1 : ラベル行 Test1 の後の最初の行を削除します。

  • ZREMOVE Test1+999 : ラベル行 Test1 の後の 999 番目の行を削除します。この行は、別のラベル化されたモジュール内にある場合があります。999 がラベル Test1 からルーチンの最後までの行数よりも大きい場合は、何も処理を行わず、エラーも生成しません。

ラベルは、行オフセット内でコード行としてカウントされます。空白行は、行オフセット内でコード行としてカウントされません。コメントは、行オフセット内でコード行としてカウントされませんが、例外が 1 つあります。;; で区切られた単一行のコメントは、行オフセットの目的でコード行としてカウントされます。

lineref2

削除する行の範囲の最後の行。lineref2 は、lineref1 で使用されるいずれかの形式で指定します。必ず、前にコロン (:) を付ける必要があります。

行の範囲は +lineref1:+lineref2 として指定します。ZREMOVE は、行の範囲 (lineref1 および lineref2 を含む) を削除します。lineref1lineref2 が同一行を指している場合、ZREMOVE は、その単一行を削除します。

lineref2 がルーチン・コード内で lineref1 よりも先に出現する場合は、何の処理も実行されず、エラーも発生しません。例えば、ZREMOVE +7:+2ZREMOVE Test1+1:Test1ZREMOVE Test2:Test1 では、何の処理も実行されません。

このコマンドは、現在のルーチン内の 4 番目の行を削除します。

   ZREMOVE +4

このコマンドは、ラベル Test 1 の後の 6 番目の行を削除します。

   ZREMOVE Test1+6

このコマンドは、現在のルーチンの 3 番目から 10 番目までの行を削除します。

   ZREMOVE +3:+10

このコマンドは、現在のルーチン内で、ラベル行 Test1 からその直後の行までを削除します。

   ZREMOVE Test1:Test1+1

このコマンドは、現在のルーチン内で、ラベル Test1 からラベル Test2 までのすべての行を両方のラベルを含めて削除します。

   ZREMOVE Test1:Test2

関連項目

FeedbackOpens in a new tab