2010年7月27日火曜日

exit = 終了する - AWK

AWKのパターンと制御文
○Gawk on Windows ○Gawk ○mawk32 ○Mawk ○awk
処理を終了します。ENDパターンの外で呼び出した時は、ENDパターンを通ってから終了します。


**** 書式
--------
exit [AWKプログラムの戻り値]
--------

o AWKプログラムの戻り値 -- 整数を指定します。(-1, 0, 1, 2 ...)
    + 実数を指定すると、整数部分のみ指定したものとみなされます。
    + この値を指定しなかった時は 0 を仮定します。
   + 不要な時は、省略する事も出来ます。

    + 指定出来る範囲は、処理系やシステムによって異なります。
    + Windows XP SP3の場合は、-2147483647 から 2147483647 までを、処理系共通で指定出来ます。


**** 使用例
--------
{
  if ($1 == "ネギ") {
    print "ミクさんを誘導するのは止めて下さい。";
    exit 39;
  }
  print;
}
--------

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


**** 機能
o 処理を終了します。
o ENDパターンの外でexitを呼び出した時は、ENDパターンを通ってから終了します。
    + 更に、ENDパターンの中でexitを呼び出す事も出来ます。
o exitを呼び出した時、AWKプログラムの戻り値は、次の順序で決まります。
    + ENDパターンの中で「AWKプログラムの戻り値」付き exitを呼び出した時は、その値
    + ENDパターン内で指定しなかった時は、最初に呼び出した exitで指定した値
    + どこでも「AWKプログラムの戻り値」を指定しなかった時は、0。

** AWKプログラムの戻り値 として指定出来る値について
o 整数を指定した時、普通はそのまま戻り値になります。
    + 但し、10桁以上の数値を渡すと、処理系によって動きが変わります。
o 実数を指定した時、小数点以下を切り捨てます。-3.9なら -3になります。
o 文字列を指定した時、0になります。
o 配列を指定した時、0になります。


** 処理系に依存する動作
o 「AWKプログラムの戻り値」に指定出来る値の範囲は、おそらく、OSによって異なります。
o 以下、Windows XP SP3で確認した時の動作です。
o 有効範囲が -2147483648 から 2147483647 までの処理系
    + Gawk on Windows 3.1.7
    + Gawk for Windows 3.1.6
    + original = the one true awk(updated May 1, 2007)
o 有効範囲が -2147483647 から 2147483647 までの処理系(負の数が1つ少ないです)
    + mawk MBCS (32bit版) 1.3.3
    + Mawk for Windows 1.3.3


**** メモ
o nextを使うと、処理の流れが見易くなります。
o 下の処理では、nextを通る条件の事を考えなくて済むからです。


**** 確認した処理系
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
    ▼制作メモ
    > next = 次行の処理に移る
    next file(= nextfile の古い書き方)
    nextfile = 次の入力ファイルの処理に移る(mawk不可)
    +
    END = 最後に実行する
(2010年9月8日追加。引数に指定出来る値の種類と限界値)

next = 次行の処理に移る - AWK

AWKのパターンと制御文
○Gawk on Windows ○Gawk ○(注記あり)mawk32 ○(注記あり)Mawk ○(注記あり)awk
現在行の処理を終了して、次の行の処理に移ります。


**** 書式
--------
next
--------

o next fileという書き方については、nextfileをご覧下さい。


**** 使用例
--------
{
  if ($1 == "ミク") {
    print "ミクさんが何か言いました。";
    next; # 一番上の「{」に戻ります。
  }
  print;
}
--------

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


**** 機能
o 現在行の処理を終了して、次の行の処理に移ります。
o BEGINENDの中で使うと、エラーメッセージが表示されます。

** 処理系に依存する機能
o 次の処理系では、function(= 関数)の中からこの文を呼び出すと、文法エラーになります。
   + mawk32 1.3.3
   + Mawk for Windows 1.3.3
   + original = the one true awk(updated May 1, 2007)


**** メモ
o nextを使うと、処理の流れが見易くなります。
o 下の処理では、nextを通る条件の事を考えなくて済むからです。


**** 確認した処理系
o Gawk on Windows 3.1.7
o Gawk for Windows 3.1.6
o mawk MBCS (32bit版) 1.3.3 -- functionの中からの呼び出し不可
o Mawk for Windows 1.3.3 -- functionの中からの呼び出し不可
o original = the one true awk(updated May 1, 2007) -- functionの中からの呼び出し不可


==
関連ページ:
    ▼AWKのパターンと制御文▼ABC順
    ▼AWKプログラムを書く▼ABC順
    ▼AWK
    ▼制作メモ
    > next file(= nextfile の古い書き方)
    nextfile = 次の入力ファイルの処理に移る(mawk不可)
    # = コメントを入力する
    +
    break = 繰り返し文を途中終了する
    continue = 繰り返し文の先頭に戻る
(2010年8月29日追加。functionの中から呼び出した時の動作)