Qget_pointer() is quite an expensive call to make, as it entails either database or workfile access. This becomes noticeable if a program makes more than a few calls to the routine. For example, you might have set up a function which made calls to Qget_pointer() for all the variables whether or not they are needed in this C Exit.
If a procedure body C exit is only called from one program, you can assume the pointers returned by Qget_pointer() will always be the same. In particular, if you use the architecture for a generic PROGRUN simply to avoid the need for recompilation, then you can initialise the pointers just once. This achieves the flexibility of the generic PROGRUN, but the C Exit calling mechanism is almost as efficient as in a dedicated PROGRUN.
You must not assume that Qget_pointer() will always return the same value for a variable used in several programs.