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.