(setq continue T)
(setq continue F)
This is an endless loop. The opposite of TRUE (T) is NIL. F is not NIL, so the test (while continue...) will return T even if continue is set to F.
Here is my attempt to solve your problem. But (again) I think that is not safe to accept the block name to be typed by the user. Not without a verification!
Code:; Blocks to Clippboard ; copy all occurences of a block to the clipboard ; email@example.com ; January 2004 (defun c:b2c( / answer name blocks) (setvar "cmdecho" 0) (initget "N") (setq answer (entsel "\nselect block\\enter [N]ame ")) (setq name (if (listp answer) (cdr (assoc 2 (entget (car answer)))) (getstring "\nenter block name ") ) blocks (ssget "X" (list (cons 0 "insert") (cons 2 name)))) (princ "\nbase point ") (command "_copybase" pause blocks "") (princ "\nOK") (princ) )