# execstr

文字列中のScilabコードを実行

## 呼び出し手順

    execstr(instr)
                ierr=execstr(instr,'errcatch' [,msg])

## パラメータ

instr

  文字列のベクトル, 実行するScilab命令.

ierr

  整数, 0 ばたはエラー番号.

msg

  値`'m'` または`'n'` を有する文字列. デフォルト値は`'n'`.

## 説明

引数`instr`で指定したScilab命令を実行します.

instr の中では継続記号 (..) を使用する必要は ないことに注意してください.

'errcatch'フラグが指定されない場合, エラー処理は通常と同様に行われます.

'errcatch'フラグが指定された場合, `instr`で定義された命令を実行す際に 発生したエラーはエラーメッセージを発生せず, `instr` 命令の実行を (エラーが発生した場所で)破棄し, エラー番号に等しい`ierr`を返して 復帰します. この場合,エラーメッセージの出力は `msg`オプションにより次のように 制御されます:

"m"

  エラーメッセージは表示され,記録されます.

"n"

  エラーメッセージは表示されませんが, 記録されます ( `lasterror`参照). これがデフォルトです.

ierr=execstr(instr,'errcatch') は構文エラーも 処理することができます. この特徴は,ユーザへの問い合わせにより得られた命令を 評価する際に有用です.

## 例

    execstr('a=1') // sets a=1.
    execstr('1+1') // does nothing (while evstr('1+1') returns 2)

    execstr(['if %t then';
             '  a=1';
             '  b=a+1';
             'else'
             ' b=0'
             'end'])

    execstr('a=zzzzzzz','errcatch')
    execstr('a=zzzzzzz','errcatch','m')

    //syntax errors
    execstr('a=1?02','errcatch')
    lasterror(%t)

    execstr('a=[1 2 3)','errcatch')
    lasterror(%t)

    // variable1 does not exist
    if execstr('variable1;','errcatch')<>0 then disp("Trigger an error"),end

    // variable2 exists ... no error is triggered by execstr
    variable2=[2,3];
    if execstr('variable2;','errcatch')<>0 then
       disp("Trigger an error");
    else
       disp("execstr is happy");
    end

## 参照

- evstr
- lasterror
- error
- try