PDA

View Full Version : PC5250 Sitzungsname in RPG oder C Programm ermitteln



Seiten : [1] 2

sawatzki
06-08-13, 14:00
Ich möchte gerne den PC5250 Sitzungsnamen (A, B, C ... Z) ermitteln, unter dem die aktuell vom Benutzer verwendete Sitzung ausgeführt wird. Ist dies möglich ?
Die Information wird im Prinzip per TCP/IP an den Clientrechner geschickt und dort verwendet, um den "Rückweg" zu realisieren.

camouflage
06-08-13, 14:36
CL:

RTVJOBA JOB(&DEVD)

10 Stelliges Feld für DEVD

Hoffe das hilft...

andreaspr@aon.at
07-08-13, 07:31
Hallo,

in RPG kannst du dir das über die program status-data-structure holen:
Program Status Data Structure (http://publib.boulder.ibm.com/iseries/v5r1/ic2924/books/c092508381.htm)

lg Andreas

sawatzki
07-08-13, 12:30
Leider hilft das nicht weiter, da dieser Jobname nicht von "aussen" ansprechbar ist. PC5250 Sitzungen haben immer einen einstelligen Sitzungsnamen, es kann bis zu 26 Sitzungen geben. Die erste geöffnete Sitzung ist in der Regel die Sitzung A, die zweite B usw.


CL:

RTVJOBA JOB(&DEVD)

10 Stelliges Feld für DEVD

Hoffe das hilft...

cbe
07-08-13, 17:43
PC5250 Sitzungen haben immer einen einstelligen Sitzungsnamen, es kann bis zu 26 Sitzungen geben. Die erste geöffnete Sitzung ist in der Regel die Sitzung A, die zweite B usw.


Das macht Client Access, wenn man bei Sitzung konfigurieren das Häkchen bei "Doppelte Namen auf dieser WS verhindern" setzt.

Setzt man dort das Häkchen bei "Doppelte Namen auf anderen WS verhindern", dann ist das letzte Zeichen eine Ziffer

Man kann beide Häkchen setzen, dann gibt es z.B. userA1

Oder auch kein Häkchen, dann kann der User zwar nur 1 Sitzung öffnen, aber eine "Sitzungsnummer" gibt es dann gar nicht.


Unter der Annahme, dass die Workstation-ID normalerweise der Username ist, könntest Du zeichenweise Usernamen + DEVD vergleichen, und wenn der User zu Ende ist, und das nächste DEVD-Zeichen ein Buchstabe, dann ist die Wahrscheinlichkeit groß, dass dies die gewünschte Sitzungsnr ist.

Oder Du suchst von rechts den ersten Buchstaben, wenn die DEVD nicht "QPADEVxxxx" ist

Meinst Du sowas in der Art?
100% sicher ist das alles nicht, aber evtl. reicht Dir das so?

Gruß
Christian

Anton Gombkötö
08-08-13, 08:01
wenn wir wissen, WAS genau erreicht werden soll. Vielleicht gibt es ein anderes, vielleicht sogar besseres, WIE ...

sawatzki
08-08-13, 08:27
Leider hilft das auch nicht weiter, ich kann nicht beeinflussen, wie die Workstation ID auf den einzelnen Rechnern konfiguriert wird.
Ich möchte auf Windows Seite über die ECL von IBM auf Sitzungen zugreifen, z.B.


Dim PSObject as Object
Set PSObject = CreateObject("PCOMM.autECLPS")
PSObject.SetConnectionByName("B")

es ist einerlei, wie man die Sitzungsnamen für die AS/400 definiert - ob dynamisch (QPADEVxxx) oder fest oder dem PCnamen entsprechend, die aufgerufenen Sitzungen bekommen - in der Regel in der Reihenfolge des Aufrufs einer Sitzung - eine Sitzungs-ID "A", "B", "C" usw. Per Commandline beim AUfruf von PC5250 oder über die ECL kann man auch eine beliebig benannte Sitzungs-ID verwenden, z.B. "W".


aus der Doku zur Host Access Class Library:




In the context of the ECL, a connection is a single, unique Personal
Communications emulator window. The emulator window may or may not be
actually connected to a host and may or may not be visible on the screen. For instance, a Personal communications window can be in a disconnected state.
Connections are distinguished by their connection handle or by their connection name. Most HACL objects are associated with a specific connection. Typically, the object takes a connection handle or connection name as a parameter on the constructor of the object. For languages like Visual Basic that do not Support parameters on constructors, a member function is supplied for making the association. Once constructed, the object cannot be associated with any other
connection. For example, to create an ECLPS (Presentation Space) object associated with connection ’B’, the following code would be used:


ECLPS *PSObject;
PSObject = new ECLPS(’B’);




In einer AS/400 Sitzung scheint es aber keine Info zu geben, die auf diese Session hinweist, wenn der Host mit der PC5250 Sitzung verbunden ist.

Meine Anwendung soll im Prinzip so funktionieren:

Auf der AS/400 Seite ermittelt die AS/400 Anwendung die IP Adresse des PCs, unter dem die Sitzung gerade ausgeführt wird und sendet dann per TCP/IP einen Datenstrom (HTML) an diese IP Adresse.

Auf dem PC hört ein Programm den entsprechenden Port ab, und aktiviert einen (internen) http Server, der den empfangenen Datenstrom an einen Browser ausliefern kann. Die Anwendung startet dann den Standardbrowser, um den Datenstrom anzuzeigen. Der Datenstrom enthält entsprechend kodierte Links, wenn der Benutzer etwas anklickt wird der interne http Server diese Info erhalten und soll diese Information an die AS/400 Sitzung zurücksenden (Tastatureingaben). Hierzu möchte ich aber die richtige Sitzung erwischen.

Das alles funktioniert auch schon, nur die richtige Sitzung kann ich noch nicht ermitteln.

Als Workaround nutze ich derzeit die Tatsache, dass die Sitzung, die den AUfruf tätigt, in der Regel das aktive Windows Fenster ist, aber darauf möchte ich mich nicht verlassen.

sawatzki
08-08-13, 10:49
Ich bemerke gerade, dass die Sitzungs-ID in der OIA zu finden ist. Besteht die Möglichkeit, die Information aus der Operator Information Area auszulesen ?

AS400.lehrling
09-08-13, 08:45
Ich bemerke gerade, dass die Sitzungs-ID in der OIA zu finden ist. Besteht die Möglichkeit, die Information aus der Operator Information Area auszulesen ?

Dir ist doch bereits geschrieben worden wo man eine Eindeutige Zuordnung her bekommt Program Status Data Structure (http://publib.boulder.ibm.com/iseries/v5r1/ic2924/books/c092508381.htm)

Mir ist das als Systemdatenstrom bekannt :)

Da gibt es garantiert keine doppelten Zuordnungen - Es würde mich zumindest wundern wenn die AS/400 Doppelte Benutzer Profile zulässt.


Gruß AS400.lehrling

sawatzki
09-08-13, 09:04
Ja, mag sein. Geht aber an meinem Problem vorbei. Was bringt mir dieser dir bekannte "Systemdatenstrom" und wir kann ich auf ihn von einem Windows Programm zugreifen (ansonsten nützt er mir nichts).

Um zu meiner Frag zurückzukehren: Ich möchte die PC5250 Sitzungs-ID (A, B, C, D, usw. .. Z), die u.a. in der OIA angezeigt wird, mit einem AS/400 Programm auslesen.


Dir ist doch bereits geschrieben worden wo man eine Eindeutige Zuordnung her bekommt Program Status Data Structure (http://publib.boulder.ibm.com/iseries/v5r1/ic2924/books/c092508381.htm)

Mir ist das als Systemdatenstrom bekannt :)

Da gibt es garantiert keine doppelten Zuordnungen - Es würde mich zumindest wundern wenn die AS/400 Doppelte Benutzer Profile zulässt.


Gruß AS400.lehrling