Bug: SMESH: UNV file: bad usage of units section (164)

As defined by the unv standard the 164 dataset provides factors and offsets to retrieve data in SI units. The relevant quantities read in the other datasets should be divided by the factors (see Record 2 below):

Universal Dataset Number 164 
============================
    
    Universal Dataset
    Number: 164
    Name:   Units
    Status: Current
    Owner:  General
    Revision Date: 19-AUG-1987
    -----------------------------------------------------------------------

    Record 1:       FORMAT(I10,20A1,I10)
                    Field 1      -- units code
                                    = 1 - SI: Meter (newton)
                                    = 2 - BG: Foot (pound f)
                                    = 3 - MG: Meter (kilogram f)
                                    = 4 - BA: Foot (poundal)
                                    = 5 - MM: mm (milli newton)
                                    = 6 - CM: cm (centi newton)
                                    = 7 - IN: Inch (pound f)
                                    = 8 - GM: mm (kilogram f)
                                    = 9 - US: USER_DEFINED
                                    = 10- MN: mm (newton)
                    Field 2      -- units description (used for
                                    documentation only)
                    Field 3      -- temperature mode
                                    = 1 - absolute
                                    = 2 - relative
    Record 2:       FORMAT(3D25.17)
                    Unit factors for converting universal file units to SI.
                    To convert from universal file units to SI divide by
                    the appropriate factor listed below.
                    Field 1      -- length
                    Field 2      -- force
                    Field 3      -- temperature
                    Field 4      -- temperature offset

    Example:

        -1
       164
             2Foot (pound f)               2
      3.28083989501312334D+00  2.24808943099710480D-01  1.79999999999999999D+00
      4.59670000000000002D+02
        -1

However when loading a unv file in Salome the length factor seems to be used as a multiplication factor instead. For instance a mesh written in millimeter (length factor=1e3) is multiplied by 1e3 instead of being divided by 1e3. This applies also to the translation vector of coordinates systems.

In the following example expressed in millimeters containing a single node (1e3, 0, 0) and a translation vector of (0, 1e3, 0) we expect the point to be located at (1, 1, 0) in meters. In Salome this point is located at (1e6, 1e6, 0) in meters. This is also what we obtain when exporting the mesh in unv format.

    -1
   164
         5 MM: mm (mnewton)            2
    1.0000000000000000E+3    1.0000000000000000E+0    1.0000000000000000E+0
    2.7314999999999998E+2
    -1
    -1
  2420
         1
SMESH_Mesh
         1         0         0
Global Cartesian Coordinate System
    1.0000000000000000E+0    0.0000000000000000E+0    0.0000000000000000E+0
    0.0000000000000000E+0    1.0000000000000000E+0    0.0000000000000000E+0
    0.0000000000000000E+0    0.0000000000000000E+0    1.0000000000000000E+0
    0.0000000000000000E+0    1.0000000000000000E+3    0.0000000000000000E+0
    -1
    -1
  2411
         1         1         1        11
   1.0000000000000000E+03   0.0000000000000000E+00   0.0000000000000000E+00
    -1

This bug has been observed in the SALOME-9.9.0-native-DB11 version.

FYI this has also been reproduced under SALOME-9.10.0.