$ListCmp: 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" />Compare two $lists and produce $list describing differences<section end="desc" /></span>
<span class="pageSubtitle"><section begin="desc" />Compare two $lists and produce $list describing differences<section end="desc" /></span>


<p class="warning">Most Sirius $functions have been deprecated in favor of Object Oriented methods. The OO equivalent for the $ListCmp 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 $ListCmp function is the [[Compare (Stringlist function)]].</p>


This function compares two $lists and produces a $list describing the differences between the $lists.  
This function compares two $lists and produces a $list describing the differences between the $lists.  


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


The first argument is the identifier of a $list containing data with 8 byte sequence numbers. This is a required argument.  
The first argument is the identifier of a $list containing data with 8 byte sequence numbers. This is a required argument.  
Line 17: Line 17:


The fifth argument is a pad character to be used to pad any input line that is too short. This is an optional argument and defaults to blank.
The fifth argument is a pad character to be used to pad any input line that is too short. This is an optional argument and defaults to blank.
==Syntax==
==Syntax==
<p class="syntax"><section begin="syntax" /> [%RESULT =] $ListCmp(list_id1, list_id2, list_id3, -
<p class="syntax"><section begin="syntax" /> [%RESULT =] $ListCmp(list_id1, list_id2, list_id3, -
Line 25: Line 26:
<p class="caption">%RESULT is set either to the number of items in the output $list, or to a negative error code if an error has occurred.</p>
<p class="caption">%RESULT is set either to the number of items in the output $list, or to a negative error code if an error has occurred.</p>


The output $list produced by $ListCmp is in a format that is suitable as input to $ListUpd. For example, if input $list 1 contains


The output $list produced by $ListCmp is in a format that is suitable as input to $ListUpd. For example, if input $list 1 contains
<p class="code"> 00010000B
<p class="code"> 00010000B
  00020000
  00020000
Line 33: Line 34:
  00050000END
  00050000END
</p>
</p>
and input $list 2 contains
and input $list 2 contains
<p class="code"> B
<p class="code"> B
   
   
Line 41: Line 44:
  END
  END
</p>
</p>
the statement
the statement
<p class="code"> %RESULT = $ListCmp(%INLIST1, %INLIST2, %OUTLIST)
<p class="code"> %RESULT = $ListCmp(%INLIST1, %INLIST2, %OUTLIST)
</p>
</p>
would result in the $list identified by %OUTLIST containing
would result in the $list identified by %OUTLIST containing
<p class="code"> .li;./ I 00030000 $ 00030001 00010000
<p class="code"> .li;./ I 00030000 $ 00030001 00010000
  PRINT 'HARVARD DIVING TEAM, 1908'
  PRINT 'HARVARD DIVING TEAM, 1908'
</p>
</p>


The first input $list to $ListCmp can be most easily created with the $ProcDat function using the third $ProcDat parameter to indicate a sequence number.


The first input $list to $ListCmp can be most easily created with the $ProcDat function using the third $ProcDat parameter to indicate a sequence number.<p>
<p class="code">
  -3 - No room to create $list items
  -3 - No room to create $list items
(if LISTFC $SirParm parameter not set)
        (if LISTFC $SirParm parameter not set)
  -5 - Required argument not specified
  -5 - Required argument not specified
  -6 - $List identifier invalid
  -6 - $List identifier invalid
Line 60: Line 68:
<p class="caption">$ListCmp Error Codes
<p class="caption">$ListCmp Error Codes
</p>
</p>
<p class="code">  
<p class="code">  
<ul>
<ul>
:li.&SIRLIB
<li>[[SirLib]]</li>
 
</ul>
</ul>
   
  </p>
</p>
<p class="caption">Products authorizing $ListCmp
<p class="caption">Products authorizing $ListCmp
</p>
</p>


[[Category:$Functions|$ListCmp]]
[[Category:$Functions|$ListCmp]]

Revision as of 13:43, 9 February 2011

<section begin="desc" />Compare two $lists and produce $list describing differences<section end="desc" />

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

This function compares two $lists and produces a $list describing the differences between the $lists.

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

The first argument is the identifier of a $list containing data with 8 byte sequence numbers. This is a required argument.

The second argument is the identifier of a $list containing data without 8 byte sequence numbers. This is a required argument.

The third argument is the identifier of the output $list. This is a required argument.

The fourth argument is a number indicating a synchronization count. When the two input $lists are being compared and a difference has been found, this count indicates the number of lines that must match before they are treated as a true match. This is an optional argument and defaults to 1.

The fifth argument is a pad character to be used to pad any input line that is too short. This is an optional argument and defaults to blank.

Syntax

<section begin="syntax" /> [%RESULT =] $ListCmp(list_id1, list_id2, list_id3, - sync_count, pad) <section end="syntax" />

$ListCmp Function

%RESULT is set either to the number of items in the output $list, or to a negative error code if an error has occurred.

The output $list produced by $ListCmp is in a format that is suitable as input to $ListUpd. For example, if input $list 1 contains

00010000B 00020000 00030000PRINT 'QUENTIN COMPSON' 00040000 00050000END

and input $list 2 contains

B PRINT 'QUENTIN COMPSON' PRINT 'HARVARD DIVING TEAM, 1908' END

the statement

%RESULT = $ListCmp(%INLIST1, %INLIST2, %OUTLIST)

would result in the $list identified by %OUTLIST containing

.li;./ I 00030000 $ 00030001 00010000 PRINT 'HARVARD DIVING TEAM, 1908'

The first input $list to $ListCmp can be most easily created with the $ProcDat function using the third $ProcDat parameter to indicate a sequence number.

-3 - No room to create $list items (if LISTFC $SirParm parameter not set) -5 - Required argument not specified -6 - $List identifier invalid -7 - Invalid synchronization count -8 - Input $list 1 has invalid format

$ListCmp Error Codes

Products authorizing $ListCmp