# exec

スクリプトファイルを実行する

## 呼び出し手順

    exec(path [,mode])
                exec(fun [,mode])
                ierr=exec(path,'errcatch' [,mode])
                ierr=exec(fun,'errcatch' [,mode])

## パラメータ

path

  文字列, スクリプトファイルへのパス

mode

  整数スカラー,実行モード (以下参照)

fun

  scilab 関数

ierr

  整数, 0 またはエラー番号

## 説明

`exec(path [,mode])` は, `path`で指定したファイルの中のオプションの 実行モード`mode` でscilab命令を逐次実行します.

以下の `mode` を指定できます :

0 : デフォルト値

-1 : 何も出力しない

1 : 各コマンド行を出力(エコーバック)する

2 : プロンプト `-->` を出力する

3 : エコー + プロンプト

4 : 各プロンプト出力の前に停止します. キャレッジリターンを入力すると 実行が再開します.

7 : 停止 + プロンプト + エコー : デモを行う際に有用なモード.

`exec(fun [,mode])` は関数 `fun` をスクリプトとして実行します: 入出力の引数も特定の変数環境もありません. スクリプトコードはプリコンパイル(comp参照)されるため, この形式は最も効率的です. スクリプト評価のこの方法により,スクリプトをライブラリの 関数として保持することが可能になります.

実行時にエラーが発生し, 'errcatch'フラグが指定されている場合, `exec`はエラーメッセージを出力せずに 命令を実行を破棄し,エラー番号を`ierr`に 代入して復帰します. 'errcatch' フラグが存在しない場合,標準のエラー処理が 機能します.

## 注意k

`exec` ファイルは, インライン関数定義構文(関数の項参照)により関数を定義する際に使用されます.

## 例

    // スクリプトファイルを作成
    mputl('a=1;b=2',TMPDIR+'/myscript')

    // スクリプトを実行
    exec(TMPDIR+'/myscript')
    whos -name "a "

    // 関数を作成
    deff('y=foo(x)','a=x+1;y=a^2')
    clear a b
    // 関数をコール
    foo(1)
    // a は関数 foo の環境に作成された変数
    //    この変数は foo がリターンする時に破棄されます
    whos -name "a "

    x=1 // xを作成し,スクリプトfooによりアクセス可能とする.
    exec(foo)

    // カレントの環境にa と y が作成されました
    whos -name "a "

## 参照

- execstr
- evstr
- comp
- mode
- chdir
- pwd