home *** CD-ROM | disk | FTP | other *** search
- '***********************************************************************
- ' DVChart.rlz
- '
- ' Executive Information System Demo
- '
- ' Copyright ⌐ 1991-1992 Computer Associates International, Inc.
- ' All rights reserved.
- '
- '***********************************************************************
-
- FUNC iz(x, y)
- RETURN (x-1)*10 + y
- END FUNC
-
- FUNC iw(w, x, y)
- RETURN (w-1)*20 + (x-1)*2 + y
- END FUNC
-
- PROC ChComputeItem(item, seg, dollars)
- LOCAL per, div
-
- c.title = data.itemname[item]
- c.numdiv = 5
- FOR div = 1 to 5
- c.divname[div] = Sprint(" Division P(0)", div)
- NEXT div
- FOR div = 1 to 5
- FOR per = 1 to 10
- c.sales[iz(div,per)] = 0
- IF seg = 1 OR seg = 3 THEN
- c.sales[iz(div,per)] = c.sales[iz(div,per)] + data.sales[ix(item, per, div, 1)]
- END IF
- IF seg = 2 OR seg = 3 THEN
- c.sales[iz(div,per)] = c.sales[iz(div,per)] + data.sales[ix(item, per, div, 2)]
- END IF
- NEXT per
- NEXT div
- IF dollars THEN
- c.sales = c.sales * data.itemprice[item]
- END IF
- END PROC
-
- PROC ChComputeCat(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]
- c.firstitem = ist
- c.seg = seg
- c.dollars = dollars
- FOR item = ist to ie
- itx = item - data.catindex[cat] + 1
- FOR per = 1 to 10
- c.sales[iz(itx, per)] = 0
- IF seg = 1 OR seg = 3 THEN
- c.sales[iz(itx, per)] = data.divsum[iw(item,per,1)]
- END IF
- IF seg = 2 OR seg = 3 THEN
- c.sales[iz(itx, per)] = c.sales[iz(itx, per)] + data.divsum[iw(item,per,2)]
- END IF
- IF dollars THEN
- c.sales[iz(itx,per)] = c.sales[iz(itx,per)] * data.itemprice[item]
- END IF
- NEXT per
- FOR per = 2 to 10
- delta[iz(itx,per)] = (c.sales[iz(itx,per)] - c.sales[iz(itx,per-1)])/c.sales[iz(itx, per-1)]*100
- NEXT per
- NEXT item
- END PROC
-
- PROC ChartSales(item, dollars, seg)
- LOCAL per, x
- LOCAL chartReport, font1
-
- Message("Computing...")
- IF item < 0 THEN
- ChComputeCat(-item, seg, dollars)
- ELSE
- ChComputeItem(item, seg, dollars)
- END IF
-
- Message("Formatting...")
-
- chartReport = ChartQUnique
- ChartNew(chartReport; "Sales Data for " + c.title)
-
- segstr = {"Hospital Sales Only", "Retail Sales Only", "Hospital and Retail Sales"}
- ChartSetTitle(segstr[seg])
- IF dollars THEN
- ChartText(_Center, _Top, "All figures are in US dollars", _Screen)
- ELSE
- ChartText(_Center, _Top, "All figures are in numbers of prescriptions", _Screen)
- END IF
- PRINT
-
- FOR div = 1 to c.numdiv
- ChartSetColor(div+2)
- x[1:10] = c.sales[iz(div,1):iz(div,10)]
- ChartLine(x)
- ChartMark(x)
- ChartSetKey(c.divname[div])
- IF item < 0 THEN
- FOR per = 1 to 10
- EXECUTE Sprint("ChartP(0).pP(0)[div] = c.sales[iz(div,per)]", chartReport, per)
- NEXT per
- END IF
- NEXT div
- ChartSetXAxis(AddToDate(StrToDate("6/1/86"), 0, Index(10)*6), "D(M3 Y1)", 1)
- ChartControlKey(_Show)
- IF item < 0 THEN
- ChartSetProc(chartprocDV)
- EXECUTE Sprint("ChartP(0).firstitem = c.firstitem", chartReport)
- EXECUTE Sprint("ChartP(0).seg = c.seg", chartReport)
- EXECUTE Sprint("ChartP(0).dollars = c.dollars", chartReport)
- END IF
- UnMessage
- ChartControl(_Show)
- END PROC
-
- PROC chartprocDV(params)
- LOCAL x, y, a1, a2, a, n, m
-
- IF params[_Invoke] <> _Click THEN
- EXIT PROC
- END IF
- ChartSelect(params[_ItemNum])
- x = ChartQPtInfo(params[_XPos], params[_YPos])[1]
- y = ChartQPtInfo(params[_XPos], params[_YPos])[2]
- EXECUTE Sprint("a1 = ChartP(0).pP(0)", params[_ItemNum], Floor(x))
- EXECUTE Sprint("a2 = ChartP(0).pP(0)", params[_ItemNum], Ceil(x))
- a = a1 + (a2 - a1)*(x - Floor(x))
- m =Abs(a - y)
- n = FirstMatch(m, Min(m))
- EXECUTE Sprint("n = n + ChartP(0).firstitem - 1", params[_ItemNum])
- EXECUTE Sprint("ChartSales(n, ChartP(0).dollars,ChartP(0).seg)", params[_ItemNum], params[_ItemNum])
- END PROC
-
-