The IBM/360 and derivatives had powerful macro assembler facilities that were often used to generate complete assembly language programs or sections of programs (for different operating systems for instance). Macros provided with CICS transaction processing system had assembler macros that generated COBOL statements as a pre-processing step. Other assemblers, such as MASM, also support macros. Metaclasses are provided by the following programming languages:     The list of notable metaprogramming systems is maintained at List of Program Transformation Systems.