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:
DefinitionType
 numeric_expression ENTITY


[Top Level Definitions] [Exit]

Generated by STEP Tools® EXPRESS to HTML Converter
2012-03-27T17:16:12-04:00