• Known types:
    NameShortLengthMinMaxAccuracySynonyms
    BYTEB1-128+1271
    UBYTEUB102551CHAR
    WORDW2-32768+327671HALF, INT
    UWORDUW20655351UHALF
    LONGL4-2147483648+21474836471
    ULONGUL4042949672961
    FLOATF41.17549435e-383.40282347e+381.19209290e-07SINGLE
    DOUBLED82.225073858507201e-3081.797693134862316e+3082.2204460492503131e-16
    BOOL-20non zero-
    PTR-4
    32bit
    address-
    LIST OF <type>-variablethis type has special meaning


  • Multiple pointers:
    If you would like to use more then two dimensional fields, you can't do it like:
    
        field:PTR TO PTR TO PTR TO PTR TO ...
    
    

    You have to do it like here (the following are same):
    
        field[][][][]:LONG
    
        field[][]:PTR TO PTR TO LONG
    
    


  • Multiple arrays:
    The following are same:
    
      DEF field[10,20]:LONG
    
      field[3,4]:=123
    
    
    
      DEF field[10*20]:LONG
    
      field[4*10+3]:=123
    
    


  • Multiple arrays through pointers:
    The two examples above allocates 10*20*SIZEOF_LONG bytes of memory, but you can do it also without memory allocation (good when using fields as arguments in PROCedures): Is enough to add before the first field size specification character ":" (the following are same):
    
      DEF field[:10]:LONG
    
      ...
    
      memory allocation for field
    
      ...
    
      field[3,4]:=123
    
    
    
    
    
      DEF field:PTR TO LONG
    
      ...
    
      memory allocation for field
    
      ...
    
      field[4*10+3]:=123
    
    

    This allocates nothing, but stores information about field width.

  • LIST/LIST OF:
    This type has a special meaning and can be used in only one place. This place is the procedure argument definition. Argument with this type can be only the last one and it has different meaning for different procedure definitions. It can be used only for external procedure definition, it means, that You can use it only with EPROC, LPROC, RPROC and LIBRARY keywords. With LPROC keyword it's important mainly because of compatibility with C-compatible linkable libraries, like the amiga.lib is. C uses stack for storage of all the arguments and this type allows You to define the last variable-length argument. For all other procedure definitions it just makes different writing of the function call. If You call a function, which has as a last argument, say, TagItem structure, You have to close it to [ and ] brackets, while with this type, You don't need to. You can just enter all the next tag items and tag data right after the last argument separated only by comma.
    
      EPROC MyFunction(a:D,b:LIST OF LONG)
    
    

    Can be called with:
    
      MyFunction(1.0,1,2,3,4,5)
    
    

    While:
    
      EPROC MyFunction(a:D,b:PTR TO LONG)
    
    

    Can be called only with:
    
      MyFunction(1.0,[1,2,3,4,5]:L)