Routines (alphabetical) > Routines: M > MAKE_ARRAY

# MAKE_ARRAY

The MAKE_ARRAY function enables you to dynamically create an array whose characteristics are not known until run time.

## Examples

To create a 3-element by 4-element integer array with each element set to the value 5, enter:

M = MAKE_ARRAY(3, 4, /INTEGER, VALUE = 5)

## Syntax

Result = MAKE_ARRAY ( [D1[, ..., D8]], DIMENSION=vector, INCREMENT=value, /INDEX, /NOZERO, SIZE=vector, START=value, TYPE=type_code, VALUE=value, /BOOLEAN, /BYTE, /COMPLEX, /DCOMPLEX, /DOUBLE, /FLOAT, /INTEGER, /L64, /LONG, /OBJ, /PTR, /STRING, /UINT, /UL64, /ULONG )

## Return Value

Returns an array of the specified type, dimensions, and initialization.

## Arguments

### Di

Either an array or a series of scalar expressions specifying the dimensions of the result. If a single argument is specified, it can be either a scalar expression or an array of up to eight elements. If multiple arguments are specified, they must all be scalar expressions. Up to eight dimensions can be specified. If the dimension arguments are not integer values, IDL will convert them to integer values before creating the new array.

The Di arguments are optional if the dimensions of the result are specified using the DIMENSION keyword. Note that you should supply either the Di arguments or a value for the DIMENSION keyword, but not both.

## Keywords

### BOOLEAN

Set this keyword to create a boolean array.

### BYTE

Set this keyword to create a byte array.

### COMPLEX

Set this keyword to create a complex, single-precision, floating-point array.

### DCOMPLEX

Set this keyword to create a complex, double-precision, floating-point array.

### DIMENSION

An array of up to eight scalar elements, specifying the dimensions of the result. Note that you should supply either the Di arguments or a value for the DIMENSION keyword, but not both.

### DOUBLE

Set this keyword to create a double-precision, floating-point array.

### FLOAT

Set this keyword to create a single-precision, floating-point array.

### INCREMENT

Set this keyword to a double-precision number giving the spacing between values in the array. The default is 1. Setting this keyword is equivalent to multiplying each array element by this value and then converting to the result type. This keyword is only applied if INDEX is set. This keyword is ignored for arrays of boolean, objects, or pointers.

### INDEX

Set this keyword to initialize the array with each element set to the value of its one-dimensional subscript. This keyword cannot be used with arrays of boolean, objects, or pointers.

### INTEGER

Set this keyword to create an integer array.

### L64

Set this keyword to create a 64-bit integer array.

### LONG

Set this keyword to create a longword integer array.

### NOZERO

Set this keyword to prevent the initialization of the array. Normally, each element of the resulting array is set to zero.

Note: This keyword is ignored for arrays of boolean, strings, objects, or pointers. Arrays of these types will always be initialized to zero.

### OBJ

Set this keyword to create an object reference array.

### PTR

Set this keyword to create a pointer array.

### SIZE

A size vector specifying the type and dimensions of the result. The format of a size vector is given in the description of the SIZE function.

### START

Set this keyword to a double-precision number giving the value of the first element in the array when the array is initialized by index. The default is 0. Setting this keyword is equivalent to adding a constant offset to each element (after first multiplying by INCREMENT if necessary) and then converting to the result type. This keyword is only applied if INDEX is set. This keyword is ignored for arrays of boolean, objects, or pointers.

### STRING

Set this keyword to create a string array.

### TYPE

The type code to set the type of the result.

Type Code | Type Name | Data Type
0 | UNDEFINED | Undefined
1 | BYTE | Byte
2 | INT | Integer
3 | LONG | Longword integer
4 | FLOAT | Floating point
5 | DOUBLE | Double-precision floating
6 | COMPLEX | Complex floating
7 | STRING | String
8 | STRUCT | Structure
9 | DCOMPLEX | Double-precision complex
10 | POINTER | Pointer
11 | OBJREF | Object reference
12 | UINT | Unsigned Integer
13 | ULONG | Unsigned Longword Integer
14 | LONG64 | 64-bit Integer
15 | ULONG64 | Unsigned 64-bit Integer

Note: All type code values except for TYPE=8 (structures) are valid. To create an array of structures, use the REPLICATE function.

### UINT

Set this keyword to create an unsigned integer array.

### UL64

Set this keyword to create an unsigned 64-bit integer array.

### ULONG

Set this keyword to create an unsigned longword integer array.

### VALUE

The value to initialize each element of the resulting array. VALUE can be a scalar of any type including structure types. The result type is taken from VALUE unless one of the other keywords that specify a type is also set. In that case, VALUE is converted to the type specified by the other keyword prior to initializing the resulting array.

### Thread Pool Keywords

This routine is written to make use of IDL’s thread pool, which can increase execution speed on systems with multiple CPUs. The values stored in the !CPU system variable control whether IDL uses the thread pool for a given computation. In addition, you can use the thread pool keywords TPOOL_MAX_ELTS, TPOOL_MIN_ELTS, and TPOOL_NOTHREAD to override the defaults established by !CPU for a single invocation of this routine. See Thread Pool Keywords for details.

## Version History

4.0 | Introduced
8.2.1 | Added START keyword
8.3 | Added INCREMENT keyword
8.4 | Added BOOLEAN keyword

## See Also

BOOLARR, BYTARR, COMPLEXARR, DBLARR, DCOMPLEXARR, FLTARR, INTARR, LON64ARR, LONARR, REPLICATE, STRARR, UINTARR, ULON64ARR, ULONARR