# execstr

exécution d'instructions Scilab contenues dans des chaînes de caractères

## Séquence d'appel

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

## Paramètres

instr

  vecteur de chaînes de caractères

ierr

  entier, 0 ou numéro de l'erreur

msg

  chaîne de caractères (`'m'` ou `'n'`). La valeur par défaut est `'n'`.

## Description

Exécute les instructions Scilab données dans l'argument `instr`.

Note : les instructions ne doivent pas comporter de marques de suite (..).

Si 'errcatch' n'est pas présent dans les arguments, les erreurs sont contrôlées comme d'habitude.

Si 'errcatch' est présent dans les arguments, et qu'une erreur est rencontrée lors de l'évaluation d'un élément de `instr`, `execstr` ne produit aucun message d'erreur, mais stoppe l'exécution des instructions stockées dans `instr` (au point où l'erreur s'est produite), et renvoie dans `ierr` le numéro de l'erreur. Dans ce cas l'affichage du message d'erreur est contrôlé par l'option `msg` :

"m"

  le message d'erreur est affiché et enregistré

"n"

  le message d'erreur n'est pas affiché mais il est enregistré (voir `lasterror`). Il s'agit du comportement par défaut.

ierr=execstr(instr,'errcatch') peut gérer les erreurs de syntaxes. Ceci peut être utile pour évaluer les instructions obtenues par une requète à l'utilisateur (interface homme-machine).

## Exemples

    execstr('a=1') // affecte a=1.

    execstr('1+1') // ne fait rien de particulier (alors que evstr('1+1') renvoie 2)

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

    // récupération des erreurs d'exécution
    execstr('a=zzzzzzz','errcatch')
    execstr('a=zzzzzzz','errcatch','m')

    // récupération des erreurs de syntaxe
    execstr('a=1?02','errcatch')
    lasterror(%t)

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

    // variable1 n'existe pas
    if execstr('variable1;','errcatch')<>0 then disp("Declenche une erreur"),end

    // variable2 existe ... Pas d'erreur dans execstr
    variable2=[2,3];
    if execstr('variable2;','errcatch')<>0 then
       disp("Declenche une erreur");
    else
       disp("execstr est content");
    end

## Voir aussi

- try
- errclear
- iserror
- whereami
- evstr