Difference between revisions of "MC-Basic Structures"
m (→Definition of Structure Types) |
m (Miborich moved page Axystems:MC-Basic Structures to MC-Basic Structures: Global renaming of Axystems: namespace into (Main):) |
||
(12 intermediate revisions by one other user not shown) | |||
Line 1: | Line 1: | ||
= Introduction = | = Introduction = | ||
− | A structure is a data type used for storing a list of variables of different types | + | A structure is a data type used for storing a list of variables of different types within one variable. |
= Definition of Structure Types = | = Definition of Structure Types = | ||
− | A structure is not a predefined system data type. | + | A structure is not a predefined system data type. It must therefore be defined by the user before any declaration of structure variables. |
The structure data type can be defined in the declarations section of the configuration file (before the PROGRAM block) and library files (before the first function block), using the following syntax: | The structure data type can be defined in the declarations section of the configuration file (before the PROGRAM block) and library files (before the first function block), using the following syntax: | ||
Line 18: | Line 18: | ||
* Array elements are multidimensional, and can have up to 10 dimensions. | * Array elements are multidimensional, and can have up to 10 dimensions. | ||
− | Example | + | '''Example''' |
− | In config file | + | In config file: |
<pre>Type X | <pre>Type X | ||
Line 38: | Line 38: | ||
Arrays of structures can have up to ten dimensions. | Arrays of structures can have up to ten dimensions. | ||
− | Declaration | + | Declaration syntax: |
<pre>(COMMON SHARED|DIM {SHARED}) <variable_name> AS < structure_type_name> | <pre>(COMMON SHARED|DIM {SHARED}) <variable_name> AS < structure_type_name> | ||
(COMMON SHARED|DIM {SHARED}) <variable_name>[<index>] AS <structure_type_name> | (COMMON SHARED|DIM {SHARED}) <variable_name>[<index>] AS <structure_type_name> | ||
Line 68: | Line 68: | ||
== Query of a whole structure == | == Query of a whole structure == | ||
Query of a whole structure is forbidden, and will result in a translation error. | Query of a whole structure is forbidden, and will result in a translation error. | ||
− | ?<structure_variable_name> | + | '''?<structure_variable_name>''' will give a translation error |
− | Example | + | '''Example''' |
<pre>Common shared S1as X declaration of an X-type structure variable | <pre>Common shared S1as X declaration of an X-type structure variable | ||
S1→Length = 2 | S1→Length = 2 | ||
Line 83: | Line 83: | ||
A structure can be passed by value and by reference like any other data type. | A structure can be passed by value and by reference like any other data type. | ||
− | + | '''Example''' - passing by reference | |
<pre>Program | <pre>Program | ||
Dim S1 as X | Dim S1 as X | ||
Line 106: | Line 106: | ||
A function can return a structure variable like any other data type. | A function can return a structure variable like any other data type. | ||
− | Example | + | '''Example''' |
<pre>Dim Shared X1 as X | <pre>Dim Shared X1 as X | ||
Program | Program |
Latest revision as of 08:56, 22 May 2014
Contents
Introduction
A structure is a data type used for storing a list of variables of different types within one variable.
Definition of Structure Types
A structure is not a predefined system data type. It must therefore be defined by the user before any declaration of structure variables.
The structure data type can be defined in the declarations section of the configuration file (before the PROGRAM block) and library files (before the first function block), using the following syntax:
TYPE <structure_type_name> <variable_name>{[<index>]…} as <data-type> {<of> <robot_type>} … END TYPE
- This block defines names, types and array sizes of structure elements.
- The following data types are supported for the structure: long, double, string, joint and location, generic axis, generic group, semaphore, generic compensation table, user error and user note.
- User error and note structure elements are generic. They should be assigned to acquire an error number and a message.
- Nesting of structures is not allowed.
- Array elements are multidimensional, and can have up to 10 dimensions.
Example
In config file:
Type X Name as String Length as Long End Type In application file → Dim shared s1 as X Program ?s1→Name End program
Declaration of Structure Variables
Structure variables can be declared in all declaration scopes.
Arrays of structures can have up to ten dimensions.
Declaration syntax:
(COMMON SHARED|DIM {SHARED}) <variable_name> AS < structure_type_name> (COMMON SHARED|DIM {SHARED}) <variable_name>[<index>] AS <structure_type_name>
Assignment
Assignment of a single element of a structure
Syntax for assignment of a single element of a structure:
<structure_variable_name>→<structure_scalar_ element> = <expression> <structure_variable_name>→<structure_array_element>[index] = <expression>
Assignment of a whole structure
The entire structure can be assigned through a single assignment command. However, both assignor and assignee must have the same structure type.
Syntax for assignment of a structure:
<structure_variable_name1> = <structure_variable_name2> <structure_array_name>[<index>] = <structure_variable_name>
Query
Query of a single element of a structure
Syntax for querying a single element of a structure:
?<structure_variable_name>→<structure_scalar_element> PRINTU “##.##” ; <structure_array_name>[<index>]→<structure_scalar_element> <variable> = <structure_variable_name>→<structure_array_element>[<index>]
Query of a whole structure
Query of a whole structure is forbidden, and will result in a translation error. ?<structure_variable_name> will give a translation error
Example
Common shared S1as X declaration of an X-type structure variable S1→Length = 2 ? S1 Translation Error ? S1→ Length 2
Operators
Operator cannot be used with whole structures. Operaters can be used with single elements of the structure, as long as they are not system elements (e.g., user errors and notes, semaphores).
Passing by Value and by Reference
A structure can be passed by value and by reference like any other data type.
Example - passing by reference
Program Dim S1 as X Call Sub1(S1) ?S1→Length 0 End program Sub Sub1(ByVal X1 as X) X1→Length = 1 End Sub An example for passing by value: Program Dim s1 as X Call Sub1(S1) ?S1→Length 1 End program Sub Sub1(X as X1) X →Length = 1 End Sub
Returning Structure from Function
A function can return a structure variable like any other data type.
Example
Dim Shared X1 as X Program Dim S1 as X S1 = MyFunc(1) End Program Function MyFunc(i1 as long) as X MyFunc→Type = 1 End Function