Summer.Batch.Extra.Ebcdic.EbcdicReader.ReadField C# (CSharp) Method

ReadField() private method

read a field
private ReadField ( Summer.Batch.Extra.Copybook.FieldFormat fieldFormat, decimal>.IDictionary readNumericValues ) : object
fieldFormat Summer.Batch.Extra.Copybook.FieldFormat
readNumericValues decimal>.IDictionary
return object
        private object ReadField(FieldFormat fieldFormat, IDictionary<string, decimal> readNumericValues)
        {
            List<object> values = new List<object>();
            int occurs;

            if (fieldFormat.HasDependencies())
            {
                if (readNumericValues.ContainsKey(fieldFormat.DependingOn))
                {
                    occurs = Decimal.ToInt32(readNumericValues[fieldFormat.DependingOn]);
                }
                else
                {
                    throw new System.Exception(
                    string.Format("Check your copybook :[{0}] is not present, but field format says it has dependencies ...",
                        fieldFormat.DependingOn));
                }
            }
            else
            {
                occurs = fieldFormat.Occurs;
            }

            for (int i = 0; i < occurs; i++)
            {
                byte[] bytes = Read(fieldFormat.ByteSize, fieldFormat);
                object value = _decoder.Decode(bytes, fieldFormat);
                values.Add(value);
                if (value is decimal)
                {
                    readNumericValues[fieldFormat.Name] = (decimal)value;
                }
            }

            if (fieldFormat.HasDependencies() || occurs > 1)
            {
                // if occurs is variable or greater than one, return results in a list
                return values;
            }
            else
            {
                // otherwise, just return the single item
                return values[0];
            }
        }