|  | @@ -21,6 +21,7 @@ export function renderMenu (
 | 
	
		
			
				|  |  |    size_field = 2,
 | 
	
		
			
				|  |  |    expression_element
 | 
	
		
			
				|  |  |  ) {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |    // Verificar se o objeto atual trata-se de uma chamada de função e conferir se possui a quantidade correta de parâmetros
 | 
	
		
			
				|  |  |    // Caso não possua, tem que adicionar as variáveis que servirão de parâmetros:
 | 
	
		
			
				|  |  |    if (ref_object.function_called) {
 | 
	
	
		
			
				|  | @@ -49,6 +50,35 @@ export function renderMenu (
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +  // Verificar agora, quando trata-se de chamada de função, se a passagem de parâmetro é
 | 
	
		
			
				|  |  | +  // por referência ou por cópia:
 | 
	
		
			
				|  |  | +  var index_references = [];
 | 
	
		
			
				|  |  | +  if (ref_object.function_called) {
 | 
	
		
			
				|  |  | +    if (ref_object.function_called.parameters_list) {
 | 
	
		
			
				|  |  | +      for (var i = 0; i < ref_object.function_called.parameters_list.length; i++) {
 | 
	
		
			
				|  |  | +        if (ref_object.function_called.parameters_list[i].reference) {
 | 
	
		
			
				|  |  | +          index_references.push(i)
 | 
	
		
			
				|  |  | +          ref_object.parameters_list[i].reference = true
 | 
	
		
			
				|  |  | +          ref_object.parameters_list[i].variable_and_value = VAR_OR_VALUE_TYPES.only_variable;
 | 
	
		
			
				|  |  | +          if (ref_object.parameters_list[i].column)
 | 
	
		
			
				|  |  | +            ref_object.parameters_list[i].column.reference_parent = true
 | 
	
		
			
				|  |  | +          if (ref_object.parameters_list[i].row)
 | 
	
		
			
				|  |  | +            ref_object.parameters_list[i].row.reference_parent = true
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        else {
 | 
	
		
			
				|  |  | +          ref_object.parameters_list[i].reference = false;
 | 
	
		
			
				|  |  | +          ref_object.parameters_list[i].variable_and_value = VAR_OR_VALUE_TYPES.all;
 | 
	
		
			
				|  |  | +          if (ref_object.parameters_list[i].column)
 | 
	
		
			
				|  |  | +            ref_object.parameters_list[i].column.reference_parent = false
 | 
	
		
			
				|  |  | +          if (ref_object.parameters_list[i].row)
 | 
	
		
			
				|  |  | +            ref_object.parameters_list[i].row.reference_parent = false
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        ref_object.parameters_list[i].reference_dimensions = ref_object.function_called.parameters_list[i].dimensions
 | 
	
		
			
				|  |  | +      } 
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |    let menu_var_or_value =
 | 
	
		
			
				|  |  |      '<div class="ui dropdown menu_var_or_value_dom" data-varmenu="true"><div class="text"></div><i class="dropdown icon"></i><div class="menu">';
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -227,6 +257,12 @@ export function renderMenu (
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  function appendSelectText (ref_object, menu_var_or_value) {
 | 
	
		
			
				|  |  | +  // if (ref_object.reference_parent) {
 | 
	
		
			
				|  |  | +  //   menu_var_or_value
 | 
	
		
			
				|  |  | +  //       .find(".text")
 | 
	
		
			
				|  |  | +  //       .append("<i>Opcional</i>");
 | 
	
		
			
				|  |  | +  //   return;
 | 
	
		
			
				|  |  | +  // }
 | 
	
		
			
				|  |  |    switch (ref_object.variable_and_value) {
 | 
	
		
			
				|  |  |      case VAR_OR_VALUE_TYPES.only_variable:
 | 
	
		
			
				|  |  |        menu_var_or_value
 | 
	
	
		
			
				|  | @@ -620,8 +656,11 @@ function variableValueMenuCode (
 | 
	
		
			
				|  |  |          variable_obj.content.name +
 | 
	
		
			
				|  |  |          "</span>";
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -      variable_render +=
 | 
	
		
			
				|  |  | -        ' <span>[ </span> <div class="column_container"></div> <span> ]</span>';
 | 
	
		
			
				|  |  | +      if (variable_obj.reference_dimensions >= 1)
 | 
	
		
			
				|  |  | +        variable_render += '';
 | 
	
		
			
				|  |  | +      else
 | 
	
		
			
				|  |  | +        variable_render +=
 | 
	
		
			
				|  |  | +          ' <span>[ </span> <div class="column_container"></div> <span> ]</span>';
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |        variable_render += "</div>";
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -688,13 +727,16 @@ function variableValueMenuCode (
 | 
	
		
			
				|  |  |        });
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |        if (!variable_obj.column) {
 | 
	
		
			
				|  |  | -        variable_obj.column = new Models.VariableValueMenu(
 | 
	
		
			
				|  |  | +        var temp = new Models.VariableValueMenu(
 | 
	
		
			
				|  |  |            VAR_OR_VALUE_TYPES.all,
 | 
	
		
			
				|  |  |            null,
 | 
	
		
			
				|  |  |            null,
 | 
	
		
			
				|  |  |            null,
 | 
	
		
			
				|  |  |            true
 | 
	
		
			
				|  |  |          );
 | 
	
		
			
				|  |  | +        if (variable_obj.reference)
 | 
	
		
			
				|  |  | +          temp.reference_parent = true
 | 
	
		
			
				|  |  | +        variable_obj.column = temp;
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |        variableValueMenuCode(
 | 
	
	
		
			
				|  | @@ -713,11 +755,13 @@ function variableValueMenuCode (
 | 
	
		
			
				|  |  |          '<div class="variable_rendered"> <span class="var_name">' +
 | 
	
		
			
				|  |  |          variable_obj.content.name +
 | 
	
		
			
				|  |  |          "</span>";
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +      
 | 
	
		
			
				|  |  |        variable_render +=
 | 
	
		
			
				|  |  |          ' <span>[ </span> <div class="row_container"></div> <span> ]</span>';
 | 
	
		
			
				|  |  | -      variable_render +=
 | 
	
		
			
				|  |  | -        ' <span>[ </span> <div class="column_container"></div> <span> ] </span>';
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      if (variable_obj.reference_dimensions == 0)
 | 
	
		
			
				|  |  | +        variable_render +=
 | 
	
		
			
				|  |  | +          ' <span>[ </span> <div class="column_container"></div> <span> ] </span>';
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |        variable_render += "</div>";
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -784,22 +828,32 @@ function variableValueMenuCode (
 | 
	
		
			
				|  |  |        });
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |        if (!variable_obj.column) {
 | 
	
		
			
				|  |  | -        variable_obj.column = new Models.VariableValueMenu(
 | 
	
		
			
				|  |  | +        var temp = new Models.VariableValueMenu(
 | 
	
		
			
				|  |  |            VAR_OR_VALUE_TYPES.all,
 | 
	
		
			
				|  |  |            null,
 | 
	
		
			
				|  |  |            null,
 | 
	
		
			
				|  |  |            null,
 | 
	
		
			
				|  |  |            true
 | 
	
		
			
				|  |  |          );
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        if (variable_obj.reference)
 | 
	
		
			
				|  |  | +          temp.reference_parent = true
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        variable_obj.column = temp
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |        if (!variable_obj.row) {
 | 
	
		
			
				|  |  | -        variable_obj.row = new Models.VariableValueMenu(
 | 
	
		
			
				|  |  | +        var temp = new Models.VariableValueMenu(
 | 
	
		
			
				|  |  |            VAR_OR_VALUE_TYPES.all,
 | 
	
		
			
				|  |  |            null,
 | 
	
		
			
				|  |  |            null,
 | 
	
		
			
				|  |  |            null,
 | 
	
		
			
				|  |  |            true
 | 
	
		
			
				|  |  |          );
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        if (variable_obj.reference)
 | 
	
		
			
				|  |  | +          temp.reference_parent = true
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        variable_obj.row = temp
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |        variableValueMenuCode(
 | 
	
	
		
			
				|  | @@ -810,14 +864,19 @@ function variableValueMenuCode (
 | 
	
		
			
				|  |  |          menu_var_or_value,
 | 
	
		
			
				|  |  |          expression_element
 | 
	
		
			
				|  |  |        );
 | 
	
		
			
				|  |  | -      variableValueMenuCode(
 | 
	
		
			
				|  |  | -        command,
 | 
	
		
			
				|  |  | -        variable_obj.column,
 | 
	
		
			
				|  |  | -        $(variable_render.find(".column_container")),
 | 
	
		
			
				|  |  | -        function_obj,
 | 
	
		
			
				|  |  | -        menu_var_or_value,
 | 
	
		
			
				|  |  | -        expression_element
 | 
	
		
			
				|  |  | -      );
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      if (variable_obj.reference_dimensions == 1) {
 | 
	
		
			
				|  |  | +        variable_obj.column = null
 | 
	
		
			
				|  |  | +      } else {
 | 
	
		
			
				|  |  | +        variableValueMenuCode(
 | 
	
		
			
				|  |  | +          command,
 | 
	
		
			
				|  |  | +          variable_obj.column,
 | 
	
		
			
				|  |  | +          $(variable_render.find(".column_container")),
 | 
	
		
			
				|  |  | +          function_obj,
 | 
	
		
			
				|  |  | +          menu_var_or_value,
 | 
	
		
			
				|  |  | +          expression_element
 | 
	
		
			
				|  |  | +        );
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  |      } else {
 | 
	
		
			
				|  |  |        variable_render =
 | 
	
		
			
				|  |  |          '<div class="variable_rendered"> <span class="var_name">' +
 | 
	
	
		
			
				|  | @@ -1346,6 +1405,16 @@ function openInputToFunction (
 | 
	
		
			
				|  |  |            true
 | 
	
		
			
				|  |  |          );
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      if (function_selected.parameters_list[j].reference == true) {
 | 
	
		
			
				|  |  | +        temp.reference = true;
 | 
	
		
			
				|  |  | +        temp.variable_and_value = VAR_OR_VALUE_TYPES.only_variable;
 | 
	
		
			
				|  |  | +      } else {
 | 
	
		
			
				|  |  | +        temp.reference = false;
 | 
	
		
			
				|  |  | +        temp.variable_and_value = VAR_OR_VALUE_TYPES.all;
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +      temp.reference_dimensions = function_selected.parameters_list[j].dimensions
 | 
	
		
			
				|  |  | +      
 | 
	
		
			
				|  |  |        ref_object.parameters_list.push(temp);
 | 
	
		
			
				|  |  |        renderMenu(
 | 
	
		
			
				|  |  |          command,
 | 
	
	
		
			
				|  | @@ -1525,14 +1594,17 @@ function openInputToVariable (
 | 
	
		
			
				|  |  |      "</span>";
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    if (variable_selected.dimensions == 1 && ref_object.dimensions != 1) {
 | 
	
		
			
				|  |  | +    
 | 
	
		
			
				|  |  |      variable_render +=
 | 
	
		
			
				|  |  |        ' <span>[ </span> <div class="column_container"></div> <span> ]</span>';
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |    if (variable_selected.dimensions == 2 && ref_object.dimensions != 2) {
 | 
	
		
			
				|  |  |      variable_render +=
 | 
	
		
			
				|  |  |        ' <span>[ </span> <div class="row_container"></div> <span> ]</span> ';
 | 
	
		
			
				|  |  | +    
 | 
	
		
			
				|  |  |      variable_render +=
 | 
	
		
			
				|  |  |        ' <span>[ </span> <div class="column_container"></div> <span> ]</span>';
 | 
	
		
			
				|  |  | +    
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    variable_render += "</div>";
 | 
	
	
		
			
				|  | @@ -1542,13 +1614,18 @@ function openInputToVariable (
 | 
	
		
			
				|  |  |    dom_object.append(variable_render);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    if (variable_selected.dimensions == 1 && ref_object.dimensions != 1) {
 | 
	
		
			
				|  |  | -    ref_object.column = new Models.VariableValueMenu(
 | 
	
		
			
				|  |  | +    var temp = new Models.VariableValueMenu(
 | 
	
		
			
				|  |  |        VAR_OR_VALUE_TYPES.all,
 | 
	
		
			
				|  |  |        null,
 | 
	
		
			
				|  |  |        null,
 | 
	
		
			
				|  |  |        null,
 | 
	
		
			
				|  |  |        true
 | 
	
		
			
				|  |  |      );
 | 
	
		
			
				|  |  | +    if (ref_object.reference)
 | 
	
		
			
				|  |  | +          temp.reference_parent = true
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    ref_object.column = temp
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      renderMenu(
 | 
	
		
			
				|  |  |        command,
 | 
	
		
			
				|  |  |        ref_object.column,
 | 
	
	
		
			
				|  | @@ -1559,13 +1636,19 @@ function openInputToVariable (
 | 
	
		
			
				|  |  |      );
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |    if (variable_selected.dimensions == 2 && ref_object.dimensions != 2) {
 | 
	
		
			
				|  |  | -    ref_object.row = new Models.VariableValueMenu(
 | 
	
		
			
				|  |  | +    var temp = new Models.VariableValueMenu(
 | 
	
		
			
				|  |  |        VAR_OR_VALUE_TYPES.all,
 | 
	
		
			
				|  |  |        null,
 | 
	
		
			
				|  |  |        null,
 | 
	
		
			
				|  |  |        null,
 | 
	
		
			
				|  |  |        true
 | 
	
		
			
				|  |  |      );
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    if (ref_object.reference)
 | 
	
		
			
				|  |  | +          temp.reference_parent = true
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    ref_object.row = temp
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      renderMenu(
 | 
	
		
			
				|  |  |        command,
 | 
	
		
			
				|  |  |        ref_object.row,
 | 
	
	
		
			
				|  | @@ -1575,13 +1658,19 @@ function openInputToVariable (
 | 
	
		
			
				|  |  |        expression_element
 | 
	
		
			
				|  |  |      );
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    ref_object.column = new Models.VariableValueMenu(
 | 
	
		
			
				|  |  | +    var temp = new Models.VariableValueMenu(
 | 
	
		
			
				|  |  |        VAR_OR_VALUE_TYPES.all,
 | 
	
		
			
				|  |  |        null,
 | 
	
		
			
				|  |  |        null,
 | 
	
		
			
				|  |  |        null,
 | 
	
		
			
				|  |  |        true
 | 
	
		
			
				|  |  |      );
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    if (ref_object.reference)
 | 
	
		
			
				|  |  | +          temp.reference_parent = true
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    ref_object.column = temp
 | 
	
		
			
				|  |  | +    
 | 
	
		
			
				|  |  |      renderMenu(
 | 
	
		
			
				|  |  |        command,
 | 
	
		
			
				|  |  |        ref_object.column,
 |