<TABLE> <S> <C>
<PAGE>
<ARTICLE> 5
<LEGEND>
THIS SCHEDULE CONTAINS SUMMARY FINANCIAL INFORMATION EXTRACTED FROM AS OF AND
FOR THE TWELVE MONTHS PERIOD ENDED JULY 31, 2000 AND IS QUALIFIED IN ITS
ENTIRETY BY REFERENCE TO SUCH FINANCIAL STATEMENTS.
</LEGEND>
<S> <C>
<PERIOD-TYPE> 12-MOS
<FISCAL-YEAR-END> JUL-31-2000
<PERIOD-START> AUG-01-1999
<PERIOD-END> JUL-31-2000
<CASH> 7,830,843
<SECURITIES> 0
<RECEIVABLES> 3,844,968
<ALLOWANCES> (120,000)
<INVENTORY> 2,842,724
<CURRENT-ASSETS> 14,826,501
<PP&E> 4,363,163
<DEPRECIATION> (2,173,205)
<TOTAL-ASSETS> 25,312,379
<CURRENT-LIABILITIES> 5,169,002
<BONDS> 0
0
0
<COMMON> 70,002
<OTHER-SE> 17,518,961
<TOTAL-LIABILITY-AND-EQUITY> 25,312,379
<SALES> 33,754,285
<TOTAL-REVENUES> 33,754,285
<CGS> 20,532,928
<TOTAL-COSTS> 20,532,928
<OTHER-EXPENSES> 7,070,806
<LOSS-PROVISION> 0
<INTEREST-EXPENSE> 288,095
<INCOME-PRETAX> 6,169,926
<INCOME-TAX> 2,325,121
<INCOME-CONTINUING> 3,844,805
<DISCONTINUED> 0
<EXTRAORDINARY> 0
<CHANGES> 0
<NET-INCOME> 3,844,805
<EPS-BASIC> 0.55
<EPS-DILUTED> 0.55
</TABLE>