Chinaunix首页 | 论坛 | 博客
  • 博客访问: 92284800
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-04-18 23:04:16

作者:styr  出处:Unix爱好者家园unix-cd.com   
查询网点活期.定期.定活比例.余额的脚本

在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

阅读(373) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~