Macros can also contain sub-macros which are similar to subroutines. Separate programs for creating these macros are called macro recorders. Vim also has a scripting language called Vimscript to create macros. Its standard functionality can be expanded with macros (which allow scripting) and plugins. In particular, uniform syntax makes it easier to determine the invocations of macros. A makefile can contain definitions of macros. Individual arcade systems are specified by "drivers" which take the form of C preprocessor macros. Environment variables are also available as macros. It supports compile-time metaprogramming features such as syntactic macros and term rewriting macros. Batch conversion capabilities with filename macros are included. Demo macros and JavaScript code examples are included with the software. Static snippets are similar to simple macros. Most assemblers also support macros and symbolic constants. Like other Microsoft Office documents, Word files can include advanced macros and even embedded programs. DESQview provides support for simple editable macros as well.