<TABLE> <S> <C>
<PAGE>
<ARTICLE> 5
<S> <C> <C>
<PERIOD-TYPE> 3-MOS 6-MOS
<FISCAL-YEAR-END> DEC-31-2000 DEC-31-2000
<PERIOD-START> APR-01-2000 JAN-01-2000
<PERIOD-END> JUN-30-2000 JUN-30-2000
<CASH> 0 0
<SECURITIES> 0 0
<RECEIVABLES> 28,218,000 0
<ALLOWANCES> (4,709,000) 0
<INVENTORY> 1,734,000 0
<CURRENT-ASSETS> 29,533,000 0
<PP&E> 15,171,000 0
<DEPRECIATION> (10,753,000) 0
<TOTAL-ASSETS> 58,496,000 0
<CURRENT-LIABILITIES> 12,235,000 0
<BONDS> 0 0
0 0
0 0
<COMMON> 119,000 0
<OTHER-SE> 33,701,000 0
<TOTAL-LIABILITY-AND-EQUITY> 58,496,000 0
<SALES> 0 0
<TOTAL-REVENUES> 33,150,000 65,921,000
<CGS> 20,254,000 39,967,000
<TOTAL-COSTS> 0 0
<OTHER-EXPENSES> 9,394,000 18,817,000
<LOSS-PROVISION> 555,000 1,344,000
<INTEREST-EXPENSE> 198,000 449,000
<INCOME-PRETAX> 2,749,000 5,344,000
<INCOME-TAX> 1,027,000 2,013,000
<INCOME-CONTINUING> 1,722,000 3,331,000
<DISCONTINUED> 0 0
<EXTRAORDINARY> 0 0
<CHANGES> 0 0
<NET-INCOME> 1,722,000 3,331,000
<EPS-BASIC> 0.14 0.28
<EPS-DILUTED> 0.14 0.27
</TABLE>