変数の使用法
LibreOffice Basic の基本的な変数の使用法について説明します。
変数の命名規則
変数名には、最大 255 文字を使用できます。変数名の最初の文字には、A-Z ないし a-z のいずれかを使用する必要があります。変数名には数字も使用できますが、アンダースコア (「_」) 以外の句読記号や特殊記号は使用できません。LibreOffice Basic の変数名では、大文字と小文字は区別されません。変数名にはスペース記号も使用できますが、その場合は大かっこで囲む必要があります。
下記は変数名の例です:
MyNumber=5 'Correct'
MyNumber5=15 'Correct'
MyNumber_5=20 'Correct'
My Number=20 'Not valid, variable with space must be enclosed in square brackets'
[My Number]=12 'Correct'
DéjàVu=25 'Not valid, special characters are not allowed'
5MyNumber=12 'Not valid, variable may not begin with a number'
Number,Mine=12 'Not valid, punctuation marks are not allowed'
変数の宣言
LibreOffice Basic では、必ずしも変数を明示的に宣言する必要はありません。変数の宣言は、Dim ステートメントで行います。変数名をコンマで区切ることで、1 度に複数の変数を宣言できます。変数型を指定するには、変数名に続けて、型宣言子ないしは該当するキーワードを付けます。
下記は変数宣言の例です:
Dim a$ 'Declares the variable "a" as a String'
Dim a As String 'Declares the variable "a" as a String'
Dim a$, b As Integer 'Declares one variable as a String and one as an Integer'
Dim c As Boolean 'Declares c as a Boolean variable that can be TRUE or FALSE'
特定の変数型として宣言した変数名は、別の型で再宣言することはできません。
強制的な変数宣言
強制的に変数宣言をするには、下記のコマンドを使用します。
Option Explicit
Option Explicit ステートメントは、モジュールの 1 行目に置き、最初の SUB の前に記述する必要があります。通常こうした明示的な宣言をする必要があるのは、配列だけです。その他の変数は、型宣言子を使って型宣言をすればよく、型宣言が省略された場合はデフォルトで 単精度型 とされます。
変数型
LibreOffice Basic のサポートする変数には 4 つのクラスがあります。
-
数値 変数には、数値を収めることができます。これらの変数では大小様々な値を扱うほか、浮動小数点や分数を扱う場合もあります。
-
文字列 変数には、一続きの文字を収めることができます。
-
ブール型 変数には、TRUE (真) および FALSE (偽) という2つの値の一方を収めることができます。
-
オブジェクト 変数には、ドキュメントで使用するテーブルやドキュメントなど、各種のオブジェクトを収めることができます。
整数変数
整数変数には -32768 から 32767 までの整数を収めることができます。こうした整数変数に浮動小数点型の数値を代入すると、小数点以下を丸めた整数値が収められます。整数変数は、プロシージャー内で高速計算が可能であり、またループカウンター用の変数としても適しています。整数変数が消費するメモリ量は、2 バイトです。型宣言用の記号は「%」です。
Dim Variable%
Dim Variable As Integer
ロング整数変数
ロング整数変数には -2147483648 から 2147483647 までの整数を収めることができます。このロング整数変数に浮動小数点型の数値を代入すると、小数点以下を丸めた整数値が収められます。ロング整数変数は、プロシージャー内で高速計算が可能であり、またループカウンター用の変数としても適しています。ロング整数変数が消費するメモリ量は4バイトです。型宣言用の記号は「&」です。
Dim Variable&
Dim Variable As Long
10 進数の変数
10 進数の変数は、正の数、負の数、または 0 を受け取ることができます。 桁数は 29 桁までです。
10 進数には、プラス (+) またはマイナス (-) 記号をプレフィックスとして使用できます (スペースあり、またはスペースなし)。
整数変数に10 進数が代入される場合、LibreOffice Basic は数字を切り上げまたは切り捨てます。
単精度変数
単精度変数は 3.402823 × 10E38 から 1.401298 × 10E-45 までの正または負の値を取ります。単精度変数は浮動小数点方式で数値を扱うため、整数部の桁数が大きくなるほど小数部の精度が小さくなります。 単精度変数の用途としては、それほど高い精度を必要としない数学的な計算処理に適しています。 この場合の計算処理は、整数変数の場合よりも長くかかりますが、倍精度変数よりは短時間で済みます。 単精度変数が消費するメモリ量は 4 バイトです。 型宣言用の記号は「!」です。
Dim Variable!
Dim Variable As Single
倍精度変数
倍精度変数には 1.79769313486232 × 10E308 から 4.94065645841247 × 10E-324 までの正および負の数値を収めることができます。倍精度変数は浮動小数点方式で数値を扱うため、整数部の桁数が大きくなるほど小数部の精度が小さくなります。 倍精度変数の用途としては、高い精度を必要とする計算処理に適しています。 この場合の計算処理は、単精度変数の場合よりも長くかかります。 倍精度変数が消費するメモリ量は 8 バイトです。 型宣言用の記号は「#」です。
Dim Variable#
Dim Variable As Double
通貨変数
通貨変数は、内部的には 64 ビット (8 バイト) の数値として格納され、整数部 15 桁と小数部 4 桁の固定小数点方式として表示されます。 通貨変数は -922337203685477.5808 から +922337203685477.5807 までの値を取ります。通貨変数は、高い精度を必要とする金額計算に使用します。 型宣言用の記号は「@」です。
Dim Variable@
Dim Variable As Currency
文字列変数
文字列変数には、最大 65,535 文字の文字列を収めることができます。格納後の文字列は、対応する Unicode 値に変換されます。文字列変数の用途としては、プログラム内での文字列処理を行う場合や、最大 64 キロバイトの非印刷文字を一時的に格納する場合などに適しています。文字列変数が消費するメモリ量は、格納する文字列の長さに依存します。型宣言用の記号は「$」です。
Dim Variable$
Dim Variable As String
ブール型変数
ブール型変数には、TRUE (真) および FALSE (偽) という 2 つの値の一方のみを収めることができます。数値 0 は FALSE に評価され、その他すべての値は TRUE に評価されます。
Dim Variable As Boolean
日付変数
日付変数には、日付と時刻を示す値を内部形式で収めることができます。 日付変数へ値を代入する際に、Dateserial、Datevalue、Timeserial、Timevalue を使用すると、自動的に内部形式へ変換されます。 日付変数の値を通常の数値に変換するには、Day、Month、Year の各関数および Hour、Minute、Second の各関数を使用できます。 時刻や日付は、内部形式に変換することにより、時刻間の比較計算など行えます。 日付変数は、キーワード Date でのみ宣言できます。
Dim Variable As Date
変数の初期値
宣言された変数には、初期値として「NULL」値が自動的に設定されます。変数型ごとに下記の規約が適用されるので、注意してください。
数値 変数には、宣言後に「0」が自動的に代入されます。
日付変数 には、初期値として「0」が代入されます。これは、Day、Month、Year の各関数および Hour、Minute、Second の各関数を使用して値を「0」に変換した場合と同じです。
文字列変数 には、宣言後に空の文字列 ("") が代入されます。
配列
LibreOffice Basic では 1 次元および多次元配列を使用することができ、変数宣言をする際に変数型を指定します。配列は、プログラム中でリストやテーブルを操作する場合に適しています。配列の各要素の指定は、数値によるインデックスで行います。
配列の宣言には、Dim ステートメントを使う必要があります。配列の長さ (インデックス) の指定は、何通りかの方法があります。
Dim Text$(20) '21 elements numbered from 0 to 20'
Dim Text$(5,4) '30 elements (a matrix of 6 x 5 elements)'
Dim Text$(5 To 25) '21 elements numbered from 5 to 25'
Dim Text$(-15 To 5) '21 elements (including 0), numbered from -15 to 5'
インデックスの範囲には、正の値だけでなく負の値も使用できます。
定数
定数値には、固定された一定の値を割り当てます。これらはプログラム中で一度だけ定義することができ、その後再定義することはできません。
Const ConstName=Expression