Hi Gary,
You can use the QUSRJOBI API. If you perform a profile swap it will
not be reflected in the program status data structure. It will be
reflected in the job's information.
Sorry, this simply isn't true.
I find it odd that you'd say something like this after such luminaries
as Barbara Morris have already pointed out that RPG/400 will show the
current user profile in positions 254-263, and that others (including
Barbara) have pointed out that in ILE RPG, it's in positions 358-367.
So in either version of RPG, you can get the current user profile from
the PSDS, even in a swapped profile environment!
Here's something you can try... this is a simple CL program that swaps
profiles, calls an RPG program, and then swaps back:
PGM
DCL VAR(&ORIGHANDLE) TYPE(*CHAR) LEN(12)
DCL VAR(&HANDLE) TYPE(*CHAR) LEN(12)
/* SAVE ORIGINAL HANDLE AND SWITCH TO QUSER */
CALL PGM(QSYGETPH) PARM(*CURRENT *NOPWDCHK &ORIGHANDLE)
CALL PGM(QSYGETPH) PARM(QUSER *NOPWDCHK &HANDLE)
CALL PGM(QWTSETP) PARM(&HANDLE)
/* CALL RPG/400 PROGRAM */
CALL RPG400PGM
/* SWITCH BACK AND FREE UP THE HANDLES */
CALL PGM(QWTSETP) PARM(&ORIGHANDLE)
CALL PGM(QSYRLSPH) PARM(&ORIGHANDLE)
CALL PGM(QSYRLSPH) PARM(&HANDLE)
ENDPGM
The OP was asking about RPG/400 (OPM) rather than today's RPG. Barbara
said that positions 254-263 would work. So let's try it. Here's a
trivial program that displays those positions of the PSDS, put this
program in place of the "CALL RPG400PGM", above:
I SDS
I 254 263 USERID
C USERID DSPLY
C MOVE *ON *INLR
Again, this is an OPM (RPG/400) program. Make sure you use source type
RPG and compile it with CRTRPGPGM.
Call it (using the CL program, above) and you get this:
DSPLY QUSER
So it's showing me the swapped-to user profile. Right?
Let's try it with ILE RPG:
d SDS
d ORIGUSER 254 263
d CURUSER 358 367
/free
dsply ('Orig=' + OrigUser + ' '
+'Curr=' + CurUser );
*inlr = *on;
Change the CL program, above, to call this ILE RPG program instead of
the OPM one. Then re-run it, and you'll get this (with your user
profile in place of mine)
DSPLY Orig=KLEMSCOT Curr=QUSER
So, clearly, you can get the current user profile from the PSDS, even
with profile swapping, in either language.
Having said that... When coding in ILE RPG, I much prefer INZ(*USER) on
the D-spec. It's just a lot easier to read and more intuitive than
PSDS. But, PSDS _does_ work...
As an Amazon Associate we earn from qualifying purchases.