The division of a program into sections controls not only labels and symbols, but also macros and DEFINE directive symbols. Macros defined within a section are private to that section and are distinct from macros defined in other sections even if they have the same macro name. Macros defined outside of sections are considered global and may be used within any section. Similarly, DEFINE directive symbols defined within a section are private to that section and DEFINE directive symbols defined outside of any section are globally applied. There are no directives that correspond to XDEF for macros or DEFINE symbols, therefore macros and DEFINE symbols defined in a section can never be accessed globally. If you need global accessibility, define the macros and DEFINE symbols outside of any section. See the listing below for an example.
DEFINE DEFVAL '1' SECTION SECT1 DEFINE DEFVAL '2' MOVE #DEFVAL,R0 ENDSEC MOVE #DEFVAL,R1
The second definition of DEFVAL is visible only inside SECT1, so the value moved to R0 is 2. However, the second move instruction is outside the scope of SECT1 and is therefore the initial definition of DEFVAL. This means that the value 1 is moved to R1.