2010年7月31日土曜日

function = 関数を作る - AWK

AWKのパターンと制御文
○Gawk on Windows ○Gawk ○mawk32 ○Mawk ○awk
関数を作ります。
o 部品化したい時は、「ローカル変数を使う」も合わせてどうぞ。

**** 書式
--------
function 関数名( [引数の列] ) { [内容] }
--------

o 関数名 -- 名前を付けます。
   + 最初の文字は、半角アルファベット、もしくは半角のアンダースコア「_」
   + 2文字目以降は、半角アルファベット、半角数字、もしくは半角のアンダースコア「_」
o 引数の列 -- カンマで区切ります。
   + 引数の名前の付け方は、関数名と同じです。
   + functionで定義する引数は、実際に使う数よりも多く指定する事も出来ます。
   + 不要な時は、省略する事も出来ます。
o 内容 -- 実行したい文を並べます。
   + 不要な時は、省略する事も出来ます。


**** 使用例
--------
function f(a, b) {
  return (a + b);
}
BEGIN {
  print f(390, 3); # 表示は 393
}
--------

o 行末のセミコロンは、C言語の書き方に合わせました。無くても動きます。


**** 機能
o 関数を作ります。
o 引数は、配列以外は値渡しです。
   + 配列以外は、値渡しになります。
      + 関数内で引数の値を変更しても、関数の呼び出し元に影響を与えません。
   + 配列の場合は、参照渡しになります。
      + 関数内で配列の要素の値を変更すると、関数の呼び出し元にも影響を与えます。
o その他、途中で終了したい時や、配列を使わずに値を1つ戻したい時は、return を使います。


**** メモ
o 作った関数は、再帰呼び出しも可能です。
   + 少なくとも、自分を100回呼び出す事は出来ました。
o AWKの関数定義では、引数を余分に書いて、局所変数として使う技があります。


**** 確認した処理系
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
    ▼制作メモ
    > return = 関数の呼び出し元に戻る
    exit = 終了する
    next = 次行の処理に移る
    +
    ローカル変数を使う
    func (= function の古い書き方)
(2010年9月15日追加。再帰呼び出し可能と明記)