If you encounter this, it is probably a Prime INFORMATION (PI) legacy code.  As 
this was a commonly used convention in natively developed PI applications 
(rather than PICK-ported apps). 

As globally catalog'd object was a typical naming convention for "production" 
object in PI. Plus as mentioned by others it was also primarily for performance 
reasons. Some of those performance reasons still exist. If you don't resolve 
the subroutine name in your BASIC code, then the VOC file has to be referenced 
to find out the "true" catalog name. If you define and call a variable - if 
by-passing the VOC calling entirely. Of course there were many non-native 
applications running on PI from the PICK world that never took any advantage of 
this and many other PI features. 

Legacy PICK code tends to be account catalog centric (ie., *MYACCT*MYOBJECT). 
So typically doesn't use this convention, we use this convention to define test 
/ non-production object code in the catalog space.

Hence, we also use it to load/deignate different versions of the object code 
dynamically. Our account initialisation code defines "*CATALOGNAME" as the 
production code. When initialising on logon to the UV account, It then checks 
the local VOC for any different definitions in the local account - and asks the 
test user (not end-users) if they wish to local that object version. This 
allows versions of the code to be loaded for different users - for testing and 
pre-implementation purposes - on demand. For example, we run to run 
"*V1.1*SOME.PROGRAM" rather than "*SOME.PROGRAM".

This is especially useful if you share your single UV environment with multiple 
accounts and versions of your software. This saves having change VOC entries 
too, but of course you can do that too. But then if you have some users that 
don't what or need to test that version - then how would you control/enforce 
that?

Regards,
David

-----Original Message-----
From: u2-users-boun...@listserver.u2ug.org 
[mailto:u2-users-boun...@listserver.u2ug.org] On Behalf Of Wjhonson
Sent: Tuesday, 4 December 2012 11:39 AM
To: u2-users@listserver.u2ug.org
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?

************** IMPORTANT MESSAGE *****************************       
This e-mail message is intended only for the addressee(s) and contains 
information which may be
confidential. 
If you are not the intended recipient please advise the sender by return email, 
do not use or
disclose the contents, and delete the message and any attachments from your 
system. Unless
specifically indicated, this email does not constitute formal advice or 
commitment by the sender
or the Commonwealth Bank of Australia (ABN 48 123 123 124) or its subsidiaries. 
We can be contacted through our web site: commbank.com.au. 
If you no longer wish to receive commercial electronic messages from us, please 
reply to this
e-mail by typing Unsubscribe in the subject line. 
**************************************************************



_______________________________________________
U2-Users mailing list
U2-Users@listserver.u2ug.org
http://listserver.u2ug.org/mailman/listinfo/u2-users

Reply via email to