| 
    
    
    Command | 
    
    
    STRUCT | 
   
  
    | 
    
      | 
    
  | 
   
  
    | 
    Description | 
    
        Define a structure to 
        group together related variables of different types in an efficient 
        manner, for example databases and records. 
        Use the VAR(name,0,structName); command to create one, or 
        VAR(name,0,structName,n) to create multiple instances, of the structure. | 
       
    
    | 
    
      | 
    
  | 
   
  
    | 
    
    Syntax/Parameters | 
    
    STRUCT( strName ) 
{ 
var1, type1; 
var2, type2; 
.... 
} | 
   
  
    | 
    
      | 
    
  | 
   
  
    | 
    Options | 
    
        
Structures - STRUCT(){} - v49.42 
* Structures are now supported in the firmware. 
* To define a structure type (does not create actual structure at this point in 
        code): 
 
STRUCT( strName ) 
{ 
var1, type1; 
var2, type2; 
.... 
} 
 
where 
strName is the name for the structure 
var1, var2 ... are the names for the variables in the structure 
type1, type2 ... are the data types for the variables in the structure 
 
* Limitations: 
The concatenation of structure var name with underscores and indices must fit 
within an entity name length. Therefore structure var  
names should be kept short. 
The user must be careful not to create entities with the same name as the vars 
in the STRUCT - an error message will occur. 
         
        Structure support in FILE() and 
        TEXT() commands - v49.44 
        * Structure variables can now be 
        used in all the parameters in the FILE() commands. 
        * Structure variables can now be used for the source in the TEXT() 
        command. 
         
         
STRUCT(){} parameters now use '=' separator - v49.47 
For consistency with STYLE() and SETUP(), the STRUCT() parameters now support 
'=' between the parameter name and parameter  
type. 
STRUCT(name) 
{ 
name=type; 
name,type; 
} 
         
        DRAW() with Structures - v49.48 
        * DRAW() command now accepts structure parameters for 
        width/height/angles/offset. | 
   
  
    | 
    
      | 
    
  | 
   
  
    | 
    Example | 
    
        STRUCT( strPerson ) 
{ 
name, TXT; 
age, U8; 
height, U16; 
weight, FLT4; 
} 
 
* To create a structure variable 
 
VAR( name, 0, strName ); 
 
where 
name is the name for your structure variable 
0 is the intial value (not used) 
strName is the name of the structure definition 
 
Example: 
VAR( Per, 0, strPerson ); // Create a structure for one person 
LOAD( Per.name, "Itron" ); 
LOAD( Per.age, 100 ); 
LOAD( RS2, Per.name ); // will output "Itron" 
 
* To create an array of structures 
 
VAR( name, 0, strName, n, n, n ); 
 
where n is the number of subscripts 
 
Example: 
VAR( Co, 0, strPerson, 2, 5 ); // Create a structure for a company 
LOAD( Co.0.0.name, "Mike" ); // First index used for department 
LOAD( Co.0.0.age, 102 ); 
LOAD( Co.0.0.height, 100 ); 
LOAD( Co.0.0.weight, 8.4 ); 
LOAD( Co.0.1.name, "Andy" ); 
... 
LOAD( Co.0.2.name, "Dave" ); 
... 
LOAD( Co.1.0.name, "Bob" ); // Next department 
LOAD( Co.1.0.age, 23 ); 
LOAD( Co.1.0.height, 180 ); 
LOAD( Co.1.0.weight, 12.4 ); 
LOAD( Co.1.1.name, "Mark" ); 
... 
 
LOAD( RS2, Co.1.0.name, " aged ", Co.1.0.age, " is ", Co.1.0.height, "cm tall" 
); // will output "Bob aged 23 is 180cm tall" 
CALC( Co.0.2.age, Co.1.0.age, Co.0.0.age, "+" ); // will give Dave an age of 125 
 
* How it works - multiple entities are created. 
 
STRUCT( myStruc ) 
{ 
aa,U8; 
bb,U16; 
cc,TXT; 
} 
 
will effectively create 3 variables when STRUCT is defined: 
VAR( aa, 0, U32C ); 
VAR( bb, 1, U32C ); 
VAR( cc, 2, U32C ); 
 
VAR( xx, 0, myStruc ); 
 
will effectively create (3+1) = 4 variables and set up the pointers: 
VAR( xx > "", PTR, 3 ); 
VAR( xx_aa, 0, U8 ); LOAD( xx.0 > "xx_aa" ); 
VAR( xx_bb, 0, U16 ); LOAD( xx.1 > "xx_bb" ); 
VAR( xx_cc, "", TXT ); LOAD( xx.2 > "xx_cc" ); 
 
VAR( st, 0, myStruc, 3, 2 ); 
 
will effectively create (3*2*3+1) = 19 variables and set up the pointers: 
VAR( st > "", PTR, 3, 2, 3 ); 
VAR( st_0_0_aa, 0, U8 );   LOAD( st.0.0.0 > "st_0_0_aa" ); 
VAR( st_0_0_bb, 0, U16 ); LOAD( st.0.0.1 > "st_0_0_bb" ); 
VAR( st_0_0_cc, "", TXT ); LOAD( st.0.0.2 > "st_0_0_cc" ); 
VAR( st_0_1_aa, 0, U8 );   LOAD( st.0.1.0 > "st_0_1_aa" ); 
VAR( st_0_1_bb, 0, U16 ); LOAD( st.0.1.1 > "st_0_1_bb" ); 
VAR( st_0_1_cc, "", TXT ); LOAD( st.0.1.2 > "st_0_1_cc" ); 
VAR( st_1_0_aa, 0, U8 );   LOAD( st.1.0.0 > "st_1_0_aa" ); 
VAR( st_1_0_bb, 0, U16 ); LOAD( st.1.0.1 > "st_1_0_bb" ); 
VAR( st_1_0_cc, "", TXT ); LOAD( st.1.0.2 > "st_1_0_cc" ); 
VAR( st_1_1_aa, 0, U8 );   LOAD( st.1.1.0 > "st_1_1_aa" ); 
VAR( st_1_1_bb, 0, U16 ); LOAD( st.1.1.1 > "st_1_1_bb" ); 
VAR( st_1_1_cc, "", TXT ); LOAD( st.1.1.2 > "st_1_1_cc" ); 
VAR( st_2_0_aa, 0, U8 );   LOAD( st.2.0.0 > "st_2_0_aa" ); 
VAR( st_2_0_bb, 0, U16 ); LOAD( st.2.0.1 > "st_2_0_bb" ); 
VAR( st_2_0_cc, "", TXT ); LOAD( st.2.0.2 > "st_2_0_cc" ); 
VAR( st_2_1_aa, 0, U8 );   LOAD( st.2.1.0 > "st_2_1_aa" ); 
VAR( st_2_1_bb, 0, U16 ); LOAD( st.2.1.1 > "st_2_1_bb" ); 
VAR( st_2_1_cc, "", TXT ); LOAD( st.2.1.2 > "st_2_1_cc" ); | 
   
  
    | 
    
      | 
    
  | 
   
   
 |