The shipped value for the system value QSTRUPPGM is QSYS/QSTRUP.
If you cannot find the souce for this, you can do retrieve the source.
Then, I would make a copy of this in anopther library.
I would modify so the program will do everything I need done when an IPL is done.
Compile this source.
Then change the system value to call this program.
Depending on the security level of your system, you will probably need QSECOFR authority to change this system value.
<i>The system value QSTRUPPPGM consists of the subsytems?</i>
Not quite. First –
<li>The QSTRUPPGM system value simply holds the name of a program. That’s all it does. The program can do anything that you can code.</li><li><b>The purpose</b> of the system value is to hold the name of the program that you want to run first after you IPL your system.</li>
You can see that what the system value actually does and what the purpose of it is are not quite the same. The reason they’re not the same has to do with some other parts of the system and how Work Management works on your system.
The next piece to look at is the QCTLSBSD system value — the ‘Controlling subsystem’. This system value contains the name of the ‘controlling’ subsystem. On almost all systems, the name will be either QCTL or QBASE because those are the names that IBM uses for the two most common configurations. The controlling subsystem is the one that the system starts when you IPL your system. You can set up any subsystem that you want.
If you look at your current controlling subsystem description with the DSPSBSD command, you can see that it probably has at least one ‘autostart job’ entry. An autostart job entry identifies a job that is run automatically when that subsystem starts. You can create any autostart jobs for any subsystems you want. Those jobs will run when those subsystems start.
The default autostart job for the controlling subsystem is named QSTRUPJD and it refers to a job description named QSTRUPJD in library QSYS. You can use any job name and reference any job description you want. The default QSTRUPJD job description names a user profile of QPGMR and causes program QWDAJPGM from library QSYS to run. You can name any user profile and any program you choose. The profile needs enough authority to run the program and possibly enough authority to do what the program tries to do (if the program can’t adopt *OWNER authority).
The default QWDAJPGM program retrieves the QSTRUPPGM system value and attempts to transfer control to it. If either of those commands fail, the program sends message CPI0915 and ends. You can have your autostart programs do whatever you can code. The default program is QSTRUP in library QSYS.
This is the point where the QSTRUPPGM system value finally gets involved because it holds the name of the program that gets called at this point. As you can tell, there are lots of things you can do to customize how things start up on your system.
<b>But…</b> You probably don’t want to do anything really outside of how IBM set the defaults. Any changes will seriously confuse anyone looking at your system. The normal startup sequence should lead to the QSTRUPPGM system value, and the program named in there should do the tasks that you want to happen when your system starts.
<i>how is it designed and can anyone add/modify this system program</i>
The simplest way to learn how it is designed and what it usually does is by running this command:<pre>RTVCLSRC QSYS/QSTRUP mylib/QCLSRC</pre>
That will place a copy of the CL source from the IBM version of the program into a source file named QCLSRC in a library named ‘mylib’. Use the appropriate library for your work.
The member name will be QSTRUP if you leave the default, but you can give any member name you want in the SRCMBR() parameter of the command. If you’re going to recompile it, you probably should give it a different name. That will help avoid any confusion with the default program from IBM. The default program should be left available until and unless you decide that it can and should be deleted.
Review the source that you retrieve. You’ll probably want to format most of the lines and insert blank lines to make it more readable. (The RTVCLSRC command isn’t very useful for making nice neat copies.)
After you see how IBM set the default program up, some of your thoughts about how it’s designed should clear up.
As for who can modify the program, use the DSPOBJAUT command to see who has authority to it on your system. It’s just another object, and object authority works for it like it does for everything else. As for the system value, I believe that anyone who has *USE authority to the CHGSYSVAL command can change the value. I’m not aware of any other needed authority. Again, use DSPOBJAUT for the CHGSYSVAL command to check object authority for it.
Also note that a user must have authority to create programs before any new program can be compiled. Even if there was authority to change the QSYS/QSTRUP program, a new program couldn’t be put in its place without more authority, such as authority to the CRTPGM or CRTCLPGM commands.