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;
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.
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.
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.
Keywords, type, array, record, set, Subrange Types, Pointer, protected.