Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

9.209 SYSTEM_COMMAND

Note
title注意

 9.1 組み込み関数の規則     利用オプション

オペレーティング・システムのコマンドを実行します。 

...

  • この組み込み関数を使用することによって、ファンクションにオペレーティング・システムへの依存性が生まれます。 
    アプリケーション設計者は、この組み込み関数を使用することに関して全責任を負います。また、この組み込み関数を使用した場合、異なるオペレーティング・システム間(または、同じオペレーティング・システムの異なるバージョン間でも)に可搬性があることは、明示黙示を問わず保証されません。

  • この機能を使用して、X_RUNのエントリー・ポイントを呼び出さないでください。この機能は、別のX_RUNプロセスを開始または引き起こすために使用することはできますが、そのプロセスを再帰的に呼び出すために使用することはできません。

  • Windows プラットフォームにおいては、原則として、コマンド実行オプションについて、最初に"X"オプションを試し、希望どおりにコマンドが処理されなかった場合に"S"オプションを使用するようにしてください。 実行オプションの概要は以下の通りです。

    • "X" オプションを指定すると、すべてのプラットフォームでコマンドが同期実行されるため、"X"オプションを使用することをお勧めします。このオプションを使用すると、LANSAファンクションはコマンドが実行されている間待機します。Windows Desktop Heap Managementが有効な場合、作成されるプロセスは、完全にWindows Desktop Heap Managementによって制御されます。上記以外の場合、作成されるプロセスは、親のデスクトップ・ヒープを使用します。戻りコード2は、コマンドが見つからないか、または依存DLLが見つからないことを示します。IBM i およびLinuxにおいては、このオプションは、"S" オプションと同じように実行されます。 
      下記の"X"オプションの例では、テキストファイルを表示するためWindowsの notepad.exeを呼び出しています。

              USE BUILTIN(SYSTEM_COMMAND) WITH_ARGS('X' 'notepad.exe' ' ' 'c:\temp\x.txt') TO_GET(#STD_NUM)

      "X" オプションによって、コマンド・インタープリタは開始されないため、COPY、DELなどのコマンドはサポートされません。このようなコマンドを使用する必要がある場合、 "S"オプションを使用してください。コマンド・プロンプトを実行して、Helpと入力すると、Windowsプラットフォームで使用するコマンドのリストを確認することができます。

    • "B" オプションは "X"オプションと同じですが、Windowsプラットフォームでは、非表示かつバックグラウンドで実行されます。 

              Use Builtin(SYSTEM_COMMAND) With_Args(B ('c:\temp\x.cmd >> c:\temp\output.txt 2>&1')) To_Get(#STD_NUM)

    • "S" オプションを指定すると、コマンドは標準のC「システム」コマンドとして実行されます。このオプションにより、コマンド・インタープリタが開始されるため、COPY、DELなどのコマンドはサポートされます。下記は、"S"オプションを使用してコマンド・ラインを実行する例です。

              USE BUILTIN(SYSTEM_COMMAND) WITH_ARGS('S' 'help.exe > c:\temp\x.txt') TO_GET(#STD_NUM)

    • "H" オプションはWindows環境でのみ使用可能であり、後続の引数で指定したファイルに対する、オペレーティング・システムにリンクしたエディター/ビューアーを呼び出します。したがって、コマンド・ストリング1が"c:\temp\test.doc"を含む場合、.docファイル(おそらくMS Word)に関連付けられたオペレーティング・システムのエディターが開始されます。同様に、"c:\temp\test.htm"の場合、HTMLブラウザーが開始されます。エディター/ビューアーは非同期で実行されます。下記の例は、"H"オプションにより、システムの初期アプリケーションを使用してテキスト・ファイルを表示しています。 

              USE BUILTIN(SYSTEM_COMMAND) WITH_ARGS('H' 'c:\temp\x.txt') TO_GET(#STD_NUM)

    • "A" オプションは、コマンドを非同期実行すること以外は"X"オプションと同じです。サポートされるすべてのWindowsプラットフォームで完全にサポートされます。他のプラットフォームにも実装されていますが、予測どおりに動作しないことがあります。LANSAは、このような問題に対処しない権利を保有しています。

    • "W" オプションは、下位互換性のために用意されています。新しいアプリケーションには"S"オプションを使用してください。

...