FUNCTION string_for_derived_unit
(u : derived_unit) : STRING;
FUNCTION string_for_derived_unit_element( u: derived_unit_element; neg_exp: BOOLEAN ): STRING;
LOCAL result: STRING; END_LOCAL; result := string_for_named_unit(u.unit); IF (u.exponent <> 0) THEN IF (u.exponent > 0) OR NOT neg_exp THEN result := result + '**' + FORMAT( ABS(u.exponent), '2I')[2]; ELSE result := result + '**' + FORMAT(u.exponent, '2I')[2]; END_IF; END_IF; RETURN(result); END_FUNCTION; -- string_for_derived_unit_element
LOCAL pos, neg: SET OF derived_unit_element; us: STRING; END_LOCAL;
pos := QUERY(ue <* u.elements | ue.exponent > 0); neg := QUERY(ue <* u.elements | ue.exponent < 0); us := ''; IF SIZEOF(pos) > 0 THEN REPEAT i := LOINDEX(pos) TO HIINDEX(pos); us := us + string_for_derived_unit_element(pos[i], FALSE); IF i <> HIINDEX(pos) THEN us := us + '.'; END_IF; END_REPEAT;
IF SIZEOF(neg) > 0 THEN
us := us + '/';
IF SIZEOF(neg) > 1 THEN us := us + '('; END_IF;
REPEAT i := LOINDEX(neg) TO HIINDEX(neg); us := us + string_for_derived_unit_element( neg[i], FALSE); IF i <> HIINDEX(neg) THEN us := us + '.'; END_IF; END_REPEAT;
IF SIZEOF(neg) > 1 THEN us := us + ')'; END_IF; END_IF; ELSE IF SIZEOF(neg) > 0 THEN REPEAT i := LOINDEX(neg) TO HIINDEX(neg); us := us + string_for_derived_unit_element( neg[i], TRUE); IF i <> HIINDEX(neg) THEN us := us + '.'; END_IF; END_REPEAT; END_IF; END_IF;
RETURN(us); END_FUNCTION; -- string_for_derived_unit
|