Awk 如何计算两个时间段之间的应付金额?

Awk 如何计算两个时间段之间的应付金额?,awk,gawk,Awk,Gawk,在这里,我编写了一个脚本,用于计算两个日期(mm/yyyy)之间的应付款项 通常分期付款 每月(12次) 每季度(4次) 每半年(2次) 每年(一次) 我正试图到达“从到期日”到“到期日”。 我可以正确计算会费的数量,但无法计算 到达“到期日” 例如: 如果自到期日为2012年11月 每季度付款 那么截至2016/06,最新到期日为2016年5月 应付会费总额为15英镑 我必须显示截至2012年11月至2016年5月的应付款项 在这里,我被困于最晚的到期日,即2016年5月 这是我的密码: cu

在这里,我编写了一个脚本,用于计算两个日期(mm/yyyy)之间的应付款项

通常分期付款 每月(12次) 每季度(4次) 每半年(2次) 每年(一次)

我正试图到达“从到期日”到“到期日”。 我可以正确计算会费的数量,但无法计算 到达“到期日”

例如:

如果自到期日为2012年11月 每季度付款 那么截至2016/06,最新到期日为2016年5月

应付会费总额为15英镑

我必须显示截至2012年11月至2016年5月的应付款项

在这里,我被困于最晚的到期日,即2016年5月

这是我的密码:

curm=
日期+%m
; cury=
日期+%Y

awk -v curmt="$curm" -v curyr="$cury" 'BEGIN{FS="#"}{

mode=$10+0
fupy=substr($12,4,4)
fupm=substr($12,1,2)+0
prem=$11
if(mode==12){frequency=1}
if(mode==6 ){frequency=2}
if(mode==3 ){frequency=4}
if(mode==1 ){frequency=12}

if(fupm>6){        # here we are calculating revival dues as at 06/2016
       months       = (6+12-fupm) * frequency
           years        = ( curyr- 1 ) - fupy
       instalments1 = (years * frequency)+1
           fupyto       = fupy+int(instalments1/frequency)

               if(months>12){
                instalments2=int(months/12)
                            fractionofmonths=(months-instalments2 * 12)/frequency
                }else{
                     fractionofmonths=months/frequency
                                     }
                                fupmto=fupm+instalments2
            }else{
                        months = (6-fupm) * frequency
                    if(months <12){
                            years           = curyr - fupy
                            instalments1    = (years * frequency) + 1
                                        instalments2    = 0
                            fractionofmonths= months/frequency
                    }else{  
                                                years            = curyr - fupy
                        instalments1     = (years * frequency)+1
                        instalments2     = int(months/12)
                                    fractionofmonths = (months-instalments2 * 12)/frequency
                    }
                                fupmto=fupm+instalments2
                                     }
totaldues=0
totaldues=instalments1+instalments2
instalments2=0
instalments1=0


fupto  = fupmto"/"fupyto

..
..
..
some more code
}'  
awk-v curmt=“$curm”-v curyr=“$cury””开始{FS=“#”}{
模式=$10+0
fupy=substr($12,4,4)
fupm=substr($12,1,2)+0
保费=11美元
如果(模式=12){频率=1}
如果(模式==6){frequency=2}
如果(模式==3){频率=4}
如果(模式==1){frequency=12}
如果(fupm>6){#这里我们计算截至2016年6月的复兴费用
月份=(6+12小时)*频率
年份=(curyr-1)-fupy
分期付款1=(年*频率)+1
fupyto=fupy+int(分期付款1/频率)
如果(月数>12){
分期付款2=整数(月/12)
分月数=(分期付款的月数2*12)/频率
}否则{
分月数=月数/频率
}
fupmto=fupm+分期付款2
}否则{
月数=(6-fupm)*频率

如果你的问题是清理代码使其更可读。你清楚正确的算法吗?使用的语言在这里不重要。你的问题是清理代码使其更可读。你清楚正确的算法吗?使用的语言在这里不重要。