-
F-Taste in Meldung mit anzeigen aus Informationsdatenstruktur / HexWert übersetzung
Ich möchte die Funktionstaste die gedrückt wurde
in der Fehlermeldung mit anzeigen.
Dafür möchte ich den HexWert aus der
Bildschirminformationsdatenstruktur benutzen.
Wie kann ich den w#fkey möglichst einfach in Klartext übersetzen?
z.B. bei f6 oder f16
D bcc00101f cf e workStn infds(ds_inf_W)
D ds_inf_W ds
D w#fkey 369 369 pressed key
callp eQMHSNDPM('STD0000':'MBMSG MBOBJ'
w#fkey +
'ist keine gültige Funktionstaste!'
65:'*INFO ':'*': 0:' '
ds_ApiErr
-
Wie wärs mit einer Compile-Zeit-Tabelle und %lookup() ?
Oder auch einer PF-Datei die man lesen könnte, damit das ganze auch Sprachunabhängig läuft ?
-
Danke für die sehr schnelle Antwort und deinen Ansatz.
Soetwas besitze ich schon.
Eine Übersetzungsroutine für unsere
Benutzerberechtigung, dort habe ich mir jetzt
einfach ein Merkfeld vor der Berechtigungsprüfung
eingebaut.
Vorher wurde der übersetzte Wert nach Prüfung der
Berechtigung gelöscht.
Hatte gedacht hier vieleicht einen EINZEILER zur
Umrechnung des Hexwertes in den Klartext zu bekommen.
-
Wie wär's mit einer Copy-Strecke, in der Du alle Codes in den D-Spezifikationen erfasst. Diese kannst Du in jedes betreffende Programm einbinden. Zum Beispiel mit folgenden Einträgen:
D ENTER S 1 INZ(X'F1')
D F1 S 1 INZ(X'31')
D F2 S 1 INZ(X'32')
usw.
So machen wir das zumindest.
Gruß,
KM
-
Dazu benötigst du eine Tabelle:
D MyKeys 11 dim(xx)
d MyHex 1 overlay(MyKeys:1)
d MyText 10 overlay(MyKeys:2)
Diese Tabelle füllst du mit den Hexwerten korrespondierend zu den Klartexten,
dann brauchst du tatsächlich nur noch eine Befehl:
Text = MyText(%lokup(w#fkey:myhex));
Voraussetzung ist allerdings, dass auch tatsächlich alle Hexcodes in der Tabelle vorkommen, da es sonst einen 0-Index geben kann.
-
Zitat von borwegen
Hatte gedacht hier vieleicht einen EINZEILER zur
Umrechnung des Hexwertes in den Klartext zu bekommen.
Wenn Du eine Datei anlegst, wie Baldur vorgeschlagen hat, in die Du Hex-Wert und Text einträgst, brauchst Du nur einen kleinen CHAIN zu machen um den Klar-Text zu erhalten.
Dann baust Du Dir um den CHAIN eine Funktion, die den Text zurückgibt. Diese Funktion kannst Du dann direkt in Deinen API-Aufruf einbinden.
Ok, kein Einzeiler, aber nicht viel mehr!
Ach übrigens, der Original-Text, der bei ungültigen Befehlstasten geschickt wird ist:
"Falsche Befehlstaste"
Birgitta
-
Vielen Dank für eure interresanten Lösungsansätze.
Hier jetzt meine endgültige Lösung,
die ich aus euren Vorschlägen zusammengestellt habe.
Eine Copy-Strecke die eingebunden wird.
*// standard include for all interactive programs ----------------------------
*// named hexadecimal constants for function keys ----------------------------
D ds_HexKey ds
D f01 1a inz(x'31')
D f02 1a inz(x'32')
D f03 1a inz(x'33')
...usw
D clear 1a inz(x'BD')
D enter 1a inz(x'F1')
D help 1a inz(x'F3')
D pagup 1a inz(x'F4')
D pagdn 1a inz(x'F5')
D print 1a inz(x'F6')
D home 1a inz(x'F8')
D ds_TxtKey ds
D 10a inz('F01 ')
D 10a inz('F02 ')
D 10a inz('F03 ')
... usw
d tb_HexKey_Ptr s * inz( %addr( ds_HexKey ) )
d tb_TxtKey_Ptr s * inz( %addr( ds_TxtKey ) )
D tb_HexKey s 1 dim(31) based(tb_HexKey_Ptr)
D tb_TxtKey s 10 dim(31) based(tb_TxtKey_Ptr)
und dann später im programm
if w#fkey = f06;
Text = tb_TxtKey(%lookup(w#fkey:tb_HexKey));
endif;
Dies ermöglicht mir beides sowohl die Übersetzung als auch
die direkte Ansprache von Befehlstasten.
Für das direkte füllen der tabelle in der D-Karte benötige ich
hier leider 2 Datenstrukturen.
-
Zitat von borwegen
Für das direkte Füllen der tabelle in der D-Karte benötige ich
hier leider 2 Datenstrukturen.
Das geht auch in einer einzigen Datenstruktur:
PHP-Code:
D DSFKY DS
D F01 1A inz(x'31')
D 10A inz('F01 ')
D F02 1A inz(x'32')
D 10A inz('F02 ')
D F03 1A inz(x'33')
D 10A inz('F03 ')
* usw ...
D FKYText Dim(31) overlay(DSFKY)
D FKY 1A overlay(FKYText)
D Text 10A overlay(FKYText: *Next)
Birgitta
-
Wunderbar, jetzt ist es perfekt.
Similar Threads
-
By cc in forum IBM i Hauptforum
Antworten: 3
Letzter Beitrag: 25-01-07, 09:29
-
By Rico in forum NEWSboard Programmierung
Antworten: 3
Letzter Beitrag: 06-07-06, 16:25
-
By dino in forum IBM i Hauptforum
Antworten: 4
Letzter Beitrag: 30-05-06, 13:38
-
By becama in forum IBM i Hauptforum
Antworten: 4
Letzter Beitrag: 12-05-06, 19:46
-
By holgerschurig in forum IBM i Hauptforum
Antworten: 5
Letzter Beitrag: 27-04-06, 15:47
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