RosettaCodeData/Task/CSV-data-manipulation/PureBasic/csv-data-manipulation.basic

52 lines
1.1 KiB
Plaintext

EnableExplicit
#Separator$ = ","
Define fInput$ = "input.csv"; insert path to input file
Define fOutput$ = "output.csv"; insert path to output file
Define header$, row$, field$
Define nbColumns, sum, i
If OpenConsole()
If Not ReadFile(0, fInput$)
PrintN("Error opening input file")
Goto Finish
EndIf
If Not CreateFile(1, fOutput$)
PrintN("Error creating output file")
CloseFile(0)
Goto Finish
EndIf
; Read header row
header$ = ReadString(0)
; Determine number of columns
nbColumns = CountString(header$, ",") + 1
; Change header row
header$ + #Separator$ + "SUM"
; Write to output file
WriteStringN(1, header$)
; Read remaining rows, process and write to output file
While Not Eof(0)
row$ = ReadString(0)
sum = 0
For i = 1 To nbColumns
field$ = StringField(row$, i, #Separator$)
sum + Val(field$)
Next
row$ + #Separator$ + sum
WriteStringN(1, row$)
Wend
CloseFile(0)
CloseFile(1)
Finish:
PrintN("")
PrintN("Press any key to close the console")
Repeat: Delay(10) : Until Inkey() <> ""
CloseConsole()
EndIf