# sort() function

The sort() function sorts an attribute
or value mark delimited *str.exp* in ascending order.

## Syntax

```
sort(str.exp{{,ac.exp{,vc.exp}}; &#39;sequence.exp&#39;})
```

## Parameter(s)

| str.exp | String, attribute or value mark to sort in sequence order. |
| --- | --- |
| ac.exp | Attribute (or, the attribute that contains the value or subvalue) that contains the specified str.exp to sort. If ac.exp is used, the sequence.exp is required. |
| vc.exp | Value (or, the value that contains the subvalue) that contains the specified str.exp to sort. |
| 'sequence.exp' | Sequence expression. This expression must be surrounded by quotes.Note: Non-integer numbers as well as mixing numeric and non-numeric data types may return unexpected results. |
| al | Pseudo left-justified ascending sort. |
| ar | Pseudo right-justified ascending sort. |
| dl | Pseudo left-justified descending sort. |
| dr | Pseudo right-justified descending sort. |

## Description

If the expression contains both
attribute and value marks, this function replaces all marks with the
type first encountered.

A second sort() function
is available that works in a manner similar to the locate statement. In this expanded version, the user can specify in which
attribute, and/or value the list resides as well as the sort sequence
to use.

The sort() function performs a left-aligned
string sort only. For example:

```
string = "1" : @vm : "2" : @vm : "11" : @vm : "100"
crt "before " : string
string = sort(string)
crt "after " : string
```
displays:

```
before 1]2]11]100
after 1]100]11]2
```

```
string = "-1": @vm: "-21": @vm: "-3"
crt "before ": string
string = sort(string)
crt "after ": string
```
displays:

```
before -1]-21]-3
after -1]-21]-3
```

## Example(s)

```
list=’zebra’:@vm:’albatross’:@vm:’gooney bird’:@vm:’elephant’
newlist=sort(list)
```
The variable `newlist` contains the string:

```
albatross]elephant]gooney bird]zebra
```
The `]` represents a value mark.

 The following example illustrates the use of the *'sequence.exp'*.

```
nums = 1:@vm:10:@vm:11:@vm:12:@vm:2:@vm:13:@vm:3
sortednums = sort(nums, 1; &#39;ar&#39;)
crt sortednums
```

 displays:

```
1]2]3]10]11]12]13
```

## See also

- [BASIC functions](https://d3codex.com/pickbasic-flashbasic/basic-functions/)
- [locate statement](https://d3codex.com/pickbasic-flashbasic/locate-statement/)
- [Statements and functions](https://d3codex.com/pickbasic-flashbasic/statements-and-functions/)
- [u1072 user exit](https://d3codex.com/pickbasic-flashbasic/u1072-user-exit/)

---
Source: https://d3codex.com/pickbasic-flashbasic/sort-function/ - part of the D3Codex reference.
