[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Feb 2005
    Beiträge
    11

    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

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.247
    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 ?
    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

  3. #3
    Registriert seit
    Feb 2005
    Beiträge
    11
    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.

  4. #4
    KM is offline [professional_User]
    Registriert seit
    Apr 2003
    Beiträge
    1.005
    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

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.247
    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.
    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

  6. #6
    Registriert seit
    Aug 2001
    Beiträge
    2.875
    Zitat 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
    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

  7. #7
    Registriert seit
    Feb 2005
    Beiträge
    11
    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.

  8. #8
    Registriert seit
    Aug 2001
    Beiträge
    2.875
    Zitat 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(31overlay(DSFKY)   
    D      FKY                       1A   overlay(FKYText)        
    D      Text                     10A   overlay(FKYText: *Next
    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

  9. #9
    Registriert seit
    Feb 2005
    Beiträge
    11
    Wunderbar, jetzt ist es perfekt.

Similar Threads

  1. Antworten: 3
    Letzter Beitrag: 25-01-07, 09:29
  2. Teildatei mit SQL anzeigen
    By Rico in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 06-07-06, 16:25
  3. Spooldatei sofort anzeigen
    By dino in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 30-05-06, 13:38
  4. Eingabefelder im Command reverse anzeigen
    By becama in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 12-05-06, 19:46
  5. AS/400 tschechisch anzeigen lassen
    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
  •