Welcome to the Swamp Mike.
Perhaps if you posted a sample drawing and matching text file for testing.
I am too lazy to recreate a working drawing to test the routine.
At first look there is nothing bad going on that I can see, just some things I
would do differently. But you will get differing methods from different programmers.
As for speed, there may be some time savings in the way the text files are handled.
Namely reading all from one. Then write all to the other. Not that that is a big deal
with todays systems.
The way the string data is handled in 'getdefaults' looks like it could be improved but
I would like to see the actual text file.
It is much faster to work with list than it is with strings.
In the DCL file I would have the user pick the directory to use not having to type it in.
Some area need updating, as an example I woud change the manualinput routine to this:
(defun manualinput ()
(if (not quickrun)
(progn
(setq answer (getstring t (strcat "Keynote Library File Name <" lib1 ">:")))
(if (/= answer "") (setq lib1 answer))
(setq answer (getint (strcat "Column Depth in Inches <" cdep ">:")))
(if (and (/= answer nil) (numberp answer) (> answer 0))
(setq cdep (atoi (min answer maxdepth))
)
(setq answer (getint (strcat "Column Width in Inches <" columnwidth ">:")))
(if (and (/= answer nil) (numberp answer) (> answer 0))
(setq columnwidth (atoi (min answer maxwidth))
)
;; user may enter 80, 100 or 125 as keyword or right click will display the choices.
(initget "simplex80b,80 simplex100,100 simplex125,125")
(setq answer (getkword
(strcat "Text Style for Keynote Schedule [simplex80b/simplex100/simplex125] <"
(nth (atoi ctxt) ctxts)
">:"
))
)
(if answer (setq ctxt (vl-position answer ctxts)))
)
)
) ;end defun MANUALINPUT
<not tested>