A preprocessor is a tool that takes source code as input and outputs a modified version of it for input to a downstream tool, such as a compiler or interpreter. Preprocessors can be used to implement software variability (i.e., by conditionally including code specific to certain target architectures) or to realize control structures and other features not present in the programming language of the source code.
Perhaps the most famous preprocessor is the C preprocessor, CPP, which according to Dennis Ritchie was developed around 1972 or 1973 and became a standard part of the language. However, CPP wasn't the only preprocessor in use in 1972; IFTRAN, for example, was a FORTRAN preprocessor intended to provide support for various structured programming concepts that didn't yet exist in the language.
I'm interested in learning more about the history of preprocessors, in in particular the earliest known source code preprocessor and what programming language it was intended for. Did preprocessors get their start with high-level programming languages or were they in widespread use back when all we had was assembly?