4.3BSD/usr/contrib/icon/book/07/nword.icn

procedure nword()
   static wchar, line, i, j
   initial {
      wchar := &lcase ++ &ucase ++ '\'-'
      if line := read() then i := 1 else fail
      }
   repeat {
      while j := upto(wchar,line,i) do {
         i := many(wchar,line,j)
         return line[i:j]
         }
      if line := read() then i := 1 else fail
      }
end