User spaces enable a large amount of data to be stored. They’re similar to data areas, but can hold much more information. Several of the system APIs write their output to a user space, which can then be read by another API and programatically processed by a language with pointer support (all of the ILE languages on the i support pointers).
Here’s one article about them – although it’s from 1991, it’s a good overview of the concepts. The maximum size of a user space has been increased from its original limit of 16 MB; I don’t remember the exact limit now, but it’s pretty huge. I think that increase was done either for 6.1 or possibly V5R4.
Minor correction: The maximum size of a *USRSPC is still in the neighborhood of 16MB. It has actually been reduced by a few K due to performance reasons.
Thanks for the correction, Bruce; I was mistaken.