I've read through all of this and there are a great deal of really good ideas.
I was thinking if you are already writing a REXX to generated CONRELE records (cards) then why not do the following.
Have Developers add the following to the Source Code. Starting in CC 7
#BEGIN_COMPILE_OPTIONS < ------ PLACE COMPILER OPTIONS AFTER THIS RECORD
APOST
DYNAM=YES
#END_COMPILE_OPTIONS
#BEGIN_CISCCMPL_OPTIONS < ------ PLACE CICS COMPILER OPTIONS AFTER THIS RECORD
CICS OPT1
CICS OPT2
#END_CICSCMPL_OPTIONS
#BEGIN_DB2CMPL_OPTIONS < ------ PLACE DB2 COMPILER OPTIONS AFTER THIS RECORD
DB2 OPT1
DB2 OPT2
#END_DB2CMPL_OPTIONS
#BEGIN_LINKEDIT_OPTIONS < ------ PLACE CICS COMPILER OPTIONS AFTER THIS RECORD
RENT
INCLUDE
etc.
#END_LINKEDIT_OPTIONS
#BEGIN_SOURCE
in your JCL alloc to a PDS member for example
//SRCEIN < - this is the output of the conwrite
//CMPLOUT DD DISP=OLD,DSN=hlq.&C1stage.CMPLREC(&C1ELEMENT),MONITOR=COMPONENTS
//CICSOUT DD DISP=OLD,DSN=hlq.&C1stage.CICSREC(&C1ELEMENT),MONITOR=COMPONENTS
//DB2OUT DD DISP=OLD,DSN=hlq.&C1stage.DB2REC(&C1ELEMENT),MONITOR=COMPONENTS
//LINKOUT DD DISP=OLD,DSN=hlq.&C1stage.LINKREC(&C1ELEMENT),MONITOR=COMPONENTS
//SOURCE DD here you create a file to be read into the compile that is a temp dataset
Have REXX do an execio on the file in SRCEIN DD STATEMENT
using an EXECIO DISKW Put the Compile recs in CMPLOUT, CICS in CICSOUT, DB2 in DB2OUT and LINKEDIT in LINKOUT
Of course you Discard the # records and beginning with the next record after #BEGIN_SOURCE put into //SOURCE
which is read into the compiler.
Optionally the same could be done for Assembler or any other language.
Additionally if none exist you could create a comment record stating none existed and that could be included
in the program listing for documentation purposes.
Just another idea, like the other great ones.