public OrderHistoryFileReturn ParseMainframeFile(TextReader reader)
        {
            OrderHistoryFileReturn retVal = new OrderHistoryFileReturn();

            OrderHistoryFile currentFile = null;

            while (reader.Peek() != -1)
            {
                string line = reader.ReadLine();

                switch (line.Substring(RECORDTYPE_STARTPOS, RECORDTYPE_LENGTH))
                {
                case "H":
                    SetErrorStatusAndFutureItemsOnFile(currentFile);

                    currentFile = CreateOrderHistoryFileFromHeaderLine(line);
                    retVal.Files.Add(currentFile);
                    break;

                case "D":
                    var orderDetail = new OrderHistoryDetail();
                    orderDetail.Parse(line);
                    currentFile.Details.Add(orderDetail);
                    break;

                default:
                    break;
                }
            } // end of while

            SetErrorStatusAndFutureItemsOnFile(currentFile);

            return(retVal);
        }
        /// <summary>
        /// Parse an array of strings as a file
        /// </summary>
        /// <param name="data"></param>
        /// <returns></returns>
        private OrderHistoryFileReturn ParseFile(string[] data)
        {
            OrderHistoryFileReturn retVal = new OrderHistoryFileReturn();

            OrderHistoryFile currentFile = null;

            for (int i = 0; i < data.Length; i++)
            {
                string line = data[i];

                if (line.Contains("END###"))
                {
                    break;
                }

                switch (line.Substring(RECORDTYPE_STARTPOS, RECORDTYPE_LENGTH))
                {
                case "H":
                    SetErrorStatusAndFutureItemsOnFile(currentFile);

                    currentFile = ParseNewOrderHistoryFileFromHeaderLine(line);
                    retVal.Files.Add(currentFile);
                    break;

                case "D":
                    var orderDetail = new OrderHistoryDetail();
                    orderDetail.Parse(line);
                    currentFile.Details.Add(orderDetail);
                    break;

                default:
                    break;
                }
            } // end of for loop

            SetErrorStatusAndFutureItemsOnFile(currentFile);

            return(retVal);
        }