TO2_setKeyPath: Set a cursor to use a specific key path
This function allows an application program to specify the key path a cursor will use to access a collection. When a cursor is created, the primary key path of the collection is used by default for searching and accessing data. This function allows an application program to override the default setting or any previous TO2_setKeyPath calls that were issued for this cursor.
Note: This function does not support all
collections. See Table 1 for collections
that are supported for this function.
Last updated
Added for PUT00.
Format
#include <tpf/c_to2.h>
int TO2_setKeyPath (const TO2_PID_PTR cursorPid_ptr,
TO2_ENV_PTR env_ptr,
const char *name); - cursorPid_ptr
- The pointer to the persistent identifier (PID) assigned to the target cursor.
- env_ptr
- The pointer to the environment as returned by the TO2_createEnv function.
- name
- The pointer to a string that is the name of the key path that will be used by the cursor for accessing the collection.
Normal return
The normal return is a positive value.
Error return
An error return is indicated by a zero. When zero 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_ENV
- TO2_ERROR_KEYPATH_BUILD_ACTIVE
- TO2_ERROR_LOCATOR_NOT_FOUND
- TO2_ERROR_METHOD
- TO2_ERROR_NOT_INIT
- TO2_ERROR_PID
- TO2_ERROR_ZERO_PID
Programming considerations
- When a TO2_setKeyPath call is issued to a given cursor, the position of the cursor must be reestablished. If the TO2_setKeyPath request fails, the cursor will use the primary key path by default and the application must reestablish the position of the cursor before it can be used again.
- The application program can issue a TO2_setKeyPath call with the TO2_PRIME_KEYPATH name to reset the cursor to use the primary key path.
- While the key path build process is in progress, the TO2_ERROR_KEYPATH_BUILD_ACTIVE error code is returned. Until the build process ends, the key path is not usable.
- This function does not use z/TPF transaction services on behalf of the caller.
Examples
The following example sets the
cursor to use the specified key path.
#include <tpf/c_to2.h> /* TO2 API function prototypes */
#include <stdio.h> /* APIs for standard I/O functions */
TO2_ENV_PTR env_ptr; /* Pointer to TO2 Environment */
TO2_PID keysetCursor
;char name[] ="fieldA"; /* name of key path to remove */
⋮
if (TO2_setKeyPath(&keysetCursor,
env_ptr,
name) == TO2_ERROR)
{
printf("TO2_setKeyPath failed!\n");
process_error(env_ptr);
}
else
{
printf("TO2_setKeyPath was successful!\n");
}
⋮
***********************************************************************/
/* The application must issue a positioning request such as TO2_first. */
/***********************************************************************/Related information
- TO2_addKeyPath: Add a key path to a collection
- TO2_getCurrentKey: Retrieve the current key
- TO2_removeKeyPath: Remove a key path from a collection.
See z/TPF collection support: cursors overview for more information about this function and z/TPF C/C++ language support.