if (this.value != null) {
SequenceIterator iter = this.value.iterate(context);
vec = new ArrayList(4);
while (true) {
AtomicValue val = (AtomicValue) iter.next();
if (val == null) {
break;
}
try {
NumericValue num;
if (val instanceof NumericValue) {
num = (NumericValue) val;
} else {
num = NumberFn.convert(val);
}
num = num.round();
if (num.compareTo(IntegerValue.MAX_LONG) > 0) {
DynamicError e = new DynamicError("A number is too large to be formatted");
e.setXPathContext(context);
e.setErrorCode("SAXON:0000");
throw e;
}
if (num.compareTo(IntegerValue.MIN_LONG) < 0) {
DynamicError e = new DynamicError("The numbers to be formatted must be positive");
e.setXPathContext(context);
e.setErrorCode("XT0980");
throw e;
}
long i = ((NumericValue) num.convert(Type.INTEGER, context)).longValue();
if (i < 1) {
DynamicError e = new DynamicError("The numbers to be formatted must be positive");
e.setXPathContext(context);
e.setErrorCode("XT0980");
throw e;
}
vec.add(new Long(i));
} catch (DynamicError err) {
vec.add(val.getStringValue());
recoverableError(err, context);
}
}
} else {