<?xml version="1.0" encoding="utf-8"?>
<informationTable xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.sec.gov/edgar/document/thirteenf/informationtable">
  <infoTable>
    <nameOfIssuer>3M Company</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>88579y101</cusip>
    <value>20315</value>
    <shrsOrPrnAmt>
      <sshPrnamt>116008</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>116008</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>A T &amp; T Inc New</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>00206r102</cusip>
    <value>657</value>
    <shrsOrPrnAmt>
      <sshPrnamt>15197</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>15197</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Abbott Labs</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>002824100</cusip>
    <value>631</value>
    <shrsOrPrnAmt>
      <sshPrnamt>16051</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>16051</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Abbvie Inc. Com</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>00287y109</cusip>
    <value>1233</value>
    <shrsOrPrnAmt>
      <sshPrnamt>19914</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>19914</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Alphabet Inc Cap Stk Cl A</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>02079k305</cusip>
    <value>226</value>
    <shrsOrPrnAmt>
      <sshPrnamt>321</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>321</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Amazon Com Inc  Com</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>023135106</cusip>
    <value>388</value>
    <shrsOrPrnAmt>
      <sshPrnamt>542</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>542</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Apple Computer</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>037833100</cusip>
    <value>5306</value>
    <shrsOrPrnAmt>
      <sshPrnamt>55507</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>55507</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Auto Data Processing</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>053015103</cusip>
    <value>19728</value>
    <shrsOrPrnAmt>
      <sshPrnamt>214734</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>214734</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Becton Dickinson</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>075887109</cusip>
    <value>348</value>
    <shrsOrPrnAmt>
      <sshPrnamt>2051</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>2051</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Bellicum Pharmaceutica Com</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>079481107</cusip>
    <value>1097</value>
    <shrsOrPrnAmt>
      <sshPrnamt>84612</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>84612</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Berkshire Hathaway Cl B</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>084670702</cusip>
    <value>291</value>
    <shrsOrPrnAmt>
      <sshPrnamt>2010</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>2010</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Black Stone Minerals L Com Uni</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>09225m101</cusip>
    <value>1100</value>
    <shrsOrPrnAmt>
      <sshPrnamt>70998</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>70998</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Bristol Myers Squibb</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>110122108</cusip>
    <value>615</value>
    <shrsOrPrnAmt>
      <sshPrnamt>8360</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>8360</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>CVS Health</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>126650100</cusip>
    <value>13267</value>
    <shrsOrPrnAmt>
      <sshPrnamt>138568</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>138568</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Chevron Corp</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>166764100</cusip>
    <value>2333</value>
    <shrsOrPrnAmt>
      <sshPrnamt>22255</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>22255</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Cisco Systems</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>17275R102</cusip>
    <value>277</value>
    <shrsOrPrnAmt>
      <sshPrnamt>9670</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>9670</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Clorox Co Del</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>189054109</cusip>
    <value>252</value>
    <shrsOrPrnAmt>
      <sshPrnamt>1820</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>1820</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Coca-Cola Co</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>191216100</cusip>
    <value>18123</value>
    <shrsOrPrnAmt>
      <sshPrnamt>399795</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>399795</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Colgate Palmolive</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>194162103</cusip>
    <value>325</value>
    <shrsOrPrnAmt>
      <sshPrnamt>4446</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>4446</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>ConocoPhillips</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>20825C104</cusip>
    <value>321</value>
    <shrsOrPrnAmt>
      <sshPrnamt>7362</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>7362</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Costco Wholesale Corp New Com</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>22160k105</cusip>
    <value>307</value>
    <shrsOrPrnAmt>
      <sshPrnamt>1955</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>1955</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Dominion Res Inc Va New Com</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>25746U109</cusip>
    <value>994</value>
    <shrsOrPrnAmt>
      <sshPrnamt>12750</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>12750</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Donaldson Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>257651109</cusip>
    <value>18775</value>
    <shrsOrPrnAmt>
      <sshPrnamt>546431</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>546431</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Dorchester Minerals LP Com Uni</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>25820R105</cusip>
    <value>765</value>
    <shrsOrPrnAmt>
      <sshPrnamt>53023</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>53023</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Dover Corp</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>260003108</cusip>
    <value>15070</value>
    <shrsOrPrnAmt>
      <sshPrnamt>217400</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>217400</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Dupont de Nemours</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>263534109</cusip>
    <value>322</value>
    <shrsOrPrnAmt>
      <sshPrnamt>4970</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>4970</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Ecolab Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>278865100</cusip>
    <value>20681</value>
    <shrsOrPrnAmt>
      <sshPrnamt>174373</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>174373</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Emerson Electric Co</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>291011104</cusip>
    <value>14355</value>
    <shrsOrPrnAmt>
      <sshPrnamt>275219</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>275219</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Exxon Mobil Corp     Com</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>30231g102</cusip>
    <value>5391</value>
    <shrsOrPrnAmt>
      <sshPrnamt>57506</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>57506</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>FedEx Corp</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>31428x106</cusip>
    <value>17129</value>
    <shrsOrPrnAmt>
      <sshPrnamt>112851</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>112851</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>General Electric</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>369604103</cusip>
    <value>551</value>
    <shrsOrPrnAmt>
      <sshPrnamt>17514</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>17514</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Halcon Res Corp Com New</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>40537q209</cusip>
    <value>24</value>
    <shrsOrPrnAmt>
      <sshPrnamt>52445</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>52445</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Honeywell International</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>438516106</cusip>
    <value>14332</value>
    <shrsOrPrnAmt>
      <sshPrnamt>123211</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>123211</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Illinois Tool Works</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>452308109</cusip>
    <value>21385</value>
    <shrsOrPrnAmt>
      <sshPrnamt>205309</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>205309</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Intel Corp</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>458140100</cusip>
    <value>18855</value>
    <shrsOrPrnAmt>
      <sshPrnamt>574837</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>574837</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>International Business Machine</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>459200101</cusip>
    <value>606</value>
    <shrsOrPrnAmt>
      <sshPrnamt>3995</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>3995</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Intuit</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>461202103</cusip>
    <value>388</value>
    <shrsOrPrnAmt>
      <sshPrnamt>3480</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>3480</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Intuitive Surgical Inc Com New</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>46120E602</cusip>
    <value>215</value>
    <shrsOrPrnAmt>
      <sshPrnamt>325</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>325</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>J.P. Morgan Chase &amp; Co.</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>46625H100</cusip>
    <value>293</value>
    <shrsOrPrnAmt>
      <sshPrnamt>4710</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>4710</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Johnson &amp; Johnson</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>478160104</cusip>
    <value>21903</value>
    <shrsOrPrnAmt>
      <sshPrnamt>180568</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>180568</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Kimberly Clark Corp.</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>494368103</cusip>
    <value>352</value>
    <shrsOrPrnAmt>
      <sshPrnamt>2560</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>2560</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Luminex Corp Com</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>55027E102</cusip>
    <value>793</value>
    <shrsOrPrnAmt>
      <sshPrnamt>39175</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>39175</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Magellan Midstream Prt Com Uni</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>559080106</cusip>
    <value>608</value>
    <shrsOrPrnAmt>
      <sshPrnamt>8000</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>8000</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>McDermott Intl Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>580037109</cusip>
    <value>54</value>
    <shrsOrPrnAmt>
      <sshPrnamt>10850</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>10850</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Medtronic PLC</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>g5960l103</cusip>
    <value>807</value>
    <shrsOrPrnAmt>
      <sshPrnamt>9297</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>9297</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Merck &amp; Co Inc New</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>58933Y105</cusip>
    <value>437</value>
    <shrsOrPrnAmt>
      <sshPrnamt>7590</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>7590</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Microsoft Corp</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>594918104</cusip>
    <value>20805</value>
    <shrsOrPrnAmt>
      <sshPrnamt>406581</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>406581</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>National Instr Corp</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>636518102</cusip>
    <value>13433</value>
    <shrsOrPrnAmt>
      <sshPrnamt>490265</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>490265</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Nokia</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>654902204</cusip>
    <value>86</value>
    <shrsOrPrnAmt>
      <sshPrnamt>15100</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>15100</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Nordson Corp</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>655663102</cusip>
    <value>23418</value>
    <shrsOrPrnAmt>
      <sshPrnamt>280091</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>280091</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Novartis AG</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>66987V109</cusip>
    <value>15851</value>
    <shrsOrPrnAmt>
      <sshPrnamt>192115</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>192115</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Paccar</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>693718108</cusip>
    <value>13373</value>
    <shrsOrPrnAmt>
      <sshPrnamt>257820</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>257820</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>PepsiCo Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>713448108</cusip>
    <value>18677</value>
    <shrsOrPrnAmt>
      <sshPrnamt>176299</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>176299</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Pfizer, Inc.</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>717081103</cusip>
    <value>663</value>
    <shrsOrPrnAmt>
      <sshPrnamt>18817</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>18817</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Phillips 66 COM</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>718546104</cusip>
    <value>226</value>
    <shrsOrPrnAmt>
      <sshPrnamt>2843</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>2843</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Procter &amp; Gamble</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>742718109</cusip>
    <value>18325</value>
    <shrsOrPrnAmt>
      <sshPrnamt>216427</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>216427</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Sabine Royalty Trust UBI</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>785688102</cusip>
    <value>468</value>
    <shrsOrPrnAmt>
      <sshPrnamt>14000</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>14000</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>San Juan Basin Royalty Trust</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>798241105</cusip>
    <value>4707</value>
    <shrsOrPrnAmt>
      <sshPrnamt>647452</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>647452</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Schlumberger Ltd</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>806857108</cusip>
    <value>14839</value>
    <shrsOrPrnAmt>
      <sshPrnamt>187640</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>187640</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Suburban Propane Partn Unit Lt</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>864482104</cusip>
    <value>200</value>
    <shrsOrPrnAmt>
      <sshPrnamt>6000</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>6000</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Sysco Corp</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>871829107</cusip>
    <value>217</value>
    <shrsOrPrnAmt>
      <sshPrnamt>4269</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>4269</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Telefonica de Espana</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>879382208</cusip>
    <value>398</value>
    <shrsOrPrnAmt>
      <sshPrnamt>41976</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>41976</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>United Parcel Svc Cl B</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>911312106</cusip>
    <value>16659</value>
    <shrsOrPrnAmt>
      <sshPrnamt>154648</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>154648</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Verizon Communications</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>92343v104</cusip>
    <value>404</value>
    <shrsOrPrnAmt>
      <sshPrnamt>7232</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>7232</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>W.W. Grainger</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>384802104</cusip>
    <value>19923</value>
    <shrsOrPrnAmt>
      <sshPrnamt>87668</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>87668</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Waste Management Inc Del</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>94106L109</cusip>
    <value>242</value>
    <shrsOrPrnAmt>
      <sshPrnamt>3645</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>3645</None>
    </votingAuthority>
  </infoTable>
</informationTable>
