This is the ABL procedure prototype for the sample external procedure, FindCustomerByNum.p:

ABL procedure prototype

/* FindCustomerByNum.p */

DEFINE INPUT PARAMETER CustomerNumber AS INTEGER. 
DEFINE OUTPUT PARAMETER CustomerName AS CHARACTER. 

FIND FIRST Customer WHERE Customer.CustNum = CustomerNumber NO-ERROR.
IF AVAILABLE Customer THEN
    CustomerName = Customer.NAME.
ELSE
    CustomerName = ?.

ProxyGen can extract some of the needed information from this prototype to map it to a corresponding Web service operation definition, including the procedure name (filename for an external procedure) and the parameter mode (input or output), names, and data types of any parameters. However, you must specify some of the needed information directly in ProxyGen, such as whether the ABL RETURN-VALUE is used and (for external procedures) the Open Client object to which the operation belongs.

For an example of how WSDL represents a procedure call, see WSDL Details.