One thing you may want to look at is Life Science Analytics Framework by SAS. It is a tool built by SAS which provides a way of running one or more programs within what is known as a Job. The Job provides a more detailed overview of the run, having all the information from proc scaproc, the logs all in one manifest. This is great, and is "Self Describing" for the run. It is not however "Self Describing" as such for the code, although it does show inputs/outputs.
I think this is where the definition (and how its used in other languages) needs to be defined. There is the run and there is the code, two similar but different entities. Code itself needs to be documented, without being run, and hence you have various documents - Requirements Document, Testing Document, User Guide (yes I know, nobody using SAS bothers with that nonsense, just bash out some macro libraries 🐵 which are not generated automatically as a log. You can emulate such as a thing like Javadocs, by using text file parsing on the code you create of course.
So a run might be "Self Describing", but standalone code is not.
... View more