構文
次のような場合に当てはまります。
- os_command
- 有効なオペレーティング システムコマンドを表わす文字列。
使用上の注意
指定するオペレーティング システム コマンドは、使用されているオペレーティング システムで実行できる有効なコマンドでなければなりません。 複数のオペレーティング システム コマンドを使用するためには、OSコマンドを繰り返すか、別のプログラムに制御を渡すことができるオペレーティング システム コマンドを送ります。 このコマンドは、オペレーティング システムごとに異なります。
BTEQは最後に送信されたシステム コールの戻りコードを格納します。値を参照するには、SYSTEMRETURNCODEステータス キーワードを使用します。OSコマンドを使用して別のBTEQプロセス インスタンスを呼び出すと、その2次プロセスからの戻り値が呼び出しプロセスのSYSTEMRETURNCODE値として返されます。
SYSTEMRETURNCODEキーワードは、BTEQのすべてのフレーバーに対してIFコマンド条件で使用できますが、Windows BTEQを使用する場合はEXITコマンドでのみ有効です。
OSコマンドを使用すると、クローズされたエクスポート ファイルの中身全体を参照することができます。 この場合、見ようとするファイルの最後の数レコードが表示されない場合があります。ただし、ファイルが閉じていても、この表示されないレコードはファイルに転送されます。 これは、最後の数レコードがまだバッファにあり、ディスクに書き込まれていないために起こります。 (エクスポート ファイルのクローズに関する詳細は、EXPORTを参照してください。)
OSコマンドは、Teradata SQLマクロで使用できます。ただし、一度に使用できるコマンドは1つだけです。 (すなわち、OSコマンドを使用して、コマンド プロセッサやシェルに制御を移して実行することはできません。)
このコマンドは、I/OエンコードがUTF8またはUTF16の場合、ワークステーションBTEQではUTF-8エンコードでオペレーティング システムに発行されます。 OSコマンドでのマルチバイト文字の使用はサポートされていないため、予期しない結果になる場合があります。
例1 – ディレクトリ ファイルの表示
いずれかのOSコマンドを使用してディレクトリ内のファイルを表示するには、次のようにします。
- UNIXシステムの場合は、次のように指定します。
.OS ls
- Windowsの場合は、次のように指定します。
.OS DIR
例2 – UNIX
UNIXシステム コマンドのEXECUTE SHELLを使用してBTEQから退出し、[Control]+[D]でBTEQに戻ります。
例:
.OS exec s $ pg myfile.one $ cp oldfile newfile $ cd draft $ <cntrl>/<d>
例3 – Windows
Windowsでは、DOSコマンドのCOMMAND(2次コマンド プロセッサ)を使用してBTEQから退出し、EXITコマンドでBTEQに戻ります。
.OS command C> type b:myfile.one C> edlin b:myfile.one C> dir a: C> exit
例4 – マクロによって出力されるOS
Teradata SQLマクロでは、OSコマンドは次のように使用されます。
ECHO '.OS ls';
例5 – ウィンドウ タイトルの変更
Windows BTEQの複数のインスタンスがアクティブになっている場合は、各ウィンドウを区別できるように、.OSコマンドと共にDOSコマンドのTITLEを使用してコンソール ウィンドウのタイトル テキストをカスタマイズすることが可能です。 次の例では、デフォルトのタイトルをmach1に変更しています。
.OS TITLE mach1
例6 – OSの結果のテスト
次のIF...THEN...コマンドは、OSコマンドを使用して送信されたシステム コールが、0より大きい戻りコード値となったかどうかをテストするために使用できます。
.IF SYSTEMRETURNCODE != 0 THEN .GOTO notzero