VCL is a statically typed language.

Some familiar primitive types like FLOAT, BOOL, INTEGER and STRING are provided for scalar values, and may be assigned values from literals.

Other types represent scalar values but in a more complex format or are expressed with a unit, like TIME and RTIME.

These types all have implicit conversions to strings, such that their values may be used in contexts where a STRING value is necessary.

In addition to scalar types, VCL supports a number of types with special semantics that are particular to built in data structures, like IP, and ACL.

Available types

Not set

STRING and IP types may be not set (as opposed to being set to the empty string), in which case the variable is considered to have no value. Various functions and operators treat not set differently; some render them as the empty string, and some as "(null)". This handling is a property of the function (or operator), rather than a property of the type.