|
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 ; 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 |
|
public class FString_for_derived_unit public static Value run(SdaiContext _context, Value u) |