|
マクロの概要(入門用) 変数の使い方(Ver8.10対応版)
変数の使い方
「変数」は、あらゆる場面に使います。たとえば、編集中の文章内で何かの文字列を検索するときや、何回か決めた回数分繰り返し処理をさせるときや、
このファイル内の文字数の上限は何文字と決めておきたい場合など、さまざまなシチュエーションに活用できます。これらの例でいくと、検索したい文字列・繰り返し処理の回数・ファイル内文字数の上限といった、
いわば条件をまずコンピュータに記憶させなければなりません。条件だけでなく、現在の設定をコンピュータに教える必要もあります。それら記憶させるためのモノを「変数」といいます。これが変数の概念です。
変数には文字列を取り扱う「文字列型変数」と、数値を取り扱う「数値型変数」があります。
変数名には30文字程度までの適当な英数字を使用することができます。文字列型変数は先頭が「 $ 」で始まり、数値型変数は「 # 」で始まります。変数名は大文字/小文字が区別されます。
変数名はどんなものでもよいのですが、ある程度意味のある名前にしたほうがマクロが見やすくなります。
変数名の例 |
$file_name
#temp2
#value
|
文字列型変数の扱える文字列(変数名ではなく、変数の中身そのもの)は、長さが8000バイト程度(日本語で4000文字程度)までのものなら自由な内容を記憶することができます。ただし、NULL文字(""で表される空文字は可能)を含むことはできません。
数値型変数は4バイト(-2147483648から2147483647)の符号付きの整数を記憶することができます。
変数に文字列か数値を記憶させるには「 = 」記号を使います。記憶させることを「代入」といいます。
文字列型変数に文字列を代入する場合は、代入する文字列を " " で囲みます。数値型変数は整数をそのまま記述してください。
例 |
$file_name = "test.txt"; //文字列型変数「$file_name」に「test.txt」を代入
#value = 1; //数値型変数「#value」に「1」を代入
|
数値型変数には文字列は代入できませんし、逆に文字列変数に数値は代入できません。ただし、文字としての数字は代入できます。
エラーになる例 |
#value = "test.txt"; //数値型変数に文字列「test.txt」を代入
$file_name = 1; //文字列型変数に数値「1」を代入
|
エラーにならない例 |
$file_name = "1"; //文字列型変数に文字としての「1」を代入
|
文字列型変数は「+」記号で連結できます。
例 |
$first_name = "斉藤";$last_name = "秀夫";
$full_name = $first_name + $last_name; //$full_nameは「斉藤秀夫」となります
|
数値型変数は、四則演算(後述します)を行って数値型変数に代入できます。
例 |
#temp = 1;
#work = 2;
#value = #temp + #work;
//数値型変数「#temp」と「#work」を加算し「#value」に代入
#value = #temp * #work;
//数値型変数「#temp」に「#work」を乗算し「#value」に代入
|
- 配列変数
-
同じ種類(文字型変数のみか数値型変数のみか)のデータからなる集合です。変数名のつけ方は、文字型変数や数値型変数と同じですが、「 [ ] 」記号を付記し、[ ]内の添字(インデックスともいい、数字で記述します)で配列の要素を識別します。同じ種類のデータを扱いたい場合などに便利です。配列の最初の要素を表す添字は0(ゼロ)と決まっています。
例(十二支を表す配列変数) |
$eto[0] = "子";$eto[1] = "丑";$eto[2] = "寅";$eto[3] = "卯";
$eto[4] = "辰";$eto[5] = "巳";$eto[6] = "午";$eto[7] = "未";
$eto[8] = "申";$eto[9] = "酉";$eto[10] = "戌";$eto[11] = "亥";
|
上記の例で今年が2003年とします。
次に添字が0(ゼロ)である(このデータの集合の先頭)子の年は1996年です。
これを元に今年が添字の基準0(ゼロ)から何年離れているかを計算させると、今年の干支がわかり表示できます。
#year = 2003 - 1996;
message $eto[#year]; // = 2003年の干支(未)を表示します
|
上記の例は添字が一つですので「一次元配列」といいます。添字を増やすことにより配列の次元を増やすことが可能です。一次元配列より大きい配列を「多次元配列」といいますが、入門向きではないためここでは多次元配列については詳しく説明しません。
例 |
#value[0][0]; //2次元配列の要素[0][0]を表します
|
- グローバル変数とローカル変数
-
マクロを記述したファイルのどこからでも参照(変数の値の読み取りと書き込みが可能)できる変数を「グローバル変数」といいます。グローバル変数は変数を意味する#または$がひとつだけ変数名の前につきます。上記の例はグローバル変数です。
後述しますが、サブルーチン内でしか参照できない変数をローカル変数といいます。ローカル変数は変数を意味する#または$がふたつ変数名の前につきます。
例 |
##value = "test.txt";
$$file_name = 1;
|
ローカル変数はグローバル変数の値を参照したのちに、局所的に変数を変化させるなどの処理を実行し、グローバル変数は変更したくない場合に利用したりします。他の人の書いたマクロやインターネットからダウンロードしたマクロに##valueや$$file_nameという記述があればそれは変数を意味しますが、#と##、$と$$では使われ方が違うということだけを覚えておいてください。
|