# select statement

The select statement creates an active
list of item-IDs, allowing sequential access to each item in the file
by use of the readnext statement.

## Syntax

```
select {var|file.var|list.var{to list.var}}
```

## Parameter(s)

| var | Specifies a dynamic array variable. |
| --- | --- |
| file.var | Specifies a file variable that has been used on an open statement. |
| list.var | Specifies the select list to be used. |

## Description

Unlike the AQL select or sselect commands, the BASIC select statement cannot have selection criteria or perform a sort. The
BASIC select passes through every item in the file
in hashed order.

If *file.var* is not specified,
the default file variable is used. When used with the to clause, the item list is assigned to the specified select variable.

If an external list is already active when the program is executed,
or the program performs an execute of an AQL select, sselect, qselect, or get-list, the active list is returned by
the BASIC select, regardless of the passed file
variable.

## Example(s)

The customer file is opened and
every item is selected.

```
open ’customer’ to customer.file else stop 201,’customer’
select customer.file
eof=0
loop
 readnext ID else eof = 1
until eof do
 print ID:" exists"
repeat
```
The customer file is selected and assigned to the list
variable `customer.list`.

```
open "customer’ to customer.file else stop 201, ’customer’
select customer.file to customer.list
select customer.list to save.cust.list; * save list for later
eof=0
loop
 readnext ID from customer.list else eof=1
until eof do
 print ID:" exists"
repeat
```
The array variable, string, is treated
as an active list by assigning it to the list variable, `list`.

```
string = ’1001’:char(254):’1002’:char(254):’1003’
select string to list
eol=0
loop
 readnext ID from list else exit
 print ID:" exists"
repeat
```
This example demonstrates multiple active lists in the
same program. It first selects all local file pointers from the master
dictionary and assigns them to the md.list list variable using select. Each file name is used to select all items in the
data section.

```
open ’md’ to md.file else stop 201,’md’
execute ’select md with a1 = " d]"’
select md.fileto md.list
loop
 readnext file.name from md.list then
 open file.name to temp.file then
 execute ’select ’:file.name
 select temp.file to temp.list
 loop
 readnext tempID else exit
 print tempID:" in ":file.name:" exists"
 while 1 do repeat
 end
 end else exit
until 1 do repeat
```
Note: Another select clears the primary
and secondary lists.

This form of select causes BASIC to scan the file with each readnext.

The select and readnext statements both consume an external list if one is available. As
a result, system(11) always returns 0 after one
of these commands. For example:

```
execute "select bp sampling 5"
print system(11)
select
print system(11)
```
This prints `5`, then `0`. The external list is consumed by a BASIC variable and is then only
available from FlashBASIC or BASIC.

A select list variable cannot
be read or written by normal BASIC functions and statements. Access
must be purely through select and readnext.

---
Source: https://d3codex.com/pickbasic-flashbasic/select-statement/ - part of the D3Codex reference.
