FUNCTION is_sql_mappable
(* SCHEMA AUTOMOTIVE_DESIGN; *)
FUNCTION is_sql_mappable(arg : expression) : BOOLEAN;
LOCAL
i : INTEGER;
END_LOCAL;
IF 'AUTOMOTIVE_DESIGN.SIMPLE_NUMERIC_EXPRESSION' IN TYPEOF(arg) THEN
RETURN (TRUE);
END_IF;
IF 'AUTOMOTIVE_DESIGN.SQL_MAPPABLE_DEFINED_FUNCTION' IN TYPEOF(arg) THEN
RETURN (TRUE);
END_IF;
IF 'AUTOMOTIVE_DESIGN.MINUS_FUNCTION' IN TYPEOF(arg) THEN
RETURN (is_sql_mappable(arg\unary_numeric_expression.operand));
END_IF;
IF ('AUTOMOTIVE_DESIGN.ABS_FUNCTION' IN TYPEOF(arg)) OR (
'AUTOMOTIVE_DESIGN.SIN_FUNCTION' IN TYPEOF(arg)) OR (
'AUTOMOTIVE_DESIGN.COS_FUNCTION' IN TYPEOF(arg)) OR (
'AUTOMOTIVE_DESIGN.TAN_FUNCTION' IN TYPEOF(arg)) OR (
'AUTOMOTIVE_DESIGN.ASIN_FUNCTION' IN TYPEOF(arg)) OR (
'AUTOMOTIVE_DESIGN.ACOS_FUNCTION' IN TYPEOF(arg)) OR (
'AUTOMOTIVE_DESIGN.ATAN_FUNCTION' IN TYPEOF(arg)) OR (
'AUTOMOTIVE_DESIGN.EXP_FUNCTION' IN TYPEOF(arg)) OR (
'AUTOMOTIVE_DESIGN.LOG_FUNCTION' IN TYPEOF(arg)) OR (
'AUTOMOTIVE_DESIGN.LOG2_FUNCTION' IN TYPEOF(arg)) OR (
'AUTOMOTIVE_DESIGN.LOG10_FUNCTION' IN TYPEOF(arg)) OR (
'AUTOMOTIVE_DESIGN.SQUARE_ROOT_FUNCTION' IN TYPEOF(arg)) OR (
'AUTOMOTIVE_DESIGN.VALUE_FUNCTION' IN TYPEOF(arg)) OR (
'AUTOMOTIVE_DESIGN.LENGTH_FUNCTION' IN TYPEOF(arg)) THEN
RETURN (FALSE);
END_IF;
IF ('AUTOMOTIVE_DESIGN.PLUS_EXPRESSION' IN TYPEOF(arg)) OR (
'AUTOMOTIVE_DESIGN.MULT_EXPRESSION' IN TYPEOF(arg)) OR (
'AUTOMOTIVE_DESIGN.MAXIMUM_FUNCTION' IN TYPEOF(arg)) OR (
'AUTOMOTIVE_DESIGN.MINIMUM_FUNCTION' IN TYPEOF(arg)) THEN
REPEAT i := 1 TO SIZEOF(arg\multiple_arity_numeric_expression.operands);
IF NOT is_sql_mappable(arg\multiple_arity_numeric_expression.operands[i])
THEN
RETURN (FALSE);
END_IF;
END_REPEAT;
RETURN (TRUE);
END_IF;
IF ('AUTOMOTIVE_DESIGN.MINUS_EXPRESSION' IN TYPEOF(arg)) OR (
'AUTOMOTIVE_DESIGN.SLASH_EXPRESSION' IN TYPEOF(arg)) THEN
RETURN (is_sql_mappable(arg\binary_numeric_expression.operands[1]) AND
is_sql_mappable(arg\binary_numeric_expression.operands[2]));
END_IF;
IF ('AUTOMOTIVE_DESIGN.DIV_EXPRESSION' IN TYPEOF(arg)) OR (
'AUTOMOTIVE_DESIGN.MOD_EXPRESSION' IN TYPEOF(arg)) OR (
'AUTOMOTIVE_DESIGN.POWER_EXPRESSION' IN TYPEOF(arg)) THEN
RETURN (FALSE);
END_IF;
IF 'AUTOMOTIVE_DESIGN.SIMPLE_BOOLEAN_EXPRESSION' IN TYPEOF(arg) THEN
RETURN (TRUE);
END_IF;
IF 'AUTOMOTIVE_DESIGN.NOT_EXPRESSION' IN TYPEOF(arg) THEN
RETURN (is_sql_mappable(arg\unary_generic_expression.operand));
END_IF;
IF ('AUTOMOTIVE_DESIGN.ODD_FUNCTION' IN TYPEOF(arg)) OR (
'AUTOMOTIVE_DESIGN.XOR_EXPRESSION' IN TYPEOF(arg)) THEN
RETURN (FALSE);
END_IF;
IF ('AUTOMOTIVE_DESIGN.AND_EXPRESSION' IN TYPEOF(arg)) OR (
'AUTOMOTIVE_DESIGN.OR_EXPRESSION' IN TYPEOF(arg)) THEN
REPEAT i := 1 TO SIZEOF(arg\multiple_arity_boolean_expression.operands);
IF NOT is_sql_mappable(arg\multiple_arity_boolean_expression.operands[i])
THEN
RETURN (FALSE);
END_IF;
END_REPEAT;
RETURN (TRUE);
END_IF;
IF 'AUTOMOTIVE_DESIGN.EQUALS_EXPRESSION' IN TYPEOF(arg) THEN
RETURN (is_sql_mappable(arg\binary_generic_expression.operands[1]) AND
is_sql_mappable(arg\binary_generic_expression.operands[2]));
END_IF;
IF ('AUTOMOTIVE_DESIGN.COMPARISON_EQUAL' IN TYPEOF(arg)) OR (
'AUTOMOTIVE_DESIGN.COMPARISON_GREATER' IN TYPEOF(arg)) OR (
'AUTOMOTIVE_DESIGN.COMPARISON_GREATER_EQUAL' IN TYPEOF(arg)) OR (
'AUTOMOTIVE_DESIGN.COMPARISON_LESS' IN TYPEOF(arg)) OR (
'AUTOMOTIVE_DESIGN.COMPARISON_LESS_EQUAL' IN TYPEOF(arg)) OR (
'AUTOMOTIVE_DESIGN.COMPARISON_NOT_EQUAL' IN TYPEOF(arg)) OR (
'AUTOMOTIVE_DESIGN.LIKE_EXPRESSION' IN TYPEOF(arg)) THEN
RETURN (is_sql_mappable(arg\comparison_expression.operands[1]) AND
is_sql_mappable(arg\comparison_expression.operands[2]));
END_IF;
IF 'AUTOMOTIVE_DESIGN.INTERVAL_EXPRESSION' IN TYPEOF(arg) THEN
RETURN (is_sql_mappable(arg\interval_expression.interval_low) AND
is_sql_mappable(arg\interval_expression.interval_high) AND is_sql_mappable(
arg\interval_expression.interval_item));
END_IF;
IF ('AUTOMOTIVE_DESIGN.NUMERIC_DEFINED_FUNCTION' IN TYPEOF(arg)) OR (
'AUTOMOTIVE_DESIGN.BOOLEAN_DEFINED_FUNCTION' IN TYPEOF(arg)) OR (
'AUTOMOTIVE_DESIGN.STRING_DEFINED_FUNCTION' IN TYPEOF(arg)) THEN
RETURN (FALSE);
END_IF;
IF 'AUTOMOTIVE_DESIGN.SIMPLE_STRING_EXPRESSION' IN TYPEOF(arg) THEN
RETURN (TRUE);
END_IF;
IF ('AUTOMOTIVE_DESIGN.INDEX_EXPRESSION' IN TYPEOF(arg)) OR (
'AUTOMOTIVE_DESIGN.SUBSTRING_EXPRESSION' IN TYPEOF(arg)) OR (
'AUTOMOTIVE_DESIGN.CONCAT_EXPRESSION' IN TYPEOF(arg)) OR (
'AUTOMOTIVE_DESIGN.FORMAT_FUNCTION' IN TYPEOF(arg)) THEN
RETURN (FALSE);
END_IF;
RETURN (FALSE);
END_FUNCTION; (* declared in: iso13584_expressions_schema *)
Referenced By
Defintion is_sql_mappable is references by the following definitions:
[Top Level Definitions] [Exit]Generated by STEP Tools® EXPRESS to HTML Converter
2012-03-27T17:16:12-04:00