home *** CD-ROM | disk | FTP | other *** search
/ TestDrive Super Store 2.3 / TESTDRIVE_2.ISO / realizer / manual / saledemo.rlz < prev    next >
Encoding:
Text File  |  1992-09-30  |  5.9 KB  |  237 lines

  1. '***********************************************************************
  2. '    SaleDemo.rlz                      
  3. '
  4. '    Realizer User's Guide Program
  5. '
  6. '    Copyright ⌐ 1991-1992 Computer Associates International, Inc.
  7. '    All rights reserved.
  8. '
  9. '***********************************************************************
  10.  
  11. FileImport("SALEDEMO.DAT", _Realizer, _Named)
  12.  
  13. PROC MakeNameList(SalesPerson)
  14.   NumberPeople = EndValid(SalesPerson)
  15.   FOR k = 1 TO NumberPeople
  16.     FirstName = Instr(SalesPerson[k], " ") 
  17.     IF FirstName > 0 THEN 
  18.            SecondName = Instr(SalesPerson[k], " ", FirstName + 1) 
  19.            IF SecondName > 0  THEN
  20.             LastNames[k] = Mid$(SalesPerson[k], SecondName + 1) 
  21.            ELSE 
  22.             LastNames[k] = Mid$(SalesPerson[k], FirstName + 1) 
  23.            END IF 
  24.     ELSE 
  25.         LastNames[k] = SalesPerson[k] 
  26.     END IF 
  27.   NEXT k
  28. END PROC
  29.  
  30. FUNC PersonTotal(PersonID, ..)
  31.     LOCAL Matches, PersonAmounts
  32.  
  33.     IF QNOptParams = 1 THEN
  34.         Matches = (Sales.Seller = PersonID) AND (Sales.Item = QOptParam(1))
  35.     ELSE
  36.         Matches = (Sales.Seller = PersonID)
  37.     END IF
  38.     PersonAmounts = Mask(Sales.Amount, Matches)
  39.     RETURN Sum(PersonAmounts)
  40. END FUNC
  41.  
  42. FUNC GetData(PersonID, .. )
  43.     LOCAL ItemID, k, Result
  44.  
  45.     IF QNOptParams = 1 THEN
  46.         ItemID = QOptParam(1)
  47.     ELSE
  48.         ItemID = 0
  49.     END IF
  50.  
  51.     IF PersonID = 0 THEN
  52.         IF ItemID = 0 THEN
  53.             FOR k = 1 TO EndValid(SalesPerson)
  54.                 Result[k] = PersonTotal(k)
  55.             NEXT k
  56.         ELSE
  57.             FOR k = 1 TO EndValid(SalesPerson)
  58.                 Result[k] = PersonTotal(k, ItemID)
  59.             NEXT k
  60.         END IF
  61.     ELSE
  62.         IF ItemID = 0 THEN
  63.             FOR k = 1 TO EndValid(Name)
  64.                 Result[k] = PersonTotal(PersonID, k)
  65.             NEXT k
  66.         ELSE
  67.             Result[1] = PersonTotal(PersonID, ItemID)
  68.         END IF
  69.     END IF    
  70.     RETURN Result
  71. END FUNC
  72.  
  73. PROC MakeChart2(PersonID) 
  74.     ChartNew(20; SalesPerson[PersonID]) 
  75.     ChartBar(GetData(PersonID); 10) 
  76.     ChartControl(_Show) 
  77. END PROC
  78.  
  79. PROC ChartProc1(Params) 
  80.     LOCAL x, y, Location, PersonID 
  81.  
  82.     ChartSelect(Params[_ItemNum], Params[_FormNum]) 
  83.     IF Params[_Invoke] = _Click THEN 
  84.         x = Params[_XPos] 
  85.         y = Params[_YPos] 
  86.         Location = ChartQPtInfo(x, y) 
  87.         PersonID = Round(Location[1]) 
  88.         MakeChart2(PersonID) 
  89.     END IF 
  90. END PROC 
  91.  
  92. PROC SheetProc1(Params, Column)
  93.     SheetSelect(Params[_ItemNum], Params[_FormNum])
  94.     IF Params[_Invoke] = _Click THEN
  95.         MakeChart2(Params[_YPos])
  96.     END IF
  97. END PROC
  98.  
  99. 'This procedure places a bar chart in the current form. 
  100. PROC MakeChart1 
  101.     LOCAL k 
  102.  
  103.     FormSetObject(10, _Chart, "", 5 pct, 5 pct, 68 pct, 50 pct)  
  104.     ChartBar(GetData(0); 10) 
  105.     'Next create a key, to associate each numbered bar 
  106.     'with a salesperson. 
  107.     FOR k = 1 TO EndValid(SalesPerson) 
  108.         ChartSetKey(Sprint("# - &", k, SalesPerson[k]), _None) 
  109.     NEXT k  
  110.     ChartControlKey(_Show) 
  111.     ChartSetProc(ChartProc1) 
  112. END PROC 
  113.  
  114. 'This procedure places a spreadsheet in the current form. 
  115. PROC MakeSheet1 
  116.     LOCAL k 
  117.  
  118.     FormSetObject(15, _Sheet, "", 5 pct, 5 pct, 68 pct, 50 pct) 
  119.     SheetUpdate(SalesPerson) 
  120.     FOR k = 1 TO EndValid(Name) 
  121.         EXECUTE Sprint("ItemP(0) = GetData(0, k)", k) 
  122.         EXECUTE Sprint("SheetUpdate(ItemP(0))", k) 
  123.     NEXT k 
  124.     SheetSetProc(SheetProc1) 
  125. END PROC 
  126.  
  127. 'This procedure is activated when the form is notified. 
  128. PROC FormProc1(Params) 
  129.     LOCAL PersonID     
  130.  
  131.     FormSelect(Params[_FormNum]) 
  132.     SELECT CASE Params[_ItemNum] 
  133.         CASE 21    'Sheet option clicked 
  134.             SheetSelect(15, 10)
  135.             SheetControl(_Show)
  136.             ChartSelect(10, 10) 
  137.             ChartControl(_Hide) 
  138.         CASE 22    'Chart option clicked
  139.             ChartSelect(10, 10) 
  140.             ChartControl(_Show)
  141.             SheetSelect(15, 10) 
  142.             SheetControl(_Hide) 
  143.         CASE 50    'Drop down list item selected 
  144.             PersonID = FormQNum(Params[_ItemNum]) 
  145.             MakeChart2(PersonID) 
  146.             ChartSelect(10, 10) 
  147.        CASE 60    'Quit button 
  148.             FormControl(_Close) 
  149.     END SELECT 
  150. END PROC 
  151.  
  152. 'This procedure creates the form 
  153. PROC MakeForm1 
  154.     FormNew(10; "SALEDEMO.RLZ", _Title + _ContextEnter) 
  155.     FormControl(_Size;  _Center, _Center, 75 Pct, 75 Pct) 
  156.     MakeSheet1    ' Create the spreadsheet, then hide it. 
  157.     SheetControl(_Hide) 
  158.     MakeChart1    ' Create and show the chart. 
  159.     FormSetObject(21, _OptionButton, "Select from Sheet", 5 pct, 65 pct; _Notify, 0, 1) 
  160.     FormSetObject(22, _OptionButton, "Select from Chart", 5 pct, 75 pct; _Notify, 1, 1) 
  161.     FormSetObject(40, _GroupBox, "Select from List", 38 pct, 60 pct, 35 pct, 25 pct) 
  162.     FormSetObject(50, _DropDownList, "", 41 pct, 72 pct; _Notify, LastNames) 
  163.     FormSetObject(60, _Button, "Quit", 80 pct, 76 pct)     
  164.     FormSetProc(FormProc1) 
  165.     FormControl(_Show) 
  166. END PROC 
  167.  
  168. '----File I/O and Menus
  169. PROC SaveData  
  170.     LOCAL k, NumberPeople, Result, FileName, DataFile  
  171.       
  172.     FileName = StdSaveAs("SALEDEMO.RPT")  
  173.     IF FileName = "" THEN
  174.         EXIT PROC
  175.     END IF
  176.     DataFile = FileQUnique  
  177.     FileOpen(DataFile, FileName, _Write)  
  178.   
  179.     NumberPeople = EndValid(SalesPerson)  
  180.     FileWrite(DataFile, NumberPeople)  
  181.     FOR k = 1 TO NumberPeople  
  182.         FileWrite(DataFile, SalesPerson[k])  
  183.         Result = GetData(k)  
  184.         FileWrite(DataFile, Result)  
  185.     NEXT k  
  186.     FileClose(DataFile)      
  187. END PROC  
  188.  
  189. PROC LoadData 
  190.     LOCAL k, NumberPeople, Result, FileName, DataFile  
  191.     LOCAL NumberElements, Person 
  192.  
  193.     NumberElements = EndValid(Name) 
  194.     FileName = StdOpen("*.RPT", "Open Data File:")  
  195.     IF FileName = "" THEN
  196.         EXIT PROC
  197.     END IF
  198.     DataFile = FileQUnique  
  199.     FileOpen(DataFile, FileName, _Read)  
  200.  
  201.     LogNew(10; "Sales Report")
  202.     LogControl(_Show) 
  203.    
  204.     FileRead(DataFile, NumberPeople, 1, _Real)  
  205.     FOR k = 1 TO NumberPeople  
  206.         FileRead(DataFile, Person, 1, _Alpha)  
  207.         FileRead(DataFile, Result, NumberElements, _Real )  
  208.         PRINT #10; Person 
  209.         PRINT #10; Result 
  210.     NEXT k  
  211.     FileClose(DataFile) 
  212. END PROC 
  213.  
  214. PROC MenuProc(Params)
  215.     SELECT CASE Params[_ItemNum]
  216.     CASE 10
  217.         SaveData
  218.     CASE 20
  219.         LoadData
  220.     END SELECT
  221. END PROC
  222.  
  223. MenuNew(10; "File")
  224. MenuSetCmd(10, "Save Sales Report")
  225. MenuSetCmd(20, "Load Sales Report")
  226. MenuSetProc(MenuProc)
  227. MenuSelect(_FileMenu)
  228. MenuControl(_Hide)
  229. MenuSelect(10)
  230. MenuControl(_Show; 0)
  231.  
  232. MakeNameList(SalesPerson)    'Obtain last names of salespeople 
  233. MakeForm1 
  234.  
  235.  
  236.  
  237.