---
url: /statelake/scripting-reference/functions-and-procedures/what-is-a-procedure.md
---

# What Is A Procedure

**Procedures** are sub-routines that do not return a result, and are declared by a procedure statement.

Just like a function, a procedure declaration requires values to be input as parameters inside parentheses, but can also contain no parameter at all. Pre-defined procedures such as **ClearAllGlobals** and **ClearAllLocals** have no parameters and therefore present with no parentheses.

But unlike a function, **Procedures** do not generally return a result upon completion. Any results obtained from the execution of a **Procedure** are either contained in one or more output arguments, or have another purpose such as writing something to the screen or writing to a file.

**Procedures** are extremely useful – for breaking long scripts into easily readable smaller sections, and for portions of code that are to be run repeatedly. This allows scripts and processing to be uncluttered and well-structured, easily understood, and easily followed.

When a **Procedure** is defined in a class, it is commonly called a **Method**.
