Skip to content

Latest commit

 

History

History
92 lines (62 loc) · 2.54 KB

convert_concat.rst

File metadata and controls

92 lines (62 loc) · 2.54 KB

Adjust concatenations

Note

The Macro to Python converter is available from Metview version 5.22.0

In Macro the generic concatenation operator is & (ampersand), which can be used for strings, lists, fieldsets and many other built-in types in the same way. Conversion of these operator calls to Python would require run-time information, which the converter does not posses since it does not actually runs the Macro. To overcome this difficulty the calls to & are replaced by calls to Metview's built in :func:`mv.compat.concat` method in the resulting Python script.

Note

:func:`mv.compat.concat` is available from Metview Python version 1.16.0

The following table contains some concatenation examples.

Replacing & with :func:`mv.compat.concat` calls in the generated Python code
Macro code Generated Python code
# string
c = a & "my_text"

# list
a = nil
a = a & [12]

# vector
v = a & |1,2,3|

# fieldset, geopoints, bufr
f = g1 & g2
# string
c = mv.compat.concat(a, "my_text")

# list
a = []
a = mv.compat.concat(a, 12)

# numpy array
v = mv.compat.concat(a, np.array([1,2,3]))

# fieldset, geopoints, bufr
f = mv.compat.concat(g1, g2)

While this results in a correctly working code it must be only regarded as a temporary solution. Ideally you should check your code and replace all :func:`mv.compat.concat` calls with the proper concatenation used for a given type in Python.

The following table can serve you as a guide to properly convert the & operator calls in Macro to Python:

Resolving the Macro & operator calls in Python
Macro code Generated Python code
# string
c = a & "my_text"

# list
a = nil
a = a & [12]

# vector
v = a & |1,2,3|

# fieldset, geopoints, bufr
f = g1 & g2
# string
c = a + "my_text"

# list
a = []
a.append(12)

# numpy array
v = np.concatenate(a, np.array([1,2,3]))

# fieldset, geopoints, bufr
f = mv.merge(g1, g2)