View Raw SPL
#include 

static cbvarname = "";

/* copy series/object from clipboard file to window - called internally */
_cbcopydata(vfile = "", vname = "", w = refwindow(w0), f = -1)
{
        local iswin = 0;

        cbvarname = vname;

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

        if (iswindow(w))
        {
                iswin = getwnum(w);
                f = getfocus(w);

                /* status message */
                printf(_cbrdstr_cping, getwnum(w));
        }

        /* save series (possibly an object), use reflocal for macro circumvention */
        eval(sprintf("setvar('%s', refobject(reflocalvar('w'), %d))", vname, f));

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

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

        cbvarname = "";

        if (iswin)
        {
                printf(_cbrdstr_cpied, iswin);
        }
}


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

        error(errmes);
}