The OSS ASN.1 Compiler can parse any macro instance (i.e., macro usage) provided that the macro definition precedes it. If the macro definition does not precede the macro instance then the parse is successful only if the ASN.1 is syntactically valid in the absence of the macro notation. For example, if you have:
MyModule DEFINITIONS ::= BEGIN foo OPERATION ::= globalValue : {1 2 3 4 5} bar OPERATION ::= localValue : 3 Foo ::= OPERATION OPERATION MACRO ::= BEGIN ............. END END
The OSS ASN.1 compiler will successfully parse the macro instances for foo, bar and Foo although the OPERATION macro definition does not precede them. However, if you have:
YourModule DEFINITIONS ::= BEGIN fooBar OPERATION ARGUMENT INTEGER RESULT BOOLEAN ::= globalValue: {1 2 3 4 5} OPERATION MACRO ::= BEGIN ............. END END
the OSS ASN.1 compiler will not be able to parse the macro instance fooBar because it is syntactically invalid ASN.1 in the absence of the macro notation and OPERATION is defined after fooBar. In such cases OPERATION must be defined before fooBar.
In all cases the OSS ASN.1 Compiler requires that the macro be defined, whether before or after the macro instance.
The samples included with some of the Knowledge Center answers are meant for your general understanding of the OSS products. Different versions of the products might produce slightly different outputs. Consult the products documentation and samples for the most up-to-date products information and code examples.
Test drive the OSS Nokalva ASN.1, LTE, and XML Tools now! Your trial includes complete software, documentation, sample programs, free 24x7 technical support and more.
Our expert personnel can help you learn ASN.1!
We offer 4-day ASN.1 courses at our headquarters or your premises.