+ ResultSetPtr rset = sets_it->second;
+ std::list<RecordListPtr>::const_iterator it = rset->record_lists.begin();
+ for (; it != rset->record_lists.end(); it++)
+ if ((*it)->cmp(req->preferredRecordSyntax))
+ {
+ if (*req->resultSetStartPoint - 1 + *req->numberOfRecordsRequested
+ <= (*it)->size())
+ {
+ int i;
+ Z_APDU *p_apdu = zget_APDU(odr, Z_APDU_presentResponse);
+ Z_PresentResponse *p_res = p_apdu->u.presentResponse;
+
+ *p_res->nextResultSetPosition = *req->resultSetStartPoint +
+ *req->numberOfRecordsRequested;
+ *p_res->numberOfRecordsReturned =
+ *req->numberOfRecordsRequested;
+ p_res->records = (Z_Records *)
+ odr_malloc(odr, sizeof(*p_res->records));
+ p_res->records->which = Z_Records_DBOSD;
+ Z_NamePlusRecordList *nprl = (Z_NamePlusRecordList *)
+ odr_malloc(odr, sizeof(*nprl));
+ p_res->records->u.databaseOrSurDiagnostics = nprl;
+ nprl->num_records = *req->numberOfRecordsRequested;
+ nprl->records = (Z_NamePlusRecord **)
+ odr_malloc(odr, nprl->num_records * sizeof(*nprl->records));
+ for (i = 0; i < nprl->num_records; i++)
+ {
+ int pos = i + *req->resultSetStartPoint - 1;
+ nprl->records[i] = (*it)->get(pos, m_p->m_ascending);
+ }
+ package.response() = p_apdu;
+ return;
+ }
+ break;
+ }