# # csv data manipulation # # declare a string stream to hold lines decl string<> lines # open the file specified on the command line, halting # execution if they didn't enter one. it will be created if # it doesn't exist yet decl file f if (< (size args) 2) out "error: please specify a csv file" endl console stop end if f.create args<1> f.open args<1> # read in all lines from the file set lines (f.readlines) # append sum column to header set lines<0> (+ lines<0> ",SUM") # determine sums and append them decl int i sum for (set i 1) (< i (size lines)) (inc i) set sum 0 for (decl int j) (< j (size (split lines ","))) (inc j) set sum (int (+ sum (int (split lines ",")))) end for set lines (+ lines (+ "," sum)) end for # delete the file, then create it again f.delete args<1> f.create args<1> # output all lines to the file for (set i 0) (< i (size lines)) (inc i) out lines endl f end for