You are on page 1of 3

01 w-g-time1.

03 w-i-hh1 pic 99.


03 filler pic x value
03 w-i-mm1 pic 99.
03 filler pic x value
03 w-i-ss1 pic 99.
03 filler pic x value
03 w-i-ms1 pic 9.
01 w-g-time2.
03 w-i-hh2 pic 99.
03 filler pic x value
03 w-i-mm2 pic 99.
03 filler pic x value
03 w-i-ss2 pic 99.
03 filler pic x value
03 w-i-ms2 pic 9.
01 w-g-time-diff.
03 w-i-hh pic 99.
03 filler pic x value
03 w-i-mm pic 99.
03 filler pic x value
03 w-i-ss pic 99.
03 filler pic x value
03 w-i-ms pic 9.
01 w-g-date00.
03 w-i-yy00 pic 9999.
03 filler pic x value
03 w-i-mm00 pic 99.
03 filler pic x value
03 w-i-dd00 pic 99.
01 w-g-date01.
03 w-i-yy01 pic 9999.
03 filler pic x value
03 w-i-mm01 pic 99.
03 filler pic x value
03 w-i-dd01 pic 99.
01 w-g-date-diff.
03 w-i-yyyy pic 9999.
03 filler pic x value
03 w-i-mm pic 99.
03 filler pic x value
03 w-i-dd pic 99.

'.'.
'.'.
'.'.

'.'.
'.'.
'.'.

'.'.
'.'.
'.'.

'-'.
'-'.

'-'.
'-'.

spaces.
spaces.

procedure division.
********************************************************
*
calculating date difference
*
********************************************************
move hv-time-of-complain
to w-g-time1.
move hv-time-closed
to w-g-time2.
move hv-date-of-complain
to w-g-date00.
move hv-date-closed
to w-g-date01.
compute w-i-yyyy = w-i-yy01 - w-i-yy00.
evaluate true
when w-i-mm00 > w-i-mm01
subtract 1 from w-i-yyyy

compute w-i-mm = w-i-mm01 + 12 - w-i-mm00


when other
compute w-i-mm = w-i-mm01 - w-i-mm00
end-evaluate.
evaluate true
when w-i-dd00 > w-i-dd01
evaluate w-i-mm00
when 1 or 3 or 5 or 7 or 8 or 10 or 12
compute w-i-dd = w-i-dd01 + 31 - w-i-dd00
when 2 perform calc-leap-year-para
when other
compute w-i-dd = w-i-dd01 + 30 - w-i-dd00
end-evaluate.
subtract 1 from w-i-mm
when other
compute w-i-dd = w-i-dd01 - w-i-dd00
end-evaluate.
display 'the difference in dates is: ' w-i-yyyy
'years ' w-i-mm 'months ' w-i-dd 'days.'.
********************************************************
*
calculating leap year or not
*
********************************************************
calc-leap-year-para.
divide w-i-yy01 by 100 giving qout1 rem1
evaluate true
when rem1 = 0
divide w-i-yy01 by 400 giving quot2 rem2
evaluate true
when rem2 = 0
compute w-i-dd = w-i-dd01 + 29 - w-i-dd00
end-evaluate
when other
divide w-i-yy01 by 4 giving qout3 rem3
evaluate true
when rem3 = 0
compute w-i-dd = w-i-dd01 + 29 - w-i-dd00
when other
compute w-i-dd = w-i-dd01 + 28 - w-i-dd00
end-evaluate
end-evaluate.
********************************************************
*
calculating time difference
*
*
times declared in 24 hour format
*
********************************************************
evaluate true
when w-i-hh2 < w-i-hh1
subtract 1 from w-i-dd
compute w-i-hh = w-i-hh2 + 24 - w-i-hh1
when other
compute w-i-hh = w-i-hh2 - w-i-hh1
end-evaluate.
evaluate true
when w-i-mm2 < w-i-mm1
subtract 1 from w-i-hh
compute w-i-mm = w-i-mm2 + 60 - w-i-mm1
when other
compute w-i-mm = w-i-mm2 - w-i-mm1

end-evaluate.
evaluate true
when w-i-ss2 < w-i-ss1
subtract 1 from w-i-mm
compute w-i-ss = w-i-ss2 + 60 - w-i-ss1
when other
compute w-i-ss = w-i-ss2 - w-i-ss1
end-evaluate.
evaluate true
when w-i-ms2 < w-i-ms2
subtract 1 from w-i-ss
compute w-i-ms = w-i-ms2 + 10 - w-i-ms1
when other
compute w-i-ms = w-i-ms2 - w-i-ms1
end-evaluate.
display 'the difference in time is: ' w-i-hh
'hours ' w-i-mm 'minutes ' w-i-ss
'seconds ' w-i-ms 'milli seconds.'.
********************************************************
*
end of job
*
********************************************************

You might also like