CSV data manipulation: Difference between revisions

Added uBasic/4tH version
(Tweak irregular header markup)
(Added uBasic/4tH version)
Line 4,443:
read -A
 
=={{header|uBasic/4tH}}==
{{works with|R3}}
uBasic/4tH can read text files and has a built-in tokenizer, so parsing simple CSV files is not a problem.
<lang>if set (a, open ("yourcsv.csv", "r")) < 0 then
print "Cannot open \qyourcsv.csv\q" ' open file a for reading
end ' abort on file opening errors
endif
 
if set (b, open ("mycsv.csv", "w")) < 0 then
print "Cannot open \qmycsv.csv\q" ' open file a for writing
end ' abort on file opening errors
endif
 
if read (a) = 0 then ' read the header line
print "Unexpected end of file" ' if it fails, write the error
close a : close b : end ' close files and terminate
endif
' process the header line
for c = 0 step 1 ' don't know number of columns
p = here() ' get input buffer position
y = tok (ord (",")) ' parse the first field
until p = here() ' until buffer position doesn't change
write b, show (y);","; ' write it out
next
 
write b, "Sum" ' add a column
 
do while read (a) ' read a line
s = 0 ' reset the sum
for x = 0 to c-1 ' read all columns
y = iif (set (y, val (tok (ord (",")))) = info ("nil"), 0, y)
s = s + y ' add value to sum
write b, y;","; ' write the value
next ' next column
write b, s ' write the sum
loop
 
close a : close b : end ' close files and terminate
</lang>
=={{header|Ursa}}==
<lang ursa>#
374

edits