查询网点活期.定期.定活比例.余额的脚本
在hanfeng806兄的建议下,在以往的几个查询脚本基础上修改了一下,就出来这么一个查询网点活期.定期.定活比例.余额的脚本.
只是有2个问题,1是脚本调用的是网点每天下载到的邮政储蓄营业轧帐单,这张表有定期的汇总数,但活期是单独一项,除此之外还有定活两便,通知存款,总的余额,所以不知道这个活期总计是否应该为活期+定活两便+通知存款,如果不算,那么脚本的定期+活期就不等于报表上的总余额,没办法之下就用了现在的方法,定期和总余额取报表的数字,活期就等于总额-定期. 2是这个定活比例应该是活期余额/定期余额*100,是否?就因为第1个问题,所以现在这个定活比例实际上是 活期+定活两便+通知存款/定期,不知道这样行不行,有业务上的高手,可以查查这张报表,给个合适的答案,也就可以再改一下脚本的取值方法.
必须以统版用户运行此脚本,之前必须先在case里设置filedir和dir变量,filedir现在取的是县的901机构号,这样比较有唯一性,各位改为其它的也可以.dir应该为欲查询的网点机构号的集合,换句话说也差不多就是以县为中心的前台网点机构号.
#!/bin/ksh
#查询网点活期.定期.定活比例.余额的脚本 V051114
#乐山市沙湾区邮政局 宋 涛
prin() #终端打印函数 #暂时未用
{
echo ""
cat $1 > $(tty)
echo ""
}
data()
{
month=$(date +%m)
day=$(date +%d)
year=$(date +%Y)
day=$(expr $day - 1)
if [ $day -eq 0 ]; then
month=$(expr $month - 1)
if [ $month -eq 0 ]; then
month=12
day=31
year=$(expr $year - 1)
else
month=$(printf "%02d" $month)
case $month in
01|03|05|07|08|10|12) day=31;;
04|06|09|11) day=30;;
02)
if [ $(expr $year % 4) -eq 0 ]; then
if [ $(expr $year % 400) -eq 0 ]; then
day=29
elif [ $(expr $year % 100) -eq 0 ]; then
day=28
else
day=29
fi
else
day=28
fi
;;
esac
fi
fi
test $(expr length $day) -eq 1 && day=$(printf "%01d"$day)
day=${month}$day
}
input()
{
while :
do
clear
echo "\n\t\t\t余 额 查 询 表\n\n"
[ "$filedir" ] && echo "\n 请输入欲统计余额的县级901机构号(回车默认为沙湾局): $filedir" \
|| read filedir?" 请输入欲统计余额的县级901机构号(回车默认为沙湾局): "
[ "$filedir" ] || filedir="511111901"
case $filedir in
0) exit 0 ;;
511111901) dir="511111001 511111002 511111003 511111004 511111005 511111006" ;; #请在此更改或按此格式增加dir 变量
*) echo -n "\n 无此901机构号,请检查修改或增加脚本dir变量 \n" ; read ; filedir= ; continue ;;
esac
echo
[ "$day" ] && echo -n " 请输入欲统计余额的日期(回车默认为昨日): ${day}" \
|| read day?" 请输入欲统计余额的日期(回车默认为昨日): "
[ "$day" ] || { data ; break ; }
case $day in
0) exit 0 ;;
yesterday) data ; break ;;
esac
[ $(expr length $day) -ne 4 ] && { echo -n "\n 日期长度错误!\n" ; read ; day= ; continue ; }
[ "$(echo $day|egrep '^[0-1][0-9][0-3][0-9]$')" ] && break \
|| { echo -n "\n 日期输入错误!\n" ; read ; day= ; continue ; }
done
}
trap "tput sgr0 ; echo ; rm ~/yetj.dat 2>/dev/null; exit " 0 1 2 3 9 15
tput bold
scabs="scabs" #四川统版用户名
scabsdir=/usr/${scabs} #四川统版目录
filedir=$1 #县级901机构号
day=$2 #统计日期
[ "$LOGNAME" = "$scabs" ] || { echo "\n\n 请由 ${scabs} 用户执行本程序\n" ; exit 0 ; }
input
for name in $dir
do
filename=${scabsdir}/print/${name}/rpt_Mnacc_001${name}${day}.dat
[ -r $filename ] && tmpvar=$(tr "|" "\n" < $filename |sed -n '1p;2p;277p;321p') || \
tmpvar=$(echo "$name" 暂无${day}日报表)
echo $tmpvar >> ~/yetj.dat
done
clear
awk 'BEGIN{printf("\n%45s\n\n%-10s\n\n%-10s%-16s%-14s%-14s%-12s%-14s\n", \
"余 额 查 询 表","统计日期: '$day'","机构号","网点名","活期余额","定期余额","定活比例","余额")}
{ if (NF==4) \
{printf("%-10s%-16s%-14.2f%-14.2f%-4.2f%-2s%14.2f\n",$1,substr($2,1,14),$4-$3,$3,($4-$3)/$3*100,"%",$4) ; sum+=$4}
else {printf("%-10s%-14s\n",$1,$2)} }
END{printf("\n%-10s%-14.2f\n","合计",sum)}' ~/yetj.dat | pg