<DIV>
<DIV>
<DIV>What magic potion did you sprinkle to accomplish this? I am <BR>> not sure what you <BR>> mean by "sub classing" filePro index or key files. What <BR>> "class" in what object <BR>> oriented language are you using to directly manipulate <BR>> filepro key and index <BR>> files that you can "sub-class"?<BR>> <BR>> Who/What/When/(I know why)/How did you do this?<BR>> <BR><BR>| I second the question--please provide details (and ordering <BR>| information :-) regarding the .NET and Java integration.<BR><BR>| Bob Haussmann<BR>| Tabor Children's Services, Inc.</DIV>
<DIV><BR> </DIV>
<DIV>First there is no magic</DIV>
<DIV> </DIV>
<DIV>Second the solution is not in filePro (so I am not going to push this here). Sub Classing refers to (and not limited to ) the C++,VB, and the .NET world.</DIV>
<DIV> </DIV>
<DIV>We made a .net program (web service) that reads the data sends it back as and xml string. (aka one - java / html / asp soulution)</DIV>
<DIV> </DIV>
<DIV>Filepro is flat text, with all the blanks, contiguous data.
<DIV>That means "Fred Smith " is in the table as </DIV>
<DIV> </DIV>
<DIV>Fred Smith 124 any street NY NY USA likes dogs and cats </DIV>
<DIV>"You get the picture"</DIV>
<DIV> </DIV>
<DIV>The first 20 bites of each record is all the encrypted stuff (creation date, delete marker, freechain etc). The next x number of bytes is in the "map" of each table</DIV>
<DIV> </DIV></DIV>
<DIV>
<DIV>to respect this forum as a filepro forum I will give you a recent filePro solution that may explain how this data actualy looks. Its not that dificult. </DIV>
<DIV> </DIV>
<DIV>I have a file (100,000 records)I want to rebuild. It has 10,000 blank / deleted records. If I rebuild it using table itself I will loose l my @cd, @cb etc. and I want that information, I do not want that much dead space - remember this is not 1977 we don't need to pre allocate disk space.</DIV></DIV>
<DIV> </DIV>
<DIV>the total record length is 285 (option 1, pick the table, the record size is nicely printed at the bottom of the screen)</DIV>
<DIV> </DIV>
<DIV> 1 - Create a non filepro file that points to the filepro table in question - we will call it {table} if </DIV>
<DIV> the filepro name is CorperateCustomers then it would be </DIV>
<DIV> "/filepro/CorporateCustomers/key"</DIV>
<DIV> so - /filepro/{table}/key</DIV>
<DIV> </DIV>
<DIV> 2 - create a target (non filepro) table 305 bytes ( 20 header + 285 data )</DIV>
<DIV> (20) bytes old header information </DIV>
<DIV> (285) bytes old data </DIV>
<DIV> we will call this one /working/newtable.txt</DIV>
<DIV> </DIV>
<DIV> 3 - split it into 3 fields</DIV>
<DIV> (1) byte - delete marker (since the record is never deleted only cleared)</DIV>
<DIV> (19) bytes - the rest of the header information</DIV>
<DIV> (285) the actual data</DIV>
<DIV> </DIV>
<DIV> 4 - Read the original table. Check the firs byte if it is 1 it is deleted, then check if 3 (the </DIV>
<DIV> data) is blank. if both these are false do a look up to the target (2) table and write to the </DIV>
<DIV> free record.</DIV>
<DIV> </DIV>
<DIV>THAT'S IT</DIV>
<DIV> </DIV>
<DIV>Code for table in (1)</DIV>
<DIV> </DIV>
<DIV> if: asc(1) eq "0" ' Check if this is a deleted record</DIV>
<DIV> Then: end ' if yes than we dint want the record</DIV>
<DIV>
<DIV> if: ' create a dummy field to check the record length</DIV>
<DIV> Then: aa = {3 ' take all the blanks space out</DIV>
<DIV> if: aa eq "" ' was there anything in there </DIV>
<DIV> Then: end ' if yes than we dint want the record</DIV>
<DIV> if: </DIV>
<DIV> Then: lookup NewFile = _RebuildTarget r=free -n </DIV>
<DIV> if: not NewFile ' This should never happen </DIV>
<DIV> Then: end ' but - caution never hurt anyone </DIV>
<DIV> if: </DIV>
<DIV> Then: NewFile(1) = 1{2 ' Put the header back together into the new</DIV>
<DIV> if: </DIV>
<DIV> Then: NewFile(2) = 3 ' fill the new data section from the old</DIV>
<DIV> if:
<DIV> Then: update NewFile ' Write the data
<DIV> if: </DIV>
<DIV> Then: end</DIV>
<DIV> </DIV>
<DIV> </DIV>
<DIV>(and yes this is the only acceptable way to submit a filepro app here, no 200 things on the same line. How do you read that stuff?. We even make them indent!!)</DIV>
<DIV> </DIV>
<DIV> 5 - <STRONG>Make a backup of "/filepro/{table}/key" no on is perfect !!</STRONG></DIV>
<DIV> copy /working/newtable.txt to /filepro/{table}/key</DIV>
<DIV> re index the file</DIV>
<DIV> </DIV>
<DIV>You will find the blank records are gone the data is all good. The simple answer if its just a flat file. </DIV>
<DIV> </DIV>
<DIV>The .net solution treats it the same way open the flat file, open the map cut it into fields send it back to the application. I did have to give good valid names in the text of each field return that record set to the .net app the data in a business layer the same as it does the sql. Because its .net the filepro data resides on the web server to use java we built it as a web service to accept http requests. These are not hard in .net they are way beyond filepro.</DIV>
<DIV>BUT again its just flat data!!</DIV>
<DIV> </DIV>
<DIV>We stopped adding to the Filepro table, everyone else can read it. To write the index file has to be read in and altered this is also not difficult outside of filepro. I might consider re writing that piece.</DIV>
<DIV> </DIV></DIV></DIV></DIV></DIV></DIV><p>
                <hr size=1>Yahoo! Sports<br>
<a href="http://pa.yahoo.com/*http://us.rd.yahoo.com/evt=33539/*http://football.fantasysports.yahoo.com?ovchn=YAH&ovcpn=Integration&ovcrn=Mail+footer&ovrfd=YAH&ovtac=AD ">Rekindle the Rivalries. Sign up for Fantasy Football</a>