#!/bin/ksh #..# @(#) Set variables to represent a date #..# systems: #..# sites: tag=`basename $0` tm=/tmp/$tag tmp=${tm}$$ usage="usage: eval \`$0\` " calls="today yesterday lastworkingday" while [ $# -gt 0 ]; do case $1 in -v|-x) set $1 ;; -vi) ${1#-} $0; exit ;; -about) echo "$tag was written by David Ledger" echo "dledger@ivdcs.demon.co.uk" exit ;; -h) echo "$usage" exit ;; -install) cd `dirname $0` || exit for call in $calls; do [ $call = $tag ] && continue rm -f $call ln $tag $call done exit ;; -env) env=1 ;; -sh|-ksh|-csh|sh|ksh|csh) shell=`expr "$1" : '-*\(.*\)'` ;; -last*) mode=lwd ;; *) echo "$usage" exit ;; esac shift done case $tag in yesterday) : ${mode=ytd} ;; last*) : ${mode=lwd} ;; today) : ${mode=today} ;; *) echo "$tag not to be called $tag"; exit ;; esac eval `date | { read D m d t z y; Y=\`expr $y : '.*\(..\)'\`; case $m in Jan)m=01;;Feb)m=02;;Mar)m=03;;Apr)m=04;;May)m=05;;Jun)m=06;; Jul)m=07;;Aug)m=08;;Sep)m=09;;Oct)m=10;;Nov)m=11;;Dec)m=12;; esac;[ $d -le 9 ] && d="0$d"; echo "Day=$D; day=$d; month=$m; year=$y; Year=$Y"; export Day day month year Year; }` : ${shell:=$SHELL} if [ "$mode" = "today" ]; then case "$shell" in sh|ksh|*/sh|*/ksh) echo "date=$day/$month/$year" echo "datestr=$year$month$day" echo "Day=$Day; day=$day; month=$month; year=$year; Year=$Year" [ "$env" ] && echo "export date datestr Day day month year Year" ;; csh|*/csh) if [ "$env" ]; then echo "setenv date $day/$month/$year" echo "setenv datestr $year$month$day" echo "setenv Day $Day; setenv day $day; setenv month $month" echo "setenv year $year; setenv Year $Year" else echo "set date=$day/$month/$year" echo "set datestr=$year$month$day" echo "set Day=$Day; set day=$day; set month=$month" echo "set year=$year; set Year=$Year" fi ;; *) echo "echo Unknown shell $shell" ;; esac exit fi yyear=$year yYear=$Year ymonth=$month case $Day in Mon)yDay=Sun;;Tue)yDay=Mon;;Wed)yDay=Tue;;Thu)yDay=Wed;; Fri)yDay=Thu;; Sat)yDay=Fri;; Sun)yDay=Sat;; esac; [ $mode = lwd -a $Day = Mon ] && { yDay=Fri;prev=3; } || prev=1 yday=`expr $day - $prev` [ $yday -le 0 ] && { ymonth=`expr $ymonth - 1` case $ymonth in 4|6|9|11)yday=`expr 30 - $prev + 1`;;2) case `expr $year % 4` in 1|2|3)yday=`expr 28 - $prev + 1`;;0)yday=`expr 29 - $prev + 1`;; esac;;*)yday=`expr 31 - $prev + 1`;; esac; [ "$ymonth" = "0" ] && { yyear=`expr $yyear - 1` yYear=`expr $Yyear - 1` ymonth=12 } } [ $yday -le 9 ] && yday="0$yday" case "$shell" in sh|ksh|*/sh|*/ksh) echo "date=$day/$month/$year" echo "datestr=$year$month$day" echo "ydate=$yday/$ymonth/$yyear" echo "ydatestr=$yyear$ymonth$yday" echo "yDay=$yDay; yday=$yday; ymonth=$ymonth; yyear=$yyear; yYear=$yYear" [ "$env" ] && echo "export date datestr ydate ydatestr" && echo "yDay yday ymonth yyear yYear" ;; csh|*/csh) if [ "$env" ]; then echo "setenv date $day/$month/$year" echo "setenv datestr $day$month$year" echo "setenv ydate $yday/$ymonth/$yyear" echo "setenv ydatestr $yday$ymonth$yyear" echo "setenv yDay $Day; setenv yday $yday" echo "setenv ymonth $ymonth" echo "setenv yyear $yyear; setenv yYear $yYear" else echo "set date=$day/$month/$year" echo "set datestr=$day$month$year" echo "set ydate=$yday/$ymonth/$yyear" echo "set ydatestr=$yday$ymonth$yyear" echo "set yDay=$Day; set yday=$yday; set ymonth=$ymonth" echo "set yyear=$yyear; set yYear=$yYear" fi ;; *) echo "echo Unknown shell $shell" ;; esac | |