The following operations are supported. For a formal definition, please review the Service Description.

Web Service Links

Namespace Children of ::wsdb::types::mywebservice::TestDecimal3

Namespace Code for ::wsdb::types::mywebservice::TestDecimal3

namespace eval ::wsdb::types::mywebservice::TestDecimal3 {
    variable base xsd::decimal
    variable decimalPointCanon {}
    variable fractionDigits 0
    variable totalDigits 4
    variable validate ::wsdb::types::mywebservice::TestDecimal3::validate

}

Procedures in ::wsdb::types::mywebservice::TestDecimal3


proc ::wsdb::types::mywebservice::TestDecimal3::validate {
    value
    {errorListVar }
    {canonListVar }
} {
    variable base
    variable decimalPointCanon
    variable totalDigits
    variable fractionDigits

    if {"$errorListVar" ne ""} {
        upvar $errorListVar errorList
    }
    if {"$canonListVar" ne ""} {
        upvar $canonListVar canonList
    }

    set valid 0
    set collapsedValue [string trim $value]
    set errorList [list $collapsedValue]
    set canonList [list]

    if {![::wsdb::types::xsd::decimal::ifDecimalCanonize $value canonList $decimalPointCanon decimalList]} {
        lappend errorList "failed decimal test"
        return $valid
    }
    set foundDigits [lindex $decimalList 0]
    set foundFractionDigits [lindex $decimalList 1]
    set canonValue [join $canonList ""]

    while {1} {
        if {![::wsdb::types::${base}::validate $canonValue]} {
            lappend errorList "failed base test $base"
            break
        }
        if {$foundDigits > $totalDigits} {
            lappend errorList "failed foundDigits ($foundDigits) > totalDigits (4)"
            break
        }
        if {$foundFractionDigits > $fractionDigits} {
            lappend errorList "failed foundFractionDigits ($foundFractionDigits) > fractionDigits (0)"
            break
        }
        set valid 1
        break
    }

    return $valid
}