(defvar *prog-input*) ;;; After running file, if you enter a blank line, code will work on each ;;; line of input, until "end" is typed. ;;; Otherwise, the input is taken as a filename and code will be executed ;;; over each line in the file until EOF. (let ((ui (read-line))) (if (equal ui "") (setq *prog-input* *standard-input*) (setq *prog-input* (open ui)))) (let ((inpt (read-line *prog-input* NIL)) ) (loop until (or (string= inpt "end") (not inpt)) do (setq inpt (read-line *prog-input* NIL))) (print 1)) (if (not (eq *prog-input* *standard-input*)) (close *prog-input*))