(cross-posted to midrange-l list also) List, I've just discovered a dilemma for which I need advice. I have custom compile CL setup for us to use from WDSC - one for CBLLE and one for SQLCBLLE. While testing a program that successfully compiled, I encountered some strange run-time issues that I traced back to the fact that a subsequent CALL of the program (executing it from the green-screen command line) would have program storage set the way it was left on the previous instance instead of being initialized. It was recommended to me to use ACTGRP(*CALLER) when I set up this CL. I think that using ACTGRP(*NEW) would solve the problem I encountered earlier, but here's the issue. We have programs that are "main" programs and we have those that are called "sub-routines". All of them will be bound COBOL. ACTGRP(*CALLER) would be correct for the sub-routines (since most of them will be called numerous times from a main program) while ACTGRP(*NEW) would be correct for the "main" programs. There is no easy way to determine (from the program name or type) which it is - main or sub-routine. So how do I handle this? Do I need one compile CL for a "main" program (with ACTGRP(*NEW)) and a second for sub-routine (with ACTGRP(*CALLER))? Or, is there a third setting that would correctly satisfy both? If so, how can I ensure/enforce that the programmers use the correct CL when they compile? This is not the kind of error that will surface right away. It could be that the solution to this is simple and straightforward but I don't see it (being new to the iSeries world). Your suggestions and advice will be greatly appreciated!