Liebe System i Freunde,
hier eine weitere Ausgabe unseres neuen Projekts speziell für System i Entwickler.
V6R1 oder V7R1 sind dazu nicht notwendig, da diese Funktionen schon seit langem möglich sind.
Funktions- und Action-Tasten variabel steuern ohne Bezugszahlen:
Da in vielen Programmen auch heute noch die FTasten über *INKC oder *IN03 für die Taste F3 abgefragt wird, zeigen wir in diesem Beispiel, wie alle Funktions- und Action-Tasten präzise und gleichzeitig variabel abgefragt werden können.
Auch diese Tasten geben bestimmte Hex-Werte zurück, welche in der Bildschirm-Datenstruktur dem Programm zur Verfügung stehen. Daher brauchen diese Tasten in der Bildschirmdatei auch keine Bezugszahlen mehr.
IBM bezeichnet die Hex-Werte der Funktionsund Action-Tasten als Aid Codes.
Um bei der Steuerung der Funktions- und Action- Tasten vollkommen variabel zu sein, erstellen wir eine physische Datei mit einem Datensatz. Dieser beinhaltet in jedem Feld den dazu passenden Hex-Wert der Taste.
Ganz zu Anfang im Programm wird ein Satz der AIDCODES Datei mit den Hex-Werten der Funktions- und Action-Tasten gelesen. Der zurückgegebene Hex-Wert kann jetzt mit Feld-Werten statt Konstanten verglichen werden.
AIDCODES PF Aid Codes – Die Hex-Werte der Funktions- und Action-Tasten
***************** Datenanfang ******************************************* 0001.00 ********************************************************************** 0002.00 * Return-Codes der Tastatur zur Abfrage der Tasten * 0003.00 * * 0004.00 * Aid Codes - Hex-Werte der Funktions- und Action-Tasten * 0005.00 ********************************************************************** 0006.00 A R AIDCODR 0007.00 A F01 1A COLHDG(‚HEX 31 - F1‘) 0008.00 A F02 1A COLHDG(‚HEX 32 - F2‘) 0009.00 A F03 1A COLHDG(‚HEX 33 - F3‘) 0010.00 A F04 1A COLHDG(‚HEX 34 - F4‘) 0011.00 A F05 1A COLHDG(‚HEX 35 - F5‘) 0012.00 A F06 1A COLHDG(‚HEX 36 - F6‘) 0013.00 A F07 1A COLHDG(‚HEX 37 - F7‘) 0014.00 A F08 1A COLHDG(‚HEX 38 - F8‘) 0015.00 A F09 1A COLHDG(‚HEX 39 - F9‘) 0016.00 A F10 1A COLHDG(‚HEX 3A - F10‘) 0017.00 A F11 1A COLHDG(‚HEX 3B - F11‘) 0018.00 A F12 1A COLHDG(‚HEX 3C - F12‘) 0019.00 A F13 1A COLHDG(‚HEX B1 - F13‘) 0020.00 A F14 1A COLHDG(‚HEX B2 - F14‘) 0021.00 A F15 1A COLHDG(‚HEX B3 - F15‘) 0022.00 A F16 1A COLHDG(‚HEX B4 - F16‘) 0023.00 A F17 1A COLHDG(‚HEX B5 - F17‘) 0024.00 A F18 1A COLHDG(‚HEX B6 - F18‘) 0025.00 A F19 1A COLHDG(‚HEX B7 - F19‘) 0026.00 A F20 1A COLHDG(‚HEX B8 - F20‘) 0027.00 A F21 1A COLHDG(‚HEX B9 - F21‘) 0028.00 A F22 1A COLHDG(‚HEX BA - F22‘) 0029.00 A F23 1A COLHDG(‚HEX BB - F23‘) 0030.00 A F24 1A COLHDG(‚HEX BC - F24‘) 0031.00 A CLEAR 1A COLHDG(‚HEX BD - CLEAR‘) 0032.00 A ENTER 1A COLHDG(‚HEX F1 - ENTER‘) 0033.00 A HELP 1A COLHDG(‚HEX F3 - HELP‘) 0034.00 A ROLLDW 1A COLHDG(‚HEX F4 - ROLL DOWN‘) 0035.00 A ROLLU 1A COLHDG(‚HEX F5 - ROLL UP‘) 0036.00 A PRINT 1A COLHDG(‚HEX F6 - PRINT‘) 0037.00 A RECBAC 1A COLHDG(‚HEX F8 - REC BACK‘) 0038.00 A AENTER 1A COLHDG(‚HEX 3F - AUTO ENTER‘) ******************Datenende ***********************************************
Alle BLAUEN Angaben sind mehr oder weniger feste Werte oder Defi nitionen die wichtig für die Steuerung dieser Funktion sind. Datei und Feldnamen können geändert werden, ratsam ist jedoch sprechende Namen zu verwenden.
Statt variabler Abfrage des Feld-Wertes kann der Hex-Wert der Taste auch mit einem konstanten Hex- Wert verglichen werden. (z.B.: Ist der Hex-Wert X‘33 dann wurde die Taste F3 gedrückt, also muss entsprechend reagiert werden.)
Alle ROTEN Angaben sind variable Werte und hier als kleines Programm-Beispiel zusammengestellt. Diese sind nur als Ersatz für Ihren eigenen Programmcode.
F_KEY_ABFR RPGLE F-Tasten-Steuerung über Hex-Werte
***************** Datenanfang ******************************************* 0001.00 FDSPF CF E WORKSTN INFDS(DEV#DS) 0002.00 FAIDCODES IF E DISK 0003.00 *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* 0004.00 D Dev#ds DS 0005.00 D Action 369 369 0006.00 *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* 0007.00 C Read Aidcode 50 F-KEYS 0008.00 C Do *Hival 0009.00 * 0010.00 C Write Kopf 0011.00 C Write Fuss 0012.00 C Exfmt Mitte 0013.00 C Action Caseq F03 Endpgm 0014.00 C Action Caseq F04 Lookup 0015.00 C Action Caseq Enter Enter 0016.00 C Endcs 0017.00 * 0018.00 C Enddo Do *Hival 0019.00 *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* 0020.00 * Return-Action-Code bei Benutzung von GUIAST *-*-*-*-* 0021.00 C If Action = ‚¨‘ Clear (X‘BD) 0022.00 C Eval *In10 = *Off F-Tasten aus 0023.00 C Eval *In15 = *On Change an 0024.00 C Endif Action = ‚¨‘ 0025.00 *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* 0026.00 C Enter Begsr ENTER 0027.00 * : 0028.00 * *** VERARBEITUNG *** 0029.00 * : 0030.00 C Endsr 0031.00 *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* 0032.00 C Lookup Begsr MATCHCODE 0033.00 * : 0034.00 * : 0035.00 C Endsr 0036.00 *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* 0037.00 C Endpgm Begsr PGM ENDE 0038.00 C Move Act#01 Rtncde 0039.00 C Eval *Inlr = *On 0040.00 C Leave F03 0041.00 C Return 0042.00 C Endsr 0043.00 *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* 0044.00 *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* ******************Datenende ***********************************************
Für Farb-Schema

Steuerung der Prompt-Funktion von Befehlen
Hier sind 4 verschiedene CL-Code-Zeilen mit unterschiedlichem
Verhalten bei der Prompt-Steuerung des
Befehls.
Die nummerierten Screenshots sind die jeweiligen Ergebnisse
zu den Code-Zeilen mit der gleichen Nummer.
(1) ? WRKOBJPDM
(2) ? WRKOBJPDM LIB(QGPL) OBJTYPE(*PGM)
(3) ? WRKOBJPDM LIB(QGPL) ??OBJTYPE(*PGM)
(4) WRKOBJPDM LIB(QGPL) ??OBJTYPE(*PGM)
( 1 ) Der Befehl wird mitten im CL-Programm automatisch mit allen Parametern und deren Standardwerten gepromptet.
( 2 ) Auch hier wird der Befehl mit allen Parametern und deren Standardwerten gepromptet. Dabei sind auch alle voreingestellten Parameter sichtbar, aber nicht änderbar.
( 3 ) Der Befehl wird mit alle Parameter und Standardwerten angezeigt. Nur der Parameter „OBJTYPE“, hat den Wert *PGM voreingestellt, aber änderbar. Der Paramater „LIB“ ist voreingestellt mit QGPL und sichtbar.
( 4 ) Vom gesamten Befehl wird nur der Parameter „OBJTYPE“ angezeigt, hat den Wert *PGM voreingestellt, kann aber überschrieben werden. Der Paramater „LIB“ ist voreingestellt mit QGPL, aber nicht sichtbar.
Ich finde es immer wieder interessant, wie viel man auch nach 25 Jahren AS/400 noch entdecken kann. Und diese Kleinigkeit der Prompt-Steuerung von Befehlen im CL, erleichtert es dem Benutzer Befehle mit aufbereiteten Parameterwerten zur Verfügung zu stellen. Oder dem Anwender stehen nur ausgewählte Parameter zur Verfügung, die anderen Parameter sind nicht sichtbar und haben teils voreingestellte Werte.
Oft erspart diese Prompt-Steuerung das Programmieren einer zusätzlichen Bildschirmdatei mit einzelnen Feldern.
Nicht vergessen, Ihr Feedback ist wichtig! Senden Sie eine e-mail, wie Ihnen die „Tipps & Tricks“ gefallen, was Sie verbessern würden, oder eigene Tipps aus Ihrer Trickkiste, einfach an: Augel@SSS-Software.de


