<?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:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="ja" xml:id="predef">
    <refnamediv>
        <refname>predef</refname>
        <refpurpose>変数の保護</refpurpose>
    </refnamediv>
    <refsynopsisdiv>
        <title>呼出し手順</title>
        <synopsis>n = predef()
            oldnew = predef(n)
            oldnew = predef('all')
            oldnew = predef('clear')
            variables_name = predef('names')
        </synopsis>
    </refsynopsisdiv>
    <refsection>
        <title>説明</title>
        <para>
            "oldest"変数を"protected"として定義するために使用されるユーティリティ関数.
            保護されている変数は削除できません.
            これらの変数は <function>save</function> コマンドで保存されません.
            "oldest" は<code>who('get')</code>で最後に現れます.
        </para>
        <para>
            <code>predef()</code>は保護される変数の数を取得します.
        </para>
        <para>
            <code>predef('a[ll]')</code>は
            全ての変数を保護し,保護される変数の数の古い値と新しい値も返します.
        </para>
        <para>
            <code>predef('c[lear]')</code> は最後の7変数以外の
            保護を外し,
            保護される変数の数の古い値と新しい値も返します.
        </para>
        <para>
            <code>predef(n)</code> は,
            <code>max(n,7)</code>個の最後に定義された変数を保護し,
            保護される変数の数の古い値と新しい値も返します.
        </para>
        <para>
            <code>predef('names')</code> は保護されている変数の名前を保持する
            文字列のベクトルを返します.
        </para>
        <para>
            <code>predef('clear')</code> はリストから定義済みの変数を削除します.
        </para>
    </refsection>
    <refsection>
        <title>注意:</title>
        <para>
            変数 <literal>ans</literal>
            は,式が代入されない場合に自動的に定義され,
            <code>predef('all')</code>により保護されません.
        </para>
        <para>
            保護される変数の数は,スタートアップファイル
            <literal>SCI/etc/scilab.start</literal>で設定されます.
            ユーザは独自の定義済みの変数を
            ユーザのスタートアップファイル
            <literal>SCIHOME/.scilab</literal> および <literal>SCIHOME/scilab.ini</literal>
            により設定することができます.
        </para>
        <para>
            <important>
                新規に定義した変数を<code>predef(1)</code>により保護できないことに注意してください.
                これはある変数を保護する際, Scilab はその前に定義されている全ての変数を保護する必要があります.
                この制限は スタック設計でなくなるScilab 6ではなくなります.
            </important>
        </para>
    </refsection>
    <refsection>
        <title>例</title>
        <programlisting role="example"><![CDATA[
a = 1;
predef("all");
clear a // 失敗
predef("clear")
clear a // 動作
 ]]></programlisting>
    </refsection>
    <refsection role="see also">
        <title>参照</title>
        <simplelist type="inline">
            <member>
                <link linkend="clear">clear</link>
            </member>
            <member>
                <link linkend="save">save</link>
            </member>
            <member>
                <link linkend="ans">ans</link>
            </member>
            <member>
                <link linkend="startup">startup</link>
            </member>
        </simplelist>
    </refsection>
</refentry>
