yaz_scan

Prepares for a scan

&reftitle.description; `void` `yaz_scan` `resource` `id` `string` `type` `string` `startterm` `array` `flags`

This function prepares for a Z39.50 Scan Request on the specified connection.

To actually transfer the Scan Request to the server and receive the Scan Response, `yaz_wait` must be called. Upon completion of `yaz_wait` call `yaz_error` and `yaz_scan_result` to handle the response.

&reftitle.parameters;

`id`

- The connection resource returned by `yaz_connect`.

`type`

- Currently only type `rpn` is supported.

`startterm`

- Starting term point for the scan.

  The form in which the starting term is specified is given by parameter `type`.

  The syntax this parameter is similar to the RPN query as described in `yaz_search`. It consists of zero or more `@attr`-operator specifications, then followed by exactly one token.

`flags`

- This optional parameter specifies additional information to control the behaviour of the scan request. Three indexes are currently read from the flags array: `number` (number of terms requested), `position` (preferred position of term) and `stepSize` (preferred step size).

&reftitle.returnvalues;

&return.void;

&reftitle.examples;

### PHP function that scans titles

    <?php
    function scan_titles($id, $startterm)
    {
      yaz_scan($id, "rpn", "@attr 1=4 " . $startterm);
      yaz_wait();
      $errno = yaz_errno($id);
      if ($errno == 0) {
        $ar = yaz_scan_result($id, $options);
        echo 'Scan ok; ';
        foreach ($options as $key => $val) {
          echo "$key = $val &nbsp;";
        }
        echo '<br /><table>';
        while (list($key, list($k, $term, $tcount)) = each($ar)) {
          if (empty($k)) continue;
          echo "<tr><td>$term</td><td>$tcount</td></tr>";
        }
        echo '</table>';
      } else {
        echo "Scan failed. Error: " . yaz_error($id) . "<br />";
      }
    }
    ?>