When calling a method, the compiler checks that the data types of passed parameters are consistent with the method definition. The data type passed by the caller must either exactly match the data type of the parameter definition in the called method, or it must have an appropriate widening relationship with data type of the parameter definition. This strong data type matching is exactly the same as when you invoke a user-defined function. The compiler does not employ the flexible conversion rules used by the RUN statement to call procedures, which attempt to convert an argument of almost any data type that is passed to a parameter defined as any other. For more information, see the Parameter passing syntax reference entry in OpenEdge Development: ABL Reference.