View Raw SPL
#include 


/* gui based writeb */
wbfname(fname)
{
        local orgname, fn, dl, collist, ser;

        /* set default name to appear in dialog box */
        if (argc > 0)
        {
                /* use input filename */
                setvar("_wbfname", fname);
                setvar("_wbpickdir", strrev(strfind(pathchar, strrev(_wbfname))));
        }
        else
        {
                /* just define the variable */
                defvar("_wbfname", "");
        }

        /* define start directory if it doesn't already exist */
        defvar("_wbpickdir", "");

        /* _pickfile_status == 1 if dialog was successful */
        setvar("_pickfile_status", 0);

        /* series name state */
        setvar("_wbser", 1);

        /* remember original name */
        orgname = _wbfname;

        /* datatype */
        defvar("_wbdtype", "SINT");

        /* define savemode */
        defvar("_wbsmode", 0);

        /* swap bytes */
        defvar("_wbswap", 0);

        /* invoke dialog box */
        _mf("writeb.pan");

        if (_pickfile_status != 0)   /* dialog was successful */
        {
                /* remember default directory */
                setvar("_wbpickdir", strrev(strfind(pathchar, strrev(_wbfname))));
                fn = sprintf('"%s"', _wbfname);

                ser = wbfname_series();

                if (strlen(ser) <= 0)
                {
                        /* no data to write */
                        error(sprintf("%s: %s", eval('_ser1'), _rwterr_ndw));
                }

                if (strlen(_wbfname) > 0)
                {
                        if (setwfmode == 1)
                        {
                                eval(sprintf("setwf('writeb(%s, %s, %d, %d, %s)')", fn, _wbdtype, _wbsmode, _wbswap, ser));
                        }
                        else
                        {
                                eval(sprintf('writeb(%s, %s, %d, %d, %s)', fn, _wbdtype, _wbsmode, _wbswap, ser));
                        }
                }
        }
        else
        {
                /* reset to original name */
                setvar("_wbfname", orgname);
        }
}


wbfname_series()
{
        local ser;

        ser = eval('_ser1');

        if (eval(sprintf("length(%s)", ser)) <= 0)
        {
                ser = "";
        }

        return(ser);
}