Data Types

From SysCAD Documentation
Jump to navigation Jump to search

Navigation: PGMs ➔ PGM Programming and Conventions ➔ Data Types

PGM Syntax Data Types Declaring Variables Predefined Variables Labels

Summary Table of Data Types

The variable types supported by the PGM are shown below. See also Variable declaration.

Type Name Value Type Range of Values Displayed As Notes
Real Numbers
REAL Real -1.0 E308 to 1.0 E308 Value with decimal points, or * if NAN Use IsNAN function to test for NAN
DOUBLE Real -1.0 E308 to 1.0 E308 Value with decimal points, or * if NAN Use IsNAN function to test for NAN
Integers
INTEGER Integer -2147483648 to 2147483647 Integer
LONG Integer -2147483648 to 2147483647 Integer
BYTE Integer 0 to 255 Integer
Enum Integer Usually starts at 0 Creates a list of integer constants.
DropList Integer Usually starts at 0 A drop down list, each with an associated integer value
EnumDropList Integer Usually starts at 0 A drop down list of integer constants.
Boolean Numbers
BIT Boolean FALSE = 0; TRUE <> 0 0 (False); 1 (True)
CheckBox Boolean FALSE = 0; TRUE <> 0 Tickbox
Alphanumeric Values, or Strings
STRING String ASCII Character Set; Words (unlimited length)
STR String ASCII Character Set; Words (unlimited length)
MEMO String ASCII Character Set; Words (unlimited length) Scrolls onto multiple lines as required


Notes:

  1. Variable names must be alphanumeric and uniquely declared within their current scope.
  2. A variable name can not include a '.' (dot) as part of the name.
  3. The PGM language, including variable naming, is NOT case sensitive.
  4. Only variables of type Double or Real can have a value of NAN (Not a Number) shown as a '*' on the Access window. Use IsNAN function to test for NAN.
  5. When a value or variable is assigned to another variable, it is ranged within the new variable type's range, as illustrated in the examples below.

Examples (showing ranging based on Data Type)

INTEGER  w
BIT      i
BYTE     z

z = 1035    ;z = 255         maximum value of Byte type is 255.
z = -2.3    ;z = 0           minimum value of Byte type is 0.
z = 5.6     ;z = 5           byte can only be integer, it takes the first digit
w = 1.3e12  ;w = 2147483647  maximum value of Long type
w = NAN     ;w = -2147483648 not a number, assigned with the minimum value of type
w = 335.4   ;w = 335         INTEGER type are integers only.
z = w       ;z = 255         limited by the maximum value of byte type.
i = 0.1     ;i = 1 (true)    Bit is true if i ≠ 0
i = 12      ;i = 1 (true)    Bit is true if i ≠ 0
i = -3      ;i = 1 (true)    Bit is true if i ≠ 0
i = 0.0     ;i = 0 (false)   Bit is false if i = 0

User Defined Constants using the Const Keyword

Syntax:

Const TYPE variable = value OR
Const TYPE variable = Predefined Molecular Weight Function

The Const keyword ensures that the value assigned to the variable will remain unchanged (i.e. it becomes a read only variable). See also Predefined Constants and Variables.

Examples

Const real OreDensity = 5000
Const real LiquidHTC  = 1.5    ;Numbers cannot be written as a fraction.

Const real MW_NaCl    = MW("NaCl") 
Const real MW_H2SO4   = MW("H2SO4") 

Const integer Auto    = 1
Const long    Manual  = 2

Const bit Running     = 1
Const bit Stopped     = 0

Const String Condition1 = "Mass balanced"
Const String Condition2 = "Mass NOT balanced"

NOTES:

  1. A Constant variable cannot be declared in a Class.
  2. A Constant variable cannot be displayed in the Access window.
  3. A Constant variable cannot be a calculation, this includes using numbers in fractions. So while const Real LiquidHTC = 1.5 will work, LiquidHTC = 3/2 will report an error.

Check Box

The user can add a check box to the access window by declaring the variable as type Checkbox. The check box is a toggle between true(1) and false(0).

See Declaring Variables.

Integer variables as Enum

The user may declare a number of integer constants using the Enum command. (Enum is derived from Enumerate) This gives the user a convenient method of declaring a group of integer constants.

Note:

  1. The user cannot display the Enum constants in the Access window.
  2. The declaration cannot occur within a class, but the constants can be used within a class.

Example 1:

Enum Colours{Red, Green, Blue}
Integer Colour_Choice
Colour_Choice = Green

Enum Eg1.png

This is equivalent to (using old functionality):

const  integer Red  = 0
const  integer Green = 1
const  integer Blue  = 2
Integer Colour_Choice
Colour_Choice = Green

Counting is automatic, starting at 0 and incrementing by 1. However, the user may override the automatic values and assign their own values to the variables.

Example 2:

Enum Shapes{Square = 2, Circle = 4, Oval, Triangle = 9}
Integer Shape_Choice
Shape_Choice = Circle

Enum Eg2.png

This is equivalent to (using old functionality):

const  integer Square   = 2
const  integer Circle   = 4
const  integer Oval     = 5
const  integer Triangle = 9
Integer Shape_Choice
Shape_Choice = Circle

The user may also declare a single variable of type Enum. This is equivalent to declaring the variable as type long or integer.

Example 3:

Enum Sound

This is equivalent to (using old functionality):

Integer Sound

Enum Drop Down List

This is similar to the straight DropList declaration, in that it creates a drop down list in the access window, but the variables are also constant integers. This is best shown in an example:

Example

EnumDropList Options{Acid=2, Basic=4, Neutral}
Options [email protected],Req_Mode*
Act_Mode = Basic

This will be displayed in the Access window as follows:

EnumDropList Eg1.png

Notes:

  1. The initial (default) value of the variable is the first item in the list. In the above example Req_Mode will initially be 2 (Acid).
  2. If the variable is set to a value which doesn't match one of the defined options, SysCAD will choose the option which is numerically the closest. In the above example, if Act_Mode is set to 3, SysCAD will reset its value to 2 (Acid).
  3. Each item in the EnumDropList has an integer value.
    • If the user does not set a value, then counting is automatic, starting at 0 and incrementing by 1.
    • However, the user may override the automatic values and assign their own values to the variables, as shown in the above example. In this case, if a variable is NOT assigned a value, then it's value is incremented by 1 from the previous variable.
  4. The definition of the drop list (using EnumDropList) cannot occur within a class, but once defined, it can be used for variables declared within a class.

Drop Down List

The user can add a Drop Down List to the access window by declaring a variable of type DropList. The variable will be of type Integer. This is best shown in an example:

DropList Options{"Acid", "Basic", "Neutral"}
Options [email protected],Req_Mode*
Act_Mode = 1

This will be displayed in the Access window as follows:

DropDownList Eg1.png

Notes:

  1. Each item shown in the Drop Down List has an integer value starting at 0 and incrementing. In the image above, if the user selects 'Acid', then Req_Mode = 0, if 'Basic' is selected, then Req_Mode = 1 and similarly if 'Neutral' is selected, then Req_Mode = 2.
  2. The initial (default) value of the variable is 0, corresponding to Acid, the first item in the list.
  3. If the variable is set to a value which doesn't match one of the defined options, SysCAD will choose the option which is numerically the closest. In the above example, if Req_Mode is set to 4, SysCAD will reset its value to 2 (Neutral).
  4. Please note that 'Acid' is NOT = 0. If the user requires the variables to have a constant integer value, then they must use the declaration 'EnumDropList' shown above.
  5. The definition of the drop list (using DropList) cannot occur within a class, but once defined, it can be used for variables declared within a class.