awkでカレンダー作成

久しぶりにawkでプログラミングをしてみます。
本当は小町算をしてみる予定だったのですが、私のスキルではかなり難しかったので、リハビリ代わりに今月のカレンダーを表示する簡単なプログラムを作ってみました。

BEGIN{
    print strftime("%Y %b");
    print "--------------------------";
    print "  日 月 火 水 木 金 土";
    year = strftime("%Y");
    month = strftime("%b");
    last_day[ 1] = 31;
    last_day[ 2] = uruu(year,month);
    last_day[ 3] = 31;
    last_day[ 4] = 30;
    last_day[ 5] = 31;
    last_day[ 6] = 30;
    last_day[ 7] = 31;
    last_day[ 8] = 31;
    last_day[ 9] = 30;
    last_day[10] = 31;
    last_day[11] = 30;
    last_day[12] = 31;
   
    youbi = strftime("%w");
    day   = strftime("%d");
   
    for(i = day;i >=1;i--){    # 1日の曜日を確認
        if(i != 1){
             youbi--;
        }
        if(youbi < 0){
            youbi = 6;
        }
    }
    for(j = youbi;j >= 0;j--){
        printf "%s"," ";
    }
    for(j = 1;j <= last_day[month];j++){
        printf "%4s",j;
        youbi++
        if(youbi > 6){
            youbi = 0;
            print;
        }
    }
}
   
function uruu(y,m,d){
    if(y % 400 == 0){
        d = 29;
    }else if(y % 100 == 0){
        d = 28;
    }else if(y % 4 == 0){
        d = 29;
    }else{
        d = 28;
    }
}

実行してみると、

2013 4
--------------------------
  日 月 火 水 木 金 土
     1   2   3   4   5   6
   7   8   9  10  11  12  13
  14  15  16  17  18  19  20
  21  22  23  24  25  26  27
  28  29  30


後は、こちらの指定する年と月を教えればその月のカレンダーを表示するプログラムを作ってみたいと思います。
しかし、こんな簡単なプログラムを作るだけでもものすごく時間がかかった。
Google Calendarとか作るのって大変なんだなーと実感してしまった。
私には無理なスキルを再確認してしまいました。
まー、仕事でプログラムを作るわけでもないので、テキストで出来る簡単なプログラミングをボチボチとしていきたいと思います。