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

<!--
 * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
 * Copyright (C) 2008 - INRIA
 * ...
 * 
 * This file must be used under the terms of the CeCILL.
 * This source file is licensed as described in the file COPYING, which
 * you should have received as part of this distribution.  The terms
 * are also available at    
 * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
 *
 -->

<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>