For example, 'name' in the example is a String because it refers to the string returned from 'system input'. If 'name' later refers to another object, that object must be a String as well. One ramification of implicit declarations is that a local variable may not be used in a method until it refers to an object. Thus far you have seen examples using the global variable 'system' which is of type Opsystem. Each type defines the valid methods for objects which have that type.
Every statement returns an object which can be used in subsequent computations.
In the example below, 'system input' returns the entered string which then becomes the receiver of the capitalize method. The Integer and Real types define the familiar numeric operations like addition, subtraction, multiplication and type conversion. The methods defined by a type are like the procedures and structures defined in a subroutine library. Integer constants in ABC consist of an optional sign followed by a sequence of digits. Reals consist of an optional sign, zero or more digits and a decimal point followed by one or more digits.