#!/usr/bin/perl
#!/usr/local/bin/perl
#
# Nengou based on Heisei Generator version 0.0 1995 2/10 by Suzuki
# Copyright (C) 1995 SUZUKI Ken'ichi
#
# $Id: nengou.pl,v 1.1.1.1 2003/08/07 21:08:34 yamauchi Exp $
# Nengou Copyright (C) 2002 Yamauchi, Hitoshi
#
# 明治 1868.9.8   1912.7.30
# 大正 1912.7.30  1926.12.25
# 昭和 1926.12.25 1989.1.7
# 平成 1989.1.7 
#
sub Usage {
  print "Usage: nengou.pl [-[Hmtsh]] year\n";
  print "	-H:              print help message (this)\n";
  print "	With no args:    current year -> Nengou\n";
  print "	year:            year         -> Nengou\n";
  print "	-m year:         Meiji  year  -> A.D.\n";
  print "	-t year:         Taisho year  -> A.D.\n";
  print "	-s year:         Shouwa year  -> A.D.\n";
  print "	-h year:         Heisei year  -> A.D.\n";
  print "	2002-10-14 (C) yamauchi_atmark_mpi-sb.mpg.de_replace_atmark\n";
  exit;
}    


if( @ARGV == 1 )
{
  #
  # A.D. -> Nengou
  #
  if($ARGV[0] =~ /-.*/)		# only option
  {
    &Usage();
  }
  elsif($ARGV[0] > 1868)
  {
    if((1868 <= $ARGV[0]) && ($ARGV[0] < 1912))
    {
      printf "%d is Meiji %d\n", $ARGV[0], $ARGV[0]-1867;
    }
    elsif((1912 <= $ARGV[0]) && ($ARGV[0] < 1926))
    {
      printf "%d is Taisho %d\n", $ARGV[0], $ARGV[0]-1911;	
      if($ARGV[0] == 1912)
      {
	printf "and also Meiji %d\n", $ARGV[0]-1867;	
      }
    }
    elsif((1926 <= $ARGV[0]) && ($ARGV[0] < 1989))      
    {
      printf "%d is Shouwa %d\n", $ARGV[0], $ARGV[0]-1925;	
      if($ARGV[0] == 1926)
      {
	printf "and also Taisho %d\n", $ARGV[0]-1911;	
      }
    }
    else 
    {
      printf "%d is Heisei %d\n", $ARGV[0], $ARGV[0]-1988;	
      if($ARGV[0] == 1989)
      {
	printf "and also Shouwa %d\n", $ARGV[0]-1925;	
      }
    }
  }
  else 
  {
    printf "Heisei %d is %d\n", $ARGV[0], $ARGV[0]+1988;
  }
}
elsif( @ARGV == 2 )
{
  #
  # Nengou -> A.D.
  #
  # print "DEBUG: $ARGV[0], $ARGV[1]";
  if($ARGV[0] =~ /-H/)
  {
    &Usage();
  }
  elsif($ARGV[0] =~ /-m/)
  {
    if((1 <= $ARGV[1]) && ($ARGV[1] <= 45))
    {
      printf "Meiji %d is %d\n", $ARGV[1], $ARGV[1] + 1867;
    }
    else 
    {
      printf "Out of Meiji era range. (1 to 45)\n";
    }
  }
  elsif($ARGV[0] =~ /-t/)
  {
    if((1 <= $ARGV[1]) && ($ARGV[1] <= 15))
    {
      printf "Taisho %d is %d\n", $ARGV[1], $ARGV[1] + 1911;
    }
    else 
    {
      printf "Out of Taisho era range. (1 to 15)\n";
    }
  }
  elsif($ARGV[0] =~ /-s/)
  {
    if((1 <= $ARGV[1]) && ($ARGV[1] <= 64))
    {
      printf "Showa %d is %d\n", $ARGV[1], $ARGV[1] + 1925;
    }
    else 
    {
      printf "Out of Showa era range. (1 to 64)\n";
    }
  }
  elsif($ARGV[0] =~ /-h/)
  {
    if(1 <= $ARGV[1])
    {
      printf "Heisei %d is %d\n", $ARGV[1], $ARGV[1] + 1988;
    }
    else
    {
      printf "Out of Heisei era range. (1 to ...)\n";	
    }
  }else
  {
    printf "Can not recognize the option. ``%s''\n", $ARGV[0];	
    &Usage();
  }
}
else 
{
  #
  # This year -> Heisei
  #
  chop($date = `date`);
  $date =~ /(\d\d\d\d)/;
  printf "%d is heisei %d\n", $1, $1-1988;
}
