Note: The scalcout record is part of the calc module of the synApps package. Device support for scalcout records is only available for calc module release 2-4 or higher. You also need the synApps modules genSub and sscan to build calc.
Up to release 2-6 (synApps release 5.1), the scalcout record needs a fix.
In sCalcout.c at the end of init_record
add
before the final return(0)
:
if(pscalcoutDSET->init_record ) { return (*pscalcoutDSET->init_record)(pcalc); }
Different record fields are used for output and input. The variable
x
stands for the written or read value.
%f
):x=OVAL
VAL=x
OVAL
from CALC
or OCAL
depending on DOPT
.
%i
):x=int(OVAL)
VAL=x
%{
):x=int(OVAL)
VAL=x
%s
):x=OSV
SVAL=x
For scalcout records, it is probably more useful to access fields
A
to L
and AA
to LL
directly (e.g. "%(A)f"
or "%(BB)s"
).
However, even if OVAL
is not used, it is calculated by the
record. Thus, CALC
must always contain a valid expression
(e.g. "0"
).
During initialization, the @init
handler is executed, if
present. All format converters work like in normal operation.