Compose-3030:バッチモードでのComposeとOML
Tutorial Level: Advanced
- Composeのコンソールモードを使用する。
- Composeのバッチモードを使用する。
- バッチモードで実行するスクリプトに入力引数を渡す。
- バッチモードで実行しているときに出力をテキストファイルに保存する。
Composeでのコンソールモードの実行
前のチュートリアルで説明したグラフィカルな対話モードのほか、コンソールモードも使用できます。コンソールモードはOMLのコマンドプロンプトをシェルに表示するモードであり、基本的にグラフィカルモードではありません。
このプロンプトでは、plotsなどのすべてのGUI関連コマンドを除き、サポートされているすべてのOMLコマンドを実行できます。
-
コンソールモードでComposeを開くには、 に移動します。
-
次のように、コンソールモードで実行されているComposeアプリケーションを表示したコマンドウィンドウが開きます。
ここでは、プロット関連のコマンドを除くすべてのコマンドを実行できます。任意のコマンドをプロンプトで入力してEnterを押すと、そのコマンドが直ちに評価されます。
-
run関数を使用してコンソールモードでスクリプトまたは関数のファイルを実行することもできます。
D:/Testに、次のコマンドを記述したスクリプトmyscript.omlがあるとします。
M1 = rand(5,5); disp(M1)
このファイルをコンソールモードで実行して次の結果が得られることを確認します。
コンソールモードでのOMLのコマンドとスクリプトの実行
標準のシェルでアプリケーションにコマンドまたはスクリプトを渡して、上記で説明したコンソールモードを使用することもできます。
-
Windowsのスタートメニューでファイル名を指定して実行を選択し、cmdと入力してEnterを押します。
Windowsのコマンドプロンプトが開きます。このコマンドプロンプトを使用して、ComposeでOMLのコマンド、スクリプトファイル、またはその組み合わせを実行します。
-
コマンドプロンプトで次のコマンドを入力してEnterを押します。<installation_dir>は、実際のインストール先に置き換えます。
cd <installation_dir>\
インストール環境の中でCompose_Console.batファイルが格納されている場所にディレクトリが切り替わります。
-
Compose_Console.batの引数の短いヘルプを表示するには、コマンドプロンプトで次のように入力します。Compose_Console.bat –help
-e OMLのコマンドを実行して終了します。 -f foo.oml OMLスクリプトのfoo.omlをロードして実行します。 -help サポートされているオプションの引数を一覧表示します。 -version Composeのバージョンを表示します。 -
–eオプションを使用してOMLのコマンドを直接実行できます。Compose_Console.batコマンドに続いて–e "Any valid OML command"と入力します。以下に例を示します。
Compose_Console.bat –e disp(rand(3,3))
次のように3x3の行列がコマンドプロンプトに出力されます。
複数のコマンドやスペースを使用したコマンドを実行するには、引用符を使用します。
-
–fオプションを使用してOMLのスクリプトを直接実行できます。.batコマンドに続いて、–f、MatrixDemo.omlファイルへのパスの順に入力します。次のようなコマンドになります。
Compose_Console.bat –f <installation_dir>\tutorials\MatrixDemo.oml
Enterを押すとこのファイルが実行されます。コマンドプロンプトにすべての出力が表示されることを確認します。また、この出力は、Composeでこのスクリプトが評価されたときにOMLコマンドウィンドウに表示された結果と同じです。
スクリプトへの引数の引き渡し
Compose_Console.bat –e input arguments –f script.oml
Compose_Console.bat –e t=[0:0.1:20];initial=[0;0]; –f
<installation_dir>\tutorials\ode45_noplot.oml
スクリプトファイルode45_noplot.omlは<installation_dir>/tutorials/にあります。Compose のGUIでこのスクリプトファイルを直接実行すると、変数tとinitialが未定義であることが指摘されます。バッチで正しいコマンドを実行すると、次の結果が得られます。

ファイルへの出力の保存
-
前回の例で取り上げたコマンドの末尾に、次のように> output.txtを追記します。
Compose_Console.bat –e t=[0:0.1:20];initial=[0;0]; –f <installation_dir\tutorials\ode45_noplot.oml C:/output.txt
–fの後に2つのファイルへのパスを記述します。 これら2つのファイルに続いて、>記号の後に別のファイルを記述します。これは、その前に記述したファイルの出力を、このファイルにエクスポートすることを示しています。書き込みアクセス権があるフォルダに、このファイルを配置しておく必要があります。
-
Enterを押すとこのファイルがバッチモードで実行されます。今回は、次のようにコマンドプロンプトには出力が表示されません。
-
テキストエディターでoutput.txtファイルを開きます。このファイルには、バッチモードで実行したode45_noplot.omlスクリプトの出力が次のように記述されています。
バッチモードでのTclスクリプトの実行
上記で説明したコンソールモードのほかに、標準のシェルでコマンドまたはスクリプトをアプリケーションに渡すことにより、Composeを‘真の’バッチモードで使用できます。
Composeでは、完全なバッチモードでスクリプトを実行することもできます。次の場所に保存した*.batファイルを使用してバッチモードを実行できます。
<installation_dir\hwx\Compose_Batch.bat
コンソールモードの場合と同様に、–f引数を使用して、実行するスクリプトの名前を渡します。
Composeでは、複数の言語もサポートしています。Tclスクリプトをバッチで実行するには、次のコマンドを入力します。
<installation_dir\hwx\Compose_Batch.bat –f <TCL file with .tcl extension

basic.tclは<installation_dir>/tutorials/にあります。