Programming Guide


Fetches the last set of rows from the file

int sm_tm_command ("CONTINUE_BOTTOM [ tableViewName [ tableViewScope ] ]");


The name of a table view in the current transaction. This parameter is case sensitive. If tableViewName is specified, the command is applied according to the tableViewScope parameter. Since the entire table view tree might not be included, this is known as a partial command, and sm_tm_command sets TM_FULL to 0.

If tableViewName is not specified, the command is applied for each table/server view, starting with the root table view. This is known as a full command, and sm_tm_command sets TM_FULL to 1.

One of the following parameters, which must be preceded by a table view name.


CONTINUE_BOTTOM (not available in Web applications or three-tier processing) fetches the last set of rows from the file. The availability of this command is de pendent on the setting of the fetch_directions property for the server view or screen. If the fetch_directions property is set to PV_CONT_ALWAYS (Up/ Down-all modes), this command is available in update or view mode. If the fetch_directions property is set to PV_CONT_VIEW_ONLY (Up/Down-view mode), this command is available only in view mode. Otherwise, an error is generated. For more information on setting the Fetch Directions property, refer to "Scrolling Through the Select Set" in Application Development Guide.

If your screen has multiple table views, the transaction manager issues a DBMS CONTINUE_BOTTOM for the specified table view and any table views linked to it via server links. This displays the last set of rows for that server view. Then SELECT or VIEW processing is done for any additional child table views.

The data displayed with this command is from a continuation file; it is not refetched from the database. Therefore, any updates made to the data in this server view are not displayed immediately to other users. In order to display those updates, the data must be refetched from the database with a VIEW or SELECT command.

The advantage of using the continuation file is that it prevents having shared locks on data. However, if the fetch_directions property is set to PV_CONT_ALWAYS (Up/Down-all modes), you are responsible for implementing the necessary locking scheme for concurrent users. For more information on using the Version Column property to implement optimistic locking, refer to "Implementing Optimistic Locking" in Application Development Guide.

If you want to use the database engine's facilities for non-sequential scrolling, you need to add processing for the request events to the engine-specific transaction model.

Push buttons and menu selections for the CONTINUE_BOTTOM command can choose to set the class property to continue_button which activates the option only in view and update modes or to continue_view_button which activates the option only in view mode.


Use CONTINUE_BOTTOM after SELECT or VIEW which generate a database query and display the first set of query results or after any other CONTINUE command.


Table 8-7 Request event for CONTINUE_BOTTOM

Request Traversal Typical Processing


By table views in the specified server view

Can generate slices: TM_CONTINUE_BOTTOM and TM_SEL_CHECK. Refer to Table 7.

Table 8-8 Slice event processing for CONTINUE_BOTTOM

Slices Typical Processing


A select cursor must have been set up for the server view encompassing the current table view or nothing more is done.

Calls sm_tm_continuation_availability to check if the command is available. If not, an error is issued.

On entry, TM_OCC_COUNT specifies the maximum number of occurrences to be fetched. If TM_OCC_COUNT is zero on entry, it means that there is no explicit limit being imposed. The TM_OCC member on entry specifies the first occurrence to be fetched into.

TM_OCC_COUNT is then zeroed. (At the end of this request, TM_SEL_CHECK sets it to contain the number of rows fetched.)

The data is fetched.

TM_SEL_CHECK is pushed onto the event stack to report the number of rows fetched.


If there was an error in earlier processing, give up the select cursor. Otherwise, report the number of rows fetched to TM_OCC_COUNT.

The following requests can be generated by the CONTINUE_BOTTOM command to ascertain if the changes from the previous command have been saved and, if desired, to discard those changes:

The following requests can also be generated for any child table views:

If TM_VIEW or TM_SELECT for a parent table view returns no data, TM_CLEAR requests are generated for all subordinate table views, but not for table views at the same level of the tree. TM_CLEAR requests are described under CLEAR.