2010年10月30日

串刺しナンバリング:焼き鳥の一品ではござらぬ

串刺し印刷用の連番を生成するawkスクリプトを、私も遅ればせながら作ってみました。

串刺し印刷そのものをよく知らないので、なんか見当違いをしているような気もします。BEGINだけというのもawkスクリプトとしては変則的でしょうね。ご批評くだされ。

★ 総ページ数の計算と、if...else構文を正しくしました(30日21時)


# kusizasinum.awk
#
# 使い方:
#  awk  -f  kusizasinum.awk  >  num.txt


BEGIN {

#       連番最大数と面付数の入力を求める
        printf "最大数="        > "/dev/stderr"
                getline maxnum  < "/dev/stdin"

        printf "面付数="        > "/dev/stderr"
                getline mennum  < "/dev/stdin"

#       総シート数(ページ数)を計算する # 以下6行訂正しました
            n = int ( maxnum / mennum )
            if ( maxnum % mennum == 0 ) {
                    sheetnum = n
            } else {
                    sheetnum = n + 1
            }

#          sheetnum = int ( 0.5 + maxnum / mennum )  # これは間違いでした

#       i は作業中のシート番号
        for ( i = 1; i <= sheetnum; i++ ) {

#               j はシート内の面番号
                for ( j = 0; j < mennum; j++ ) {

#                       シート番号がそのシート内最初の連番になり
#                       総シート数の値が連番の増分となる 
                        serialnum = i + j * sheetnum

#                       連番を標準出力に改行付きで書き出す
#                       最大数を超えている場合は改行だけを書き出す
                        if ( serialnum <= maxnum ) {
                                print serialnum
                        } else {
                                print ""
                        }
                }
        }
}


連番を任意の番号から始められるようにした改訂版はこちら


なお、この経緯についてはスクリプトの達人のみなさんによる次のページを参照してください。

串刺し会長やまさん:These are the days of my life
  お話してきました。
  串刺し印刷について。

あさうすさん:実験ルーム
  串刺し面付けってなぁに?

やもさん:やもめも
  あえてScriptを使わずに串刺しナンバリングしてみる(小ネタ)
  Kushizashiはワールドワイドに

たけうちとおるさん:たけうちとおるのスクリプトノート
  僕もScriptを使わずに串刺しナンバリング
  僕もScriptを使って串刺しナンバリング

市川せうぞーさん:名もないテクノ手
  あえてScriptを使って串刺しナンバリングしてみる(小ネタ)

chalcedonyさん
  くしざし試作

0 件のコメント: