View Raw SPL
#include 

static cbvarname = "";

/* copy series/object from window to clipboard file - called internally */
_cbcopysel(vfile = "", vname = "", s = refseries(w0))
{
        cbvarname = vname;

        /* delete existing file */
        if (fileexists(vfile))
        {
                delfile(vfile);
        }

        if (isarray(s))
        {
                /* status message */
                printf(_cbrdstr_sling);
        }

        /* save series (possibly an object) */
        eval(sprintf("setvar('%s', refobject(s))", vname));

        /* save to clipboard file */
        savevar(vfile, vname);

        /* delete clipboard variable */
        eval(sprintf("clear('%s')", vname));

        cbvarname = "";

        if (isarray(s))
        {
                printf(_cbrdstr_slied);
        }
}


/* error handler */
_cbcopysel_error(errnum, errmes)
{
        if (strlen(cbvarname) > 0)
        {
                eval(sprintf("clear('%s')", cbvarname));
                cbvarname = "";
        }

        error(errmes);
}