$ListRep Lstr: Difference between revisions

From m204wiki
Jump to navigation Jump to search
m (1 revision)
mNo edit summary
Line 2: Line 2:
<span class="pageSubtitle"><section begin="desc" />Replace a $list item with a longstring<section end="desc" /></span>
<span class="pageSubtitle"><section begin="desc" />Replace a $list item with a longstring<section end="desc" /></span>


<p class="warning">Most Sirius $functions have been deprecated in favor of Object Oriented methods. The OO equivalent for the $ListRep_Lstr function is [[to be entered]].</p>
<p class="warning">Most Sirius $functions have been deprecated in favor of Object Oriented methods. The OO equivalent for the $ListRep_Lstr function is the [[Replace (Stringlist function)]].</p>


This function replaces an existing $list item with a longstring. Generally, this $list would have been created with the $ListNew function.  
This function replaces an existing $list item with a longstring. Generally, this $list would have been created with the [[$ListNew]] function.  


The $ListRep_Lstr function accepts three arguments and returns a numeric result. It is a callable $function (:hdref refid=callfun.).  
The $ListRep_Lstr function accepts three arguments and returns a numeric result. It is a callable $function (see [[Calling Sirius Mods $functions]]).  


The first argument is a $list identifier. This is a required argument.  
The first argument is a $list identifier. This is a required argument.  
Line 13: Line 13:


The third argument is a string that is to replace the $list item indicated by the second argument. This is a required argument.
The third argument is a string that is to replace the $list item indicated by the second argument. This is a required argument.
==Syntax==
==Syntax==
<p class="syntax"><section begin="syntax" /> [%RESULT =] $ListRep_Lstr(list_identifier, item_num, string)
<p class="syntax"><section begin="syntax" /> [%RESULT =] $ListRep_Lstr(list_identifier, item_num, string)
Line 19: Line 20:
</p>
</p>
<p class="caption">%RESULT is set to 0 if the new item length is the same as the replaced item length, 1 if it is shorter, 2 if it is longer, or a negative number if an error has occurred.</p>
<p class="caption">%RESULT is set to 0 if the new item length is the same as the replaced item length, 1 if it is shorter, 2 if it is longer, or a negative number if an error has occurred.</p>
<p class="code">  
<p class="code">  
  -3 - No room to add item
  -3 - No room to add item
(if LISTFC $SirParm parameter not set)
        (if LISTFC $SirParm parameter not set)
  All other errors cause request cancellation
  All other errors cause request cancellation
</p>
</p>
Line 27: Line 29:
</p>
</p>


Before ''[[Sirius Mods]]'' Version 6.6, it was a request cancelling error to try to replace a Stringlist item with a longstring longer than the size limit of a Stringlist item: 6124 bytes. This limitation was eliminated in ''[[Sirius Mods]]'' Version 6.6.


Before ''[[Sirius Mods]]'' Version 6.6, it was a request cancelling error to try to replace a Stringlist item with a longstring longer than the size limit of a Stringlist item: 6124 bytes. This limitation was eliminated in ''[[Sirius Mods]]'' Version 6.6.
$ListRep_Lstr works almost exactly like [[$ListRep]] except:


$ListRep_Lstr works almost exactly like $ListRep except:
<ol>
<ol>
 
<li>It accepts a longstring input. $ListRep_Lstr can be used with regular strings as well to pick up automatic request cancellation on programming errors.  
<li>It accepts a LONGSTRING input. $ListRep_Lstr can be used with regular strings as well to pick up automatic request cancellation on programming errors.  
<li>It cancels the request on any errors such as invalid $list identifier or invalid $list item number.  
<li>It cancels the request on any errors such as invalid $list identifier or invalid $list item number.  
<li>It does not have an item length argument (argument 4 in $ListRep).
<li>It does not have an item length argument (argument 4 in [[$ListRep]]).
</ol>
</ol>


 
$ListRep_Lstr is extremely efficient if the $list item size is not being changed (return value for $ListRep_Lstr of 0), fairly efficient when a $list item is being replaced with a shorter string (return value of 1) and can be fairly expensive when a $list item is being replaced with a longer string (return value of 2). The latter case can be expensive because such a $ListRep_Lstr can result in the splitting of a $list leaf page. Once a leaf page is split, it will not be merged back together, even if subsequent [[$ListRem]]s makes this possible. Because of this, heavy use of $LISREP_LSTRs that increase $list item size (and [[$ListIns]] and [[$ListRem]]) can result in "sparse" $lists which place an unnecessary burden on the buffer pool and CCATEMP. $List compression can be done using the [[$List_Copy_Items]] function.  
$ListRep_Lstr is extremely efficient if the $list item size is not being changed (return value for $ListRep_Lstr of 0), fairly efficient when a $list item is being replaced with a shorter string (return value of 1) and can be fairly expensive when a $list item is being replaced with a longer string (return value of 2). The latter case can be expensive because such a $ListRep_Lstr can result in the splitting of a $list leaf page. Once a leaf page is split, it will not be merged back together, even if subsequent $LISTREMs makes this possible. Because of this, heavy use of $LISREP_LSTRs that increase $list item size (and $ListIns and $ListRem) can result in "sparse&CQ. $lists which place an unnecessary burden on the buffer pool and CCATEMP. $List compression can be done using the $List_Copy_Items function, documented in :hdref refid=listcit..  


$ListRep_Lstr is available in Version 6.2 and later of the ''[[Sirius Mods]]''.<p>
$ListRep_Lstr is available in Version 6.2 and later of the ''[[Sirius Mods]]''.<p>

Revision as of 16:04, 10 February 2011

<section begin="desc" />Replace a $list item with a longstring<section end="desc" />

Most Sirius $functions have been deprecated in favor of Object Oriented methods. The OO equivalent for the $ListRep_Lstr function is the Replace (Stringlist function).

This function replaces an existing $list item with a longstring. Generally, this $list would have been created with the $ListNew function.

The $ListRep_Lstr function accepts three arguments and returns a numeric result. It is a callable $function (see Calling Sirius Mods $functions).

The first argument is a $list identifier. This is a required argument.

The second argument is the item number which is to be replaced. This is a required argument.

The third argument is a string that is to replace the $list item indicated by the second argument. This is a required argument.

Syntax

<section begin="syntax" /> [%RESULT =] $ListRep_Lstr(list_identifier, item_num, string) <section end="syntax" />

$ListRep_Lstr Function

%RESULT is set to 0 if the new item length is the same as the replaced item length, 1 if it is shorter, 2 if it is longer, or a negative number if an error has occurred.

-3 - No room to add item (if LISTFC $SirParm parameter not set) All other errors cause request cancellation

$ListRep_Lstr Error Codes

Before Sirius Mods Version 6.6, it was a request cancelling error to try to replace a Stringlist item with a longstring longer than the size limit of a Stringlist item: 6124 bytes. This limitation was eliminated in Sirius Mods Version 6.6.

$ListRep_Lstr works almost exactly like $ListRep except:

  1. It accepts a longstring input. $ListRep_Lstr can be used with regular strings as well to pick up automatic request cancellation on programming errors.
  2. It cancels the request on any errors such as invalid $list identifier or invalid $list item number.
  3. It does not have an item length argument (argument 4 in $ListRep).

$ListRep_Lstr is extremely efficient if the $list item size is not being changed (return value for $ListRep_Lstr of 0), fairly efficient when a $list item is being replaced with a shorter string (return value of 1) and can be fairly expensive when a $list item is being replaced with a longer string (return value of 2). The latter case can be expensive because such a $ListRep_Lstr can result in the splitting of a $list leaf page. Once a leaf page is split, it will not be merged back together, even if subsequent $ListRems makes this possible. Because of this, heavy use of $LISREP_LSTRs that increase $list item size (and $ListIns and $ListRem) can result in "sparse" $lists which place an unnecessary burden on the buffer pool and CCATEMP. $List compression can be done using the $List_Copy_Items function.

$ListRep_Lstr is available in Version 6.2 and later of the Sirius Mods.

Products authorizing $ListRep_Lstr