Hello,
Am 10.08.2025 um 23:19 schrieb Jon Paris <jon.paris@xxxxxxxxxxxxxx>:
If you want to discuss this, then this is probably not the right place.
Do you know a better place? Maybe the main Midrange List? On the other hand, this discussion implicitly revolves around RPG. I have not yet learned enough COBOL to be comfortable with it, and I have not yet found out how to end a C program without deactivating it. RPG is the language which I mainly use when programming on OS/400 on my 150.
But just to explain my "horror" at *New as a default. It guarantees the AG is torn down. And AG creation is a relatively expensive process. Not quite as expensive as starting a job, but close, in part because it not only forces AG creation each time but also forces reactivation of any service programs, which again has a cost.
Yes, of course it has. Starting an average self-developed application program on my 150 takes 1 to 2 seconds. Completely acceptable to me.
I'm well aware that frequent calls of external programs in tight loops kills performance when using actgrp(*new). That's why I explained my use case: Interactive applications, no repetitive calling of external applications in loops.
Maybe there is some misunderstanding about my use cases vs. your real world experiences? I'm a hobbyist, and my system usually has just one active user: Me. Implementing the implications of "think big" is something I leave to those who need to deal with such environments. I have no intention to become a professional programmer, or IBM i application implementer.
The majority of my applications are tiny, simple, self-contained *pgms. No service programs. I'm rarely CALLing a secondary program, but if I do, it's to keep the code base simple. I don't use the ILE features yet, because I don't have a compelling use case. Heck, if I had understood the significance of LR in the first place, I'd probably never had the need to use AG(*new) at all but run everything in the default AG.
I have planned to experiment with modular development by mixing C and RPG code some time in the future. Some things are done easier in C, some are done easier in RPG. Note: This is an opinion, not a fact.
Does that help you in "unscaring" my default use of actgrp(*new)? :-)
Besides that, I allege that starting Java applications and developing/running applications in Node JS contrary to compiled and more efficient languages has much more performance impact than using actgrp(*new) for occasional applications starts.
It is likely that if this were a "solution" for your problem, then you were committing one or more of ILE's 7 Deadly Sins.
This sounds very dogmatic. :-)
Probably the first one.
Definitely not. Because so far I'm always using DFTACTGRP(*NO) ACTGRP(*NEW). You could allege, I'm committing sin 3, but I counter that my use case is one of those "few and far between", as quoted from your sin 3. :-)
You can find them on IBM's support sites now (I'm proud of that!) or read it here: https://authory.com/JonParisAndSusanGantner/The-Seven-Deadly-Sins-of-ILE-a0f4e66fe37a745c8bdf7cbc95f0b365f
Thanks for the link. Most of what's written there simply doesn't apply in my case.
But you managed to make me think if using the IBM default (for V4R5) of using dftactgrp(*yes) and setting LR on before RETURN might indeed give me a slight gain in application start time. On the other hand, changing a dozen applications, recompile, and update the external cvs/git repositories might require about one hour for saving maybe 0.5 to 1 seconds per program call… not sure if this is worthwile. :-)
:wq! PoC
As an Amazon Associate we earn from qualifying purchases.