I think I've got there
Each cond statement worked individually, but as soon as I had 2, one after the other I was back to the same problem.
So had a coffee & small light bulb moment, keep them independant, and make passing the first test call the second test....
While in may not be compact it works:
(defun CHECK_SELECTIONS_FE ()
(cond
((/= fred3 NIL)
(setq john fred3)
(CHECK_SELECTIONS_F)
)
((/= ftg NIL)
(setq john ftg)
(CHECK_SELECTIONS_F)
)
)
) ;end CHECK_SELECTIONS_FE
;
(defun CHECK_SELECTIONS_F ()
(cond ;Cond statement
((/= fred4 NIL)
(CHECK_SELECTIONS_FSC)
(princ fred4)
)
(t (alert "OOPS! *new dialog* SELECT A FITTING SCHEDULE - TRY AGAIN!"))
);end of cond
) ;end CHECK_SELECTIONS_F
;
(defun CHECK_SELECTIONS_FSC ()
(cond ;Cond statement
((/= size NIL)
(done_dialog)
(princ size)
)
(t (alert "OOPS! *new dialog* SELECT A FITTING SIZE - TRY AGAIN!"))
);end of cond
) ;end CHECK_SELECTIONS_FSC
I can now tidy up a little, replace FRED and his clones 2, 3, 4 etc
Thanks for your help