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.



 
Module Checkit {
      Function Sum {
            Long c=0
            while not empty {
                  c+=number
            }
            =c
      }
      Document CSV$ = {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
      }
      \\ export encoded to UTF-16LE
      Save.Doc CSV$, "data1.csv", 0
      \\ Open Wide read UTF-16LE
      \\ use standard colum sep. as ","
      \\ use standard decimal point char
      \\ use standard (non json style string)
      \\ True = use bare strings (without "")
      Input With "",,,true
      Write With"",,,true
      \\ for excel csv use Input With chr$(9),,true, true
      Open "data1.csv" for Wide Input as #M
      Open "data2.csv" for Wide Output as #M1
      Input #M, h1$, h2$, h3$, h4$, h5$
      Write #M1, h1$, h2$, h3$, h4$, h5$
      Print h1$, h2$, h3$, h4$, h5$
 
      While not Eof(#M) {
            Input #M, A1, A2, A3, A4, A5
            Write #M1, A1, A2, A3, A4, A5, Sum(A1, A2, A3, A4, A5)
            Print A1, A2, A3, A4, A5
      }
      close #M1
      Close #M
      Open "data2.csv" for Wide Input as #M
      Input #M, h1$, h2$, h3$, h4$, h5$
      Print h1$, h2$, h3$, h4$, h5$
      While not Eof(#M) {
            Input #M, A1, A2, A3, A4, A5, Sum
            Print A1, A2, A3, A4, A5, Sum
      }
      Close #M
}
Checkit
 