# Functions

## Defining a Function

Here is a C# function compared to the Linx version:

![A process diagram](/files/RlldjgRUzdz2ABjr38Jp)

1. The Function definition lives in the Solution Explorer.
2. Its **Parameters** property defines the input parameters.
3. Its **Result** property defines the output results.
4. The central working area contains the body of the function.
5. Linx does not have an explicit ‘return’. When the Function finishes, the Result set is returned.

***

## Setting the Result of a Function

1. Use the **Return** function, which comes from the Linx Plugin.
2. The **Value** property of the Return function must be set to what the function's result value should be. Select a relevant in-scope item from the dropdown list, enter a literal value in the property field, or use the Expression Editor in the dropdown to build the expression. The ‘=\` in front of the value indicates that the value is an expression and not a literal value.

![Using Return](/files/t3C0TCbF2KmwHPvRRPgt)

Click **DEBUG** to run the Function and see the result.

***

## Calling a Function

Calling a Function is similar to one function calling another in programming.

![Process parameters](/files/qTLPdbtVxbgVfuyT9ASb)

1. Functions are dragged onto the body of another Function to call them.
2. Parameters of the called Function are visible as Properties.

Click **DEBUG** to run the Function and see the result.

***

## Using the Result of a Function

The body of a Function works exactly like the body of a programming function. Statements and expressions are added in a top-down fashion and can refer to items in its scope. When we add another **AddNumbers** Function to the body of **UseAddNumbers**, we can set its parameters to the result of the first **AddNumbers**:

![Using results](/files/Gg7Ql5w8FjToyLBTqPvw)

To set the value of any of the sub-functions' results or calculations to the main function's result, add a **Return** function at the end of the execution sequence:

![Return function at end of sequence](/files/DvQSPCZlMKhzNUQ9Q9ye)

Click **DEBUG** to run the Function and see the result.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.linx.software/main-concepts/functions.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
