Calculations in M-Designer

De MappingDoc

How to make calculations in M-Designer

1 - Create "Integer Memory" or "Float Memory" zones that get numeric information from XML or spool file
Field names : ZONE1 and ZONE2

2 - Create a "Math. Calculation Memory" zone and type calculation in "Text printed after" field

Field name : CALCFIELD
Text printed after : [[FIELD1]] + [[FIELD2]]

3 - Display result in a new "Memory Replacement" zone
Text printed after : [[CALCFIELD]]

Thousands and decimal separators

M-Designer Preferences

Two options in the Calculation tab let you specify the thousands separator and decimal separator. They are used for retrieving integer or real values in the application (through the use of Memory zones), the calculations made and the results displayed in the preview. They have no effect on how projects are generated on the server.

M-PS parameters (mapping.conf)

Two equivalent variables exist for the execution on the M-Processing Server side: MAPCPYSPLF_THOUSAND and MAPCPYSPLF_DECIMAL.

These settings are used globally for the server. However, they can be set differently before running any Mapping command in order to apply other separators used in other countries.

Comparison between M-Designer Preview and server-side calculation results

The following differences are fixed in M-Designer 8.0.5 or higher.

The M-Designer preview does not interpret the type of fields, only the values (decimal separator or not).
Server-side calculation (with mapcpysplf) interprets only the type of fields, regardless of the values.

For the following examples, the thousands separator is " . " and the decimal separator is " , " (French standard)

Calculation Field Type M-Designer Preview M-PS Composition Comments
[[val1]] + [[val2]]
645 + 110
Integer 755 755 "Float type" is interpreted only for XPS generation
Float 755 755,00
[[val1]] / [[val2]]
645 / 110
Integer 5 5
Float 5 5,86
[[val1]] + [[val2]]
645,13 + 110,45
Integer 755,58 755 If values contain a decimal separator then M-Designer assumes fields as float, but this has no impact on server side composition.
Float 755,58 755,58
[[val1]] + [[val2]]
645.13 + 110.45
Integer 75.558 75.558 Because of M-Designer preferences and mapping.conf, "." is not interpreted, so it is assumed as 64513 + 11045
Float 75.558 75.558,00
,[[val1]] + [[val2]]
645 + 110
Integer 755,00 755 If calculation contains a decimal separator then M-Designer assumes fields as a float. This prefix has no impact on XPS generation.
Float 755,00 755,00
,[[val1]] / [[val2]]
645 / 110
Integer 5,86 5
Float 5,86 5,86