+ if (!(oent = oid_getentbyoid(q->attributeSetId)) ||
+ oent->class != CLASS_ATTSET ||
+ oent->value != VAL_BIB1)
+ resp.records = diagrec(assoc->proto, 121, 0);
+ }
+ if (!resp.records)
+ {
+ int toget;
+ Z_ElementSetNames *setnames;
+ int presst = 0;
+
+ bsrq.setname = req->resultSetName;
+ bsrq.replace_set = *req->replaceIndicator;
+ bsrq.num_bases = req->num_databaseNames;
+ bsrq.basenames = req->databaseNames;
+ bsrq.query = req->query;
+
+ if (!(bsrt = bend_search(&bsrq)))
+ return -1;
+ else if (bsrt->errcode)
+ resp.records = diagrec(assoc->proto, bsrt->errcode,
+ bsrt->errstring);
+ else
+ resp.records = 0;
+
+ resp.resultCount = &bsrt->hits;
+
+ /* how many records does the user agent want, then? */
+ if (bsrt->hits <= *req->smallSetUpperBound)
+ {
+ toget = bsrt->hits;
+ setnames = req->smallSetElementSetNames;
+ }
+ else if (bsrt->hits < *req->largeSetLowerBound)
+ {
+ toget = *req->mediumSetPresentNumber;
+ setnames = req->mediumSetElementSetNames;
+ }
+ else
+ toget = 0;
+
+ if (toget)
+ {
+ resp.records = pack_records(assoc, req->resultSetName, 1, &toget,
+ setnames, &next, &presst);
+ if (!resp.records)
+ return -1;
+ resp.numberOfRecordsReturned = &toget;
+ resp.nextResultSetPosition = &next;
+ resp.searchStatus = &sr;
+ resp.resultSetStatus = &sr;
+ resp.presentStatus = &presst;
+ }
+ else
+ {
+ resp.records = 0;
+ resp.numberOfRecordsReturned = &nulint;
+ resp.nextResultSetPosition = &nulint;
+ resp.searchStatus = &sr;
+ resp.resultSetStatus = &sr;
+ resp.presentStatus = 0;
+ }
+ }