<?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>22346</value>
    <shrsOrPrnAmt>
      <sshPrnamt>113591</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>113591</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>A T &amp; T Inc New</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>00206r102</cusip>
    <value>355</value>
    <shrsOrPrnAmt>
      <sshPrnamt>11068</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>11068</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Abbott Labs</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>002824100</cusip>
    <value>907</value>
    <shrsOrPrnAmt>
      <sshPrnamt>14868</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>14868</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Abbvie Inc. Com</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>00287y109</cusip>
    <value>1720</value>
    <shrsOrPrnAmt>
      <sshPrnamt>18565</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>18565</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Activision Blizzard In Com</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>00507v109</cusip>
    <value>267</value>
    <shrsOrPrnAmt>
      <sshPrnamt>3500</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>3500</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Alphabet Inc Cap Sk Cl A</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>02079k305</cusip>
    <value>740</value>
    <shrsOrPrnAmt>
      <sshPrnamt>655</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>655</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Amazon.Com Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>023135106</cusip>
    <value>1078</value>
    <shrsOrPrnAmt>
      <sshPrnamt>634</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>634</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Apergy Corp Com</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>03755l104</cusip>
    <value>3572</value>
    <shrsOrPrnAmt>
      <sshPrnamt>85554</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>85554</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Apple Computer</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>037833100</cusip>
    <value>9868</value>
    <shrsOrPrnAmt>
      <sshPrnamt>53308</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>53308</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Auto Data Processing</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>053015103</cusip>
    <value>28768</value>
    <shrsOrPrnAmt>
      <sshPrnamt>214462</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>214462</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Becton Dickinson</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>075887109</cusip>
    <value>17506</value>
    <shrsOrPrnAmt>
      <sshPrnamt>73074</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>73074</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Bellicum Pharmaceutica</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>079481107</cusip>
    <value>103</value>
    <shrsOrPrnAmt>
      <sshPrnamt>13900</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>13900</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Berkshire Hathaway Cl B</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>084670702</cusip>
    <value>438</value>
    <shrsOrPrnAmt>
      <sshPrnamt>2347</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>2347</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Black Stone Minerals L Com Uni</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>09225m101</cusip>
    <value>1313</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>302</value>
    <shrsOrPrnAmt>
      <sshPrnamt>5450</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>5450</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>CVS Health</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>126650100</cusip>
    <value>8931</value>
    <shrsOrPrnAmt>
      <sshPrnamt>138783</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>138783</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Chevron Corp</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>166764100</cusip>
    <value>2769</value>
    <shrsOrPrnAmt>
      <sshPrnamt>21899</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>21899</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Clorox Co Del</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>189054109</cusip>
    <value>231</value>
    <shrsOrPrnAmt>
      <sshPrnamt>1710</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>1710</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Coca-Cola</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>191216100</cusip>
    <value>17651</value>
    <shrsOrPrnAmt>
      <sshPrnamt>402443</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>402443</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Colgate Palmolive</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>194162103</cusip>
    <value>277</value>
    <shrsOrPrnAmt>
      <sshPrnamt>4268</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>4268</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Dominion Energy Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>25746U109</cusip>
    <value>796</value>
    <shrsOrPrnAmt>
      <sshPrnamt>11680</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>11680</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Donaldson</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>257651109</cusip>
    <value>23987</value>
    <shrsOrPrnAmt>
      <sshPrnamt>531629</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>531629</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Dorchester Minerals LP</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>25820R105</cusip>
    <value>1504</value>
    <shrsOrPrnAmt>
      <sshPrnamt>73023</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>73023</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Dover</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>260003108</cusip>
    <value>16183</value>
    <shrsOrPrnAmt>
      <sshPrnamt>221082</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>221082</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Dow Dupont Inc Com</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>26078j100</cusip>
    <value>437</value>
    <shrsOrPrnAmt>
      <sshPrnamt>6625</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>6625</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>EOG Resources</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>26875P101</cusip>
    <value>333</value>
    <shrsOrPrnAmt>
      <sshPrnamt>2673</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>2673</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Ecolab</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>278865100</cusip>
    <value>24551</value>
    <shrsOrPrnAmt>
      <sshPrnamt>174949</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>174949</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Emerson Electric</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>291011104</cusip>
    <value>18973</value>
    <shrsOrPrnAmt>
      <sshPrnamt>274416</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>274416</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Exxon Mobil Corp</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>30231g102</cusip>
    <value>4041</value>
    <shrsOrPrnAmt>
      <sshPrnamt>48848</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>48848</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>FedEx</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>31428x106</cusip>
    <value>25160</value>
    <shrsOrPrnAmt>
      <sshPrnamt>110806</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>110806</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Home Depot Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>437076102</cusip>
    <value>319</value>
    <shrsOrPrnAmt>
      <sshPrnamt>1635</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>1635</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Honeywell International</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>438516106</cusip>
    <value>18482</value>
    <shrsOrPrnAmt>
      <sshPrnamt>128306</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>128306</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Illinois Tool Works</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>452308109</cusip>
    <value>27406</value>
    <shrsOrPrnAmt>
      <sshPrnamt>197822</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>197822</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Intel</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>458140100</cusip>
    <value>27250</value>
    <shrsOrPrnAmt>
      <sshPrnamt>548189</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>548189</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>International Business Machine</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>459200101</cusip>
    <value>487</value>
    <shrsOrPrnAmt>
      <sshPrnamt>3489</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>3489</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Intuitive Surgical Inc Com New</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>46120E602</cusip>
    <value>467</value>
    <shrsOrPrnAmt>
      <sshPrnamt>975</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>975</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Johnson &amp; Johnson Com</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>478160104</cusip>
    <value>21878</value>
    <shrsOrPrnAmt>
      <sshPrnamt>180305</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>180305</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Lockheed Martin Corp</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>539830109</cusip>
    <value>266</value>
    <shrsOrPrnAmt>
      <sshPrnamt>900</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>900</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Lowes Cos Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>548661107</cusip>
    <value>302</value>
    <shrsOrPrnAmt>
      <sshPrnamt>3164</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>3164</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Luminex Corp</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>55027E102</cusip>
    <value>1145</value>
    <shrsOrPrnAmt>
      <sshPrnamt>38778</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>38778</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Magellan Midstream Prt Unit Rp</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>559080106</cusip>
    <value>553</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>Mastercard Inc Cl A</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>57636q104</cusip>
    <value>225</value>
    <shrsOrPrnAmt>
      <sshPrnamt>1147</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>1147</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>McCormick</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>579780206</cusip>
    <value>12975</value>
    <shrsOrPrnAmt>
      <sshPrnamt>111770</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>111770</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>McDermott Intl Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>580037109</cusip>
    <value>469</value>
    <shrsOrPrnAmt>
      <sshPrnamt>23863</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>23863</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Medtronic PLC</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>g5960l103</cusip>
    <value>554</value>
    <shrsOrPrnAmt>
      <sshPrnamt>6473</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>6473</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Merck &amp; Co Inc New</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>58933Y105</cusip>
    <value>232</value>
    <shrsOrPrnAmt>
      <sshPrnamt>3815</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>3815</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Microsoft</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>594918104</cusip>
    <value>38866</value>
    <shrsOrPrnAmt>
      <sshPrnamt>394139</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>394139</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>National Instr</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>636518102</cusip>
    <value>20024</value>
    <shrsOrPrnAmt>
      <sshPrnamt>476981</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>476981</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Netflix Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>64110L106</cusip>
    <value>290</value>
    <shrsOrPrnAmt>
      <sshPrnamt>740</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>740</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Nokia</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>654902204</cusip>
    <value>88</value>
    <shrsOrPrnAmt>
      <sshPrnamt>15250</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>15250</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Nordson</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>655663102</cusip>
    <value>33860</value>
    <shrsOrPrnAmt>
      <sshPrnamt>263684</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>263684</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Novartis AG</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>66987V109</cusip>
    <value>14891</value>
    <shrsOrPrnAmt>
      <sshPrnamt>197130</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>197130</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Paccar</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>693718108</cusip>
    <value>15797</value>
    <shrsOrPrnAmt>
      <sshPrnamt>254952</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>254952</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>PepsiCo</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>713448108</cusip>
    <value>19146</value>
    <shrsOrPrnAmt>
      <sshPrnamt>175857</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>175857</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Pfizer, Inc.</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>717081103</cusip>
    <value>580</value>
    <shrsOrPrnAmt>
      <sshPrnamt>15994</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>15994</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Phillips 66 COM</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>718546104</cusip>
    <value>342</value>
    <shrsOrPrnAmt>
      <sshPrnamt>3042</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>3042</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Procter &amp; Gamble</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>742718109</cusip>
    <value>16777</value>
    <shrsOrPrnAmt>
      <sshPrnamt>214921</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>214921</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Sabine Royalty Trust UBI</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>785688102</cusip>
    <value>659</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>3749</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>13114</value>
    <shrsOrPrnAmt>
      <sshPrnamt>195640</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>195640</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Sysco Corp</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>871829107</cusip>
    <value>293</value>
    <shrsOrPrnAmt>
      <sshPrnamt>4296</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>4296</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Telefonica de Espana</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>879382208</cusip>
    <value>240</value>
    <shrsOrPrnAmt>
      <sshPrnamt>28192</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>28192</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>United Parcel Svc Cl B</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>911312106</cusip>
    <value>16361</value>
    <shrsOrPrnAmt>
      <sshPrnamt>154011</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>154011</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Verizon Communications</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>92343v104</cusip>
    <value>213</value>
    <shrsOrPrnAmt>
      <sshPrnamt>4227</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>4227</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Visa Inc Cl A</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>92826c839</cusip>
    <value>209</value>
    <shrsOrPrnAmt>
      <sshPrnamt>1578</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>1578</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Walt Disney</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>254687106</cusip>
    <value>208</value>
    <shrsOrPrnAmt>
      <sshPrnamt>1983</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>1983</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Waste Management Inc Del</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>94106L109</cusip>
    <value>285</value>
    <shrsOrPrnAmt>
      <sshPrnamt>3500</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>3500</None>
    </votingAuthority>
  </infoTable>
</informationTable>
