4.3BSD/usr/contrib/icon/src/cmd/tablc.icn

#	TABLC(1)
#
#	Tabulate characters
#
#	Ralph E. Griswold
#
#	Last modified 8/11/84
#

procedure main(x)
   local ccount, unique, order, i, s, a, pair, rwidth
   unique := 0				# switch to list unique usage only
   order := 1				# alphabetical ordering switch
   i := 0
   while i < *x do {
      s := x[i +:= 1] | break
      case s of {
         "-a":  order := 1
         "-n":  order := 2
         "-u":  unique := 1
         default:  Usage()
         }
      }
   ccount := table(0)			# table of characters
   while ccount[reads()] +:= 1
   a := sort(ccount,order)
   if unique = 1 then {
      every pair := !a do
         if pair[2] = 1 then write(pair[1])
      }
   else {
      rwidth := 0
      every rwidth<:= *((!a)[2])
      every pair := !a do
         write(left(image(pair[1]),10),right(pair[2],rwidth))
      }
end

procedure Usage()
   stop("usage:  tablc [-a -n -u]")
end