;;; -*- Mode: LISP; Syntax: Common-lisp; Package: CL-USER; Base: 10 -*- (defun prepare-db (&key (infile "iris") (outfile "iris")) (let ((line nil)) (setq infile (merge-pathnames infile "cha:>marshall>autoclass>iris>.dat")) (setq outfile (merge-pathnames outfile "cha:>marshall>autoclass>iris>.db")) (with-open-file (ifile infile :direction :input) (with-open-file (ofile outfile :direction :output) (catch 'done (loop for char = (read-char ifile) do (when (not (equal char #\;)) (return (unread-char char ifile))) (read-line ifile)) (loop for linenum from 1 to 150 do (setq line (careful-read-line ifile)) (print linenum ofile) (write-string line ofile))))))) (defun careful-read-line (ifile) (let ((value (read-line ifile nil 'eof))) (when (equal value 'eof) (throw 'done 'eof)) value))