nullデバイスは、/dev/null, /dev/zero, /dev/random, /dev/urandom を含むシステム目的のデバイスの集合で構成されます。
/dev/null はREADでnull文字列を返し、$ZEOFを設定します
/dev/random と /dev/urandom はREADでランダムな値を返し、$ZEOFを設定します
/dev/zero は READで0を返し、$ZEOFを設定しません
null デバイスは、すべての出力を破棄します。GT.M は、出力時のターミナルと同様にnullデバイスの仮想カーソル位置を維持します。プログラムのテストとデバッグのために、あるいは、特定の状況下で廃棄することをI/Oに許可するジョブのために、nullデバイスを使用してください。例えば、ジョブプロセスは、それらを使用しない場合でさえも、それに関連付けられた入力と出力デバイスを持っている必要があります。null デバイスは、オーバーヘッドが少ないけっして失敗しない I / Oの特定のクラスの選択肢です。
次の表は、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 デバイスの使用法の例が含まれています。
例:
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にエラーメッセージを送ります。