[NEWSboard IBMi Forum]
Seite 1 von 2 1 2 Letzte
  1. #1
    Registriert seit
    Jun 2014
    Beiträge
    25

    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

  2. #2
    Registriert seit
    Aug 2001
    Beiträge
    2.869
    Der aktuelle User steht in der Programm-Status-Datenstruktur, die man in jedes Programm einbinden kann auf Position: 358

    Birgitta
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 4. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  3. #3
    Registriert seit
    Jan 2012
    Beiträge
    1.102
    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

  4. #4
    Registriert seit
    Jan 2012
    Beiträge
    1.102
    Hallo Birgitta,
    kleiner Tippfehler: Du meinst sicherlich Position 358.
    Dieter

  5. #5
    Registriert seit
    Aug 2001
    Beiträge
    2.869
    Yep! Knap daneben ist auch vorbei!
    Korrigiert!

    Birgitta
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 4. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  6. #6
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    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"
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  7. #7
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    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.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  8. #8
    Registriert seit
    Jul 2011
    Beiträge
    31
    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

  9. #9
    Registriert seit
    Aug 2001
    Beiträge
    2.869
    @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
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 4. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  10. #10
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    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.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  11. #11
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    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.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  12. #12
    Registriert seit
    Jul 2011
    Beiträge
    31
    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

  1. Umformatierung von einem Textfeld in eine Datum Feld
    By PFR in forum NEWSboard Programmierung
    Antworten: 17
    Letzter Beitrag: 10-06-14, 09:40
  2. Antworten: 2
    Letzter Beitrag: 02-05-14, 09:42
  3. wrkusrjob für 'Aktuellen' Benutzer
    By Robi in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 19-11-13, 12:19
  4. cobol programm auf as400 speichern
    By activ in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 24-05-02, 08:32
  5. Alarm aus einem RPG-Programm
    By Markus Ralf in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 08-08-01, 15:29

Tags for this Thread

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •