You are making this harder than it needs to be. This whole defun is not needed.
(defun get_blknm()
(cond
((= books "0") (= block "0") (setq blknm "PS1.dwg"))
((= books "0") (= block "1") (setq blknm "PS2.dwg"))
((= books "0") (= block "2") (setq blknm "PS3.dwg"))
((= books "0") (= block "3") (setq blknm "nil"))
((= books "0") (= block "4") (setq blknm "SP1.dwg"))
((= books "0") (= block "5") (setq blknm "SP2.dwg"))
((= books "0") (= block "6") (setq blknm "SP3.dwg"))
((= books "0") (= block "7") (setq blknm "SP4.dwg"))
((= books "0") (= block "8") (setq blknm "SP5.dwg"))
((= books "0") (= block "9") (setq blknm "SP6.dwg"))
((= books "0") (= block "10") (setq blknm "SP7.dwg"))
((= books "0") (= block "11") (setq blknm "SP8.dwg"))
((= books "0") (= block "12") (setq blknm "SP9.dwg"))
((= books "0") (= block "13") (setq blknm "SP10.dwg"))
((= books "0") (= block "14") (setq blknm "SP11.dwg"))
)
)
With running the code, the variable 'avlist' returns this.
"PS1: Tab Tensioned Projection Screen"
"PS2: Manual Projection Screen"
"PS3: Motorized Projection Screen"
"[....]"
"SP1: Recessed Speaker Enclose"
"SP2: Flush Mounted Speaker"
"SP3: Landscape Speaker"
"SP4: Pendant Speaker"
"SP5: Pole Mounted Speaker"
"SP6: Recessed Program Speaker"
"SP7: Ceiling Speaker"
"SP8: Ceiling Speaker"
"SP9: Recessed Subwoofer Speaker"
"SP10: Ceiling Mounted Program Speaker"
"SP11: Wall Mounted Program Speaker"
With this part of the code
(action_tile "dlist" "(setq block $value)")
You get a string containing a number, which will relate to and item in the above list. Lets say block = "1" for now. This means that you want to insert "PS2.dwg". This
(setq tempStr (nth (atoi block) avlist))
will set tempStr = "PS2: Manual Projection Screen". Now since you have an identifier between the block name and the description, you can trim the string to show only the block name with something like
(setq Pos (vl-string-search ":" tempStr))
(setq BlkName (substr tempStr 1 Pos))
Now BlkName = "PS2", so your insert part will look like
(command "_.insert" (strcat path BlkName ".dwg") pause pause pause)
Does this make sense? The great thing about lisp is lists. Learn to use them and you can do so many things.