/*****************************************************************************
* *
* ISEQUAL.SPL Copyright (C) 2011-2019 DSP Development Corporation *
* All Rights Reserved *
* *
* Author: Randy Race *
* *
* Synopsis: Compares two or more inputs *
* *
* Revisions: 4 Mar 2011 RRR Creation *
* *
*****************************************************************************/
#if @HELP_ISEQUAL
ISEQUAL
Purpose: Compares two or more inputs for equality.
Syntax: ISEQUAL(val1, val2, val3, ..., valN)
valN - Anything, two or more inputs.
Returns: An integer, 1 if all inputs equal, else 0.
Example:
a = {{1, 2, 3},
{4, 5, 6}};
b = {{1, 2, 3},
{4, 5, 6}};
c = {{4, 5, 6},
{1, 2, 3}};
isequal(a, b) == 1
isequal(a, c) == 0
isequal(a, b, c) == 0
Example:
a = "test";
b = "test";
c = "Test";
isequal(a, b) == 1
isequal(a, c) == 0
isequal(a, b, c) == 0
Example:
a = 100;
b = 100.0;
c = {100};
isequal(a, b) == 1
isequal(a, c) == 1
isequal(a, b, c) == 1
Example:
a = "test";
b = 100;
c = "test";
d = 100;
isequal(a, b) == 0
isequal(a, c) == 1
isequal(a, b, c) == 0
isequal(a, b, c, d) == 0
isequal(b, c) == 0
isequal(b, d) == 1
Remarks:
ISEQUAL returns 0 for inputs of mixed strings and numerics.
Strings are compared on a case sensitive basis.
All scalars are converted to single point series for comparison.
See Also:
==
isempty
strcmp
#endif
/* compare two or more inputs for equality */
isequal(argv)
{
local j, arg1, arg, status = 1;
if (argc < 2) error("isequal - at least two inputs required");
arg1 = getargv(1);
if (isnumeric(arg1))
{
/* compare numerics */
arg1 = castseries(arg1);
loop (j = 2..argc)
{
arg = getargv(j);
if (isnumeric(arg))
{
status &= all(all(arg1 == castseries(arg)));
}
else
{
status = 0;
}
if (not(status)) break;
}
}
else if (isstring(arg1))
{
/* compare strings */
loop (j = 2..argc)
{
arg = getargv(j);
if (isstring(arg))
{
/* case sensitive comparison */
status &= (arg1 == arg);
}
else
{
status = 0;
}
if (not(status)) break;
}
}
else if (isobject(arg1))
{
arg1 = castobject(arg1);
/* compare objects */
loop (j = 2..argc)
{
arg = getargv(j);
if (isobject(arg))
{
/* object comparison */
status &= (arg1 == castobject(arg));
}
else
{
status = 0;
}
if (not(status)) break;
}
}
else
{
status = 0;
}
return(status == 1);
}