On Mon, 11 Dec 2017, at 20:19, John Ehrman wrote: > I agree that PL/I's macro preprocessor is indeed powerful; but it and > all other macro facilities I know of lack a key feature of HLASM's > conditional assembly and macro facility: an intimate interaction > between the base language and the macro language. While the > HLASM facility is a bit primitive in some ways, it can still do things > that no other can.
The macro language inside IBM's DCF/Script allows one to write some quite complex document handling things. (All of their GML was written in it.) Long ago I wrote something complicated in it that added a third pass to a normal 2-pass document formatting process. My extra code allowed sections of text (anywhere in the overall set of files defining a complex document) to be extracted and written to a set of temporary files. The second & third passes were like a normal document formatting process but they skipped over the sections of the file set where those texts had been defined; and allowed their content to be embedded one or more times anywhere you wanted in the final document. -- Jeremy Nicoll - my opinions are my own.
