$ListAdj

From m204wiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Adjust length of $list item

Note: Many $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.

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

[%RESULT =] $ListAdj(list_identifier, itemnum, length)

%result is set to 0 if the new item length is the same as the old item length, 1 if it is less, 2 if it is greater, or a negative number if an error has occurred.

Error codes

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

Usage notes

  • $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.

Example

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, '*')

Products authorizing $ListAdj