# Array references

Dimensioned and Dynamic arrays can be referenced in BASIC
programs.

Dynamic (or string) array references have the forms:

| Form | Description |
| --- | --- |
| dyn.array.var | References an entire attribute location of a dynamic array. |
| dyn.array.var | References a value within an attribute. |
| dyn.array.var | References a subvalue within a value. |
Dimensioned arrays have a maximum of two dimensions and
must first be defined with a dim or dimension statement. The first form is a one-dimensioned array or vector:

```
if array<ac.exp,1,sc.exp> = "xxx" then...
```
The
second form is a two-dimensioned array or matrix:

```
dim dim.array.var(row.exp, column.exp)
```
Dimensioned array references have the forms:

| Form | Description |
| --- | --- |
| dim.array.var(element.exp) | References an element of a dimensioned array or vector. |
| dim.array.var(element.exp) | References a value within an attribute of an element in a dimensioned array or vector. |
| dim.array.var(element.exp) | References a subvalue within a value of an element in a dimensioned array or vector. |
When used in conjunction with the file statement, dimensioned array elements can be referenced by the actual
item-ID of the attribute-defining item in the associated dictionary:

```
file entity
.
.
if fv.entity(name) = "" then
```

## Combining dimensioned and dynamic array elements

A specific value or subvalue of a dimensioned array can be specified
using these forms:

```
dim.array.var(ac.exp)<ac.exp, vc.exp>
```
This references the element of the dimensioned array derived
from the current value of *ac.exp*. Within this array
element, the value count derived from *vc.exp* is
referenced.

```
dim.array.var(ac.exp)<ac.exp, vc.exp, sc.exp>
```
As in the previous case, with the additional reference
to a subvalue location derived from sc.exp.

## Syntax

```
dim.array.var(element.exp)
dim.array.var(row.num,col.num)
dim.array.var(element.exp)<ac.exp, vc.exp, sc.exp>

dyn.array.var<ac.exp>
dyn.array.var<ac.exp, vc.exp>
dyn.array.var<ac.exp, vc.exp, sc.exp>
```

## Example(s)

Assigns the value of `name` to the first element of the dimensioned array `customer.item`.

```
customer.item(1) = name
```
Assigns the value of `address2` to the
second value in the second attribute of dynamic array `customer.item`.

```
customer.item<2,2> = address2
```
Searches for any element in the dimensioned array `array` equal to the letter `x`.

```
if dim.array.var(element.exp) = "x" then...
```
Tests for value `vc.exp` of attribute `2` in the dynamic array `customer.item` equal
to a null string ("").

```
if customer.item<2,vc.exp> = "" then...
```
Tests for any value of attribute `2` in
the dynamic array `customer.item` equal to a null string ("").

```
if customer.item<2,*> = "" then...
```
Tests for subvalue `sc.exp` in value `vc.exp` in attribute `ac.exp` in the dynamic
array `customer.item` equal to a null string `("")`.

```
if customer.item<ac.exp,vc.exp,sc.exp> = "" then...
```
Tests for any subvalue in any value in any attribute in
the dynamic array `customer.item` equal to a null string `("")`.

```
if customer.item<*,*,*> = "" then...
```

## See also

- [() reserved characters](https://d3codex.com/pickbasic-flashbasic/parenthesis-reserved-characters/)
- [> relational operator](https://d3codex.com/pickbasic-flashbasic/greater-than-relational-operator/)
- [Array variable](https://d3codex.com/pickbasic-flashbasic/array-variable/)
- [Assignment](https://d3codex.com/pickbasic-flashbasic/assignment/)
- [Attribute count expression](https://d3codex.com/pickbasic-flashbasic/attribute-count-expression/)
- [extract() function](https://d3codex.com/pickbasic-flashbasic/extract-function/)
- [insert() function](https://d3codex.com/pickbasic-flashbasic/insert-function/)
- [locate statement](https://d3codex.com/pickbasic-flashbasic/locate-statement/)
- [lt relational operator](https://d3codex.com/pickbasic-flashbasic/lt-relational-operator/)
- [matread statement](https://d3codex.com/pickbasic-flashbasic/matread-statement/)
- [matwrite statement](https://d3codex.com/pickbasic-flashbasic/matwrite-statement/)
- [Numeric expressions](https://d3codex.com/pickbasic-flashbasic/numeric-expressions/)
- [read statement](https://d3codex.com/pickbasic-flashbasic/read-statement/)
- [ereplace() function](https://d3codex.com/pickbasic-flashbasic/ereplace-function/)
- [Subvalue count expressions](https://d3codex.com/pickbasic-flashbasic/subvalue-count-expressions/)
- [Value count expression](https://d3codex.com/pickbasic-flashbasic/value-count-expression/)
- [write statement](https://d3codex.com/pickbasic-flashbasic/write-statement/)

---
Source: https://d3codex.com/pickbasic-flashbasic/array-references/ - part of the D3Codex reference.
