# 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.