TO2_atCursor: Return the element pointed to by the cursor
This function returns the element currently pointed to by the cursor. If the cursor is pointing one position beyond the last element of the collection, a TO2_ERROR_EODAD error code will be returned.
Note: For array and binary large object (BLOB) collections, the
cursor can move more than one position past the last element. Because the
cursor position for these two collections would still be valid, the TO2_atCursor
function returns a TO2_ERROR_EODAD error code.
Format
#include <tpf/c_to2.h>
TO2_BUF_PTR TO2_atCursor (const TO2_PID_PTR cursorPidPtr,
TO2_ENV_PTR env_ptr);
- cursorPidPtr
- The pointer to the cursor persistent identifier (PID) created by one of the z/TPF collection support (z/TPFCS) create cursor application programming interfaces (APIs).
- env_ptr
- The pointer to the environment as returned by the TO2_createEnv function.
Normal return
The normal return is a pointer (TO2_BUF_PTR) to a structure (buffer) of type TO2_BUF_HDR (see Type definitions).
Error return
An error return is indicated by NULL. When NULL is returned, use the TO2_getErrorCode function to determine the specific error code. For more information, see Error handling.
The following error codes are common for this function:
- TO2_ERROR_CURSOR
- TO2_ERROR_EMPTY
- TO2_ERROR_ENV
- TO2_ERROR_EODAD
- TO2_ERROR_METHOD
- TO2_ERROR_PID
- TO2_ERROR_ZERO_PID
Programming considerations
- The caller must free the returned buffer once the caller has stopped using the buffer. Enter a free function to free the buffer.
- The cursor remains positioned at the retrieved element.
- This function does not use z/TPF transaction services on behalf of the caller.
Examples
The following example reads the item that the cursor is
currently pointing to.
#include <tpf/c_to2.h> /* Needed for TO2 API Functions */
#include <stdio.h> /* APIs for standard I/O functions */
struct person_record
{
char name[20];
char address[60];
};
typedef struct person_record PERSON_RECORD;
TO2_PID cursor; /* PID of the cursor */
TO2_ENV_PTR env_ptr; /* Pointer to TO2 environment */
TO2_BUF_PTR buffer_ptr; /* Pointer to element buffer */
PERSON_RECORD *person_ptr; /* Pointer to element data */
TO2_ERR_CODE err_code; /* TO2 error code value */
⋮
/**********************************************************************/
/* Read the item that the cursor is currently pointing to. */
/**********************************************************************/
if ((buffer_ptr = TO2_atCursor(&cursor,
env_ptr)) == NULL)
{
err_code = TO2_getErrorCode(env_ptr);
if (err_code != TO2_ERROR_EODAD)
{
printf("TO2_atCursor failed!\n");
process_error(env_ptr);
}
else
{
printf("Cursor is at the end of the collection!\n");
return(0);
}
}
else
{
person_ptr = (PERSON_RECORD *) buffer_ptr->data;
printf("TO2_atCursor successful!\n");
}
⋮
free(buffer_ptr);
Related information
- TO2_atCursorPut: Store element where cursor points
- TO2_atCursorWithBuffer: Return the element pointed to by the cursor
- TO2_next: Increment and return the next element.
See z/TPF collection support: cursors overview for more information about this function and z/TPF C/C++ language support.