When defining a Domain, once the Data Type is established, you have the choice to declare it as a collection of that Data Type:
The default 'Collection' Property value is 'False'. If you set it to 'True', you'll have a collection Domain whose items are of the established Data Type.
Then, you can define a variable of the 'EMails' Data Type, which is a collection of items of Character(50) Data Type. Then, you can run through the collection using the 'For IN' command.
Note that the attributes cannot be defined as collections (remember that talking about attributes is talking about columns of the database tables). What happens if an attribute is defined based on a collection domain (such as 'EMails' shown above)? In this case, the domain acts as a way to initialize all the similar attribute properties. That is, as the attribute doesn't have a Collection Property, its counterpart Domain Property is dismissed.
Any. Particularly, in addition to the basic (Numeric, Character, etc.) and extended ones (HttpRequest, etc.), it can be an SDT type (simple as well as collection) or a BC one.
It's worth mentioning that once it has been established that the Domain is a collection, the 'Dimensions' Property automatically takes the 'Scalar' value. In other words, variables that are collections of arrays or matrices cannot be defined.