JT Klopcic could not believe his eyes. It was supposed to be a simple assignment. The length of some data field was changing, so he needed to walk through the import process and make sure that all the associated data sizes would accommodate the new length.

JT was unfamiliar with the process, so he took a look at the import file. Thankfully, it was all well-formed XML. This should be rather easy, he thought. And then he stumbled over this:

// parse the XML data file if (File.Exists(StdFileName)) { // opens file for header data extraction. _sr = new StreamReader(StdFileName); FindHeaderString(_sr); // First line oHeader.FixABC = Convert.ToDouble(m_Textline.Substring(11, 6)); oHeader.FixDEF = Convert.ToDouble(m_Textline.Substring(19, 6)); oHeader.XYZ = Convert.ToDouble(m_Textline.Substring(26, 6)); oHeader.PDQs = Convert.ToDouble(m_Textline.Substring(33, 6)); oHeader.ChkIn = Convert.ToDouble(m_Textline.Substring(41, 6)); oHeader.DblFix = Convert.ToDouble(m_Textline.Substring(49, 6)); oHeader.DblUnload = Convert.ToDouble(m_Textline.Substring(57, 6)); oHeader.DblLoad = Convert.ToDouble(m_Textline.Substring(65, 6)); // Reads the next line and find the header string. if ((m_Textline = _sr.ReadLine()) != null) { FindHeaderString(_sr); // 2nd line oHeader.DelAdj = Convert.ToDouble(m_Textline.Substring(73, 6)); oHeader.PSPPerSt = Convert.ToDouble(m_Textline.Substring(82, 6)); oHeader.PSPPerPk = Convert.ToDouble(m_Textline.Substring(91, 6)); oHeader.PSPPerPg = Convert.ToDouble(m_Textline.Substring(100, 6)); oHeader.PSPPerSetup = Convert.ToDouble(m_Textline.Substring(108, 6)); oHeader.OffProp = Convert.ToDouble(m_Textline.Substring(117, 6)); oHeader.OnProp = Convert.ToDouble(m_Textline.Substring(126, 6));

It was not going to be as easy as he thought.