home *** CD-ROM | disk | FTP | other *** search
- '***********************************************************************
- ' DVRep.rlz
- '
- ' Executive Information System Demo
- '
- ' Copyright ⌐ 1991-1992 Computer Associates International, Inc.
- ' All rights reserved.
- '
- '***********************************************************************
-
- FUNC ix(w, x, y, z)
- RETURN (w-1)*100 + (x-1)*10 + (y-1)*2 + z
- END FUNC
-
- FUNC iy(x, y)
- RETURN (x-1)*5 + y
- END FUNC
-
- PROC RepComputeItem(item, seg, dollars)
- LOCAL per, div
-
- c.title = data.itemname[item]
- c.numdiv = 5
- FOR div = 1 to 5
- c.divname[div] = Sprint(" DivisionP(0)", div)
- NEXT div
- FOR div = 1 to 5
- FOR per = 1 to 5
- c.sales[iy(div,per)] = 0
- IF seg = 1 OR seg = 3 THEN
- c.sales[iy(div,per)] = c.sales[iy(div,per)] + data.sales[ix(item, per*2-1, div, 1)]
- c.sales[iy(div,per)] = c.sales[iy(div,per)] + data.sales[ix(item, per*2, div, 1)]
- END IF
- IF seg = 2 OR seg = 3 THEN
- c.sales[iy(div,per)] = c.sales[iy(div,per)] + data.sales[ix(item, per*2-1, div, 2)]
- c.sales[iy(div,per)] = c.sales[iy(div,per)] + data.sales[ix(item, per*2, div, 2)]
- END IF
- NEXT per
- FOR per = 2 to 5
- delta[iy(div,per)] = (c.sales[iy(div,per)] - c.sales[iy(div,per-1)])/c.sales[iy(div, per-1)]*100
- NEXT per
- NEXT div
- FOR per = 1 to 5
- c.total[per] = 0
- FOR div = 1 to 5
- c.total[per] = c.total[per] + c.sales[iy(div,per)]
- NEXT div
- NEXT per
- IF dollars THEN
- c.sales = c.sales * data.itemprice[item]
- c.total = c.total * data.itemprice[item]
- END IF
- END PROC
-
- PROC RepComputeCat(cat, seg, dollars)
- LOCAL per, div, item
-
- c.title = data.catname[cat]
- c.numdiv = data.catcount[cat]
- ist = data.catindex[cat]
- ie = data.catindex[cat] + data.catcount[cat] - 1
- c.divname[1:c.numdiv] = data.itemname[ist:ie]
- FOR item = ist to ie
- itx = item - data.catindex[cat] + 1
- FOR per = 1 to 5
- c.sales[iy(itx, per)] = 0
- IF seg = 1 OR seg = 3 THEN
- FOR div = 1 to 5
- c.sales[iy(itx,per)] = c.sales[iy(itx,per)] + data.sales[ix(item, per*2-1, div, 1)]
- c.sales[iy(itx,per)] = c.sales[iy(itx,per)] + data.sales[ix(item, per*2, div, 1)]
- NEXT div
- END IF
- IF seg = 2 OR seg = 3 THEN
- FOR div = 1 to 5
- c.sales[iy(itx,per)] = c.sales[iy(itx,per)] + data.sales[ix(item, per*2-1, div, 2)]
- c.sales[iy(itx,per)] = c.sales[iy(itx,per)] + data.sales[ix(item, per*2, div, 2)]
- NEXT div
- END IF
- IF dollars THEN
- c.sales[iy(itx,per)] = c.sales[iy(itx,per)] * data.itemprice[item]
- END IF
- NEXT per
- FOR per = 2 to 5
- delta[iy(itx,per)] = (c.sales[iy(itx,per)] - c.sales[iy(itx,per-1)])/c.sales[iy(itx, per-1)]*100
- NEXT per
- NEXT item
- FOR per = 1 to 5
- c.total[per] = 0
- FOR itx = 1 to c.numdiv
- c.total[per] = c.total[per] + c.sales[iy(itx,per)]
- NEXT itx
- NEXT per
- END PROC
-
- PROC ReportSales(item, dollars, seg)
- LOCAL per
- LOCAL logReport, font1
-
- Message("Computing...")
- IF item < 0 THEN
- RepComputeCat(-item, seg, dollars)
- ELSE
- RepComputeItem(item, seg, dollars)
- END IF
-
- Message("Formatting...")
-
- fmtName = "\ \ "
- fmtTitle1 = " Sales"
- fmtTitle2 = " Percent Change"
- fmtTitle3 = " 1987 1988 1989 1990 1991"
- fmtTItle4 = " ======= ======= ======= ======= ======="
- fmtData1 = "####### ####### ####### ####### #######"
- fmtData2 = " #### #### #### #### #### "
-
- font1 = FontQUnique
- FontNew(font1; "Courier", 10)
- logReport = LogQUnique
- LogNew(logReport; "Sales Report for " + c.title)
- LogControl(_SetFont; font1)
- LogControl(_Size; _Center, _Default, 90 pct, 80 pct)
- SetSys(_PrintLog, logReport)
- segstr = {"Hospital sales only", "Retail sales only", "Hospital and Retail sales"}
- PRINT USING "Sales data for & (&)"; c.title, segstr[seg]
- IF dollars THEN
- PRINT "All figures are in US dollars"
- ELSE
- PRINT "All figures are in numbers of prescriptions"
- END IF
- PRINT
-
- PRINT fmtTitle1
- PRINT
- PRINT fmtTitle3
- PRINT
- FOR div = 1 to c.numdiv
- PRINT USING fmtName; c.divname[div];
- PRINT USING fmtData1; c.sales[iy(div, 1)], c.sales[iy(div, 2)], c.sales[iy(div, 3)], c.sales[iy(div, 4)], c.sales[iy(div, 5)]
- NEXT div
- PRINT fmtTitle4
-
- PRINT USING String$(Len(fmtName), 32) + fmtData1; c.total[1], c.total[2], c.total[3], c.total[4], c.total[5]
- PRINT
- PRINT
- PRINT fmtTitle2
- PRINT
- PRINT fmtTitle3
- PRINT
- FOR div = 1 to c.numdiv
- PRINT USING fmtName; c.divname[div];
- PRINT USING fmtData2; 0, delta[iy(div, 2)], delta[iy(div, 3)], delta[iy(div, 4)], delta[iy(div, 5)]
- NEXT div
-
- UnMessage
- LogControl(_Show)
- SetSys(_PrintLog, _PrintLog)
- END PROC
-
-