<?xml version="1.0" encoding="UTF-8"?>
<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="exec" xml:lang="pt">
    <refnamediv>
        <refname>exec</refname>
        <refpurpose>execução de arquivo script ("script" significa
            roteiro)
        </refpurpose>
    </refnamediv>
    <refsynopsisdiv>
        <title>Seqüência de Chamamento</title>
        <synopsis>exec(path [,mode])
            exec(fun [,mode])
            ierr = exec(path,'errcatch' [,mode])
            ierr = exec(fun,'errcatch' [,mode])
        </synopsis>
    </refsynopsisdiv>
    <refsection>
        <title>Parâmetros</title>
        <variablelist>
            <varlistentry>
                <term>path</term>
                <listitem>
                    <para>string, o endereço do arquivo script </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>mode</term>
                <listitem>
                    <para>escalar inteiro, o modo de execução (ver abaixo) </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>fun</term>
                <listitem>
                    <para>uma função do Scilab </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>ierr</term>
                <listitem>
                    <para>inteiro, 0 ou número de erro</para>
                </listitem>
            </varlistentry>
        </variablelist>
    </refsection>
    <refsection>
        <title>Descrição</title>
        <para>
            <code>exec(path [,mode])</code> executa seqüencialmente as
            instruções contidas no arquivo fornecido por <varname>path</varname> com
            um modo de execução opcional <varname>mode</varname> .
        </para>
        <para>
            Os casos diferentes para <varname>mode</varname> são :
        </para>
        <variablelist>
            <varlistentry>
                <term>0</term>
                <listitem>
                    <para>
                        o valor padrão.
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>-1</term>
                <listitem>
                    <para>
                        nada é impresso.
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>1</term>
                <listitem>
                    <para>
                        eco de cada linha de comando.
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>2</term>
                <listitem>
                    <para>
                        prompt <literal>--&gt;</literal> é impresso.
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>3</term>
                <listitem>
                    <para>
                        ecos + prompts.
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>4</term>
                <listitem>
                    <para>
                        pára antes de cada prompt. A execução retorna
                        após cada retorno de carro.
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>7</term>
                <listitem>
                    <para>
                        paradas + prompts + ecos : útil para demos.
                    </para>
                </listitem>
            </varlistentry>
        </variablelist>
        <para>
            <code>exec(fun [,mode])</code> executa a função
            <varname>fun</varname> como um script: sem argumentos de entrada ou saída
            nem ambientes de variáveis específicos. Este método
            para avaliação de scripts permite armazenar scripts como funções em
            bibliotecas.
        </para>
        <para>
            Se um erro é encontrado durante a execução, se o flag <literal>'errcatch'</literal>
            estiver presente <function>exec</function> não imprime mensagem de erro,
            aborta execução de instruções e retorna com <varname>ierr</varname> e
            igual ao número de erro. Se o flag <literal>'errcatch'</literal> não estiver presente, a
            manipulação de erros padrão é utilizada.
        </para>
    </refsection>
    <refsection>
        <title>Observação </title>
        <para>Arquivos executáveis (exec files) podem agora ser usados para
            definir funções "inline" utilizando a sintaxe de definição (ver
            <link linkend="function">function</link>).
        </para>
    </refsection>
    <!--
    <para><function>exec</function> supports files encoded as ANSI/ASCII and UTF-8 (NO-BOM).</para>
    <para>The length of each line in a file is limited to 4096 characters.</para>
-->
    <refsection>
        <title>Exemplos</title>
        <programlisting role="example"><![CDATA[
// criando um arquivo script
mputl('a=1;b=2',TMPDIR+'/meuscript')
// executando-o
exec(TMPDIR+'/meuscript')
whos -name "a "

// criando uma função
deff('y=foo(x)','a=x+1;y=a^2')
clear a b
// chamando a função
foo(1)
// a é uma variável criada no ambiente da função foo
//    ela é destruída quando foo retorna
whos -name "a "

x=1 //criando x para torná-la conhecida pelo script foo
exec(foo)
// a e y são criadas no ambiente corrente
whos -name "a "
whos -name "y "
 ]]></programlisting>
    </refsection>
    <refsection>
        <title>Ver Também</title>
        <simplelist type="inline">
            <member>
                <link linkend="exec">exec</link>
            </member>
            <member>
                <link linkend="execstr">execstr</link>
            </member>
            <member>
                <link linkend="evstr">evstr</link>
            </member>
            <member>
                <link linkend="mode">mode</link>
            </member>
            <member>
                <link linkend="chdir">chdir</link>
            </member>
            <member>
                <link linkend="pwd">pwd</link>
            </member>
        </simplelist>
    </refsection>
</refentry>
