The indexing programs here are modified from the versions printed in Bentley & Kernighan, EP-ODD V1 #1. The programs are also described in AT&T Bell Laboratories Computing Science Technical Report No. 128, ``Tools for Printing Indexes''. Changes from the published version derive from further experience after the paper was frozen, plus some cleanup and corrections by Joe Kruskal (to whom many thanks), plus some very local features for printing the AMPL book. USING THE PROGRAMS install makes the appropriate files executable. since this file is not executable, use by typing "sh foo.ix troff -ms foo.ix >foo.out and then examine the troff output foo.out cleanup removes the garbage files left around for debugging CHANGES FROM THE PAPER make.index handles "see" file see.terms. A line like algorithmssearching, sorting generates in the final index algorithms see searching, sorting a 3rd field of %also makes it algorithms see also searching, sorting doclean deroman range.prep minor change to defend against bug in some versions of "sort" rotate moved here (and changed as necessary) to remove subtle bug. see check.data below range.sort -u option on sort removes duplicate entries on same page range.collapse reroman page number concatenation removed from here ... num.collapse and moved to here. also commas between numbers now inserted here (to make see terms easier) gen.key literals protected differently in gsub commands. rules for non-alpha index terms slightly richer: purely nonalphabetic lines first lines with leading digits next ordinary lines last see.prep changed to match changes above, and to rely on font-changing {} final.sort uses -d option for "telephone directory" order. hierarchy a rather special purpose version to replace runs of items with a common one or two word prefix and replace them by a head word and indented lines. this also does some rearrangement to bring see terms to the top, and terms with formatting info to the bottom; this is not always the right thing to do. format letter changes (.YY) determined by first letter. minor rearrangement of how output line is created. commas no longer added here. [Some systems have a disk-formatting program called format.] check.data new program that catches subtle errors in the data