# Validation Syntax and Parameters
> [HTML Version](validationsyntaxandparam.htm)
**xcall , op, treeid, ansrow, cpos, clen, xtrctl, status, exitcode **
**Parameters**
_op _([Num](num.htm.md)) \[in\]
Indicates operation/request from XTREE. 1 indicates the first version (as documented below). Subroutine should respond to anything other than recognized _op_ values by setting _status_ to XVF\_BAD\_OP.
_treeid\$_ ([String](string.htm.md)) \[in\]
Tree identifier as set by the Advanced Column Option _TreeID_ clause.
_ansrow_ (X) \[in/out\]
The current row of the answer array, i.e. the one corresponding to xtr.XROW
_cpos_ ([Num](num.htm.md)) \[in\]
Starting position in _ansrow_ of exit column (i.e. xtr.XCOL)
_clen_ ([Num](num.htm.md)) \[in\]
Length of the column specified by xtr.XCOL
_xtr_ (XTRCTL) \[in/out\]
On input, this is a copy of the XTRCTL as it would be returned to the traditional/server validation. On return, the xtr.TARGETCOL should specify the re-entry column. See _Identifying Exit Column_ below.
_status_ (Signed [Num](num.htm.md)) \[in/out\]
Indicates status of validation operation. On input it will be set to XVF\_INCOMPATIBLE, under the theory that any compatible validation SBX will change it to one of the other status values on return:
| **Symbol** | **Value** | **Meaning** |
|------|------|------|
| XVF\_NOP | 9000 | Incompatible validation module |
| XVF\_BAD\_OP | 9001 | Unsupported op - indicates this SBX doesn't support the op value passed. (SBX is out of date, new XTREE version?) |
| XVF\_ERROR | 9002 | Internal error occurred in the SBX |
| XVF\_NV | 9003 | Field Not Valid (fails validation criteria). SBX would normally also set xtr.TARGETCOL to xtr.XROW to re-enter at same cell. Any changes to _ansrow_ made here will be updated back to the XTREE. _Exitcode_ should be set to 0 unless you want to force an app-level validation exit. |
| XVF\_OK | 9004 | Field Valid; no update to row data required. _Exitcode_ should be set to 0 to prevent a redundant app-level validation exit. (App can still override that in coldef - see below) |
| XVF\_OK\_UPD | 9005 | Field Valid; _ansrow_ has been modified (so XTREE needs to re-load the cells on this row). _Exitcode_ should be set to 0 to prevent a redundant app-level validation exit. (App can still override that in coldef - see below) |
Note XTREE updates the tree contents based on changes made here to the _ansrow_ ONLY when the return _status_ is XVF\_NV or XVF\_OK\_UPD. In all cases, unless _exitcode_ # 0, XTREE will re-enter at the cell determined by XTR.TARGETCOL.
Beyond that, the _status_ value is mainly for debugging purposes. See Debugging below.
The main return values of significance to XTREE are xtr.TARGETCOL (where to re-enter), _exitcode_ (whether to exit to app), _ansrow_ (containing and updates to cells on the row), and any message boxes displayed to tell the user about validation problems.
_exitcode_ (Signed [Num](num.htm.md)) \[in/out\]
On input, contains the _exitcode_ value that XTREE will send back to the application if no action taken here. -48 indicates column tagged for normal app-level validation; if the value is not reset here, it will cause XTREE to exit with the specified _exitcode_ following the local validation. On output, set to 0 to re-enter the tree directly, or any other _exitcode_ to pass back to the app.
_valver_ ([Num](num.htm.md)) \[out\]
Returns the edit # of this module. This is purely for debugging purposes, which see below.