# ALLOCATE'INDEXED
> [HTML Version](allocate-indexed.htm)
**ALLOCATE'INDEXED fspec, allocate'map**
ALLOCATE'INDEXED creates a new ISAM-A file (as an alternate to using ISMUTL.LIT). The _allocate'map_ structure contains the configuration details needed to create the file, and must be customized, based on the following:
MAP1 ALLOCATE'MAP
MAP2 ERROR'OFFSET,B,2,-1 \! Offset if error
MAP2 MAX'RECS,B,4 \! (ignored)
MAP2 REC'SIZE,B,2 \! total record size
MAP2 EXTRA'PCT,B,2 \! extra IDX blocks (ignored)
MAP2 LOADING'FACTOR,B,1,100 \! loading factor (ignored)
MAP2 RESERVED0,X,11 \! reserved for future
MAP2 VARIABLE'REC'SIZE,B,2 \! size of variable portion of rec
MAP2 PRIMARY'KEY \! primary key definition
MAP2 SECONDARY'KEY \! zero or more secondary key definitions
MAP2 ALLOCATE'END,B,2,0 \! marks end of key definitions
The layout of the PRIMARY'KEY and SECONDARY'KEY sub-structures should be mapped according to one of the following models, based on the key type:
**Alphanumeric Key Definition**
MAP2 KEY'ALPHANUMERIC
MAP3 KEY'TYPE,B,1,1 \! 1=alphanumeric
MAP3 KEY'RESV(3),B,1 \! reserved for expansion
MAP3 KEY'NAME,S,20 \! name of key (ignored)
MAP3 KEY'NULL1,B,2,0 \! null terminator for name
MAP3 KEY'DUP,B,1 \! sum of 1=duplicates allowed,
\! 2=compress dupes, 4=leading, 8=trailing
MAP3 KEY'CHG,B,1 \! key change permitted (ignored)
MAP3 KEY'SIZE,B,2 \! size of key in chars
MAP3 KEY'POS,B,2 \! key pos (1=first byte)
**Signed Integer Key Definition**
MAP2 KEY'INTEGER
MAP3 KEY'TYPE,B,1,2 \! 2=integer
MAP3 KEY'RESV(3),B,1 \! reserved for expansion
MAP3 KEY'NAME,S,20 \! name of key (ignored)
MAP3 KEY'NULL1,B,2,0 \! null terminator for name
MAP3 KEY'DUP,B,1 \! 1=duplicates allowed
MAP3 KEY'CHG,B,1 \! key change permitted (ignored)
MAP3 KEY'SIZE,B,2 \! size of key in bytes (2 or 4)
MAP3 KEY'POS,B,2 \! key pos (1=first byte)
**Unsigned Binary Key Definition**
MAP2 KEY'BINARY
MAP3 KEY'TYPE,B,1,4 \! 4=binary
MAP3 KEY'RESV(3),B,1 \! reserved for expansion
MAP3 KEY'NAME,S,20 \! name of key (ignored)
MAP3 KEY'NULL1,B,2,0 \! null terminator for name
MAP3 KEY'DUP,B,1 \! 1=duplicates allowed
MAP3 KEY'CHG,B,1 \! key change permitted (ignored)
MAP3 KEY'SIZE,B,2 \! size of key in bytes (1-5)
MAP3 KEY'POS,B,2 \! key pos (1=first byte)
**Concatenated Key Definition**
MAP2 KEY'CONCAT
MAP3 KEY'TYPE,B,1,3 \! 3=concatenated
MAP3 KEY'RESV(3),B,1 \! reserved for expansion
MAP3 KEY'NAME,S,20 \! name of key (ignored)
MAP3 KEY'NULL1,B,2,0 \! null terminator for name
MAP3 KEY'DUP,B,1 \! 1=duplicates allowed
MAP3 KEY'CHG,B,1 \! key change permitted (ignored)
MAP3 SUBKEY(?) \! 1 or more subkeys
MAP4 SUBKEY'SIZE,B,2 \! size of subkey in chars
MAP4 SUBKEY'POS,B,2 \! subkey pos (1=first byte)
MAP3 KEY'END,B,2 \! terminate list of subkeys