File gpscal of Package rnxcmp

#
#   c-shell script
#   GPS calendar    created  by Hatanaka Y. 1995.3.14
#                   modified by Hatanaka Y. 1996.7.20
#      1999.2.18  fix bug of GPS week for January, 1980
#
if ($#argv != 2 )then
  echo Usage : $0 mm yyyy
  echo 'this month ...'
  set mm = `date '+%m'`
  set yyyy = `date '+%Y'`
else if($1 < 1 || $1 > 12 || $2 > 2099 || $2 < 1980) then
  echo input parameters : out of range
  echo '   mm   = (1-12)'
  echo '   yyyy = (1980-2099)'
  exit
else
  set mm = $1
  set yyyy = $2
endif
#---------------------------------------------------------------
#  calculate DOY(day of year) of yyyy/mm/00
#---------------------------------------------------------------
set num_of_days = ( 31 28 31 30 31 30 31 31 30 31 30 31 )
if ( $yyyy % 4 == 0 ) set num_of_days[2] = 29
set i = 1; set doy = 0
while ($i < $mm)
  @ doy += $num_of_days[$i]; @ i++
end
#---------------------------------------------------------------
# calculate GPS week of yyyy/mm/01
#---------------------------------------------------------------
set dd = 1
set mm2 = $mm
set yy = $yyyy
if( $mm2 <= 2 ) then
  @ yy--
  @ mm2 += 12
endif
@ jd = (36525 * $yy) / 100 + (306001 * ($mm2 + 1)) / 10000 + $dd + 1720981
@ week = ($jd - 2444237) / 7 - 1
#---------------------------------------------------------------
#  print calender
#---------------------------------------------------------------
cal $mm $yyyy |awk 'BEGIN {doy='"$doy"'; week='"$week"';\
			   getline;\
			   printf("          %s\n",$0);\
			   printf("Week   Sun Mon Tue Wed Thu Fri Sat\n")}\
		$1 == 1   {printf("%0.4d  ",week);\
				   for(i=7;i>NF;i--)printf("    ");\
				   for (i=1;i<=NF;i++) printf("  %2d",$i);\
				   printf("\n");\
		           printf("      ");\
				   for(i=7;i>NF;i--) printf("    ");\
				   for (i=1;i<=NF;i++) printf(" %0.3d",$i+doy);\
				   printf("\n")}\
		$1 > 1 && $1~/^[0-9]/{week++;printf("%0.4d  ",week);\
				for (i=1;i<=NF;i++) printf("  %2d",$i);\
				printf("\n");\
				printf("      ");\
				for (i=1;i<=NF;i++) printf(" %0.3d",$i+doy);\
				printf("\n")}'
openSUSE Build Service is sponsored by