# save_format

"save"で作成されるファイルの形式

## 説明

変数は, save関数により以下の形式でScilabにより 保存されます:

各変数のレコードはファイルに連続して追記されます. long 整数 6で始まる変数レコードが エンコード形式の中で変数名を保持します (以下の注記の節を参照ください).

この後,変数の型(long整数)が続き, この型に依存して以下が続きます:

浮動小数点数の行列 (1型)

  row_size m (long整数),

  column_size n (long整数),

  real/complex フラグ ({0,1}のlong整数),

  data (n*m*(it+1) doubles)

多項式 (2型) および暗黙の大きさの添字 (129型)

  row_size m (long整数),

  column_size n (long整数),

  real/complex フラグ {0,1}のlong整数),

  正式な変数名 (16バイト),

  index_table (m*n+1 long 整数);

  data ((N-1)*(it+1) doubles) , ただし N は index_tableの最後のエントリの値

論理値 (4型)

  row_size m (long 整数),

  column_size n (long 整数);

  data (n*m long 整数)

浮動小数点数の疎行列 (5型)

  row_size m (long整数),

  column_size n (long整数),

  real/complex_flag ({0,1}のlong整数),

  total_number_of_non_zero_elements nel (long整数),

  number_of_non_zero_elements_per_row (m long整数),

  column_index_non_zero_elements (nel long 整数),

  non_zero_values (nel*(it+1) double)

論理値の疎行列 (type 6型)

  row_size m (long整数),

  column_size n (long整数),

  unused it (long整数),

  total_number_of_non_zero_elements nel (long整数),

  number_of_non_zero_elements_per_row (long整数),

  column_index_non_zero_elements (nel long整数)

Matlab疎行列 (7型)

  row_size m (long整数),

  column_size n (long整数),

  real/complex_flag it ({0,1}のlong整数),

  total_number_of_non_zero_elements nel (long整数),

  number_of_non_zero_elements_per_column (n long 整数),

  row_index_non_zero_elements (nel long整数),

  non_zero_values (nel*(it+1) double)

整数行列 (8型)

  row_size m (long整数),

  column_size n (long整数),

  integer_type (long整数): signed および unsigned の 1,2,4バイトの整数について それぞれ 1,2,4, または 11,12,14s;

  data (integer_typeが 1 または 11の場合n*mバイト, integer_typeが 2 または 12の場合 n*m 個のshort integer, integer_typeが4または14の場合 n*m 個の long integer

ハンドル (9型)

  version (4バイト)

  row_size m (1バイト),

  column_size n (1バイト),

  data (m*n serialization_records)

  serialization_record は,グラフィックオブジェクトを指す C言語のデータ構造体のフラットな表記です. 各グラフィックオブジェクトはプロパティの(再帰的な)集合で定義されます (get関数参照).

  グラフィックオブジェクトの保存された serialization_recordは以下のような構造となります

    type_length n (1バイト)

    type (n バイト, 型名アスキーコード)

    property_values record (変数の長さ)

文字列 (10型)

  row_size m (long整数),

  column_size n (long整数),

  index_table (n*m+1 個のlong整数);

  data (N 個のlong整数, Scilabでの文字のエンコーディング (see code2str), ただし N は index_tableの最後のエントリの値

未コンパイルの関数 (11型)

  nout (long整数),

  lhs_names (6*nout個の long整数, 以下の注記の節を参照 ),

  nin (long整数),

  rhs_names (6*nin 個のlong 整数, 以下の注記の節を参照 );

  code_length N (long整数),

  code (N 個のlong整数)

コンパイル済みの関数 (13型)

  nout (long整数),

  lhs_names (6*nout 個のlong整数, 以下の注記の節を参照 ),

  nin (long 整数),

  rhs_names (6*nin 個のlong 整数, 以下の注記の節を参照 ),

  pseudo_code_length N (long整数),

  pseudo_code (N 個のlong整数)

ライブラリ (14型)

  path_length np (long整数),

  path_name (np 個のlong整数: パス文字のコードシーケンス , (code2str参照)),

  名前の数 nn (long 整数),

  names (6*nn 個のlong整数, 以下の注記の節を参照 );

list (15型), tlists (16型), mlists (17型)

  フィールド数 n (long整数),

  添字 (n+1 個のlong整数);

  variables_sequence (n 個の変数, 各々のフォーマットに基づき書き込み)

ポインタ (128型)

  処理されません

関数ポインタ (130型)

  function_ptr (long 整数,(funptr参照))

  function_name_code (6 個のlong 整数,以下の注記の節を参照 );

## 注記

数値 (long interger, short integers, double) はリトルインディアン 形式で保存されます.

変数名は特定のエンコーディングの一連の6個のlong整数として保存されます. 詳細は cvname.f ファイルを参照ください.

## 参照

- save
- load
- listvarinfile
- type
- typeof