PDA

View Full Version : RPG: Client Infos lesen?



Seiten : 1 [2] 3

TARASIK
16-01-07, 16:06
Die IP-Adresse war ja nur ein Beispiel. Mit dem API "QDCRDEVD"
bekommt man wesentlich mehr Informationen:

http://publib.boulder.ibm.com/infocenter/iseries/v5r3/index.jsp?topic=/apis/QDCRDEVD.htm

Fuerchau
16-01-07, 16:50
Dieses API liefert ausschließlich lokal auf der AS/400 vorhandene Informationen über die verschiedenen Devices.

Ich kann also damit feststellen, dass per IP oder SNA ein Terminal emuliert wird.

Mit STRPCO kann ich dann feststellen, dass CA dahinter steckt.
Rumba, Mocha und Konsorten unterstützen dies aber nicht.

Auch weiß ich nicht, steckt dahinter nun Windows XP, NT, 2000 oder noch 98 ?
Läuft da gerade ein Java-Telnet5250 auf Linux ?

usw. usw.

Ich denke, dass hier so was ähnliches benötigt wird, wie ein Browser, mit dem ich auch per JScript/VBScript o.ä. die Umgebung prüfen und an den Server (eingeschränkt) melden kann. Dies läuft aber auf dem Client ab !

Ich kann also auf dem Client ein kleines Programm schreiben, mit dem ich den aktuellen OS-Stand per IP an die AS/400 melde.
Z.B. per kleinem Java und JDBC, dass die Daten in eine AS/400-DB schreibt.

robertki
16-01-07, 19:00
Nabend,

@Tarasik: Fuerchau hat recht, die IP habe ich schon. QDCRDEVD habe ich auch schon ausprobiert, aber damit bekomme ich leider nicht heraus, was mein OS oder der Client ist :-( Trotzdem danke. Die IP klappt, aber sonst kommt nix. Könnte vielleicht am 5250 client liegen!?

Ich habe hier folgendes: Ich habe ein Programm geschrieben, dass sowohl auf dem PC, als auch auf dem Handscanner läuft. Nun ist das Prog für das kleine Handscannerdisplay optimiert. Wenn ich nun das Programm auf dem PC benutze, dann ist über die Hälfte des Bildschirms schwarz. Also habe ich gehofft, dass ich nun ein Programm mit 2 Display Files schreiben kann und je nach Client (also PC oder Scanner) das passende Display File nutze. Ich komme einfach aus der Java und C Welt und da komme ich nicht damit klar, dass ich zwei Programme schreiben soll, die exakt das gleiche machen, aber den Text an einer anderen Stelle ausgeben. Vielleicht habt ihr da noch ein Tip auf Lager.

Robert

Fuerchau
17-01-07, 07:27
Du kannst in einer DSPF einfach 2 verschiedene Formate definieren.
Die Feldnamen beider Formate benennst du identisch.
Allerdings sollte dein Programm dann einen Aufrufparameter haben um den Unterschied festzustellen.

Der Scanner bekommt dann einfach ein anderes Menü.

robertki
17-01-07, 07:34
Du kannst in einer DSPF einfach 2 verschiedene Formate definieren.
Die Feldnamen beider Formate benennst du identisch.
Allerdings sollte dein Programm dann einen Aufrufparameter haben um den Unterschied festzustellen.

Der Scanner bekommt dann einfach ein anderes Menü.

Morgen Fuerchau,

was genau meinst du mit 2 verschiedene Formate? Aber das wäre genau was ich benutzen möchte. Habe die beiden Dspf in H angegeben und dann mit open geöffnet. Dann mekert er aber, dass es doppelte Felder gibt.

Robert

Fuerchau
17-01-07, 08:19
Du benötigst keine 2 verschiedenen DSPF's sonder 2 Satzformate innerhalb der DSPF.
Die Ein-/Ausgabefelder beider Formate müssen identisch definiert sein. Das größere Format kann aber durchaus mehr Felder beinhalten.

Frank Hildebrandt
17-01-07, 08:23
Wenn man den Geräten eindeutige Einheitennamen zuordnet, dann kannst Du in einem CL-Programm über den Befehl RTVJOBA(&JOB) diesen Einheitennamen ermitteln. In einem RPG Programm ist der Einheitenname in der Programminformationsdatenstruktur an den Stellen 244 bis 253 hinterlegt. In Client-Access kannst Du den Einheitennamen über das Menü "Kommunikation/Konfigurieren" festlegen. Andere Emulationen können das mit Sicherheit auch. Dumme Terminals haben sowieso immer den gleichen Einheitennamen, wenn man nicht zwischendurch die Einheitenbeschreibungen löscht und neu erstellt. In einer Tabelle kannst Du dann den Einheitennamen mit dem entsprechenden Typ - PC, Handscanner - hinterlegen. So habe ich jedenfalls dieses Problem gelöst.

robertki
17-01-07, 08:34
Du benötigst keine 2 verschiedenen DSPF's sonder 2 Satzformate innerhalb der DSPF.
Die Ein-/Ausgabefelder beider Formate müssen identisch definiert sein. Das größere Format kann aber durchaus mehr Felder beinhalten.

Ahh klaro ich verstehe. Das werde ich so machen. Vielen Dank

Robert

robertki
17-01-07, 08:37
Wenn man den Geräten eindeutige Einheitennamen zuordnet, dann kannst Du in einem CL-Programm über den Befehl RTVJOBA(&JOB) diesen Einheitennamen ermitteln. In einem RPG Programm ist der Einheitenname in der Programminformationsdatenstruktur an den Stellen 244 bis 253 hinterlegt. In Client-Access kannst Du den Einheitennamen über das Menü "Kommunikation/Konfigurieren" festlegen. Andere Emulationen können das mit Sicherheit auch. Dumme Terminals haben sowieso immer den gleichen Einheitennamen, wenn man nicht zwischendurch die Einheitenbeschreibungen löscht und neu erstellt. In einer Tabelle kannst Du dann den Einheitennamen mit dem entsprechenden Typ - PC, Handscanner - hinterlegen. So habe ich jedenfalls dieses Problem gelöst.

Hi Frank,

das mit dem Namen habe ich auch schon überlegt. Problem: Wir nutzen hier immer den gleichen Namen, der sich nur über die IP unterscheidet. U.a. kann es vorkommen, dass der Name vom User verändert wurde. Bei den Handscanner wird der Name von Wavelink vergeben und dann wird es schwierig eindeutig den Client zu identifizieren.

Robert

robertki
17-01-07, 10:39
Mahlzeit,

habe jetzt folgende Idee: Ich kann doch mitttels SNMP Name und OS einer IP auslesen. Habe einen SNMP Get in RPG implementiert, aber leider funktioniert das irgendwie nicht. Also der Get wird abgesetzt (rc = 0) aber ich bekomme keine Daten? Hat einer von Euch ein Beispiel oder kann mir dabei helfen?

Rufe snmtpget api auf. Wo genau stehen die ausgelesenen Daten? Wie genau setze ich einen OID um?

Achso habe das hier benutzt: http://publib.boulder.ibm.com/iseries/v5r1/ic2924/index.htm?info/apis/unix6.htm

Frage dazu: muss ich vor snmtget ein socket öffnen?

Robert