View Raw SPL
#include
/* is string in dataset.ver.series format? */
_isdsname(str)
{
local status, name, ver, verstr;
status = 0;
if (argc > 0)
{
/* requires string input */
if (isstring(str))
{
/* parse to: dataset.ver.series where ver must be an integer */
name = strget(1, str, ".");
if (_isdsname_valid(name))
{
verstr = strget(2, str, ".");
ver = castint(verstr);
/* check if verstr represents a positive integer */
if (ver > 0 && caststring(ver) == verstr)
{
name = strget(3, str, ".");
if (_isdsname_valid(name))
{
status = 1;
}
}
}
}
}
return(status);
}
/* does string represent a valid dataset or series name? */
_isdsname_valid(str)
{
local status = FALSE;
if (strlen(str) > 0)
{
/* check for invalid characters */
if (strlen(strfind("(", str)) > 0)
{
status = FALSE;
}
else if (strlen(strfind(")", str)) > 0)
{
status = FALSE;
}
else if (strlen(strfind("[", str)) > 0)
{
status = FALSE;
}
else if (strlen(strfind("]", str)) > 0)
{
status = FALSE;
}
else if (strlen(strfind(" ", str)) > 0)
{
status = FALSE;
}
else if (strlen(strfind(".", str)) > 0)
{
status = FALSE;
}
else if (strlen(strfind("*", str)) > 0)
{
status = FALSE;
}
else if (strlen(strfind("+", str)) > 0)
{
status = FALSE;
}
else if (strlen(strfind("-", str)) > 0)
{
status = FALSE;
}
else if (strlen(strfind("/", str)) > 0)
{
status = FALSE;
}
else
{
status = TRUE;
}
}
return(status);
}