<?xml version="1.0" encoding="UTF-8"?>
<!--
    * Scilab ( http://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: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="save_format" xml:lang="ru">
    <refnamediv>
        <refname>save format</refname>
        <refpurpose>формат файлов, полученных с помощью функции "save"</refpurpose>
    </refnamediv>
    <refsection>
        <title>Аннотация</title>
        <para>
            Целью данного документа является определения формата HDF5,
            используемого Scilab'ом для хранения своих данных.
        </para>
        <para>
            Этот формат называется SOD от английского Scilab Open Data
            ("открытые данные Scilab'а").
        </para>
        <para>
            Первый публичный релиз SOD был сделан в Scilab 5.4.0.
        </para>
    </refsection>
    <refsection>
        <title>Основная причина</title>
        <para>
            Интероперабельность является одним из ключевых аспектов
            современного программного обеспечения. Для того, чтобы
            больше и больше улучшать этот аспект был предложено
            стандартное определение формата HDF5.
        </para>
        <para>
            Со времён Scilab 5.2.0 была разработана возможность
            экспорта/импорта, которая используется для обмена данными.
            Это уже один из основных компонентов Xcos для хранения и
            обмена данными.
        </para>
    </refsection>
    <refsection>
        <title>Поддерживаемые типы данных</title>
        <para>
            Поддерживаются все типы данных Scilab'а. Например:
        </para>
        <informaltable border="1">
            <tbody>
                <tr>
                    <td>
                        <emphasis role="bold">Имя</emphasis>
                    </td>
                    <td>
                        <emphasis role="bold">Пример в Scilab'е</emphasis>
                    </td>
                </tr>
                <tr>
                    <td>
                        <emphasis role="bold">double</emphasis>
                    </td>
                    <programlisting>
                        A=32;
                        b=[32,2];
                        c=[2,2;3,4];
                        d=rand(10,10);
                    </programlisting>
                </tr>
                <tr>
                    <td>
                        <emphasis role="bold">string</emphasis>
                    </td>
                    <programlisting>
                        a="my string";
                        b=["string 1";"my string 2"];
                    </programlisting>
                </tr>
                <tr>
                    <td>
                        <emphasis role="bold">boolean</emphasis>
                    </td>
                    <programlisting>
                        a=%t;
                        b=[%t, %f];
                    </programlisting>
                </tr>
                <tr>
                    <td>
                        <emphasis role="bold">integer</emphasis>
                    </td>
                    <td>
                        <programlisting>
                            int8([1 -120 127 312])
                            x=int32(-200:100:400)
                        </programlisting>
                    </td>
                </tr>
                <tr>
                    <td>
                        <emphasis role="bold">polynomial</emphasis>
                    </td>
                    <td>
                        <programlisting>
                            s=poly([2 3],"s")
                            poly(1:4,'s','c')
                        </programlisting>
                    </td>
                </tr>
                <tr>
                    <td>
                        <emphasis role="bold">sparse</emphasis>
                    </td>
                    <td align="justify">
                        <programlisting>
                            sp=sparse([1,2;4,5;3,10],[1,2,3])
                        </programlisting>
                    </td>
                </tr>
                <tr>
                    <td>
                        <emphasis role="bold">boolean sparse</emphasis>
                    </td>
                    <td align="justify">
                        <programlisting>
                            dense=[%F, %F, %T, %F, %F
                            %T, %F, %F, %F, %F
                            %F, %F, %F, %F, %F
                            %F, %F, %F, %F, %T];
                            sp=sparse(dense)
                        </programlisting>
                    </td>
                </tr>
                <tr>
                    <td>
                        <emphasis role="bold">list</emphasis>
                    </td>
                    <td align="justify">
                        <programlisting>
                            l = list(1,["a" "b"])
                        </programlisting>
                    </td>
                </tr>
                <tr>
                    <td>
                        <emphasis role="bold">tlist</emphasis>
                    </td>
                    <td align="justify">
                        <programlisting>
                            t = tlist(["listtype","field1","field2"], [], []);
                        </programlisting>
                    </td>
                </tr>
                <tr>
                    <td>
                        <emphasis role="bold">mlist</emphasis>
                    </td>
                    <td align="justify">
                        <programlisting>
                            M=mlist(['V','name','value'],['a','b';'c' 'd'],[1 2; 3 4]);
                        </programlisting>
                    </td>
                </tr>
            </tbody>
        </informaltable>
        <para>
            Несколько "типов" основаны на <emphasis>tlist</emphasis> или
            <emphasis>mlist</emphasis>. Это <emphasis>rational</emphasis>,
            <emphasis>state-space</emphasis>,
            <emphasis>cell</emphasis> и <emphasis>struct</emphasis>.
            Следовательно, они явно сохраняются.
        </para>
        <para>
            <emphasis>void</emphasis> и <emphasis>undefined</emphasis> -
            это два особых элемента, созданных для управления особыми
            случаями в управлении списками. Они описаны ниже.
        </para>
    </refsection>
    <refsection>
        <title>Структура файла HDF5</title>
        <para>
            Архитектура HDF5 Scilab'а довольно проста.
        </para>
        <emphasis role="bold">Основные сведения</emphasis>
        <para>
            Для каждой переменной Scilab'а декларируется набор данных в
            корне. Имя набора данных - это имя переменной Scilab'а.
        </para>
        <para>
            Например, следующий код:
        </para>
        <programlisting>
            emptyuint32matrix = uint32([]);
            uint32scalar = uint32(1);
            uint32rowvector = uint32([1 4 7]);
            uint32colvector = uint32([1;4;7]);
            uint32matrix = uint32([1 4 7;9 6 3]);
            save("uint32.sod","emptyuint32matrix","uint32scalar","uint32rowvector","uint32colvector","uint32matrix");
        </programlisting>
        <para>формирует:</para>
        <mediaobject>
            <imageobject>
                <imagedata fileref="../images/img001.png"/>
            </imageobject>
        </mediaobject>
        <para>
            Каждый корневой набор данных имеет атрибут, именуемый
            <literal>SCILAB_Class</literal>. Этот атрибут определяет
            какие типы переменных хранятся в HDF5-файле.
        </para>
        <para>
            Если переменная является основным типом и без связанных с
            ним комплексных значений, то данные сохраняются
            непосредственно в набор данных. В противном случае, набор
            данных содержит ссылки на фактические данные.
        </para>
        <para>
            Каждый SOD-файл содержит две особые переменные:
        </para>
        <itemizedlist>
            <listitem>
                <para>
                    <literal>SCILAB_scilab_version</literal> - описывает
                    какая версия Scilab'а использовалась для сохранения
                    SOD-файла.
                </para>
                <para>
                    Например, для Scilab 5.4.0 эти данные будут иметь вид:
                </para>
                <para>
                    <emphasis>SCILAB_scilab_version = scilab-5.4.0</emphasis>
                </para>
            </listitem>
            <listitem>
                <para>
                    <literal>SCILAB_sod_version</literal> - описывает
                    какая версия спецификации SOD использовалась для
                    сохранения файла.
                </para>
                <para>
                    Например, для Scilab 5.4.0 эти данные будут иметь вид:
                </para>
                <para>
                    <emphasis>SCILAB_sod_version = 2</emphasis>
                </para>
            </listitem>
        </itemizedlist>
        <para>
            Типы, данные которых сохраняются непосредственно в набор
            данных.
        </para>
        <informaltable border="1">
            <tbody>
                <tr>
                    <td align="left">
                        <emphasis role="bold">Тип Scilab'а</emphasis>
                    </td>
                    <td align="left">
                        <emphasis role="bold">Атрибут HDF5 типа Scilab'а</emphasis>
                    </td>
                    <td align="left">
                        <emphasis role="bold">Атрибуты HDF5</emphasis>
                    </td>
                    <td align="left">
                        <emphasis role="bold">Расположение типов данных HDF</emphasis>
                    </td>
                </tr>
                <tr>
                    <td align="left">
                        <para>string</para>
                    </td>
                    <td align="left">
                        <para>SCILAB_Class = string</para>
                    </td>
                    <td align="left">

                    </td>
                    <td align="left">
                        <para>строковое значение</para>
                    </td>
                </tr>
                <tr>
                    <td align="left">
                        <para>boolean</para>
                    </td>
                    <td namest="c2" nameend="c3" align="left">
                        <para>SCILAB_Class = boolean</para>
                    </td>
                    <td align="left">

                    </td>
                    <td align="left">
                        <para>32-битное целое число</para>
                    </td>
                </tr>
                <tr>
                    <td align="left">
                        <para>integer</para>
                    </td>
                    <td namest="c2" nameend="c3" align="left">
                        <para>SCILAB_Class = integer</para>
                    </td>
                    <td align="left">
                        <para>SCILAB_precision = {8, 16, 32, u8, u16, u32}</para>
                    </td>
                    <td namest="c1" nameend="c2" align="left">
                        <para>8 = 8-битный символ</para>
                        <para>16 = 16-битное целое число</para>
                        <para>32 = 32-битное целое число</para>
                        <para>u8 = 8-битное целое беззнаковое число</para>
                        <para>u16 = 16-битное целое беззнаковое число</para>
                        <para>u32 = 32-битное целое беззнаковое число</para>
                    </td>
                </tr>
            </tbody>
        </informaltable>
        <para>
            Для этих типов, как в Scilab'е, данные хранятся в одномерном
            массиве. Данные сохраняются столбец на столбцом.
        </para>
        <para>
            Для восстановления матрицы, вектора или скаляра, два
            атрибута дают количество столбцов и строк.
        </para>
        <para>
            Начиная с релиза 5.4.0 Scilab'а и SOD v2, <literal>SCILAB_cols</literal> и
            <literal>SCILAB_rows</literal> больше не используются для
            матриц типа double, integer, polynomial и string. SOD
            использует родную многомерную возможность HDF5.
        </para>
        <para>
            <emphasis role="bold">Пример</emphasis>
        </para>
        <para>
            Сохранение декларации: <code>int32([1 -4 7;-9 6 -3])</code>
            будет отображено как:
        </para>
        <mediaobject>
            <imageobject>
                <imagedata fileref="../images/img002.png"/>
            </imageobject>
        </mediaobject>
        <para>в hdfview.</para>
        <para>А метаданные будут отображены как:</para>
        <emphasis role="italic">
            <para>int32matrix (800, 2)</para>
            <para>32-bit integer, 3 x 2 =&gt; размер переменной</para>
            <para>Number of attributes = 2</para>
            <para>SCILAB_Class = integer</para>
            <para>SCILAB_precision = 32</para>
        </emphasis>
        <para>
            <note>
                Скалярное значение хранится в виде матрицы размером 1 на 1.
            </note>
        </para>
        <para>
            Пустая переменная (<literal>[]</literal>) будет иметь
            атрибут <literal>SCILAB_empty</literal>, установленный в
            значение ИСТИНА.
        </para>
        <para>
            <emphasis role="bold">Типы, в которых данные хранятся в
                соответствующей группе
            </emphasis>
        </para>
        <para>
            Многие типы данных Scilab'а хранятся с помощью групп. Это
            позволяет не только явно разделять значения, но и иметь
            лёгкий доступ к ним.
        </para>
        <para>
            Группы именуются по переменным, заключённым в знак "#".
            Например, для матрицы значений типа double, названной
            matrixofdouble, имя корневого набора данных будет
            matrixofdouble, имя связанной с ней группы будет <emphasis
            role="strong">#matrixofdouble#</emphasis>.
        </para>
        <para>
            Для рекурсивного типа данных (list, mlist, tlist и т. д.)
            имена подгрупп построены следующим образом:
        </para>
        <para>
            Знак <literal>#</literal> позволяет создавать уникальный
            идентификатор. Количество начальных знаков
            <literal>#</literal> показывает уровень глубины.
            Следовательно подсписок
            <emphasis>###listnested#_#2##_#1##</emphasis> будет
            указывать, что он помещён на второй уровень.
        </para>
        <para>
            Символ подчёркивания "_" является способом представить
            глубину. Обычно в таких случаях используется символ "/", но
            это зарезервированное ключевое слово в спецификации HDF5.
        </para>
        <para>
            Целые числа, используемые в названии, показывают положение в
            структуре данных, оба в терминах положения в текущей
            структуре, но также относительно родительского элемента. В
            примере <emphasis>###listnested#_#2##_#1##</emphasis>, 1
            показывает, что мы имеем дело со вторым элементом третьей
            структуры главного элемента (элементы индексируются начиная
            с 0).
        </para>
        <para>
            В следующем примере, группа, названная
            <emphasis>###listnested#_#2##_#1##</emphasis>,
            будет указывать на значение [32, 42]:
        </para>
        <programlisting>
            listnested=list(2,%i,'f',ones(3,3))
            listnested(3) = list( %t, [32,42]);
        </programlisting>
        <para>
            <emphasis role="bold">Разрежённая матрица</emphasis>
        </para>
        <para>
            <emphasis role="strong">Тип Scilab'а:</emphasis> sparse
        </para>
        <para>
            <emphasis role="strong">атрибут HDF5 типа
                Scilab'а:
            </emphasis>
            SCILAB_Class = sparse
        </para>
        <para>
            <emphasis role="strong">атрибуты HDF5: </emphasis>
        </para>
        <para>SCILAB_rows = &lt;int&gt;</para>
        <para>Количество строк</para>
        <para>
            <emphasis>SCILAB_cols = &lt;int&gt;</emphasis>
        </para>
        <para>Количество столбцов</para>
        <para>
            <emphasis>SCILAB_items = &lt;int&gt;</emphasis>
        </para>
        <para>
            Определение количества элементов разрежённой матрице
        </para>
        <para>
            <emphasis role="strong">Значения корневого набора данных:</emphasis>
        </para>
        <para>
            Первое значение (<literal>#0#</literal>): каждый элемент из
            этой структуры данных показывает количество ненулевых
            элементов на строку. Следовательно, первый элемент
            показывает количество элементов в первой строке разрежённой
            матрицы.
        </para>
        <para>
            Второе значение (<literal>#1#</literal>): указывает
            положение столбца каждого элемента разрежённой матрицы.
        </para>
        <para>
            Третье значение (<literal>#2#</literal>): хранит ссылку на
            фактические значения элементов в разрежённой матрице (каждое
            будет сохранено в особой группе).
        </para>
        <para>Например, взяв такую матрицу:</para>
        <programlisting role="no-scilab-exec">
            0. 1. 0. 0. 0. 0. 0. 0. 0. 0.
            0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
            0. 0. 0. 0. 0. 0. 0. 0. 0. 3.
            0. 0. 0. 0. 2. 0. 0. 0. 0. 0.
        </programlisting>
        <para>которая формируется функцией:</para>
        <programlisting role="scilab_code">
            sparse([1,2;4,5;3,10],[1,2,3])
        </programlisting>
        <para>
            будем иметь:
        </para>
        <para>
            <emphasis>#0#</emphasis> содержит <emphasis>1;0;1;1</emphasis>
        </para>
        <para>
            <emphasis>#1#</emphasis> содержит <emphasis>2;10;5</emphasis>
        </para>
        <para>
            <emphasis>#2#</emphasis> обращается к матрице чисел типа
            double (в этом примере они не комплексные), которая содержит
            <emphasis>1.0; 3.0; 2.0</emphasis>.
        </para>
        <para>
            <emphasis role="bold">Разрежённая матрица логических значений</emphasis>
        </para>
        <para>
            <emphasis role="strong">Тип Scilab'а:</emphasis> boolean sparse
        </para>
        <para>
            <emphasis role="strong">атрибут HDF5 типа Scilab'а:</emphasis> SCILAB_Class = boolean sparse
        </para>
        <para>
            <emphasis>атрибуты HDF5:</emphasis>
        </para>
        <para>
            <emphasis>SCILAB_rows = &lt;int&gt;</emphasis>
        </para>
        <para>Количество строк</para>
        <para>
            <emphasis>SCILAB_cols = &lt;int&gt;</emphasis>
        </para>
        <para>Количество столбцов</para>
        <para>
            <emphasis>SCILAB_items = &lt;int&gt;</emphasis>
        </para>
        <para>
            Определение количества элементов в разрежённой матрице
        </para>
        <para>
            <emphasis role="strong">Значения корневого набора
                данных:
            </emphasis>
            в то время как разрежённая матрица имеет
            3 набора данных, разрежённая матрица логических значений
            имеет только 2, поскольку определяемые значения
            автоматически рассматриваются как истинные.
        </para>
        <para>
            Первое значение (<literal>#0#</literal>): каждый элемент
            этой структуры данных показывает количество ненулевых
            элементов в строке.
        </para>
        <para>
            Следовательно, первый элемент показывает количество
            элементов в первой строке разрежённой матрицы.
        </para>
        <para>
            Второе значение (<literal>#1#</literal>): указывает
            положение столбца каждого из элементов разрежённой матрицы.
        </para>
        <para>В разрежённой матрице логических значений:</para>
        <programlisting>
            dense=[%F, %F, %T, %F, %F
            %T, %F, %F, %F, %F
            %F, %F, %F, %F, %F
            %F, %F, %F, %F, %T];
        </programlisting>
        <para>
            <emphasis>#0#</emphasis> содержит <emphasis>1;1;0;1</emphasis>.
        </para>
        <para>
            <emphasis>#1#</emphasis> содержит <emphasis>3;1;5</emphasis>.
        </para>
        <para>
            Для восстановления разрежённой матрицы логических значений
            требуется только два значения.
        </para>
        <para>
            <emphasis role="bold">Расположение типов данных
                HDF
            </emphasis>
            :32-битное целое
        </para>
        <para>
            <emphasis role="bold">Числа удвоенной точности</emphasis>
        </para>
        <para>
            <emphasis role="strong">Тип Scilab'а:</emphasis> double
        </para>
        <para>
            <emphasis role="strong">атрибут HDF5 типа Scilab'а:</emphasis> SCILAB_Class = double
        </para>
        <para>
            <emphasis role="strong">Значения корневого набора данных:</emphasis>
        </para>
        <para>
            Как вещественные так и комплексные значения хранятся в
            группе, именуемой <literal>#&lt;имя переменной&gt;#</literal>.
        </para>
        <para>
            Первое значение: ссылка на вещественные значения. Названо
            <literal>#0#</literal>.
        </para>
        <para>
            Если матрица комплексная, то второе значение будет ссылаться
            на комплексные значения. Названо <literal>#1#</literal>.
        </para>
        <para>
            <emphasis role="bold">Расположение типов данных
                HDF
            </emphasis>
            64-битное с плавающей запятой
        </para>
        <para>
            <emphasis role="bold">Полином</emphasis>
        </para>
        <para>
            <emphasis role="strong">Тип Scilab'а:</emphasis> polynomial
        </para>
        <para>
            <emphasis role="strong">атрибут HDF5 типа
                Scilab'а:
            </emphasis>
            SCILAB_Class = polynomial
        </para>
        <para>
            <emphasis role="strong">атрибуты HDF5: </emphasis>
        </para>
        <para>SCILAB_Class = polynomial</para>
        <para>SCILAB_varname = &lt;string&gt;</para>
        <para>Имя символьной переменной</para>
        <para>
            <emphasis>SCILAB_Complex = &lt;boolean&gt;</emphasis>
        </para>
        <para>
            Если полином комплексный (не устанавливается, если ложь).
        </para>
        <para>
            <emphasis role="strong">Значения корневого набора
                данных:
            </emphasis>
        </para>
        <para>
            Коэффициенты хранятся в виде матрицы чисел удвоенной
            точности (сравни соответствующий раздел, посвящённый
            хранению чисел удвоенной точности). Интересно отметить, что
            коэффициенты могут быть комплексными и, следовательно, могут
            храниться в виде матрицы комплексных значений. Правила
            наименования (под-)групп и набора данных описаны в начале
            этого раздела.
        </para>
        <para>
            <emphasis role="bold">Расположение типов данных HDF</emphasis> ссылка на объект
        </para>
        <para>
            <emphasis role="bold">Список</emphasis>
        </para>
        <para>
            <emphasis role="strong">Тип Scilab'а:</emphasis> list
        </para>
        <para>
            <emphasis role="strong">атрибут HDF5 типа Scilab'а:</emphasis>
        </para>
        <para>SCILAB_Class = list</para>
        <para>
            <emphasis role="strong">атрибуты HDF5:</emphasis>
            SCILAB_items = &lt;количество пунктов в списке&gt;
        </para>
        <para>
            <emphasis role="strong">Значения корневого набора данных:</emphasis>
        </para>
        <para>
            Привязанные к корневому набору данных значения хранятся в
            этом наборе и являются ссылками на значения, хранимые в
            списке. Значения хранятся в группе, названной
            <literal>#&lt;имя переменной&gt;#</literal>. В группе
            <literal>#&lt;имя переменной&gt;#</literal> данные могут
            быть любого типа. Они прямо включены в группу. Их
            представления те же самые, что и в других случаях,
            основанных на рекурсивной структуре (имеется в виду, что
            можно сохранить и загрузить список списка списка различных
            типов).
        </para>
        <para>
            Правила наименования (под-)групп и набора данных описаны в
            начале этого раздела.
        </para>
        <para>
            <emphasis role="bold">Расположение типов данных HDF</emphasis> ссылка на объект
        </para>
        <para>
            <emphasis role="bold">Типизированный список</emphasis>
        </para>
        <para>
            <emphasis role="strong">Тип Scilab'а:</emphasis> tlist
        </para>
        <para>
            <emphasis role="strong">атрибут HDF5 типа Scilab'а:</emphasis>
        </para>
        <para> SCILAB_Class = tlist</para>
        <para>
            <emphasis role="strong">атрибуты HDF5:</emphasis> см. список
        </para>
        <para>
            <emphasis role="bold">матричноориентированный список</emphasis>
        </para>
        <para>
            <emphasis role="strong">Тип Scilab'а:</emphasis> mlist
        </para>
        <para>
            <emphasis role="strong">атрибут HDF5 типа Scilab'а:</emphasis>
        </para>
        <para>SCILAB_Class = mlist</para>
        <para>
            <emphasis role="strong">атрибуты HDF5:</emphasis> см. список
        </para>
        <para>
            <emphasis role="bold">Пустое значение</emphasis>
        </para>
        <para>
            <emphasis role="strong">Тип Scilab'а:</emphasis> void
        </para>
        <para>
            <emphasis role="strong">атрибут HDF5 типа Scilab'а:</emphasis>
        </para>
        <para>SCILAB_Class = void</para>
        <para>
            Пустое значение можно найти только в очень особых случаях
            использования списков, типизированных списков и
            матричноориентированных списков. Оно может быть создано с
            помощью следующего синтаксиса:
        </para>
        <programlisting>voidelement_ref=list(1,,3);</programlisting>
        <para>
            <emphasis role="bold">Неопределённое значение</emphasis>
        </para>
        <para>
            <emphasis role="strong">Тип Scilab'а:</emphasis> undefined
        </para>
        <para>
            <emphasis role="strong">атрибут HDF5 типа Scilab'а:</emphasis>
        </para>
        <para> SCILAB_Class = undefined</para>
        <para>
            Неопределённое значение формируется, когда размер списка
            увеличивается, а некоторые элементы не определены. Они будут
            сформированы с помощью следующего синтаксиса:
        </para>
        <programlisting>
            undefinedelement_ref=list(2,%i,'f',ones(3,3));
            undefinedelement_ref(6)="toto"
        </programlisting>
    </refsection>
    <refsection>
        <title>Примеры из жизни</title>
        <para>
            Файлы с образцами всех этих переменных прилагаются к
            дистрибутиву Scilab'а. Они лежат в директории:
            <emphasis>SCI/modules/hdf5/tests/sample_scilab_data/</emphasis>
        </para>
        <para>
            На момент редактирования этого документа были приложены
            следующие файлы:
        </para>
        <emphasis role="italic">
            <para>
                booleanmatrix.sod
            </para>
            <para>booleanscalar.sod
            </para>
            <para>booleansparse.sod
            </para>
            <para>emptymatrix.sod
            </para>
            <para>emptysparse.sod
            </para>
            <para>hypermatrixcomplex.sod
            </para>
            <para>hypermatrix.sod
            </para>
            <para>int16.sod
            </para>
            <para>int32.sod
            </para>
            <para>int8.sod
            </para>
            <para>listnested.sod
            </para>
            <para>list.sod
            </para>
            <para>matricedoublecomplexscalar.sod
            </para>
            <para>matricedoublecomplex.sod
            </para>
            <para>matricedoublescalar.sod
            </para>
            <para>matricedouble.sod
            </para>
            <para>matricestringscalar.sod
            </para>
            <para>matricestring.sod
            </para>
            <para>mlist.sod
            </para>
            <para>polynomialscoef.sod
            </para>
            <para>polynomials.sod
            </para>
            <para>sparsematrix.sod
            </para>
            <para>tlist.sod
            </para>
            <para>uint16.sod
            </para>
            <para>uint32.sod
            </para>
            <para>uint8.sod
            </para>
            <para>undefinedelement.sod
            </para>
            <para>voidelement.sod
            </para>
        </emphasis>
    </refsection>
    <refsection>
        <title>История развития формата</title>
        <informaltable border="1">
            <tbody>
                <tr>
                    <td align="justify">
                        <emphasis role="bold">Версия SOD</emphasis>
                    </td>
                    <td align="justify">
                        <emphasis role="bold">Версия Scilab'а</emphasis>
                    </td>
                    <td align="justify">
                        <emphasis role="bold">Описание</emphasis>
                    </td>
                </tr>
                <tr>
                    <td align="center">
                        <para>0</para>
                    </td>
                    <td align="center">
                        <para>5.2.0</para>
                    </td>
                    <td align="justify">
                        <para>Начальная версия формата Scilab/HDF5</para>
                    </td>
                </tr>
                <tr>
                    <td align="center">
                        <para>1</para>
                    </td>
                    <td align="center">
                        <para>5.4.0 alpha / beta</para>
                    </td>
                    <td align="left">
                        <para>
                            Формат по умолчанию для загрузки и сохранения.
                        </para>
                        <para>
                            Предыдущий формат (.bin) по-прежнему поддерживается.
                        </para>
                    </td>
                </tr>
                <tr>
                    <td>
                        <para>2</para>
                    </td>
                    <td>
                        <para>5.4.0</para>
                    </td>
                    <td>
                        <para>
                            Для матриц значений тип double, integer, polynomial и string
                            <emphasis>SCILAB_cols</emphasis> / <emphasis>SCILAB_rows</emphasis> были
                            удалены, чтобы использовать многомерные HDF5.
                        </para>
                    </td>
                </tr>
                <tr>
                    <td align="center">
                        3
                    </td>
                    <td align="center">
                        <para>6.0.0</para>
                    </td>
                    <td align="justify">
                        <para>.bin не поддерживается.</para>
                    </td>
                </tr>
            </tbody>
        </informaltable>
    </refsection>
    <refsection role="see also">
        <title>Смотрите также</title>
        <simplelist type="inline">
            <member>
                <link linkend="save">save</link>
            </member>
            <member>
                <link linkend="load">load</link>
            </member>
            <member>
                <link linkend="listvarinfile">listvarinfile</link>
            </member>
            <member>
                <link linkend="type">type</link>
            </member>
            <member>
                <link linkend="typeof">typeof</link>
            </member>
        </simplelist>
    </refsection>
</refentry>
