The ^ function -------------- ^ -> returns address of data block ^(element) -> returns address of element data ^() -> returns address of array definition block (ie, data block) ^integer% => value of integer% !^integer%=integer% ^real => value of real |^real=real ^byte& => value of byte ?^byte&=value ^string$ => string descriptor !^string$=>contents of string ^PROCname => ^FNname => ^array() => array parameter block ^array(0) => start of array data Negative offsets dependent on address alignment, avoid using: ^integer%?-1=0, name terminator ^integer%?-2=ASC"%" ^real?-1=0 ^byte&?-1=0 ^byte&?-2=ASC"&" ^string$-1=0 ^string$?-2=ASC"$" 32-bit addresses: ^string$+0 => address of string contents ^string$+4 => string length ^struct{} => format block ^struct{}+4 => data block 16-bit addresses: ^string$+0 => address of string contents ^string$+2 => string length If variable doen't exist, it is created, just like fred=1 or LOCAL jim.