# Vnano System プラグイン群
(org.vcssl.nano.plugin.system パッケージ)

## 概要

このパッケージ/サブパッケージ内のプラグイン群は、Vnano (VCSSL nano) のスクリプトから利用できる、基本的な入出力機能やユーティリティ機能などを提供します。
なお、このプラグイン群の提供機能は、VCSSL の標準ライブラリの一つである VCSSL System ライブラリ の機能のサブセットになっています。 そのため、VCSSL のスクリプトにおいても同様の機能が標準で利用可能です。

## 提供プラグインおよび機能一覧

SystemEnvironmentXnci1Plugin
  環境に関する情報などを提供するプラグインです。
  変数: EOL / LF / CR
SystemDataTypeXnci1Plugin
  データ型関連のユーティリティ機能を提供するプラグインです。
  変数: INT_MAX / INT_MIN / FLOAT_MAX / FLOAT_MIN_ABS_NORMAL / FLOAT_MIN_ABS_DENORMAL / NAN / INF / UP / UP_SIGNIF / DOWN / DOWN_SIGNIF / HALF_UP / HALF_UP_SIGNIF / HALF_DOWN / HALF_DOWN_SIGNIF / HALF_TO_EVEN / HALF_TO_EVEN_SIGNIF
  関数: nan(value) / inf(value) / length(array, dimIndex) / arrayrank(array) / round(value, numberOfDigits, mode)
SystemTerminalIOXnci1Plugin
  端末との入出力機能を提供するプラグインです。
  関数: print(...) / println(...)
SystemUserIOXnci1Plugin
  ユーザーとの間の対話的な入出力機能を提供するプラグインです。
  関数: popup(message) / alert(message) / confirm(message) / input(message) / input(message, defaultValue)
SystemFileIOXnci1Plugin
  ファイル入出力機能を提供するプラグインです。
  変数: READ / WRITE / APPEND / READ_CSV / WRITE_CSV / APPEND_CSV / READ_TSV / WRITE_TSV / APPEND_TSV / READ_STSV
  関数: open(fileName, mode) / open(fileName, mode, encoding) / close(fileId) / flush(fileId) / write(fileId, ...) / writeln(fileId, ...) / read(fileId) / readln(fileId) / countln(fileId) / save(filePath, value) / load(filePath) / exists(filePath) / isdir(directoryPath) / listdir(directoryPath) / mkdir(directoryPath) /
SystemTimeXnci1Plugin
  時間制御に関するユーティリティ機能を提供するプラグインです。
  関数: time() / sleep(sleepTime)
SystemTerminationXnci1Plugin
  スクリプトを終了させる機能を提供するプラグインです。
  関数: exit() / exit(exitStatusCode) / error(errorMessage)
SystemTestXnci1Plugin
  テストのためのユーティリティ機能を提供するプラグインです。
  関数: assert(expectedCondition)

## ライセンス

上記のプラグインは全て CC0 で公開されています。

## SystemEnvironmentXnci1Plugin
(org.vcssl.nano.plugin.system.xnci1.SystemEnvironmentXnci1Plugin)

環境に関する情報などを提供するプラグインです。

### 変数

変数 | EOL
--- | ---
値 | 環境におけるデフォルトの改行コードを格納しています。
データ型 | string (定数)

変数 | LF
--- | ---
値 | 改行コードの一種である LF の値を格納しています。
データ型 | string (定数)

変数 | CR
--- | ---
値 | 改行コードの一種である CR の値を格納しています。
データ型 | string (定数)

## SystemDataTypeXnci1Plugin
(org.vcssl.nano.plugin.system.xnci1.SystemDataTypeXnci1Plugin)

データ型関連のユーティリティ機能を提供するプラグインです。

### 変数

変数 | INT_MAX
--- | ---
値 | int 型の最大値（正の値）を格納しています。
データ型 | int (定数)

変数 | INT_MIN
--- | ---
値 | int 型の最小値（負の値）を格納しています。
データ型 | int (定数)

変数 | FLOAT_MAX
--- | ---
値 | float 型の最大値（正の値）を格納しています。
データ型 | float (定数)

変数 | FLOAT_MIN_ABS_NORMAL
--- | ---
値 | 正規化数の範囲内において、float 型で表現可能な、最も絶対値が小さい値（正の値、0 以外）を格納しています。
データ型 | float (定数)

変数 | FLOAT_MIN_ABS_DENORMAL
--- | ---
値 | 非正規化数の範囲を含めて、float 型で表現可能な、最も絶対値が小さい値（正の値、0 以外）を格納しています。
データ型 | float (定数)

変数 | NAN
--- | ---
値 | NaN の値を格納しています。NaN は、異常な浮動小数点演算を行った結果として生じる、特殊な値です。なお、NaN は NaN を含む全ての値と等しくないため、NaN かどうかを「 == 」演算子によって検査する事はできません。検査には「 nan(value) 」関数を使用してください。
データ型 | float (定数)

変数 | INF
--- | ---
値 | 無限大の値（正の値）を格納しています。
データ型 | float (定数)

Variable | UP
--- | ---
Value | round 関数の丸めモードの一つであり、 数値の小数部を指定された桁数に切り上げます。 なお、丸める数値が負である場合は、符号を除いた部分が、正の値と同じように丸められます。
Data Type | int (constant)

Variable | UP_SIGNIF
--- | ---
Value | round 関数の丸めモードの一つであり、 数値の仮数部を指定された桁数に切り上げます。 なお、丸める数値が負である場合は、符号を除いた部分が、正の値と同じように丸められます。
Data Type | int (constant)

Variable | DOWN
--- | ---
Value | round 関数の丸めモードの一つであり、 数値の小数部を指定された桁数に切り捨てます。 なお、丸める数値が負である場合は、符号を除いた部分が、正の値と同じように丸められます。
Data Type | int (constant)

Variable | DOWN_SIGNIF
--- | ---
Value | round 関数の丸めモードの一つであり、 数値の仮数部を指定された桁数に切り捨てます。 なお、丸める数値が負である場合は、符号を除いた部分が、正の値と同じように丸められます。
Data Type | int (constant)

Variable | HALF_UP
--- | ---
Value | round 関数の丸めモードの一つであり、 数値の小数部が指定された桁数になるよう、以下の通りに丸めます。 丸めで除去される部分が「 ...50000... 」よりも大きい場合、切り上げられます。 丸めで除去される部分が「 ...50000... 」よりも小さい場合、切り捨てられます。 丸めで除去される部分が「 ...50000... 」と等しい場合、切り上げられます。 なお、丸める数値が負である場合は、符号を除いた部分が、正の値と同じように丸められます。
Data Type | int (constant)

Variable | HALF_UP_SIGNIF
--- | ---
Value | round 関数の丸めモードの一つであり、 数値の仮数部が指定された桁数になるよう、以下の通りに丸めます。 丸めで除去される部分が「 ...50000... 」よりも大きい場合、切り上げられます。 丸めで除去される部分が「 ...50000... 」よりも小さい場合、切り捨てられます。 丸めで除去される部分が「 ...50000... 」と等しい場合、切り上げられます。 なお、丸める数値が負である場合は、符号を除いた部分が、正の値と同じように丸められます。
Data Type | int (constant)

Variable | HALF_DOWN
--- | ---
Value | round 関数の丸めモードの一つであり、 数値の小数部が指定された桁数になるよう、以下の通りに丸めます。 丸めで除去される部分が「 ...50000... 」よりも大きい場合、切り上げられます。 丸めで除去される部分が「 ...50000... 」よりも小さい場合、切り捨てられます。 丸めで除去される部分が「 ...50000... 」と等しい場合、切り捨てられます。 なお、丸める数値が負である場合は、符号を除いた部分が、正の値と同じように丸められます。
Data Type | int (constant)

Variable | HALF_DOWN_SIGNIF
--- | ---
Value | round 関数の丸めモードの一つであり、 数値の仮数部が指定された桁数になるよう、以下の通りに丸めます。 丸めで除去される部分が「 ...50000... 」よりも大きい場合、切り上げられます。 丸めで除去される部分が「 ...50000... 」よりも小さい場合、切り捨てられます。 丸めで除去される部分が「 ...50000... 」と等しい場合、切り捨てられます。 なお、丸める数値が負である場合は、符号を除いた部分が、正の値と同じように丸められます。
Data Type | int (constant)

Variable | HALF_TO_EVEN
--- | ---
Value | round 関数の丸めモードの一つであり、 数値の小数部が指定された桁数になるよう、以下の通りに丸めます。 丸めで除去される部分が「 ...50000... 」よりも大きい場合、切り上げられます。 丸めで除去される部分が「 ...50000... 」よりも小さい場合、切り捨てられます。 丸めで除去される部分が「 ...50000... 」と等しい場合、丸め結果の最終桁が偶数になる方向へ丸められます。 なお、丸める数値が負である場合は、符号を除いた部分が、正の値と同じように丸められます。
Data Type | int (constant)

Variable | HALF_TO_EVEN
--- | ---
Value | round 関数の丸めモードの一つであり、 数値の仮数部が指定された桁数になるよう、以下の通りに丸めます。 丸めで除去される部分が「 ...50000... 」よりも大きい場合、切り上げられます。 丸めで除去される部分が「 ...50000... 」よりも小さい場合、切り捨てられます。 丸めで除去される部分が「 ...50000... 」と等しい場合、丸め結果の最終桁が偶数になる方向へ丸められます。 なお、丸める数値が負である場合は、符号を除いた部分が、正の値と同じように丸められます。
Data Type | int (constant)

### 関数

関数 | nan(value)
--- | ---
機能 | 値が NaN かどうかを検査します。NaN は、異常な浮動小数点演算を行った結果として生じる、特殊な値です。なお、NaN は NaN を含む全ての値と等しくないため、NaN かどうかを「 == 」演算子によって検査する事はできません。検査にはこの関数を使用してください。
宣言形式 | bool nan(float value)
引数 | (float型) value: 検査対象の値。
戻り値 | (bool型) 引数 value が NaN の場合は true, NaN でなければ false。
使用例 | print( nan(0.0/0.0) ); // true

関数 | inf(value)
--- | ---
機能 | 値が正または負の無限大かどうかを検査します。
宣言形式 | bool inf(float value)
引数 | (float型) value: 検査対象の値。
戻り値 | (bool型) 引数 value が正または負の無限大の場合は true, そうでなければ false。
使用例 | print( inf(1.0/0.0) ); // true

関数 | length(array, dimIndex)
--- | ---
機能 | 配列 array の、dimIndex に指定された次元における要素数を返します。
宣言形式 | int length(any array[]...[], int dimIndex)
引数 | (任意型、任意次元の配列) array: 要素数を調べたい配列。 (int型) dimIndex: 要素数を調べたい次元のインデックス（左端の次元が 0 番目）。
戻り値 | (int型) 指定された配列の、指定された次元における要素数。
使用例 | int a[10][11][12]; println( length(a,0) ); // 10 println( length(a,1) ); // 11 println( length(a,2) ); // 12

関数 | arrayrank(array)
--- | ---
機能 | 配列 array の次元数を返します。
宣言形式 | int arrayrank(any array[]...[])
引数 | (任意型、任意次元の配列) array: 次元数を調べたい配列。
戻り値 | (int型) 指定された配列の次元数。
使用例 | int a[10][11][12]; print( arrayrank(a) ); // 3

関数 | round(floatValue, numberOfDigits, roundingMode)
--- | ---
機能 | 指定された値を丸めます。 なお、この関数は、内部的に2進数表現で値を保持する float 型の数値を、 10進数表現に変換してから丸め、再び2進数表現の float 型に変換して返します。 その際の2進/10進変換誤差を避けたい場合は、 代わりに round(stringValue, ...) 関数を使用してください。
宣言形式 | float round(float floatValue, int numberOfDigits, int roundingMode)
引数 | (float型) floatValue: 丸める値。 (int型) numberOfDigits: 丸め結果において、丸め対象部（小数部または仮数部、モード指定に依存）がとるべき桁数。 (int型) roundingMode: 丸め挙動のモード（例：HALF_UP など）。
戻り値 | (float型) 丸められた値。
使用例 | float result = round(123.0625, 3, HALF_UP); print(result); // 123.063

関数 | round(stringValue, numberOfDigits, roundingMode)
--- | ---
機能 | 指定された値を丸めます。
宣言形式 | string round(string stringValue, int numberOfDigits, int roundingMode)
引数 | (string型) stringValue: 丸める値。 (int型) numberOfDigits: 丸め結果において、丸め対象部（小数部または仮数部、モード指定に依存）がとるべき桁数。 (int型) roundingMode: 丸め挙動のモード（例：HALF_UP など）。
戻り値 | (string型) 丸められた値。
使用例 | string result = round("123.0625", 3, HALF_UP); print(result); // 123.063

## SystemTerminalIOXnci1Plugin
(org.vcssl.nano.plugin.system.xnci1.SystemTerminalIOXnci1Plugin)

端末との入出力機能を提供するプラグインです。
スクリプトエンジンの「 UI_MODE 」オプションが「 CUI 」に設定されている場合は、 入出力処理は標準入出力に対して行われます。 スクリプトエンジンの「 UI_MODE 」オプションが「 GUI 」に設定されている場合は、 端末に似たウィンドウが起動し、それに対して入出力処理が行われます。

### 関数

関数 | print(...)
--- | ---
機能 | 値を空白（タブ）区切りで端末に出力します。
宣言形式 | void print(...)
引数 | (任意型、任意次元、任意個数) 端末に出力したい値。
戻り値 | なし
使用例 | print( "Hello", 123, 4.56, true ); // Hello 123 4.56 true

関数 | println(...)
--- | ---
機能 | 値を空白（タブ）区切りで端末に出力し、改行します。
宣言形式 | void println(...)
引数 | (任意型、任意次元、任意個数) 端末に出力したい値。
戻り値 | なし
使用例 | println( "Hello", 123, 4.56, true ); // Hello 123 4.56 true (改行)

## SystemUserIOXnci1Plugin
(org.vcssl.nano.plugin.system.xnci1.SystemUserIOXnci1Plugin)

ユーザーとの間の対話的な入出力機能を提供するプラグインです。
スクリプトエンジンの「 UI_MODE 」オプションが「 CUI 」に設定されている場合は、 入出力処理は標準入出力に対して行われます。 スクリプトエンジンの「 UI_MODE 」オプションが「 GUI 」に設定されている場合は、 呼び出しごとにポップアップウィンドウなどが表示され、 その上でユーザーによる操作が行われます。

### 関数

関数 | popup(message)
--- | ---
機能 | メッセージや値などを表示します。
宣言形式 | void popup(any message)
引数 | (任意型) message: 表示したいメッセージや値。
戻り値 | なし
使用例 | popup( "Hello" );

関数 | alert(message)
--- | ---
機能 | メッセージを表示します。popup 関数と比べて、ウィンドウタイトルや表示のされ方などが、警告や注意を促す用途に適したものになっています。
宣言形式 | void alert(string message)
引数 | (string型) message: 表示したいメッセージ。
戻り値 | なし
使用例 | alert( "Oops" );

関数 | confirm(message)
--- | ---
機能 | メッセージを表示し、承認するか却下するかの選択をユーザーに求めます。
宣言形式 | bool confirm(string message)
引数 | (string型) message: 表示したいメッセージ。
戻り値 | (bool型) 承認された場合に true
使用例 | bool isYes = confirm( "OK?" );

関数 | input(message)
--- | ---
機能 | メッセージを表示し、値の入力をユーザーに求めます。
宣言形式 | string[] input(string message)
引数 | (string型) message: 表示したいメッセージ。
戻り値 | (string[]型) 入力された値（要素数は通常 1 であり、スカラ変数でも受け取れます）
使用例 | string inputtedValue[] = input( "Please input" );

関数 | input(message, defaultValue)
--- | ---
機能 | メッセージを表示し、値の入力をユーザーに求めます。デフォルト値を指定可能です。
宣言形式 | string[] input(string message, any defaultValue)
引数 | (string型) message: 表示したいメッセージ。 (任意型) defaultValue: デフォルト値。
戻り値 | (string[]型) 入力された値（要素数は通常 1 であり、スカラ変数でも受け取れます）
使用例 | string inputtedValue[] = input( "Please input", "Default value" );

## SystemFileIOXnci1Plugin
(org.vcssl.nano.plugin.system.xnci1.SystemFileIOXnci1Plugin)

ファイル入出力機能を提供するプラグインです。

### 変数

変数 | READ
--- | ---
値 | ファイルを「読み込み」モードで開く場合に、open 関数の引数 mode に指定する値です。
データ型 | string (定数)

変数 | WRITE
--- | ---
値 | ファイルを「書き込み」モードで開く場合に、open 関数の引数 mode に指定する値です。
データ型 | string (定数)

変数 | APPEND
--- | ---
値 | ファイルを「追記」モードで開く場合に、open 関数の引数 mode に指定する値です。
データ型 | string (定数)

変数 | READ_CSV
--- | ---
値 | ファイルを「数値CSV読み込み」モードで開く場合に、open 関数の引数 mode に指定する値です。 ここでの「数値CSV」とは、各行に複数の数値がカンマ「,」区切りで記載された形式を指すものです。 複雑なテキストの値は想定していないため、値がカンマ記号を含む際のエスケープ処理や、値をダブルクォーテーションで囲ったり/外したりなどの対処は行われません。 単純に、行内容を「,」記号で区切って読み込みます。
データ型 | string (定数)

変数 | WRITE_CSV
--- | ---
値 | ファイルを「数値CSV書き込み」モードで開く場合に、open 関数の引数 mode に指定する値です。 ここでの「数値CSV」とは、各行に複数の数値がカンマ「,」区切りで記載された形式を指すものです。 複雑なテキストの値は想定していないため、値がカンマ記号を含む際のエスケープ処理や、値をダブルクォーテーションで囲ったり/外したりなどの対処は行われません。 単純に、複数の値を「,」記号で区切って書き込みます。
データ型 | string (定数)

変数 | APPEND_CSV
--- | ---
値 | ファイルを「数値CSV追記」モードで開く場合に、open 関数の引数 mode に指定する値です。 ここでの「数値CSV」とは、各行に複数の数値がカンマ「,」区切りで記載された形式を指すものです。 複雑なテキストの値は想定していないため、値がカンマ記号を含む際のエスケープ処理や、値をダブルクォーテーションで囲ったり/外したりなどの対処は行われません。 単純に、複数の値を「,」記号で区切って書き込みます。
データ型 | string (定数)

変数 | READ_TSV
--- | ---
値 | ファイルを「数値TSV読み込み」モードで開く場合に、open 関数の引数 mode に指定する値です。 ここでの「数値TSV」とは、各行に複数の数値がタブ文字（横に広い空白）区切りで記載された形式を指すものです。 複雑なテキストの値は想定していないため、値がタブ文字を含む際のエスケープ処理や、値をダブルクォーテーションで囲ったり/外したりなどの対処は行われません。 単純に、行内容をタブ文字で区切って読み込みます。
データ型 | string (定数)

変数 | WRITE_TSV
--- | ---
値 | ファイルを「数値TSV書き込み」モードで開く場合に、open 関数の引数 mode に指定する値です。 ここでの「数値TSV」とは、各行に複数の数値がタブ文字（横に広い空白）区切りで記載された形式を指すものです。 複雑なテキストの値は想定していないため、値がタブ文字を含む際のエスケープ処理や、値をダブルクォーテーションで囲ったり/外したりなどの対処は行われません。 単純に、複数の値をタブ文字で区切って書き込みます。
データ型 | string (定数)

変数 | APPEND_TSV
--- | ---
値 | ファイルを「数値TSV追記」モードで開く場合に、open 関数の引数 mode に指定する値です。 ここでの「数値TSV」とは、各行に複数の数値がタブ文字（横に広い空白）区切りで記載された形式を指すものです。 複雑なテキストの値は想定していないため、値がタブ文字を含む際のエスケープ処理や、値をダブルクォーテーションで囲ったり/外したりなどの対処は行われません。 単純に、複数の値をタブ文字で区切って書き込みます。
データ型 | string (定数)

変数 | READ_STSV
--- | ---
値 | ファイルを「スペース＆タブ区切り読み込み」モードで開く場合に、open 関数の引数 mode に指定する値です。 ここでの「スペース＆タブ区切り」とは、各行に複数の数値が、空白領域で区切られて並ぶ形式を指すものです。 特に、1つの空白領域に、複数のスペースやタブ文字が連続する場合があるのが特徴です。 これは、恐らくテキストエディターで中身を読む際の見やすさ（列を縦に揃えたい等）が意識された形式で、数値計算/データ解析関連分野などでしばしば存在します。
データ型 | string (定数)

### 関数

関数 | open(fileName, mode)
--- | ---
機能 | ファイルを、指定されたモードで開き、ファイルIDを割り振って返します。 読み書きの際の文字コードは、デフォルトでは UTF-8 が用いられます。ただし「 FILE_IO_ENCODING 」オプションが設定されている場合には、設定値の文字コードが用いられます。
宣言形式 | int open(string fileName, string mode)
引数 | (string型) fileName: 開くファイルの名前またはパス。 (string型) mode: どういった処理のために開くかを表すモードで、READ や WRITE などから選んで指定します。
戻り値 | (int型) 開いたファイルに割り振られたID番号で、読み書きなどの処理を行う際に使用します。 ※ OS側で割り当てられているファイルIDとは無関係で、単純にスクリプト内で開いた順番で「1、2、3、...」と割り振られる番号です（ただし close 済みのIDは再利用されます）。
使用例 | int fileId = open("example.txt", READ);

関数 | open(fileName, mode, encoding)
--- | ---
機能 | ファイルを、指定されたモードと文字コードで開き、ファイルIDを割り振って返します。
宣言形式 | int open(string fileName, string mode, string encoding)
引数 | (string型) fileName: 開くファイルの名前またはパス。 (string型) mode: どういった処理のために開くかを表すモードで、READ や WRITE などから選んで指定します。 (string型) encoding: ファイルの読み書きに使用する文字コード名（ "UTF-8" や "Shift_JIS" など ）。
戻り値 | (int型) 開いたファイルに割り振られたID番号で、読み書きなどの処理を行う際に使用します。 ※ OS側で割り当てられているファイルIDとは無関係で、単純にスクリプト内で開いた順番で「1、2、3、...」と割り振られる番号です（ただし close 済みのIDは再利用されます）。
使用例 | int fileId = open("example.txt", READ, "Shift_JIS");

関数 | close(fileId)
--- | ---
機能 | 指定されたファイルを閉じます。
宣言形式 | void close(int fileId)
引数 | (int型) fileId: 対象ファイルのID（ open関数でファイルを開いた際の戻り値 ）。
戻り値 | なし
使用例 | int fileId = open("example.txt", READ); ... close(fileId);

関数 | flush(fileId)
--- | ---
機能 | 指定されたファイルへの書き込み処理において、一時的にバッファに控えられている内容を、全て書き込みます（フラッシュ）。 なお、ファイルを close で閉じる際には、自動でフラッシュされるため、毎回この関数で明示的に行う必要はありません。 この関数は、ファイルを開いたまま長時間保持しつつ、特定のタイミングでフラッシュしたい場面などで使用します。
宣言形式 | void flush(int fileId)
引数 | (int型) fileId: 対象ファイルのID（ open関数でファイルを開いた際の戻り値 ）。
戻り値 | なし
使用例 | int fileId = open("example.txt", WRITE); ... flush(fileId);

関数 | write(fileId, ...)
--- | ---
機能 | 指定されたファイルに、指定された値を書き込みます。
宣言形式 | void write(int fileId, ...)
引数 | (int型) fileId: 対象ファイルのID（ open関数でファイルを開いた際の戻り値 ）。 (その後に任意型、任意個数で) 書き込む値。
戻り値 | なし
使用例 | int fileId = open("example.txt", WRITE); ... write(fileId, "abc", 123, 4.56, true);

関数 | writeln(fileId, ...)
--- | ---
機能 | 指定されたファイルに、指定された値を書き込み、最後に改行します。
宣言形式 | void write(int fileId, ...)
引数 | (int型) fileId: 対象ファイルのID（ open関数でファイルを開いた際の戻り値 ）。 (その後に任意型、任意個数で) 書き込む値。
戻り値 | なし
使用例 | int fileId = open("example.txt", WRITE); ... writeln(fileId, "abc", 123, 4.56, true);

関数 | read(fileId)
--- | ---
機能 | 指定されたファイルから、内容を全て読み込んで返します。
宣言形式 | string[] read(int fileId)
引数 | (int型) fileId: 対象ファイルのID（ open関数でファイルを開いた際の戻り値 ）。
戻り値 | (string型配列) READモードでは、全内容が要素数 1 の配列として返されます（この場合はスカラ変数にもそのまま代入できます）。 READ_CSV / READ_TSV / READ_STSV モードでは、各モードに応じた区切り文字や改行の位置によって、区切られた値が配列として返されます。
使用例 | int fileId = open("example.txt", READ); ... string contentInFile = read(fileId);

関数 | readln(fileId)
--- | ---
機能 | 指定されたファイルから、1 行分の内容を読み込んで返します。
宣言形式 | string[] readln(int fileId)
引数 | (int型) fileId: 対象ファイルのID（ open関数でファイルを開いた際の戻り値 ）。
戻り値 | (string型配列) READモードでは、行の内容が要素数 1 の配列として返されます（この場合はスカラ変数にもそのまま代入できます）。 READ_CSV / READ_TSV / READ_STSV モードでは、各モードに応じた区切り文字によって、区切られた値が配列として返されます。
使用例 | int fileId = open("example.txt", READ); ... string contentInLine = readln(fileId); （または） int fileId = open("example.txt", READ_CSV); ... string valuesInLine[] = readln(fileId);

関数 | countln(fileId)
--- | ---
機能 | 指定されたファイルの行数をカウントします。 なお、この関数は内部で、ファイルの全行を一旦全て読み込んだ後に、同じモードで再び開きます。 そのため、この関数の使用は、ファイルを開いた直後に行ってください。 中途半端に数行だけ読んだ状態で使用すると、その状態が初期化されてしまう上に、正しい行数もカウントされません。
宣言形式 | int countln(int fileId)
引数 | (int型) fileId: 対象ファイルのID（ open関数でファイルを開いた際の戻り値 ）。
戻り値 | (int型) ファイル内の行数。
使用例 | int fileId = open("example.txt", READ); int lineN = countln(fileId);

関数 | save(filePath, value)
--- | ---
機能 | 指定されたファイルを開いて、指定された値を書き込み、ファイルを閉じます。 書き込みの際の文字コードは、デフォルトでは UTF-8 が用いられます。ただし「 FILE_IO_ENCODING 」オプションが設定されている場合には、設定値の文字コードが用いられます。
宣言形式 | void save(string filePath, any value)
引数 | (string型) filePath: 書き込み対象ファイルの名前またはパス。 (任意型) value: 書き込む値。
戻り値 | なし
使用例 | save("example.txt", 123);

関数 | load(filePath)
--- | ---
機能 | 指定されたファイルを開いて、内容を全て読み込み、ファイルを閉じます。 読み込みの際の文字コードは、デフォルトでは UTF-8 が用いられます。ただし「 FILE_IO_ENCODING 」オプションが設定されている場合には、設定値の文字コードが用いられます。
宣言形式 | string load(string filePath)
引数 | (string型) filePath: 読み込み対象ファイルの名前またはパス。
戻り値 | (string型) 読み込まれた内容。
使用例 | string content = read("example.txt");

関数 | exists(filePath)
--- | ---
機能 | 指定されたファイルパスの位置に、実際にファイルやフォルダが存在するかどうかを判定します。
宣言形式 | bool exists(string filePath)
引数 | (string型) filePath: 存在を判定したいファイルやフォルダのパス。
戻り値 | (bool型) ファイルが存在する場合に true。
使用例 | bool result = exists("./temp/example.txt");

関数 | isdir(directoryPath)
--- | ---
機能 | 指定されたファイルパスの位置にあるものが、フォルダかどうかを判定します。
宣言形式 | bool isdir(string directoryPath)
引数 | (string型) directoryPath: フォルダかどうかを判定したいファイルパス。
戻り値 | (bool型) フォルダである場合に true。
使用例 | bool result = isdir("./temp/example_folder");

関数 | listdir(directoryPath)
--- | ---
機能 | 指定されたフォルダ内にある、全てのファイルやサブフォルダの名前を、リストアップして返します。
宣言形式 | string[] listdir(string directoryPath)
引数 | (string型) directoryPath: フォルダのパス。
戻り値 | (string型配列) 指定されたフォルダ内の、全てのファイルやサブフォルダの名前を格納する配列。
使用例 | string elementNames[] = listdir("./temp/example_folder");

関数 | mkdir(directoryPath)
--- | ---
機能 | 指定されたパスの位置に、フォルダを作成します。ただし、あらかじめ親階層のフォルダが存在している必要があります。 そのため、深い階層のフォルダを作成する場合には、親階層から子孫階層へと、順に作成していく必要があります。 なお、作成対象のフォルダが既に存在している場合には、何も起こりません（エラーも発生しません）。
宣言形式 | void mkdir(string directoryPath)
引数 | (string型) directoryPath: 作成対象のフォルダのパス。
戻り値 | なし
使用例 | mkdir("./temp"); mkdir("./temp/example_folder"); mkdir("./temp/example_folder/example_folder2");

## SystemTimeXnci1Plugin
(org.vcssl.nano.plugin.system.xnci1.SystemTimeXnci1Plugin)

時間制御に関するユーティリティ機能を提供するプラグインです。

### 関数

関数 | time()
--- | ---
機能 | 現在のスクリプトの実行開始時点からの経過時間を、ミリ秒単位で取得して返します。
宣言形式 | int time()
引数 | なし
戻り値 | (int型) 現在のスクリプト実行開始時点からの、ミリ秒単位での経過時間。
使用例 | int t = time(); print( t );

関数 | sleep(sleepTime)
--- | ---
機能 | スクリプトの実行を、ミリ秒単位で指定された時間だけ停止します。
宣言形式 | void sleep( int sleepTime )
引数 | (int型) sleepTime: ミリ秒単位での停止時間。
戻り値 | なし
使用例 | sleep(1000); // 1秒停止

## SystemTerminationXnci1Plugin
(org.vcssl.nano.plugin.system.xnci1.SystemTerminationXnci1Plugin)

スクリプトを終了させる機能を提供するプラグインです。

### 関数

関数 | exit()
--- | ---
機能 | エラーを発生させずにスクリプトの実行を終了します。
宣言形式 | void exit()
引数 | なし
戻り値 | なし
使用例 | exit();

関数 | exit(exitStatusCode)
--- | ---
機能 | 終了ステータスコードを指定して、エラーを発生させずにスクリプトの実行を終了します。
宣言形式 | void exit(int exitStatusCode)
引数 | (int型) exitStatusCode: 終了ステータスコード（扱いは処理系依存）
戻り値 | なし
使用例 | exit(1);

関数 | error(errorMessage)
--- | ---
機能 | 指定されたメッセージのエラーを発生させ、スクリプトの実行を終了します。
宣言形式 | void error(string errorMessage)
引数 | (string型) errorMessage: ユーザーに通知したいエラーメッセージ。
戻り値 | なし
使用例 | error( "something is wrong !" );

## SystemTestXnci1Plugin
(org.vcssl.nano.plugin.system.xnci1.SystemTestXnci1Plugin)

テストのためのユーティリティ機能を提供するプラグインです。

### 関数

関数 | assert(expectedCondition)
--- | ---
機能 | 引数に指定した条件式の値が true であれば何もせず、false であればエラーを発生させます。
宣言形式 | void assert( bool expectedCondition )
引数 | (bool型) expectedCondition: 期待される条件式の値。
戻り値 | なし
使用例 | int x; x = 1; assert( 0 < x ); // OK x = -1; assert( 0 < x ) ; // Error