> Using the C preprocessor on COBOL code [...] Which "the C preprocessor" worries you? > I'm not sure what the compiler will do [...] So, try it? I don't have a COBOL compiler installed, so I know nothing, but Fortran seems happy enough. For example (not widely tested): alp $ type arch_test_c.for program arch_test_c character* 8 ARCH #include "empty.fh" #if defined( __alpha) parameter (ARCH = "Alpha") #elif defined( __ia64) parameter (ARCH = "IA64") #elif defined( __vax) parameter (ARCH = "VAX") #else parameter (ARCH = "Unknown") #endif type *, "ARCH = ", ARCH end alp $ alp $ fortran arch_test_c.f alp $ link arch_test_c alp $ run arch_test_c ARCH = Alpha alp $ alp $ type arch_test_c.f # 1 "ALP$DKC0:[SMS.ITRC]arch_test_c.for;2" program arch_test_c character* 8 ARCH # 1 "ALP$DKC0:[SMS.ITRC]empty.fh;1" # 6 "ALP$DKC0:[SMS.ITRC]arch_test_c.for;2" parameter (ARCH = "Alpha") type *, "ARCH = ", ARCH end alp $ I don't see "any #file or #line directives left in the output", and a "#" in column one seems to be pretty Fortran-compatible. If a COBOL compiler is harder to satisfy, then additional options include writing one's own preprocessor, and filtering the output of a sub-ideal preprocessor. alp $ cc /version HP C V7.3-009 on OpenVMS Alpha V8.3 alp $ fortran /version HP Fortran V8.2-104679-48H9K