Node:var, Next:view, Previous:value, Up:Reference

### var

#### Synopsis

As part of a variable declaration part or in a statement block:

    var variable_identifier: type_identifier;

or

    var variable_identifier: type_definition;

and with initializing value:

    var variable_identifier: type_identifier value constant_expression;

or

    var variable_identifier: type_definition value constant_expression;

As part of a parameter list (passing by reference):

    var var_parameter: type_identifier;

or without type declaration

    var var_parameter;

or protected (i.e., the called routine can't modify the parameter):

    protected var var_parameter: type_identifier;

or without type declaration

    protected var var_parameter;

#### Description

In a declaration part: The reserved word `var` declares a variable_identifier whose type is of type_identifier or which is defined by type_definition. For further description see Variable Declaration, Type Declaration, Type Definition, Data Types.

In a parameter list: see Subroutine Parameter List Declaration.

#### Conforming to

`var` is defined in ISO 7185 Pascal and supported by all known Pascal variants. Untyped `var` parameters in parameter lists are a UCSD Pascal extension. The ability to do `var` declarations in a statement block is a GNU Pascal extension.

#### Example

    program VarDemo;

    type
      FooType = Integer;

    var
      Bar: FooType;
      ArrayFoo: array [0 .. 9] of Integer;   { array var definition }
      FecordFoo: record                      { record var definition }
                   Bar: Integer
                 end;
      CharsetFoo: set of Char;               { set var }
      SubrangeFoo: -123 .. 456;              { subrange var }
      EnumeratedFoo: (Mon, Tue, Wed, Thu, Fri, Sat, Sun);  {enumerated var }
      PointerBar: ^FooType;                  { pointer var }

    procedure ReadFoo (var Foo: FooType);
    begin
      ReadLn (Foo)
    end;

    begin
      var Bar: Integer;  { GNU Pascal extension }
      Bar := 42
    end.

#### See also

Keywords, type, array, record, set, Subrange Types, Pointer, protected.