We use the indirect call method to allow a user to create, for instance, an ITEMPROC subroutine. The subroutine implements a defined interface and the name is provided in the command syntax, so we parse out the subroutine name and call it at run-time. There's no way at compile time that we can anticipate the names that a user might choose for their subroutines that implement our interface.
So, providing an open API is a very real case where the CALL @ syntax is critical. -----Original Message----- From: [email protected] [mailto:[email protected]] On Behalf Of Martin Phillips Sent: December-04-12 6:13 AM To: 'U2 Users List' Subject: Re: [U2] Advantage of indirect call in BASIC Hi, A direct call has to be looked up once in the catalogue system when it is first used. Subsequent calls will be fast because the link has been created. However, if the call is itself in a subroutine and that subroutine exits, it starts clean again on next call and hence may need to rebuild the link. I say "may need to" because there are various layers of caching that speed all this up. An indirect call starts out with a string variable. The first call will do the catalogue search, link the program, and replace the string with a variable that acts as a fast link to the subroutine. The link only needs to be rebuilt if the variable is overwritten or discarded. This means that putting the indirection variable in a common block that is only initialised once will do the catalogue search only once. Resetting the variable (local or common) before every call will require the search every time, though again caching may help. Long ago, I did some performance comparisons on UV when delivering an Internals course. I have lost the results but I seem to recall that it was well worth using links in common for subroutines that are called enormous numbers of times. Martin Phillips Ladybridge Systems Ltd 17b Coldstream Lane, Hardingstone, Northampton NN4 6DB, England +44 (0)1604-709200 -----Original Message----- From: [email protected] [mailto:[email protected]] On Behalf Of David A. Green Sent: 04 December 2012 14:01 To: 'U2 Users List' Subject: Re: [U2] Advantage of indirect call in BASIC Does anyone have any current benchmarks on this type of call? Several years ago when I tested it in UniData it was very slow call compared to using the name. David A. Green (480) 813-1725 DAG Consulting -----Original Message----- From: [email protected] [mailto:[email protected]] On Behalf Of Wjhonson Sent: Monday, December 03, 2012 5:39 PM To: [email protected] Subject: [U2] Advantage of indirect call in BASIC I've not encountered this is my career previously, but now I'm seeing a system written almost entirely with the use of indirect calls in Universe BASIC. That is SOURCE = "*SOME.PROGRAM" ... CALL @SOURCE(INPUTS) Is there some advantage to the use of indirect calls that a system would be written entirely in this fashion? _______________________________________________ U2-Users mailing list [email protected] http://listserver.u2ug.org/mailman/listinfo/u2-users _______________________________________________ U2-Users mailing list [email protected] http://listserver.u2ug.org/mailman/listinfo/u2-users _______________________________________________ U2-Users mailing list [email protected] http://listserver.u2ug.org/mailman/listinfo/u2-users _______________________________________________ U2-Users mailing list [email protected] http://listserver.u2ug.org/mailman/listinfo/u2-users
