LB Booster
Programming >> Liberty BASIC language >> inputCSV
http://lbb.conforums.com/index.cgi?board=lblang&action=display&num=1478395253

inputCSV
Post by Alincon on Nov 6th, 2016, 01:20am

I have been reading the 'Benefits' section of LBB.
Is this a good use of inputcsv?
(It seems to work as I intended)
r.m.

Code:
INPUTCSV "|", #diary, trans$(t,1), trans$(t,2), trans$(t,3), trans$(t,4), trans$(t,5), trans$(t,6)       
 


which replaces this:

Code:
        line input #diary, trans$
        for n = 1 to 6
           trans$(t,n) = word$(trans$,n,"|")
            if trans$(t,n) = "|" then trans$(t,n) = " "
        next
 

Re: inputCSV
Post by Alincon on Nov 6th, 2016, 01:28am

This looks like a better example of inputcsv: 1 line replaces 11.

r.m.

Code:
       ' line input #teacherFile, teacherRec$ 
       ' lname$ = word$(teacherRec$,1,".")
       ' fname$ = word$(teacherRec$,2,".")
       ' initial$ = word$(teacherRec$,3,".")
       ' gender$ = word$(teacherRec$,4,".")
       ' degree$ = word$(teacherRec$,5,".")
       ' major$ = word$(teacherRec$,6,".")
       ' minor$ = word$(teacherRec$,7,".")
       ' years$ = word$(teacherRec$,8,".")
       ' tenure$ = word$(teacherRec$,9,".")
       ' homeRoom$ = word$(teacherRec$,10,".")
        
        INPUTCSV ".", #teacherFile, lname$,fname$,initial$,gender$,degree$,major$,minor$,years$,tenure$,homeroom$
     
      
 

Re: inputCSV
Post by Jack Kelly on Nov 6th, 2016, 07:52am

What an incredibly powerful command! And I never even know it existed! (How many times am I going to say that!) There is ALWAYS so much more to learn. Although I HAVE used the InputTo$(#) function.

Jack
Re: inputCSV
Post by Richard Russell on Nov 6th, 2016, 09:45am

on Nov 6th, 2016, 01:20am, Alincon wrote:
Is this a good use of inputcsv?

It's a perfectly valid use, although of course you're relying on an LBB-specific extension (being able to specify a delimiter other than a comma) so it won't work in LB 4.5.0.

Sadly, as is well known (and documented at the LB Bug Tracker wiki), the implementation of INPUTCSV in LB 4.5.0 is broken anyway because it doesn't work if the item of data contains embedded quotes. So what promised to be a very useful addition - because it's quite difficult to code an accurate implementation of INPUTCSV in LB 4.04 - turned out to be a disappointment.

I know the LB folks hate me criticising Carl, and I do try not to be unfair, but in this case there's a Wikipedia page on the CSV file format in which examples of such files are listed. Had the LB 4.5.0 implementation been tested with these examples the problem would have been identified.

Anyway, INPUTCSV works correctly in LBB and I've added a couple of enhancements. Firstly you can specify a delimiter other than a comma, allowing for example a standard Tab Separated Value file (such as might be output by Excel) to be read. Secondly it accepts a CSV file with either Windows-style (CRLF) or Unix-style (LF) line terminations because you will commonly encounter the latter.

Richard.