|
Hi Buck, et.al. -
It's an interesting design question. If you pass a pointer to a global MODS, then in reality you can simply omit the pointer and have the subprocedure directly manipulate the MODS. On the other hand, having a pointer in the parameter list shows your intent to use the data structure in the subprocedure. I think I would pass the pointer.
I agree with passing the pointer and using a local MODS based on that pointer. Among other things, it allows the procedure to be put into a service program or different module without requiring any changes, as long as everything else in the procedure also is passed. The one gotcha to watch for: %addr(MODS) passes a pointer to the CURRENT occurrence of the MODS. So if the procedure wants to use all of the occurrences in the MODS, rather than just one, you need to set the current occurrence to the first occurrence before calling the procedure. Another option would be to initialize a pointer to the beginning of the MODS and just pass that pointer all of the time instead of using %ADDR. (Can you guess how I know about this? <G>) Ken Opinions expressed are my own and do not necessarily represent the views of my employer or anyone in their right mind.
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2025 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].
Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.