$ListAdj: Difference between revisions
m (1 revision) |
m (1 revision) |
||
Line 2: | Line 2: | ||
<span class="pageSubtitle">Adjust length of $list item</span> | <span class="pageSubtitle">Adjust length of $list item</span> | ||
<p class="warning">Most Sirius $functions have been deprecated in favor of Object Oriented methods. There is no OO equivalent for the $ListAdj function as the Stringlist replacement for $lists are natively longstring capable.</p> | <p class="warning">Most Sirius $functions have been deprecated in favor of Object Oriented methods. There is no OO equivalent for the <var>$ListAdj</var> function as the Stringlist replacement for $lists are natively longstring capable.</p> | ||
This function adjusts the length of a $list item. Generally, this $list would have been created with the [[$ListNew]] function. | This function adjusts the length of a $list item. Generally, this $list would have been created with the [[$ListNew]] function. | ||
The $ListAdj function accepts three arguments and returns a numeric result. It is a callable $function (see [[Calling Sirius Mods $functions]]). | The <var>$ListAdj</var> 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 30: | Line 30: | ||
The following example illustrates how $ListAdj can be used to add an asterisk to the end of a $list item: | The following example illustrates how <var>$ListAdj</var> can be used to add an asterisk to the end of a $list item: | ||
<p class="code"> %LEN = $ListILn(%LIST, %NUM) | <p class="code"> %LEN = $ListILn(%LIST, %NUM) | ||
Line 38: | Line 38: | ||
<var>$ListAdj</var> is extremely efficient if the $list item size is not being changed (return value for $ListAdj of 0), fairly efficient when a $list item is being shortened (return value of 1) and can be fairly expensive when a $list item is being lengthened (return value of 2). The latter case can be expensive because such a $ListAdj 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 (or $LISTADJs) makes this possible. | <var>$ListAdj</var> is extremely efficient if the $list item size is not being changed (return value for <var>$ListAdj</var> of 0), fairly efficient when a $list item is being shortened (return value of 1) and can be fairly expensive when a $list item is being lengthened (return value of 2). The latter case can be expensive because such a <var>$ListAdj</var> 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 (or $LISTADJs) makes this possible. | ||
Because split leaf pages remain split, heavy use of $LISADJ calls 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. It can also result in an inability to add an item to the end of the $list (via $ListAdd) because of a full pointer page, even though the $list is nowhere near the theoretical capacity for a $list. $List compression can be done using the <var>[[$List_Copy_Items]]</var> function.<p> | Because split leaf pages remain split, heavy use of $LISADJ calls that increase $list item size (and <var>$ListIns</var> and $ListRem) can result in "sparse&CQ. $lists which place an unnecessary burden on the buffer pool and CCATEMP. It can also result in an inability to add an item to the end of the $list (via $ListAdd) because of a full pointer page, even though the $list is nowhere near the theoretical capacity for a $list. $List compression can be done using the <var>[[$List_Copy_Items]]</var> function.<p> | ||
<ul class="smallAndTightList"> | <ul class="smallAndTightList"> |
Revision as of 19:25, 19 October 2012
Adjust length of $list item
Most Sirius $functions have been deprecated in favor of Object Oriented methods. There is no OO equivalent for the $ListAdj function as the Stringlist replacement for $lists are natively longstring capable.
This function adjusts the length of a $list item. Generally, this $list would have been created with the $ListNew function.
The $ListAdj 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 a $list item number. This is a required argument.
The third argument is a number that indicates the new length of the $list item. This is a required argument. Its minimum valid value is 0; the maximum value is 6124 under Sirius Mods Version 6.5 and earlier, and it is 2**31-1 under Sirius Mods Version 6.6 and later. If this value is smaller than the current length of the $list item, the $list item is truncated. If this value is larger than the current length of the $list item, the $list item is padded with blanks to the indicated length.
Syntax
<section begin="syntax" /> [%RESULT =] $ListAdj(list_identifier, itemnum, length) <section end="syntax" />
-3 - No room to add item (if LISTFC $SirParm parameter not set) All other errors cause request cancellation
The following example illustrates how $ListAdj can be used to add an asterisk to the end of a $list item:
%LEN = $ListILn(%LIST, %NUM) %RC = $ListAdj(%LIST, %NUM, %LEN + 1) %RC = $ListOvl(%LIST, %NUM, %LEN + 1, '*')
$ListAdj is extremely efficient if the $list item size is not being changed (return value for $ListAdj of 0), fairly efficient when a $list item is being shortened (return value of 1) and can be fairly expensive when a $list item is being lengthened (return value of 2). The latter case can be expensive because such a $ListAdj 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 (or $LISTADJs) makes this possible.
Because split leaf pages remain split, heavy use of $LISADJ calls 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. It can also result in an inability to add an item to the end of the $list (via $ListAdd) because of a full pointer page, even though the $list is nowhere near the theoretical capacity for a $list. $List compression can be done using the $List_Copy_Items function.