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);
}