docs: public Object doSetHandle(Object bookmark, int iOpenMode, String strFields, int iHandleType) throws DBException, RemoteException
      {
          int iOldOpenMode = this.getMainRecord().getOpenMode();
          try   {
              Utility.getLogger().info("EJB doSetHandle, key= " + bookmark);
              Record record = this.getMainRecord();
  
      // SELECT (fields to select)
              synchronized (this.getTask())
              {
                  Record recordBase = this.getMainRecord().getTable().getCurrentTable().getRecord();
                  this.getMainRecord().setOpenMode(iOpenMode);
                  int iFieldTypes = this.getFieldTypes(recordBase);
                  if (strFields != null)
                      this.getMainRecord().setSelected(strFields);    // Select these fields
                  else
                  {
                      if (iFieldTypes == BaseBuffer.PHYSICAL_FIELDS)
                          this.getMainRecord().setSelected(true);   // Select these fields (otherwise leave the selection alone)
                  }
                  iFieldTypes = this.getFieldTypes(recordBase);
  
                  // pend(don) Make sure the table does not serve up the current record (temporary fix until messaging is okay).
                  record.setEditMode(Constants.EDIT_NONE);
                  // Obviously, the previous code needs to be in a record messageListener method.
  
                  record = record.setHandle(bookmark, iHandleType);
                  if (record != null)
                  {
                      recordBase = this.getMainRecord().getTable().getCurrentTable().getRecord();
                      BaseBuffer buffer = new VectorBuffer(null, iFieldTypes);
                      buffer.fieldsToBuffer(recordBase, iFieldTypes);
                      return buffer.getPhysicalData();
                  }
                  else
                      return new Boolean(false);
              }
          } catch (DBException ex)    {
              throw ex;
          } catch (Exception ex)  {
              ex.printStackTrace();
              throw new DBException(ex.getMessage());
          } finally {
              this.getMainRecord().setOpenMode((iOldOpenMode & ~DBConstants.LOCK_TYPE_MASK) | (iOpenMode & DBConstants.LOCK_TYPE_MASK));    // Keep the client lock settings
          }
      }