**DO xrefin-do-statement**- is invoked as an xrefin statement. Action takes place as soon as the construct is complete.
**xrefin-do-statement:==****xrefin-do-mode ( xrefin-property = xrefin-do-expression )****xrefin-do-mode:==**-
**AMPLitude**- carries out an operation using amplitudes of xrefin properties.
**COMPlex**- carries out an operation in complex space.
**PHASe**- carries out an operation using phases of xrefin properties. Phases are manipulated in degrees.
**SCALe**-
involves an operation that multiplies the left-hand side
(lhs) by
a scale factor , which is defined as

(13.12)

**xrefin-do-expression:==****xrefin-vflc [ op**represents a mathematical operation and is defined in Section 2.16.

xrefin-do-expression ]**xrefin-vflc:==**-
**function****xrefin-function symbol real integer complex xrefin-property**represents mathematical functions and is defined in Section 2.16. Special xrefin functions are defined below. The data type of the function arguments has to match the data type of the operands.

**xrefin-property:==**-
**FCALC**- specifies calculated structure factors (complex).
**FOBS**- specifies observed structure factors (complex).
**FPART**- specifies partial structure factors (complex).
**SIGMA**- specifies values (real).
**TEST**- is an array for cross-validation that allows one to compute the free value (see Chapter 17).
**WEIGHT**- specifies weights (real).

**xrefin-function:==**-
**H()**- defines an array that consists of the Miller index h.
**K()**- defines an array that consists of the Miller index k.
**L()**- defines an array that consists of the Miller index l.
**S()**- defines an array that consists of the length of the reciprocal lattice vector for each reflection h,k,l.