EXPORT{(external_name)}

The specification of the EXPORT keyword allows a globally defined data structure or standalone field defined within a module to be used by another module in the program. The storage for the data item is allocated in the module containing the EXPORT definition. The external_name parameter, if specified, must be a character literal or constant.

In a free-form definition, you can specify *DCLCASE for the external_name parameter, indicating that the external name of the item is the same as the name of the item, in the same case as the name is specified. See Specifying *DCLCASE as the External Name.

The EXPORT keyword on the definition specification is used to export data items and cannot be used to export procedure names. To export a procedure name, use the EXPORT keyword on the procedure specification.

Note: The initialization for the storage occurs when the program entry procedure (of the program containing the module) is first called. RPG IV will not do any further initialization on this storage, even if the procedure ended with LR on, or ended abnormally on the previous call.
The following restrictions apply when EXPORT is specified:
  • Only one module may define the data item as exported
  • You cannot export a field that is specified in the Result-Field entry of a PARM in the *ENTRY PLIST
  • Unnamed data structures cannot be exported
  • BASED data items cannot be exported
  • The same external field name cannot be specified more than once per module and also cannot be used as an external procedure name
  • IMPORT and EXPORT cannot both be specified for the same data item.

For a multiple-occurrence data structure or table, each module will contain its own copy of the occurrence number or table index. An OCCUR or LOOKUP operation in any module will have only a local impact since the occurrence number or index is local to each module.

See also IMPORT{(external_name)}.

Tip:

The keywords IMPORT and EXPORT allow you to define a "hidden" interface between modules. As a result, use of these keywords should be limited only to those data items which are global throughout the application. It is also suggested that this global data be limited to things like global attributes which are set once and never modified elsewhere.