次へ: 7 全体のソースコード 上へ: 6 各部分の構成 前へ: 6.4 Copyright 以下の部分の取得部分 (PDF ファイル: awkhtml.pdf)

6.5 サブルーチンと END ブロック部分

そしていよいよ、これら保存した値を用いて最終出力を作成するわけですが、 これは関数として作ってみましょう。

  ##### 出力関数 #####
  # ヘッダ部分の出力関数
  function putheader(titlestr,headline)
  {
      print  "<html>"
      print  "<head>"
      printf "<title>%s</title>\n",titlestr
      print  "</head>"
      print  "<body>"
      printf "<h1>%s</h1>\n",titlestr
      printf "%s<hr>\n",headline
  }
  # 本文の出力関数
  function putbody(body,N,  j)
  {
      for(j=1;j<=N;j++) print body[j]
  }
  # 最後の部分の出力関数
  function puttail(tail,N,  j)
  {
      print "<hr>"
      for(j=1;j<=N;j++) print tail[j]
  }
このように関数化しておくことで、 後で拡張やカスタマイズなどがしやすいようにしておきます。 なお、これらの関数は以下のようなことをしています。

これらの関数を使えば、END ブロックは以下のようにすればいいことになります。

  ##### END ブロック #####
  END{
      if(errorexit){
        printf "エラー発生 (code = %d)\n",errorexit > "/dev/stderr"
        exit
      }
      putheader(titlestr,headline)
      putcontents(body,N_body)
      puttail(tail,N_tail)
  }


次へ: 7 全体のソースコード 上へ: 6 各部分の構成 前へ: 6.4 Copyright 以下の部分の取得部分
竹野茂治@新潟工科大学
2006年8月14日