<?xml version="1.0" encoding="UTF-8"?>

<!--
 * Scilab ( https://www.scilab.org/ ) - This file is part of Scilab
 * Copyright (C) 2008 - INRIA
 * ...
 *
 * Copyright (C) 2012 - 2016 - Scilab Enterprises
 *
 * This file is hereby licensed under the terms of the GNU GPL v2.0,
 * pursuant to article 5.3.4 of the CeCILL v.2.1.
 * This file was originally licensed under the terms of the CeCILL v2.1,
 * and continues to be available under such terms.
 * For more information, see the COPYING file which you should have received
 * along with this program.
 *
 -->

<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="mseek">

    <refnamediv>

        <refname>mseek</refname>

        <refpurpose>バイナリファイルの中でカレントの位置を設定する.  </refpurpose>

    </refnamediv>

    <refsynopsisdiv>

        <title>呼び出し手順</title>

        <synopsis>mseek(n [,fd, flag])</synopsis>

    </refsynopsisdiv>

    <refsection>

        <title>引数</title>

        <variablelist>

            <varlistentry>

                <term>n</term>

                <listitem>

                    <para>スカラー: オフセット(単位:バイト数).</para>

                </listitem>

            </varlistentry>

            <varlistentry>

                <term>fd</term>

                <listitem>

                    <para>

                        スカラー:  <function>mopen</function>関数により返されたファイル記述子.

                        <literal>-1</literal>は直近にオープンされたファイルを意味します.

                        デフォルト値は<literal>-1</literal>です.

                    </para>

                </listitem>

            </varlistentry>

            <varlistentry>

                <term>flag</term>

                <listitem>

                    <para>

                        文字列: 原点を指定. デフォルト値 <literal>'set'</literal>.

                    </para>

                </listitem>

            </varlistentry>

        </variablelist>

    </refsection>

    <refsection>

        <title>説明</title>

        <para>

            関数 <function>mseek</function>は,ストリーム<varname>fd</varname>上での

            次の入力または出力処理の位置を設定します.

            新たな位置は,符号付きの位置を表すバイト数<varname>n</varname>で指定した位置となります.

            この値の意味は,	<literal>flag</literal> の値,つまり,

            <literal>'set'</literal>, <literal>'cur'</literal> または <literal>'end'</literal>

            に基づき,先頭位置から,または,現在位置から,または,ファイル終端からとなります.

            これが, <varname>flag</varname> が <literal>'set'</literal>の場合に

            <varname>n</varname>を正としなければならない理由です.

        </para>

        <para>

            <function>mseek</function> により

            ファイルの既存のデータの終端より後の部分にファイル位置インジケータを

            設定することができるようになります.

            データがこのような場所に書き込まれた時,

            隙間にあるデータが読み込まれた場合に,

            隙間に実際に書き込まれたデータに達するまでは

            0 が返されます.

            <function>mseek</function>は,それ自体では,

            ファイルの大きさを拡張しません.

        </para>

    </refsection>

    <refsection>

        <title>例</title>

        <programlisting role="example"><![CDATA[
file3=fullfile(TMPDIR,'test3.bin');
fd1= mopen(file3,'wb');
for i=1:10
  mput(i,'d');
end
mseek(0);
mput(678,'d');
mseek(0,fd1,'end');
mput(932,'d');
mclose(fd1)

fd1= mopen(file3,'rb');
res=mget(11,'d')
res1=[1:11]; res1(1)=678;res1($)=932;
if res1<>res then
  write(%io(2),'Bug');
end
mseek(0,fd1,'set');

// 保存されたデータより多くのデータを読み込む
res1=mget(100,'d',fd1);
if res1<>res then
  write(%io(2),'Bug');
end
meof(fd1)
mclearerr(fd1)
mclose(fd1);
 ]]></programlisting>

    </refsection>

    <refsection role="see also">

        <title>参照</title>

        <simplelist type="inline">

            <member>

                <link linkend="mclose">mclose</link>

            </member>

            <member>

                <link linkend="meof">meof</link>

            </member>

            <member>

                <link linkend="mfprintf">mfprintf</link>

            </member>

            <member>

                <link linkend="fprintfMat">fprintfMat</link>

            </member>

            <member>

                <link linkend="mfscanf">mfscanf</link>

            </member>

            <member>

                <link linkend="fscanfMat">fscanfMat</link>

            </member>

            <member>

                <link linkend="mget">mget</link>

            </member>

            <member>

                <link linkend="mgetstr">mgetstr</link>

            </member>

            <member>

                <link linkend="mopen">mopen</link>

            </member>

            <member>

                <link linkend="mprintf">mprintf</link>

            </member>

            <member>

                <link linkend="mput">mput</link>

            </member>

            <member>

                <link linkend="mputstr">mputstr</link>

            </member>

            <member>

                <link linkend="mscanf">mscanf</link>

            </member>

            <member>

                <link linkend="mseek">mseek</link>

            </member>

            <member>

                <link linkend="mtell">mtell</link>

            </member>

            <member>

                <link linkend="mdelete">mdelete</link>

            </member>

        </simplelist>

    </refsection>

</refentry>

