Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Need help parsing
Message
 
General information
Forum:
Visual FoxPro
Category:
Coding, syntax & commands
Miscellaneous
Thread ID:
00429941
Message ID:
00430020
Views:
14
>>I have a table that contains 7 columns. The first 6 columns contain payroll deductions. The 7th column has information on types of deduction being held in the columns 1 thur 6. My problem is that I have to parse the information in 7th column. The order in which the names appear in 7th column determines which 1 thru 6 columns contain the deductions. For example:
>>
>>first record
>>col1 = 68
>>col2 = 35
>>col3 = 45
>>col4 = 0
>>col5 = 0
>>col6 = 0
>>col7 = "HLTH01 CCAPE C INS" ---> need to be parse to hlth01, ccape, c ins
>>
>>so HLTH01 = 68, CCAPE = 35 and C INS = 45
>>
>>
>>second record
>>col1 = 50
>>col2 = 60
>>col3 = 70
>>col4 = 80
>>col5 = 0
>>col6 = 0
>>col7 = "HLTH01FLXD CCAPE UTWAY" ---> need to be parse to hlth01, flxd, ccape, utway
>>
>>so HLTH01 = 50, FLXD = 60, CCAPE = 70 and UTWAY = 80
>>
>>
>>as you can see the names in col7 can run into each such as HLTH01 and FLXD. They can also contain spaces between name such as "C INS". How can I go about searching in the sting for a particular name and also determine what position those name are in reference to deduction columns 1 thur 6. I hope I haven't confused anyone. thanks
>>
>>Nick Patel
>
>Hi Nick,
>
>I think about one algorithm here, though I'm not sure, it's the best from optimization point of view (Ed Rauh definitely would suggest WSH algorithm :))
>
>Ok, these are the steps:
>1) Create two dimensional array of all possible codes, like:
>
>   dimension aCodes[100,2]
>   select code from LookCode into array aCodes
>   for i=1 to 100 && use number of codes instead of 100
>     store 0 to aCodes[i,2] && the second index would hold number of column
>   next
>
>2)
>   use yourtable
>   
>     for i=1 to 100
>       aCodes[i,2]=atc(aCodes[i,1],col7) && Position in COL7
>     next
>   >   =asort(aCodes,1,2) && Check help for asort, I'd like to sort by second index
>
>3) Array is sorted now by second index
>
>   lnCol=0
>   for i=1 to 100
>     if aCodes[i,2]>0 && Not empty second element
>        lnCol=lnCol1+1
>        store evaluate('col'+transform(lnCol)) to &aCodes[i,1] && Note use of macro here
>     endif
>    next
>
>I've just written this off the top of my head, so you should tweak this code a little. But you will get the idea.
>
>Hope this helps.

Nick,

Here is another algorithm.
1) Create a table for possible codes. (Lookups in this example)
2)
  select *, Lookups.code, atc(Lookups.code,col7) as Pos;
  from yourtable, Lookups;
   where atc(Lookups.code,col7)>0 order by Pos into cursor curTemps
   ** This select is tricky, so I'm not sure, if it would work
  if _tally>0
   lnCol=0
   scan
    lnCol=lnCol+1
    store evaluate('col'+transform(lnCol)) to &code && Note macro here 
   endscan
  endif
Or use the above arrays idea. I corrected the code a little.
If it's not broken, fix it until it is.


My Blog
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform