Very good ideas. I believe it pointless at well.
Here is the work rec:
fd slscompwk-file.
01 slscompwk-rec.
03 slscompwk-key.
05 slscompwk-store-no PIC X(03).
$xfd date=yyyymmdd
05 slscompwk-trx-date PIC 9(08).
03 slscompwk-key-2.
05 slscompwk-store-no-2 PIC X(03).
$xfd date=yyyymmdd
05 slscompwk-seq-no PIC 9(08).
03 slscompwk-day pic x(03).
03 slscompwk-txbl-mdse PIC s9(07)v99 comp-4.
03 slscompwk-non-txbl-mdse PIC s9(07)v99 comp-4.
03 slscompwk-disc-amt PIC s9(07)v99 comp-4.
03 slscompwk-tax-amt PIC s9(07)v99 comp-4.
03 slscompwk-freight-amt PIC s9(07)v99 comp-4.
03 slscompwk-total PIC s9(07)v99 comp-4.
03 slscompwk-non-sls-amt PIC s9(07)v99 comp-4.
03 slscompwk-no-of-trxs PIC 9(06).
03 slscompwk-inv-trx-amt PIC s9(07)v99 comp-4.
03 slscompwk-no-of-inv-trxs PIC 9(06).
Here is the code how it works now, to just read the work file until eof
and print
format-print-re****t.
perform re****t-initialization.
move '00000000000' to slscompwk-key slscompwk-key-2.
move "N" to ws-slscompwk-EOF.
perform start-slscompwk-file-nlt-2.
perform rd-slscompwk-file-next.
perform build-re****t-detail
until slscompwk-EOF.
perform fmt-rpt-totals-line.
perform print-rpt-totals.
perform print-end-of-re****t.
re****t-initialization.
move ws-store-no to rpt-parm-store-no.
move "Date: " to rpt-parm-type-1,
rpt-parm-type-2.
perform print-std-rpt-hdr.
perform print-legend.
perform print-rpt-col-hdrs.
build-re****t-detail.
perform format-print-detail-record.
perform print-rpt-detail-line.
if spacer-count = ws-number-prior-years
move 0 to spacer-count
move spaces to prt-detail-line
perform print-rpt-detail-line.
perform ac***-grand-totals.
perform rd-slscompwk-file-next.
if slscompwk-file-stat = 10
move "Y" to ws-slscompwk-EOF
end-if.
format-print-detail-record.
move slscompwk-trx-date to ws-date-3.
perform fmt-ws-date-3.
move dspl-date to prt-trx-date.
move slscompwk-day to prt-day.
move slscompwk-txbl-mdse to prt-txbl-mdse.
move slscompwk-disc-amt to prt-disc-amt.
compute prt-net-mdse =
slscompwk-txbl-mdse - slscompwk-disc-amt.
move slscompwk-tax-amt to prt-tax-amt.
move slscompwk-freight-amt to prt-freight-amt.
move slscompwk-total to prt-total.
move slscompwk-non-sls-amt to prt-non-sls-amt.
move slscompwk-no-of-trxs to prt-no-of-trxs.
move slscompwk-inv-trx-amt to prt-inv-trx-amt.
move slscompwk-no-of-inv-trxs to prt-no-of-inv-trxs.
add 1 to spacer-count.
billious wrote:
> <jeff@[EMAIL PROTECTED]
> wrote in message
> news:1156164608.427833.305850@[EMAIL PROTECTED]
> >I have a program that I wrote that creates a work file to read from to
> > create a print record. The program is a sales re****t that allows the
> > user to specify how many years to compare. An example is 07-01-06 thru
> > 07-31-06 If they answer 3 prior years it would show sales data (it
also
> > handles exact day instead of just 070106, 071005, 070104)
> > 20060701
> > 20050702
> > 20040703
> >
> > 20060702
> > 20050703
> > 20040704
> >
> > When I read the Work file I need to read 2 recs before writing the
> > print record to calculate the percentage change in amount. Example:
> > 20060701 10%
> > 20050702 7%
> > 20040703
> > Sales up 10% for 2006 over 2005, sales up 7% 2005 over 2004.
> >
> > Any ideas on the best way to accomplish this?
> >
>
> A thoroughly odd requirement.
>
> Is your proposed re****t format supposed to be columns of years showing
> actual and %-differential sales and lines of days? This would show a lot
of
> meaningless data. Comparing sales on any one day with sales
52/104/156...
> weeks earlier could be done, but wouldn't seem to give you any real
data. So
> many things can happen to influence the sales on any one day (like
weather)
> that comparing doesn't seem to make sense.
>
> What is the format of your intermediate file? Is it indexed on date, for
> instance? It it organised by product?
>
> It wouldn't seem too much of a burden to read even 10 years of data -
more
> would be difficult to fit on a re****t-page - at 365 records per year,
that's
> only 3,650 records.
>
> I'd simply read all of the data in and place it into an array in
> working-storage. Then simply grab it back out of the array to print it -
but
> your specification isn't really that clear.


|