Consultor Eletrônico



Kbase 12548: C-ISAM and Cursor Repositioning
Autor   Progress Software Corporation - Progress
Acesso   Público
Publicação   10/05/1998
C-ISAM and Cursor Repositioning

CISAM and cursor repositioning:


If the following code is run against the demo db and
against a CISAM gateway, the results vary because you
can have more than one cursor open on a table at one time.
For example, this code has two cursors. One on the
cust-num index and one on the name index:

find first customer use-index cust-num. /* cust-num index cursor*/
display customer.
pause.
find first customer use-index name. /* name index cursor */
display customer.
pause.
find next customer use-index cust-num. /* cust-num index cursor*/

PROGRESS "repositions" cursors so that they all point
to the same record. i.e. the cust-num index points to
cust-num 1 after the first FIND. The second FIND positions
the name index at customer 12. Cursor repositioning occurs
to move the cust-num index cursor to customer 12 as well, so
now both cursors point to customer 12. The third FIND advances
the cust-num index cursor and now points to customer 13.
(Presumably the name index cursor will be moved to point to
customer 13 too.)

The CISAM data server does not do cursor repostioning. Therefore,
the cust-num index cursor is not moved to customer 12 when the
name index cursor is positioned there. The cust-num index cursor
is still positioned at customer 1. When the third FIND executes,
it advances the cust-num index from customer 1 to customer 2.

This is expected behavior until cursor repositioning is
designed and implemented for CISAM. That work is currently not
scheduled, so it will likely be quite some time.

Progress Software Technical Support Note # 12548