CSV spreadsheet files are suitable for storing tabular data in a relatively portable way.

The CSV format is flexible but somewhat ill-defined.

For present purposes, authors may assume that the data fields contain no commas, backslashes, or quotation marks.



Task

Read a CSV file, change some values and save the changes back to a file.

For this task we will use the following CSV file:

C1,C2,C3,C4,C5
1,5,9,13,17
2,6,10,14,18
3,7,11,15,19
4,8,12,16,20

Suggestions


 Show how to add a column, headed 'SUM', of the sums of the rows.
 If possible, illustrate the use of built-in or standard functions, methods, or libraries, that handle generic CSV files.



$ include "seed7_05.s7i";
 
const proc: main is func
  local
    var file: input is STD_NULL;
    var array array string: csvData is 0 times 0 times "";
    var integer: line is 0;
  begin
    input := open(dir(PROGRAM) & "/csvDataManipulation.in", "r");
    while hasNext(input) do
      csvData &:= split(getln(input), ",");
    end while;
    csvData[3][3] := "X";
    for key line range csvData do
      writeln(join(csvData[line], ","));
    end for;
  end func;