EVALUATE 문 또한 데이터베이스에 정의된 메소드를 호출하는데 사용된다.
EVALUATE 문에서 메소드 호출은 표현식의 용어(term)로 주어진다. 메소드의 결과가 상수 값이면, 다른 상수(또는 상수를 반환하는 메소드) 또한 표현식의 용어로 주어질 수 있다. 클래스 메소드와 인스턴스 메소드 모두 EVALUATE 문으로 호출할 수 있다.
EVALUATE expression [ ; ]
expression:
• [ + | - ] term [ { + | - | * | / } term ]
term:
• method_call
method_call :
• method_name ( call_target [, arg_value [ {, arg_value }_ ] ] ) [ to_variable ]
method_name ( [ arg_value [ {, arg_value }_ ] ] )
ON call_target [ to_variable ]
arg_value :
• literal
• variable
• expression
call_target :
• CLASS class_name
• variable
• expression
• method_call
to_variable :
• INTO variable
• TO variable
EVALUATE 문에서 지명된 메소드를 위한 대상 인수는 method_name 뒤에 괄호 안에 기술된다. 대상은 리스트에서 첫 번째로 주어질 수 있으며, 메소드 인수들이 뒤따른다. 수행된 메소드가 클래스 메소드이면, CLASS 키워드가 반드시 리스트의 첫 항목으로써 목표 클래스 앞에 놓여야 한다. 괄호가 메소드 인수만 포함하고 있을 때 call_target은 반드시 ON 절에 주어진다.
EVALUATE 문 또한 한 메소드 호출이 또 다른 메소드의 대상이나 인수로 기술함으로써 중첩된 메소드 호출을 허용한다. 이러한 유형의 기술은 외부(outer) 메소드의 결과를 결정하기 위하여 내부(inner) 메소드의 결과를 사용한다.