When the C/C++ compiler is used for compilation in the SDF environment (COMPILE, CHECK-SYNTAX, and PREPROCESS statements), some preprocessor macros and assertions are predefined, depending on which language mode is selected and which additional options are specified.
For a few macros the value is fixed. It cannot be changed, neither on the command line nor in the source (via #define or #undef). These macros are: __cplusplus, __STDC__, __STDC_VERSION__ and __SNI__STDCplusplus.
Predefined preprocessor macros (defines)
The options specified below are all part of the MODIFY-SOURCE-PROPERTIES statement:
_BOOL | In the language modes C++ V3, C++ 2017 and C++ 2020 with the option KEYWORD-BOOL=*YES | 
  | Always set  | 
  | In all C++ language modes: == 1 in Cfront C++ mode  | 
  | In all C++ language modes  | 
  | Several defines specified in the C++ standard. They are set when the corresponding feature is supported in the current language mode.  | 
  | In language mode Cfront C++  | 
__EDG_NO_IMPLICIT_INCLUSION | |
In the modes C++ V3, C++ 2017 and C++ 2020, if implicit inclusion has been disabled with the option IMPLICIT-INCLUDE=*NO within the framework of template instantiation  | |
  | Always set  | 
  | Always set  | 
  | Option FP-ARITHMETICS=*IEEE in MODIFY-MODULE-PROPERTIES statement  | 
  | Always set  | 
  | Always set  | 
  | In mode C++ 2020: the compiler will set it to the value   | 
  | |
Option LITERAL-ENCODING=*ASCII[-FULL]  | |
  | |
Option LITERAL-ENCODING=*EBCDIC[-FULL]/*NATIVE  | |
  | Option LONGLONG=*YES  | 
  | |
== 1 with the option SPECIALIZATION=*OLD  | |
  | Is defined, if C-NAMES=*SHORT is specified  | 
  | Option SIGNED-CHARACTER=*YES  | 
  | Always set  | 
  | In all C modes and in Cfront C++ mode  | 
  | Always set  | 
  | Never set (reserved for compilation in POSIX)  | 
  | Always set  | 
  | in all C++ language modes: == 0 in extended language modes (STRICT=*NO)  | 
  | Always set  | 
  | Never set (reserved for compilation in POSIX)  | 
  | Always set: == 0 in extended language modes (STRICT=*NO)  | 
  | Always set  | 
  | Always set  | 
  | Always set  | 
  | Always set  | 
  | |
Always set == 8U  | |
  | Always set  | 
  | Always set  | 
  | Undefined in K&R C mode == 199409L in language modes C89, Cfront C++ and C++ V3 == 201112L in language modes C11, C++ 2017 and C++ 2020  | 
  | Undefined in K&R C mode == 199409L in language mode C89 and in all C++ language modes == 201112L in language mode C11  | 
  | in strict language modes (STRICT=*YES)  | 
  | Option KEYWORD-WCHAR=*YES (default in den language modes C++ V3, C++ 2017 and C++ 2020)  | 
  | Option KEYWORD-WCHAR=*YES (default in language modes C++ V3, C++ 2017 and C++ 2020)  | 
Predefined preprocessor assertions (#assert)
The options specified below are all part of the MODIFY-SOURCE-PROPERTIES statement:
  | Always set  | 
  | On generating /390 code  | 
  | On generating /390 code  | 
  | Always set  |