<TABLE> <S> <C>
<PAGE>
<ARTICLE> 5
<LEGEND>
THIS SCHEDULE CONTAINS SUMMARY FINANCIAL INFORMATION EXTRACTED FROM THE
CONSOLIDATED BALANCE SHEETS AS OF SEPTEMBER 30, 2000 AND DECEMBER 31, 1999, AND
THE CONSOLIDATED STATEMENTS OF OPERATION FOR THE THREE AND NINE MONTHS ENDED
SEPTEMBER 30, 2000 AND 1999 AND IS QUALIFIED IN ITS ENTIRETY BY REFERENCE TO
SUCH FINANCIAL STATEMENTS.
</LEGEND>
<MULTIPLIER> 1,000
<S> <C>
<PERIOD-TYPE> 9-MOS
<FISCAL-YEAR-END> DEC-31-2000
<PERIOD-START> JAN-01-2000
<PERIOD-END> SEP-30-2000
<CASH> 3,298
<SECURITIES> 0
<RECEIVABLES> 8,687
<ALLOWANCES> (332)
<INVENTORY> 1,801
<CURRENT-ASSETS> 24,535
<PP&E> 9,349
<DEPRECIATION> (7,002)
<TOTAL-ASSETS> 30,834
<CURRENT-LIABILITIES> 14,086
<BONDS> 0
0
0
<COMMON> 136
<OTHER-SE> 16,564
<TOTAL-LIABILITY-AND-EQUITY> 30,834
<SALES> 42,420
<TOTAL-REVENUES> 42,420
<CGS> 35,934
<TOTAL-COSTS> 40,486
<OTHER-EXPENSES> 187
<LOSS-PROVISION> 0
<INTEREST-EXPENSE> 566
<INCOME-PRETAX> 1,747
<INCOME-TAX> 588
<INCOME-CONTINUING> 1,159
<DISCONTINUED> 0
<EXTRAORDINARY> 0
<CHANGES> 0
<NET-INCOME> 1,159
<EPS-BASIC> .08
<EPS-DILUTED> .06
</TABLE>