Hola.
- La variable VAL no se imprime porque no estás usando la sintaxis correcta para setear.
(Sin espacios)
PD: Además necesitás expandir la variable en ese  FOR.
- La linea se la "salta" porque no estás escapando los caracteres especiales...
- echo if ^%%- next ^%%- == ^"- True ^" set-  click= ^%%^%%a^%%^%%A ^& goto-  sendclick  >>-  code.txt 
 
De todas formas no te va a funcionar si no modificas un poco el code.
Está en una zona complicada (dentro de un FOR), Así que en vez de imprimir "%%a" imprimirá el contenido de la variable (A, B, C...) en el archivo de texto.
O con un call para salir del FOR y escribir esa linea.
- ... 
- ... 
- ) 
-   
- :Print 
- echo if ^%%- next ^%%- == ^"- True ^" set-  click= ^%%^%%a^%%^%%A ^& goto-  sendclick  >>-  code.txt 
 
En resumen:
-   
- for %%a in (- A B C D E F G H I J K L M N O ) do (
 
- 		echo-  : Host_play_cmp_%%a%%A >>-  code.txt 
 
- 		echo set-  VERTICAL =  !val! >>-  code.txt  
 
- 		echo set-  RETURN = Host_play_click %%a%%A >>-  code.txt 
 
- 		echo-  : Host_play_click%%a%%A_next >>-  code.txt 
 
- 	) 
- ) 
-   
- :Print 
- Echo IF ^%%- next ^%%- == ^"- True ^" set-  click= ^%%^%%a^%%^%%A ^& goto-  sendclick  >>-  code.txt 
 
Además, una cosa aparte por si no lo sabes, Asegúrate de que el contenido de la variable %Next% séa 
True o 
"True", Las comillas también cuentan.
- If %Var%- ==True  (Echo-  sin comillas )
 
Salu2.