A Macro is a group of functional blocks grouped together that define a specific functionality. Commonly used program elements can be defined as macros so that they could be reused across applications. Macros offer you a way of transporting logic between different devices. They help in segmenting a huge program into smaller logical blocks.
Functional blocks can be grouped as macros and you can include macros under macros. Macros can be re-used in other applications.
You can selectively choose inputs or outputs of the blocks that you have used in a macro need to be exposed in a particular setup. However, this does not limit you from using the same macro elsewhere and choosing a different set of inputs or outputs to expose.
When a macro is created and saved, it can be dragged on to the wiresheet view and used in creating application logic. The fields of the function blocks that make up a macro become available as fields of the macro itself. Macros are displayed as any other function blocks in a container view.
Macros: