Тема: Слишком мало аргументов в функции. Программа из учебника.

Здравствуйте, познаю необъятный мир autolisp и прошу помощи

Вылезает ошибка: Слишком мало аргументов
Программу переписал из учебника Полещука в приложении 11. Буду очень благодарен, если не только скажут где ошибка, но и объяснять почему она возникла. Заранее всем спасибо!



(defun c:setiout (fdcl / yn all_loutn dcl_id)
  ; Запрос: перейти в пространство листа?
  (if (/= (getvar "TILEMODE") 0) ; проверка системной переменной (1 модель, 0 лист)
   (progn
     (initget "Y N")
     (setq yn (getkword "\nПерейти в пространство листа [Y/N]? <Y> "))
     (if (or (null yn) (= yn "Y"))
       (progn
     (setq all_loutn (layoutlist) loname (car all_loutn) kl_new 0)
     (if (< (setq dcl_id (load_dialog fdcl)) 0)
       (progn
         (alert "Не найден DCL-файл")
         (exit)
       ) ;progn
     ) ; if
     (if (not (new_dialog "lout" dcl_id))
       (progn
         (alert "Не загружается диалог")
         (exit)
       ) ;progn
     ) ; if
     (start_list "louts_old")
     (mapcar add_list all_loutn)
     (end_list)
     (action_tile "louts_old"
       "(setq loname (nth (atoi $value) all_loutn))"
     ) ; action_tile
     (action_tile "lout_new" "(setq loname $value)")
     (action_tile "kl_new"
       (strcat
         "(mode_tile \"lout_new\" (- 1 (setq kl_new (atoi $value))))"
         "(mode_tile \"louts_old\" kl_new)"
       ) ;strcat
     ) ; action_tile
     (action_tile "accept" "(done_dialog)")
     (action_tile "cancel" "(setq kl_new -1)(done_dialog)")
     (start_dialog)
     (unload_dialog dcl_id)
     (command "TILEMODE" 0)
     (if (= kl_new 1)(command "_-LAYOUT" "_N" loname))
     (if (>= kl_new 0)(command "CTAB" loname))
     )
       )
     )
    )
  (princ)
  )