PDA

View Full Version : Daten Freigabe Taste abfragen?



takeoff/400
13-02-08, 18:35
Hallo Forum,

gibt es in RPG/ILE (mittlerweile) eine Möglichkeit um nach einem EXFMT eines DSPF explizit abzufragen ob die Daten Freigabe Taste gedrückt wurde, ähnlich wie bei einer Befehlstaste? CAxx oder so?

Lg,
Michael

Fuerchau
13-02-08, 18:54
Da gibt es wohl einen Hinweis in der INFDS.

Allerdings weiß ich nicht, wofür das gut sein soll, da die Logik ja eigentlich folgende ist:

Ist keine F-Taste gedrückt, bleibt dochnur die Enter-Taste.

Gut, es gibt nur einen Grund, nämlich dann wenn ein Autoenter-Feld deklariert ist.
Dann muss ich ggf. zwischen Autoenter und tatsächlichem Enter unterscheiden können, und dafür gibts die INFDS.

Khholm
14-02-08, 07:08
ja, das geht über die INFDS:

DSPF:

A DSPSIZ(24 80 *DS3)
A PRINT
A INDARA

Programm:

fvtc050d cf e WORKSTN infds(dspfds)
f indds(bezugsz)


d dspfds ds
d Ftaste 369 369





Werte für Ftaste:

d F01 c const(X'31')
d F02 c const(X'32')
d Ende c const(X'33')
d F04 c const(X'34')
d F05 c const(X'35')
d F06 c const(X'36')
d F07 c const(X'37')
d F08 c const(X'38')
d F09 c const(X'39')
d F10 c const(X'3A')
d F11 c const(X'3B')
d F12 c const(X'3C')
d F13 c const(X'B1')
d F14 c const(X'B2')
d F15 c const(X'B3')
d F16 c const(X'B4')
d F17 c const(X'B5')
d F18 c const(X'B6')
d F19 c const(X'B7')
d F20 c const(X'B8')
d F21 c const(X'B9')
d F22 c const(X'BA')
d F23 c const(X'BB')
d F24 c const(X'BC')
d clear c const(X'BD')
d Enter c const(X'F1')
d help c const(X'F3')
d pagedown c const(X'F4')
d pageup c const(X'F5')
d print c const(X'F6')

Abfrage im Programm:

select;
when ftaste = Ende;
vxst0 = 9;
when ftaste = F12;
vxst0 = 9;
when ftaste = F13;
exsr Hilfe;
vxst0 = 1;
when ftaste = pageup;
exsr s02;
other;

endsl;

Mit den entsprechenden Hex-Codes lassen sich auf diese Weise alle gedrückten Tasten abfragen.

B.Hauser
14-02-08, 07:33
... das Ganze geht übrigens schon seit Einführung der AS/400 also seit 1988!

Das Gefuddel mit *INKirgendwas, bei dem man ständig an den Fingern abzählen muss, ob *INKR F17 oder F18 ist und außerdem wissen muss, das *INKO fehlt, entfällt ebenso wie das Verschwenden von 24 Bezugszahlen für CA und CF.

Birgitta

prsbrc
14-02-08, 08:31
Ich habe mir einen Copysource erstellt den ich nach dem EXFMT des DSPF per /COPY reinkopiere. In diesem Copysource frage ich immer alle *INKx ab und befülle übersichtlichere Variablen ( F1-FENTER ).

takeoff/400
14-02-08, 10:54
vielen Dank für die zahlreichen infos!
Ja, es geht dabei um ein auto-enter field in einem subfile, dafür ist es leider in einem bestimmten fall nötig die enter abzufragen.
wieder was dazu gelernt:D

mfg,
michael gruber

takeoff/400
14-02-08, 10:59
... das Ganze geht übrigens schon seit Einführung der AS/400 also seit 1988!

Das Gefuddel mit *INKirgendwas, bei dem man ständig an den Fingern abzählen muss, ob *INKR F17 oder F18 ist und außerdem wissen muss, das *INKO fehlt, entfällt ebenso wie das Verschwenden von 24 Bezugszahlen für CA und CF.

Birgitta

danke, ich arbeite seit 1990 auf der AS400, aber keiner meiner Lehrmeister hat mir das je verraten!
man lernt also niemals aus - perfekt.
lg,
michael gruber

Mr.iSeries
05-03-08, 08:04
... das Ganze geht übrigens schon seit Einführung der AS/400 also seit 1988!

Das Gefuddel mit *INKirgendwas, bei dem man ständig an den Fingern abzählen muss, ob *INKR F17 oder F18 ist und außerdem wissen muss, das *INKO fehlt, entfällt ebenso wie das Verschwenden von 24 Bezugszahlen für CA und CF.

Birgitta

wofür ist das eigentlich gut *inKirgendwas zu verwenden? Kann ich wenn ich *inKA verwende die *in01 nochmal extra verwenden damit ich mehr Bezugszahlen als 99 Stück zur Verfügung habe?

B.Hauser
05-03-08, 08:21
Hallo,

ich würde *IN01-*IN99 nur für die Subfile-Steuerung verwenden, das ist aber das einzige für die man *IN01-*IN99 benötigt und die kann man mittlerweile über INDDS in RPG umbennenen, so dass im Source Code sprechende Namen verwendet werden können. (Achja *INLR wird noch benötigt, aber ab V6R1 kann man auch darauf verzichten!)

M.E. ist es einfacher zu lesen wenn im Source Code SFLNXTCHG = *ON steht, wie wenn *IN54 = *ON steht.

Ansonsten sind die *IN01-*IN99 potentielle Fehlerquellen (Stichwort Doppelbelegung).

Wenn Schalter benötigt werden, kann man diese über den Datentyp N definieren und dabei sprechende Namen verwenden.

Damit erübrigt sich auch die Frage, ob man bei *INKIrgendwas weitere 24 Bezugszahlen zur Verfügung hat, weil man diese nicht mehr braucht. (Auch wenn man *INKA und *IN01 unabhängig voneinander verwenden kann!)

*INKA bis *INKZ würde ich nie verwenden. Weil ich mir wirklich nicht merken kann was z.B. *INKR ist. Bei der Lösung von Khholm braucht man überhaupt keine *IN-Bezugszahlen, also weder *IN01-*IN99 noch *INKA - *INKZ.

Birgitta

Armin
20-06-08, 07:40
Hallo Leut,
Beitrag war genau was ich suche.
Unterscheidung Return vom Autoenterfeld oder echte Entertaste.
Funktioniert aber bei mir nicht.
Bekomme immer x'F1' zurück!?

FFEDESDUD CF E Workstn Infds(DSPDS)
D DSPDS DS
D FunktionTaste 369 369A
D Enter C Const(X'F1')
If FunktionTaste = Enter ;
Dsply 'Enter' ;
Endif ;

Danke für eure Hilfe.