# 5.2.18 hdfql_cursor_first

Part of: [5 Application Programming Interface](5-application-programming-interface.md) › [5.2 Functions](5-2-functions.md)

### Syntax

int hdfql_cursor_first(HDFQL_CURSOR \*_cursor_)

### Description

Move a cursor named _cursor_ to the first position within the result set. In other words, the cursor will point to the first element of the result set, and its position is set to zero. If the result set is empty, an error is returned, and its position remains unchanged (i.e. remains minus one).

### Parameter(s)

_cursor_ – pointer to a cursor to move to the first position within the result set. If the pointer is NULL (in C), the cursor in use is moved to the first position instead. The equivalent of a NULL pointer in C++, Java, Python, C#, Fortran, R, and MATLAB HDFql wrappers is NULL, null, None, null, NULL(), NULL, and NaN, respectively. While in C _cursor_ is mandatory, in C++, Java, Python, C#, Fortran, R, and MATLAB it is optional (when not specified, the cursor in use is moved to the first position instead).

### Return

int – depending on the success in moving the cursor to the first position within the result set, it can either be [HDFQL_SUCCESS](5-1-constants.md#hdfql_success) or [HDFQL_ERROR_EMPTY](5-1-constants.md#hdfql_error_empty).

### Example(s)

```c
// show (i.e. get) working directory currently in use 
hdfql_execute("SHOW USE DIRECTORY");

// display position of the cursor in use within the result set (should be "Position of cursor is -1")
printf("Position of cursor is %lld\n", hdfql_cursor_get_position(NULL));

// move the cursor in use to the first position within the result set 
hdfql_cursor_first(NULL);

// display (again) position of the cursor in use within the result set (should be "Position of cursor is 0")
printf("Position of cursor is %lld\n", hdfql_cursor_get_position(NULL));
```
