Loop through fields in an import file?
Jeff Harrison
jeffaharrison at yahoo.com
Wed Feb 9 07:44:07 PST 2011
----- Original Message ----
> From: Richard Kreiss <rkreiss at gccconsulting.net>
> To: Mike Schwartz <mschw at athenet.net>; filePro mailing List
><filepro-list at lists.celestial.com>
> Sent: Wed, February 9, 2011 10:04:35 AM
> Subject: RE: Loop through fields in an import file?
>
>
>
> > -----Original Message-----
> > From: filepro-list-bounces+rkreiss=verizon.net at lists.celestial.com
> > [mailto:filepro-list-bounces+rkreiss=verizon.net at lists.celestial.com] On
> > Behalf Of Mike Schwartz
> > Sent: Wednesday, February 09, 2011 9:25 AM
> > To: filePro mailing List
> > Subject: Loop through fields in an import file?
> >
> > Using filePro 5.0.14 on Linux, I am trying to import a pipe-delimited
> text file
> > that has 331 fields in it. I'm writing the data into a filePro file that
> has 331
> > fields that are laid out exactly like the import file.
> >
> >
> >
> > import ascii infile = (@pm) f=| r =\n
> >
> >
> >
> > lookup ofile = cust2 r=free -n
> >
> >
> >
> > I'd prefer not to write 331 "ofile(1)=infile(1)" style statements,
> but I can't
> > think of a way to write a loop that will loop 331 times to write all the
> import
> > fields to the output file.
> >
> >
> >
> > I declared fcount(3,.0) = "1" and then wrote a loop that included
> > ofile(fcount)=infile(fcount), but filePro gave me a syntax error on that,
> > pointing to the "f" in infile(fcount).
> >
> >
> >
> > I thought about importing each data record as one long string
> (ignoring the
> > pipes) and then parsing the string for pipes, but that's a lot of extra
> work.
> >
> >
> >
> > Or, instead of using "import", I could also "open" the file and use
> readline
> > to process the data, but I would still have to parse for the pipes.
> >
> >
> >
> >
> > However, before I sit down and write a lot of complex code, is there
> some
> > simple 1-liner method to loop through and move these 331 fields into the
> > output file?
> >
> >
> >
> > Thanks!
> >
> >
> >
> > Mike Schwartz
>
> I was programming an export to a csv file for an array with 48 elements. Dim
> array(48) One cannot do
>
> Export word comm=w:\ccsv_files\foobar.csv
>
> loop:ct le "48" Comm(ct)=array[ct];ct=ct+"1";GOTO loop
>
> This would have made programming this output much easier as my program has 7
> separate arrays that need to be written out.
>
> What I would suggest is that you create 2 arrays, read in your data to the
> first array and then overlay the second array to your lookup file and use
> the above method to post in the data.
>
> I don’t think there is an easy way to do this.
>
>
> Richard Kreiss
> GCC Consulting
> rkreiss at gccconsulting.net
>
This is exactly what JHImport is for. No need to write ANY code. Just tell
JHImport the name of the file and the delimeters, output name, etc. It will then
give you a visual representation of what it is going to do, and then it writes
the code and performs the import.
Really, just a few keystrokes and you are done.
Jeff Harrison
Author of JHImport and JHExport.
More information about the Filepro-list
mailing list