An externally described data structure uses an externally described file definition to define the data structure, it is used to retrieve the field definitions from the file at compile time and create a data structure in your program based upon those field definitions.
This can be useful if you need the same data structure in a set of programs. If you need to change the data structure, you can simply change the definition of the file and recompile all the programs that reference it, instead of having to change all the internally defined data structures in the programs.
You can use these *definitions* in another program, but an externally defined data structure is not normally used for storing variables for use between programs. You can, however call a program passing a data structure as a parameter – you can do this with an internallly or externally defined data structure, but remember if you use an externally defined data structure it makes it easier to maintain for multiple programs.
Hope all this makes some sort of sense.