Nullデバイスの使用

nullデバイスは、/dev/null, /dev/zero, /dev/random, /dev/urandom を含むシステム目的のデバイスの集合で構成されます。

null デバイスは、すべての出力を破棄します。GT.M は、出力時のターミナルと同様にnullデバイスの仮想カーソル位置を維持します。プログラムのテストとデバッグのために、あるいは、特定の状況下で廃棄することをI/Oに許可するジョブのために、nullデバイスを使用してください。例えば、ジョブプロセスは、それらを使用しない場合でさえも、それに関連付けられた入力と出力デバイスを持っている必要があります。null デバイスは、オーバーヘッドが少ないけっして失敗しない I / Oの特定のクラスの選択肢です。

Null デバイスパラメータの概要

次の表は、null デバイス用のデバイスパラメータの簡単な要約です。詳細については、 “Open”, “Use”, “Close” を参照してください。

Null デバイスパラメータ

デバイスパラメータ

コマンド

コメント

O:OPENコマンドに適用

U:USEコマンドに適用

C:CLOSEコマンドに適用

EXCEPTION=expr

O/U/C

デバイス特性のエラーハンドリングを制御nullデバイスでは、これが唯一のEOF処理なので、したがって、例外はREADによる場合を除いて呼び出されることはありません。

[NO]FILTER[=expr]

U

いくつかの $X, $Y をメンテナンスすることを制御

[Z]LENGTH=intexpr

U

仮想ページの長さを制御

[Z]WIDTH=intexpr

U

レコードの最大サイズを制御

[Z][NO]WRAP

O/U

最大幅より長い出力レコードのハンドリングを制御

X=intexpr

U

intexpr(整数式)に $X をセット

Y=intexpr

U

intexpr(整数式)に $Y をセット

Nullデバイスの例

このセクションでは、null デバイスの使用法の例が含まれています。

例:

GTM>do ^runrep
runrep;
 zprint ^runrep
 set dev="/dev/null"
 set hdr="********* REPORT HEADER ************"
 open dev use dev
 set x="" write hdr,!,$zdate($horolog),?30,$job,!
 for  set x=$order(^tmp($job,x)) quit:x=""  do REPORT
 quit
REPORT;
 ;large amount of code
 quit;

このプログラムは、グローバル変数 ^tmp 内の情報から派生したレポートを生成します。指定されていないルーチン REPORT は、潜在的に大量のコードが含まれていることがあります。基本的なプログラムの動作をエラーなしで確認するためには、プログラマは、機能を確認することを選んで、関与する出力を破棄する場合があります。プログラムを正常に実行するには、プログラマは変数devを他のデバイスの名前に変更するだけで、REPORTルーチンはdevデバイスに書き込みます。

例:

job ^X:(in="/dev/null":out="/dev/null":err="error.log")
JOB ^X:(IN="/dev/null":OUT="/dev/null":ERR="error.log") 

この例では、別のプロセス内のルーチン ^X を実行するためにGT.Mに JOBコマンドを発行します。このルーチンは、グローバル変数を大量に処理し、出力を生成しません。この例では、JOB起動プロセスは、nullデバイスから入力を受け取り、null デバイスに出力を送信します。もしJOB起動プロセスでエラーが発生した場合、それはerror.logにエラーメッセージを送ります。

inserted by FC2 system