# gosub

The `gosub` keyword is used to run a named subroutine

## Syntax

**`gosub`** *`subroutineName`***`(`***`[argument1, ... argumentN]`***`)`**&#x20;

{% hint style="info" %}
The argument list may span multiple lines, so long as any given argument is contained on a single line and ends with a comma, eg:

```
gosub subroutineName (argument1,
      argument2,
      argument3,
      )
```

{% endhint %}

## Details

The *subroutineName* provided to the `gosub` statement must be that of a subroutine defined elsewhere in the script using the [subroutine](https://olddocs.exivity.io/2.3.1/diving-deeper/extract/language/subroutine) statement.

&#x20;If any argument contains white-space or a comma then it must be quoted:

`gosub getfile("directory with spaces/filename.txt")`

{% hint style="success" %}
It is permitted to call a subroutine from within another subroutine, therefore `gosub` can be used within the body of a subroutine. This may be done up to 256 levels in depth.
{% endhint %}

The opening bracket after *subroutineName* may or may not be preceded with a space:

`gosub getfile ("filename.txt")`

To call a subroutine with no parameters, use empty brackets:

`gosub dosomething()`

## Example

Please refer to the example in the documentation for the [subroutine](https://olddocs.exivity.io/2.3.1/diving-deeper/extract/language/subroutine) statement
