title: Read/Write fixed length text records with carriage return row terminators
body: <p>Example of C# that implements this pseudo code w/o becoming "unmanaged":</p>
  
  <pre><code>dataRec = dataRec.Key [5] + dataRec.Ptr [5] + CrLf [2];
  recSize = sizeof (dataRec); // recSize = 12
  aCrLf = CarriageReturn (ASCII 13) + LineFeed (ASCII 10); // define CrLf constant
  fs = Open (textFile);
  dataRec = "A    " + "00001" + aCrLf; // initialize 1st Row
  Write (fs, dataRec, recSize * (1 - 1), recsize); // write 1st row at offset 0
  dataRec = "AB   " + "00002" + aCrLf; // initialize 2nd Row
  Write (fs, dataRec, recSize * (2 - 1), recsize); // write 2nd row at offset 12
  dataRec = "ABC  " + "00003" + aCrLf; // initialize 3rd Row
  Write (fs, dataRec, recSize * (3 - 1), recsize); // write 3rd row at offset 24
  //
  Read (fs, dataRec, recSize * (1 - 1), recsize); // Read 1st row at offset 0
  sWork = dataRec;    // convert to string.
  Console.WriteLine(sWork);   // show 1st row
  Read (fs, dataRec, recSize * (2 - 1), recsize); // Read 2nd row at offset 12
  sWork = dataRec;    // convert to string.
  Console.WriteLine(sWork);   // show 2nd row
  Read (fs, dataRec, recSize * (3 - 1), recsize); // Read 3rd row at offset 24
  sWork = dataRec;    // convert to string.
  Console.WriteLine(sWork);   // show 3rd row
  Close (fs);
  </code></pre>
  
  <p>Reading/writing fixed length text rows at an offset, i.e. random access, is very easy with DBL, C or VBA. But the C# examples I have seen of binary read/write use "unmanaged code" and none of the examples I have reviewed read/write text/flat files with CrLf row terminator at an offset.</p>