2010年4月20日火曜日

ローカル変数を使う方法 - AWK

AWKのパターンと制御文
AWKプログラムを書く
○Gawk on Windows ○Gawk ○mawk32 ○Mawk ○awk
AWKの変数は、関数の引数以外はグローバル変数です。
ローカル変数が欲しい時は、関数の引数の後ろに、使いたい変数を追加します。

**** グローバル変数とローカル変数の違い
o グローバル変数は、ブログラムのどこからでも更新出来る変数です。
   + AWKの変数は、基本的にグローバル変数です。
o ローカル変数は、括弧の中でだけ有効な変数。部品を作る時に便利です。
o ローカル変数の直前は、多めに空けておく事が推奨されているみたいです。
   + 理由は、実際に必要な引数と明確に区別する為です。

**** 例1. ローカル変数 tmp1を使う方法
----------------
function f(v1, v2,    tmp1) { # ローカル変数の前を空けるのは、AWK界の慣習みたいです。
  tmp1 = v1 * v2;
}
{
  tmp1 = 10;
  f(2, 3);
  print "tmp1の値は " tmp1 " です。"; # 10のままです。
}
----------------

**** 例2. 関数の引数にしなかった時の動作
  どこかで、同じ名前の変数を使っていると、その値が上書きされます。
----------------
function f(v1, v2) {
  tmp1 = v1 * v2;
}
{
  tmp1 = 10;
  f(2, 3);
  print "tmp1の値は " tmp1 " です。"; # 上書きされて 6になります。
}
----------------


**** 確認した処理系
o Gawk on Windows 3.1.7
o Gawk for Windows 3.1.6
o mawk MBCS (32bit版) 1.3.3
o Mawk for Windows 1.3.3
o original = the one true awk(updated May 1, 2007)


==
関連ページ:
    ▼AWKのパターンと制御文▼ABC順
    ▼AWKプログラムを書く▼ABC順
    ▼AWK
    ▼制作メモ
    > AWKプログラム実行時に変数を設定する方法
    AWKで入力ファイルの指定を不要にする
    > ▼AWKの関数、変数、制御文(目的別)
    +
    AWKの入力ファイルを、AWKプログラムの中で追加、削除(= キャンセル)する
(2010年8月2日追加。ローカル変数を使う時の慣習)