Using JSDOs to create mobile and web clients : Accessing standard CRUD and Submit operations : Read operation example : An OpenEdge ABL implementation for Read
  
An OpenEdge ABL implementation for Read
For an OpenEdge Data Object resource, the ABL routine that implements a Read operation must have the following signature:
*An INPUT parameter of type CHARACTER, named filter. This parameter is optional for the fill( ) call that initiates the Read operation; if specified, it defines the criteria for a filtered subset of records to be returned. The format and content of the filter string depend on the application, including the requirements of the OpenEdge Business Entity that implements the resource. However, if the Business Entity implements a Data Object resource for access by the Telerik Platform or as a Rollbase external object, this filter string always follows the format of the Progress-defined JSON Filter Pattern. For more information, see the sections on updating Business Entities for access by Telerik DataSources and Rollbase external objects in OpenEdge Development: Web Services.
*An OUTPUT parameter for either a DATASET, DATASET-HANDLE, TABLE or TABLE-HANDLE. If the resource supports before-image data, the parameter can only be for a DATASET or DATASET-HANDLE.
The following example shows a ReaddsCustomer( ) method that might implement the Data Object Read operation for the ProDataSet resource, dsCustomer:
METHOD PUBLIC VOID ReaddsCustomer(INPUT filter AS CHARACTER, OUTPUT DATASET dsCustomer):

SUPER:ReadData(filter).

END METHOD.
This implementation simply calls an overload of the ReadData( ) method defined in the OpenEdge.BusinessLogic.BusinessEntity super class, which OpenEdge provides as an aid for implementing Data Object resources that support before-imaging. The invoked ReadData( ) method provides a default implementation for using the filter parameter to identify the data from the server database that fills the specified ProDataSet.