![]() |
![]() HP OpenVMS Systemsask the wizard |
![]() |
The Question is: How can I specify a lower-case module in a LINK option file /INCLUDE directive? I have an object module that has a lower case module name, because the source foo.c file was named in lower case on an ODS-5 volume. I want to explicitly include the module from an object library in a Linker .OPT file. When I specify the module name in lo wer or upper case in a mylib/INCLUDE=foo option, the linker generates a "module not found" warning. When I put quotes around the lower case module name I got a syntax error. Apparently, you can use quotes on the LINK command line, but not in an option s file /INCLUDE= specification. I cannot put the /INCLUDE specification on the command line, it must be in an options file. As a workaround, I put a #pragma module_name FOO directive in the (.c) source file, but I'd rather resolve this issue without a source code change. The Answer is : The OpenVMS Wizard would strongly encourage you to read the available C Programming documentation. Particularly the documentation on using C on OpenVMS, as this covers this and a wide variety of other topics. If you are receiving lowercase errors such as this, these are not a result of the filenames involved, these errors are a result of the symbol names involved. Barring comparatively unusual configurations within the ODS-5 Extended File Name environment, the OpenVMS file system is case-preserving and case-blind. ODS-2 is always case-blind, and will uppercase all names for storage and subsequent use. Additionally and by default, OpenVMS is case insensitive and prefers to utilize case-blind processing on all symbols, and accordingly the compilers and the Linker use uppercase symbol names. If you prefer to avoid reading the C documentation -- again, the OpenVMS Wizard would strongly encourage you to read the available and very detailed documentation -- please see the /NAMES or analogous control mechanism within the compilers (of those languages that can provide case-sensitive symbols, of course), and please also see the CASE_SENSITIVE keyword mechanism available within the Linker options file. And you can use a preprocessor define to fix the casing of the name. If you wish to avoid having DCL uppercase the name as will occur (by default) on the LINK command and on any other input at the $ dollar prompt of DCL, you must quote the particular value. If you enable case sensitivity within the language, you may (will?) find situations where you have entered an incorrect case for a symbol and will thus have to recode your application. The OpenVMS Wizard strongly discourages the use of multiple different symbols differing only in case, as this construction often leads to maintenance headaches.
|