Here are screenshots and code samples from the article:
Go READ example
package main
import (
"encoding/csv"
"fmt"
"io"
"os"
"time"
)
type InfileRec struct {
ib1 string
ib2 string
ib3 string
ib4 string
ib5 string
ib6 string
ib7 string
ib8 string
ib9 string
ib10 string
ib11 string
ib12 string
}
func main() {
start := time.Now()
fmt.Printf("Begin GO run of LANGCOMP2 @ %s\n", start)
csvfile, err := os.Open("star.csv")
if err != nil {
fmt.Println(err)
return
}
defer csvfile.Close() // sets up the file close upon exit of the function
reader := csv.NewReader(csvfile)
reader.FieldsPerRecord = -1 // sets number of fields be record variable
var (
record []string
InputBuffer InfileRec
kount uint32 = 0
)
for err == nil {
record, err = reader.Read()
kount += 1
if len(record) == 12 {
InputBuffer.ib1 = record[0]
InputBuffer.ib2 = record[1]
InputBuffer.ib3 = record[2]
InputBuffer.ib4 = record[3]
InputBuffer.ib5 = record[4]
InputBuffer.ib6 = record[5]
InputBuffer.ib7 = record[6]
InputBuffer.ib8 = record[7]
InputBuffer.ib9 = record[8]
InputBuffer.ib10 = record[9]
InputBuffer.ib11 = record[10]
InputBuffer.ib12 = record[11]
}
}
if err != nil && err != io.EOF {
fmt.Println(err)
os.Exit(1)
}
end := time.Now()
fmt.Println(kount, " Records read ")
fmt.Printf("Normal termination of LANGCOMP2 @ %s\n", end)
duration := end.Sub(start)
fmt.Printf("Elapsed time: %s\n", duration)
}
Go READALL example:
package main
import (
"time"
"encoding/csv"
"fmt"
"os"
)
type InfileRec struct {
ib1 string
ib2 string
ib3 string
ib4 string
ib5 string
ib6 string
ib7 string
ib8 string
ib9 string
ib10 string
ib11 string
ib12 string
}
func main() {
start := time.Now()
fmt.Printf("Begin GO run of LANGCOMP @ %s\n", start)
csvfile, err := os.Open("star.csv")
if err != nil {
fmt.Println(err)
return
}
defer csvfile.Close() // sets up the file close upon exit of the function
reader := csv.NewReader(csvfile)
reader.FieldsPerRecord = -1 // sets number of fields be record variable
rawCSVdata, err := reader.ReadAll()
if err != nil {
fmt.Println(err)
os.Exit(1)
}
var kount uint32 = 0
var InputBuffer InfileRec
for _, each := range rawCSVdata {
kount += 1
InputBuffer.ib1 = each[0]
InputBuffer.ib2 = each[1]
InputBuffer.ib3 = each[2]
InputBuffer.ib4 = each[3]
InputBuffer.ib5 = each[4]
InputBuffer.ib6 = each[5]
InputBuffer.ib7 = each[6]
InputBuffer.ib8 = each[7]
InputBuffer.ib9 = each[8]
InputBuffer.ib10 = each[9]
InputBuffer.ib11 = each[10]
InputBuffer.ib12 = each[11]
}
end := time.Now()
fmt.Println(kount, " Records read ")
fmt.Printf("Normal termination of LANGCOMP @ %s\n", end)
duration := end.Sub(start)
fmt.Printf("Elapsed time: %s\n", duration)
}


