-
aktuellen AS400 User in eine variable schreiben in einem RPG Programm
Hallo zusammen,
ich bin gerade dabei ein RPG zu schreiben, in dem ich den aktuell angemeldeten User abfragen will und anschließend an eine variable übergeben möchte!
kann mir jemand behilflich sein, wie ich diese Information abgefragt kriege im RPG.
Gruß
der Newbie
-
Der aktuelle User steht in der Programm-Status-Datenstruktur, die man in jedes Programm einbinden kann auf Position: 358
Birgitta
-
Hallo,
in der Programm-Status Datenstruktur steht der User:
D ##PGMSTAT SDS PGM-Status-DS
D ##JOBUSER 254 263 Job User
D ##CURUSER 358 367 Current User
Nimm daraus den, den du brauchst. Wir verwenden fast immer den current user. Es gibt ja Jobs, die unter einem speziellen User, z.B QUSER laufen. Der interessiert meistens nicht. Mit dem Current User bekommst du den "echten" User.
Dieter
-
Hallo Birgitta,
kleiner Tippfehler: Du meinst sicherlich Position 358.
Dieter
-
Yep! Knap daneben ist auch vorbei!
Korrigiert!
Birgitta
-
Dies ist nur die halbe Wahrheit!
In der SDS steht der Jobuser aus der JobId JobUser/JobName/JobNr.
Wird der User z.B. durch SQL (ins besonders bei ODBC-Job's) oder API QSYSETPH geändert betrifft dies nicht den Jobnamen.
Den tatsächlichen angemeldeten User erfährt man durch
a) RTVJOBA
b) API
c) SQL per "set :MyUser = current user"
-
Die Frage ist, wann die SDS aktualisiert wird.
Meines wissens nach nur beim Aufruf der *INZSR (die gibt's auch wenn man sie selber nicht verwendet).
Ändere ich den USER per SQL, wird die SDS aktualisiert?
Wenn ich das Programm mit *INLR = *OFF verlasse und das Programm wieder aufgerufen wird, ändert sich die SDS wenn der Current User sich geändert hat?
Hauptproblem ist die Wiederverwendung von JDBC/ODBC-Job's (QZDASOINIT) nach der Trennung eines Clients, wenn hier z.B. Triggerprogramme noch aktiv bleiben und bei der Verbindung mit dem nächsten Client wieder aufgerufen werden.
Ich nehme mal an, dass die SDS dann nicht aktualisiert ist.
Meine Erfahrung zeigt, dass nur per SQL/API der tatsächliche Current User aktuell ist.
-
Guten Morgen.
Es gibt auch noch die Möglichkeit eine 10A Variable mit Inz(*User) zu definieren - vielleicht weiß Fuerchau ob man sich auf diesen Wert verlassen kann.
http://www-01.ibm.com/support/knowle...08537.htm#dinz
Specifying INZ(*USER) intializes any character field or subfield to the name of the current user profile. Character fields must be at least 10 characters long. If the field is longer than 10 characters, the user name is left-justified in the field with blanks in the remainder.
LG,
Sam
-
@Baldur: Hast Du Dir die Antworten von Dieter und mir durchgelesen?!
Aus der SDS kann man den Current User ermitteln NICHT NUR den Job-User!
Wir arbeiten mit kleinen (CGI)Programmen und ändern den Benutzer (meist NICHT on the fly) und erhalten über die SDS den richtigen Current User (und nicht QTMHHTTP!).
Wenn's nicht reicht, so liefert SQL einige Special Registers über die man SESSION_USER, CURRENT_USER und SYSTEM_USER ermitteln und unterscheiden kann kann.
Birgitta
-
Kann ich nichts zu sagen, dies scheint eine der Neuerungen zu sein, das Handbuch sagt da nicht viel zu.
Allerdings würde ich das dann weniger in einer INZ verwenden (nur beim 1. Aufruf wird initialisiert) sondern in einem EVAL zur Laufzeit.
Vielleicht probierts ja mal einer aus und teilt das Ergebnis hier mit.
-
Mit dem Lesen ist das so eine Sache wenn man sich gerade in der Beantwortung befindet.
Ab welchem Release der CurrentUser in der SDS steht weiß ich nicht.
Es gibt auch keine Doku wann die SDS dahingehend aktualisiert wird (siehe oben).
In meinen alten Programmen V4R5 verwende ich halt meistens das API bzw. SQL.
Dies funktioniert nun bis heute ohne Probleme.
Ich lasse mich ja gerne belehren wenn der Beweis angetreten wird. Ich kann halt nicht alles ausprobieren ins besonders Neuerungen ab V6/V7 kann ich zum größten Teil nicht nutzen.
-
Ich glaub folgender Beitrag von Barbara Morris bringt etwas Licht ins Dunkel:
That's a documented difference between OPM and ILE. See point 9 here http://publib.boulder.ibm.com/infoce...c092507488.htm. The current-user-profile subfield is in positions 358-367 for ILE.
You can also get the current user profile by initializing a 10A variable with INZ(*USER). If you put that in a subprocedure, the INZ(*USER) value will get fetched fresh each time you call the subprocedure. With the PSDS, the value is only fetched during the *INIT phase of the module, so you'd have to set on LR and call your program again to get the value refreshed.
As far as we know, it was an undocumented feature for OPM to have the job-user subfield filled with the current user profile. When this difference was discovered, we thought that it was more important to keep the 26-byte job name/user/number available in the PSDS, rather than to maintain the OPM/ILE compatibility (and aside from that, by the time it was discovered around v4r2, there was already a release-to-release compatibility issue for ILE). So we created a separate PSDS subfield for the current user profile.
https://www.ibm.com/developerworks/c...4733323&ps=100
Similar Threads
-
By PFR in forum NEWSboard Programmierung
Antworten: 17
Letzter Beitrag: 10-06-14, 08:40
-
By hartmuth in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 02-05-14, 08:42
-
By Robi in forum IBM i Hauptforum
Antworten: 4
Letzter Beitrag: 19-11-13, 11:19
-
By activ in forum IBM i Hauptforum
Antworten: 1
Letzter Beitrag: 24-05-02, 07:32
-
By Markus Ralf in forum IBM i Hauptforum
Antworten: 2
Letzter Beitrag: 08-08-01, 14:29
Tags for this Thread
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks