I don't think that the sort/extract function alone is justification for choosing dim arrays over dynamic arrays in programs.
Sure, for large array concepts/projects, DIM will prevail. But IMHO, for data READ/WRITE, dynamic appears just as fast as DIM. Maybe this doesn't apply to large systems with 100's of users. But I recall when the <> replaced the EXTRACT family of commands that typingly incouraged programmers to use MATREAD instead of READ. I've also run into problems with legacy systems where the data in a file exceeds a nominal maximum number of fields and I've spent (wasted) clients time/money changing DIM REC(100) to DIM REC(200). Who knows, in 20 years I'll be the errant programmer when 200 needs to go to 300. If there is a file defining INCLUDE that has the DIM, then it's an easy repair to move forward. If they're DIM'd separately in each program (with differing names), then it's a nightmare and bound to omit one. My 2 cents Mark Johnson ----- Original Message ----- From: "Baakkonen, Rodney A (Rod) 46K" <[EMAIL PROTECTED]> To: <u2-users@listserver.u2ug.org> Sent: Wednesday, July 23, 2008 1:24 PM Subject: RE: [U2] Basic SORT() Function not avail in UniVerse? > That is why we discourage developers from using dynamic arrays in > programs. Once they get to a certain size, performance goes out the > window. We have them store all intermediate program data in work files > that sort quickly when well sized. > > -----Original Message----- > From: [EMAIL PROTECTED] > [mailto:[EMAIL PROTECTED] On Behalf Of Dave Laansma > Sent: Wednesday, July 23, 2008 10:42 AM > To: u2-users@listserver.u2ug.org > Subject: RE: [U2] Basic SORT() Function not avail in UniVerse? > > I've been experimenting and discovered something. Instead of waiting > until you have all (say) 100,000 elements to sort at once, why not sort > them in blocks of (say) 5,000. So I wrote this little subroutine that > takes two parameters, a relatively small un-sorted table and the larger > sorted table and sorts the un-sorted into the sorted table. > > The calling program accumulates the unsorted ITAB and when it reaches a > certain watermark, say 5,000 elements, this subroutine is called and > those 5,000 get inserted into the master sorted OTAB, which initially is > <null>. > > My experimentation discovered this method to run extremely quickly > compared to waiting for the entire 100,000 element table to be built > before starting the sort. Try it out! > > SUBROUTINE HUB.SORT.B (ITAB,OTAB) > > X2 = DCOUNT(ITAB,@AM) > > FOR X = 1 TO X2 > ELEM = ITAB<X> > LOCATE ELEM IN OTAB BY "AL" SETTING PLACE ELSE NULL > OTAB = INSERT(OTAB,PLACE;ELEM) > NEXT X > > 9999 > > RETURN > > END > > David Laansma > IT Manager > Hubbard Supply Co. > Direct: 810-342-7143 > Office:810-234-8681 > Fax: 810-234-6142 > www.hubbardsupply.com > "Delivering Products, Services, and Innovative Solutions" > > > -----Original Message----- > From: [EMAIL PROTECTED] > [mailto:[EMAIL PROTECTED] On Behalf Of Jeff Marcos > Sent: Tuesday, July 22, 2008 7:35 PM > To: u2-users@listserver.u2ug.org > Subject: RE: [U2] Basic SORT() Function not avail in UniVerse? > > We had the same issue back in the 90's. So a clever guy (Ed) that worked > with us wrote a small C program (on Unix) to do the sort. This also > included controlling/dependants fields. Any universe program could call > it, passing in the variables and returned the items sorted. > > Speed is incredible. To this day it's still used and blitzes any > universe program methods in sorting large arrays. > > Regards, > Jeff Marcos > > -----Original Message----- > From: [EMAIL PROTECTED] > [mailto:[EMAIL PROTECTED] On Behalf Of Allen E. Elwood > Sent: Wednesday, 23 July 2008 6:59 AM > To: u2-users@listserver.u2ug.org > Subject: RE: [U2] Basic SORT() Function not avail in UniVerse? > > Hey, and don't forget to do a speed test. You know, because LOCATE is > coded > as part of the OS it just *might* be faster than bubble or speed sort > options. > > In fact, this was a topic on this list about 3 or 4 years ago and > someone > doing the speed test concluded LOCATE was in fact faster. > > And no I don't remember who it was, or have a link to the thread (sorry) > > :-) > > Allen > > -----Original Message----- > From: [EMAIL PROTECTED] > [mailto:[EMAIL PROTECTED] Behalf Of Israel, John R. > Sent: Tuesday, July 22, 2008 10:26 > To: 'u2-users@listserver.u2ug.org' > Subject: RE: [U2] Basic SORT() Function not avail in UniVerse? > > > Note that if the array is big, you would get much better performance by > loading it into a DIM array, so the sort of sort below, then put the > results > back into a dynamic array. > > Dynamic arrays are much easier to use, but when used wisely, dimensioned > arrays can be MUCH faster. This is true for any application, esp. > looping > through multi-values. > > John Israel > > > -----Original Message----- > From: [EMAIL PROTECTED] > [mailto:[EMAIL PROTECTED] On Behalf Of DAVID WADEMAN > Sent: Tuesday, July 22, 2008 1:00 PM > To: u2-users@listserver.u2ug.org > Subject: RE: [U2] Basic SORT() Function not avail in UniVerse? > > This is a UniData subroutine, but should work .... > > SUBROUTINE B42.SORT.ARRAY(SORTED,ARRAY) > * Bubble sort the elements of a dynamic array > * Created by: David Wademan > * Creation Date: 01/05/05 > SORTED="" > VALUES = DCOUNT(ARRAY,@VM) > LOOP > CHANGES = 0 > FOR X = 2 TO VALUES > * For each adjacent pair > ELEMENT1 = ARRAY<1,X-1> > ELEMENT2 = ARRAY<1,X> > > IF ELEMENT2 < ELEMENT1 THEN > * Swap if pair out of sequence > ARRAY<1,X> = ELEMENT1 > ARRAY<1,X-1> = ELEMENT2 > CHANGES = 1 > END > NEXT X > WHILE CHANGES DO REPEAT > SORTED=ARRAY > RETURN > > -----Original Message----- > From: [EMAIL PROTECTED] > [mailto:[EMAIL PROTECTED] On Behalf Of Baker Hughes > Sent: Tuesday, July 22, 2008 10:51 AM > To: 'u2-users@listserver.u2ug.org' > Subject: [U2] Basic SORT() Function not avail in UniVerse? > > Hey, > > I'm needing to SORT a dynamic array and apparently UniVerse doesn't have > this > Function. > > Other MV implementations have this, such as D3 - "The sort() function > sorts an > attribute or value mark delimited str.exp in ascending order." [from > ePick] > > There was also a user exit u1072 that did the same thing. > > Does anyone have a work around or fast path to same thing .... maybe I'm > missing something but can't see this in UV docs. > > -Baker > ------- > u2-users mailing list > u2-users@listserver.u2ug.org > To unsubscribe please visit http://listserver.u2ug.org/ > ------- > u2-users mailing list > u2-users@listserver.u2ug.org > To unsubscribe please visit http://listserver.u2ug.org/ > ------- > u2-users mailing list > u2-users@listserver.u2ug.org > To unsubscribe please visit http://listserver.u2ug.org/ > ------- > u2-users mailing list > u2-users@listserver.u2ug.org > To unsubscribe please visit http://listserver.u2ug.org/ > > The information contained in this email and any attached files are > strictly > private and confidential. This email should be read by the intended > addressee > only. If the recipient of this message is not the intended addressee, > please > call Corporate Express Australia Limited on +61 2 9335 0555 or Corporate > Express > New Zealand Limited on +64 9 279 2555 and promptly delete this email and > any > attachments. The intended recipient of this email may only use, > reproduce, > disclose or distribute the information contained in this email and any > attached > files with Corporate Express' permission. If you are not the intended > addressee, > you are strictly prohibited from using, reproducing, disclosing or > distributing > the information contained in this email and any attached files. > Corporate > Express advises that this email and any attached files should be scanned > to > detect viruses. Corporate Express accepts no liability for loss or > damage > (whether caused by negligence or not) resulting from the use of any > attached > files. > ------- > u2-users mailing list > u2-users@listserver.u2ug.org > To unsubscribe please visit http://listserver.u2ug.org/ > ------- > u2-users mailing list > u2-users@listserver.u2ug.org > To unsubscribe please visit http://listserver.u2ug.org/ > ------- > u2-users mailing list > u2-users@listserver.u2ug.org > To unsubscribe please visit http://listserver.u2ug.org/ ------- u2-users mailing list u2-users@listserver.u2ug.org To unsubscribe please visit http://listserver.u2ug.org/