ISPF Edit User Line Commands: Implementierung bei der HUK - Jürgen Eberle
←
→
Transkription von Seiteninhalten
Wenn Ihr Browser die Seite nicht korrekt rendert, bitte, lesen Sie den Inhalt der Seite unten
ISPF Edit User Line Commands: Implementierung bei der HUK Jürgen Eberle Juergen.Eberle@huk-coburg.de
IBM Standard Implementierung Seit z/OS 1.13 (ISPF 6.3) ist es möglich, eigene EDIT Zeilenbefehle zu schreiben Dadurch Erweiterung des ISPF Editors möglich ISPF Standard Zeilenbefehle können nicht überschrieben werden Eigene Line Commands können mit REXX oder anderen Programmiersprachen geschrieben werden Line Commands müssen bestimmte ISREDIT Macro Statements enthalten Aktivierung der eigenen Line Commands mit Hilfe einer ISPF Tabelle
Definition der Line Command Table Die User Line Commands müssen in einer speziellen Tabelle definiert werden Die Tabelle wird in ISPF 3.16 (Table Utility) definiert Für die Erstellung ist "Table is an EDIT line command table" zu markieren Mit Option "E" wird Line Command Table erstellt und verändert
Definition der Eigenschaften eines Line Commands Mit "I" werden die Eigenschaften eines Line Commands definiert Neben dem Namen des Line Commands werden definiert: Name des auszuführenden Programms REXX bzw. CLIST oder Programm? Kann das Programm als Block-Command aufgerufen werden? Können mehrere Zeilen durch Angabe eines Wiederholungsfaktors bearbeitet werden? Muss ein Ziel (Before/After) angegeben werden?
Aktivierung der User Line Commands Edit Primary Panel enthält neues Eingabefeld Hier muss ISPF Tabelle angegeben werden, in der die Eigenschaften der Line Commands definiert sind
ISPF Schnittstelle Es gibt einen zusätzlichen Parameter LINECMDS , der User Line Commands auch bei internen Editor-Aufrufen aktiviert: ISPEXEC EDIT DATASET('USER.TEXT') LINECMDS(EJLCMDS) LINECMDS Parameter bisher noch nicht in Broschüren dokumentiert PMR offen!
Nachteil der IBM Implementierung Jeder User muss sich eigene Line Command Table einrichten und in Edit Primary Panel angeben Keine Site-Defaults möglich Weitergabe der User Line Command Table innerhalb einer Anwendung muss mit speziellem Befehl erfolgen: ISPEXEC EDIT DATASET('USER.TEXT') LINECMDS(ULCMDS) Der Parameter LINECMDS ist bisher nicht dokumentiert PMR offen! Wenn bei HUK eingesetzte Programmprodukte intern ISPF EDIT aufrufen, stehen die HUK Line Commands nicht zur Verfügung Deshalb: Implementierung von HUK Line Commands über LMAC LMAC ist EDIT Macro, das ursprünglich von Doug Nadel geschrieben wurde http://www-01.ibm.com/support/docview.wss?uid=swg24014047 IBM User Line Command Table kann parallel dazu genutzt werden 9
LMAC Implementierungsdetails Bei jedem Aufruf des Editors wird systemweites Initial Edit Macro HUK1IMAC aufgerufen HUK1IMAC ist REXX Edit Macro, das das Programm LMAC aufruft Erweiterung für Aufruf weiterer Initial Edit Macros möglich 10
Implementierungsdetails (cont.) LMAC ist Programm, das den Screen nach Line Commands durchsucht Für alle Line Commands, die keine ISPF Line Commands sind, wird REXX LINEMAC aufgerufen 11
Implementierungsdetails (cont.) REXX LINEMAC wurde ursprünglich von Doug Nadel zusammen mit Programm LMAC ausgeliefert Bei HUK eingesetzte Version von LINEMAC basiert auf Version von Yves Colliard http://www.yves-colliard-software.homepage.t-online.de/ (YCLMACRX und YCLMACTB) Version wird laufend verbessert und erweitert Version erlaubt, eigene Erweiterungen zu implementieren, ohne den Originalcode der REXX LINEMAC zu verändern 12
Funktionen von REXX LINEMAC (Driver-REXX für User Line Commands) H ==>> Show help HELP ==>> Show help HLMAC ==>> Show help - no longer supported ?LMAC ==>> Show help - no longer supported ----------- Text Commands RV ==>>Reverse the line text CE ==>>Center the line text AL ==>>Align Left the line text AR ==>>Align Right the line text AU ==>>Align Up the line text as the previous line AD ==>>Align Down the line text as the next line YX ==>>Hex one line as note (native support 1.11!) CL ==>>Compare lines the selected line and the next line will be compared differences will be shown with an infoline - sample: THIS IS MY FIRST LINE WITH SOME HEX AND OTHER DATA ! ! ! ! THIX IS MY OTHER LINE WITH SOME HEX AND XTHER ADTA single character difference with a ! many characters with or CM ==>> Comment/uncomment lines if JCL try to toggle // and //comment else create a before/after comment a la rexx 13
Funktionen (cont.) ----------- Dataset Commands Analyse the line to find a dataset Make a difference if JCL or not JCL search DSN= and JCLLIB ORDER= For JCL which is not DSN or JCLLIB (e.g. PROC) support dataset in parameter=dataset If not JCL search a nn.nn.nn If more than one nn.nn.nn in line process first or nn.nn.nn pointed to by cursor position. E ==>> Edit the dataset V ==>> View the dataset REV ==>> Show the dataset using REVIEW DI ==>> DSINFO the dataset DL ==>> LISTCAT the dataset DS ==>> DSLIST the dataset 3.4 DXn ==>> DSLIST first n Qualifiers 3.4 DM ==>> MEMmberList 3.1 LD ==>> Execute the RACF LISTDSD/LD Command EX ==>> Execute the cmd line - as a tso cmd TSO is default and has not to be given! the lines can be continued with a + or a , for example with following lines +---------------------------------------------+ ! EX0002 lista st h ! ! 000003 listc ent('a.very.imp.ds') all ! ! 000004 listc ent('a.very.imp.ds') all ! ! 000005 tso listc, ! ! 000006 ent('a.very.imp.ds')+ ! ! 000007 all ! +---------------------------------------------+ 14
Funktionen (cont.) AE ==>> Ascii -> Ebcdic EA ==>> Ebcdic -> Ascii E V DI DL DM DS EX CL are single line commands All others can be given in the forms CE5 or CEE ... CEE 15
H/HELP Nach Eingabe von H oder HELP in der Prefix Area erscheint ein Help-Text, der eine kurze Erklärung der zur Verfügung stehenden User Line Commands liefert. 16
H/HELP (cont.) 17
RV – Reverse a Text Line RV Line Command invertiert den Text der entsprechenden Zeilen. Mit wenigen Ausnahmen können die Line Commands auch als Blockcommands Verdoppelung des letzten Buchstabens Multi-LineCommand Anhängen der Zeilenanzahl aufgerufen werden 18
AR – Align Right Align Right richtet die Zeile am rechten Rand aus 19
AL – Align Left AL richtet die Zeilen am linken Rand aus. 20
CE – Center CE zentriert den Text der Zeilen. 21
AU – Align Up AU richtet die Zeile an der darüber liegenden Zeile aus. 22
AD – Align Down AD richtet die Zeile an der nächsten Zeile aus 23
EA – EBCDIC ASCII / AE – ASCII EBCDIC Mit EA kann Text, der in EBCDIC codiert ist, nach ASCII konvertiert werden 24
EA – EBCDIC ASCII / AE – ASCII EBCDIC AE konvertiert ASCII Text nach EBCDIC. 25
CL – Compare Line CL vergleicht die Zeile mit der nachfolgenden Zeile. Änderungen werden markiert Bei Gleichheit der Zeilen wird ein entsprechender Hinweis angezeigt 26
CM – Comment CM schließt Text in einen REXX-ähnlichen Kommentar ein 27
CM – Comment (cont.) Der Kommentar wird an der zu kommentierenden ersten Zeile ausgerichtet 28
CM – Comment (cont.) - JCL Bei JCL Statements wird JCL-konformer Kommentar erzeugt 29
CM – Comment (cont.) - JCL Für JCL Statements kann der Kommentar wieder entfernt werden, wenn erneut CM eingegeben wird 30
E – Edit /V – View Mit E kann man die Datei der Zeile, in der das Line Command eingegeben wird, editieren Mit V wird die Datei im View-Modus bearbeitet Volume-Angaben des DD Statements werden berücksichtigt 31
REV - REVIEW Mit REV wird Programm REVIEW aufgerufen http://www.prycroft6.com.au/REVIEW/ muss in Yves Colliards REXX aktiviert werden (siehe Vorspann in der REXX) REV hat Vorteile bei LOADLIBs, USS-Files, VSAM Datasets REV wird automatisch für BROWSE von VSAM Datasets aufgerufen (bei E oder V) 32
DI – Data Set Info DI liefert Data Set Informationen 33
DI – Data Set Info (cont.) Zusätzlich wird Modell eines DD Statements zur Neuallokierung erzeugt Mit MDD kann Modell übernommen werden Hinweis: DI auf der letzten Zeile des DD-Statements eingeben sonst sind Teile des alten DD Statements noch hinter dem Modell 34
DL – Data Set List DL liefert Kataloginformationen in separater temporärer Datei 35
DS – DSLIST (3.4) Mit DS wird DSLIST (3.4) aufgerufen Volume-Informationen werden berücksichtigt 36
DXn – DSLIST mit n Qualifiern DXn ruft DSLIST mit n Qualifiern auf DX ohne Angabe eines n entspricht DX1 37
DM – Display Memberlist (3.1) DM ruft ISPF 3.1 Memberlist für die Datei auf 38
LD – RACF LISTDSD/LD LD liefert RACF Informationen für die Datei 39
Erkennen eines Dataset Namens Auch PATH=/unix/file können mit E und V bearbeitet werden ohne PATH= bitte Cursor auf Filename/Directory setzen Static System Symbols werden aufgelöst (SYSPSYS.&TWSTEST.SEQQLMD0) Dataset Commands funktionieren auch, wenn kein JCL-Schlüsselwort DSN=, JCLLIB ORDER= etc. vorhanden ist In diesem Fall wird nach Textstring gesucht, der ein (mindestens zweistufiger) Dateinamen sein könnte Bei mehreren Textstrings in einer Zeile, wird der erste Textstring als Dateiname interpretiert Soll andere als die erste Datei verarbeitet werden, so muss Cursor auf entsprechenden DSN positioniert werden 40
EX – Execute TSO Command EX führt TSO Commands aus Commands können sich über mehrere Zeilen erstrecken CMDs müssen mit „+“ oder „ , “ verbunden sein 41
JU – JCL Uppercase JU wandelt JCL-Statements in Uppercase um. Kommentare werden nicht verändert. In Hochkommata eingeschlossener Text wird nicht verändert. 42
JU – JCL Uppercase nicht, da Kommentar Text zwischen ‘…‘ bleibt erhalten nicht, da kein // 43
DH – HSM Recover Mit DH können die Backup Kopien in HSM angezeigt werden. 44
DH – HSM Recover Die im HSM vorhandenen Backup Kopien werden angezeigt. Ein TSO – Command für Recover wird erstellt. mit EX kann das Command direkt ausgeführt werden. 45
Erweiterungsmöglichkeit Automatischer Aufruf externer Module, wenn Funktion nicht intern implementiert ist Externe Module müssen bestimmten Namenskonventionen entsprechen Implementiert ist: L$cmd (L$ = fest; cmd = Edit Line CMD) Kann in REXX an Installationserfordernis angepasst werden: Externes Modul wird als Edit Macro aufgerufen Modul muss "MACRO" und "PROCESS" Statements enthalten Kann derzeit noch nicht auf interne Funktionen von LINEMAC zugreifen DSN-Ermittlung und MSGs noch innerhalb von LINEMAC Designänderung (Modularisierung) nötig 46
RFE – Request for Enhancement Neue, webbasierte Anwendung, um Erweiterungswünsche für Produkte einzugeben URL: http://www-01.ibm.com/support/docview.wss?uid=swg21615828 47
48
49
50
51
52
53
Antrag: Requirement IBM möge in ISPCFIGU ein Keyword für LINECMDS bereitstellen, das ähnlich funktioniert wie die Keywords für Command Tables: APPLID_FOR_USER_COMMAND_TABLE = APPLID_FOR_SITE_COMMAND_TABLE = Wenn angegeben, soll die LINECMDS Table bei jedem internen Aufruf von EDIT und View als DEFAULT mitgegeben werden. Im Aufruf unter LINECMDS(xxxxxx) angegebene COMMANDS überschreiben die Default LINECMDS. 54
Useful EDIT Macro: BLKCOPY Problem: Kopieren einer (oder mehrerer) Zeilen hinter alle (nicht excluded) Zeilen 55
BLKCOPY (cont.) BLKCOPY kopiert Zeilen hinter alle nicht excluded Zeilen 56
BLKCOPY Syntax BLKCOPY oder BLKCOPY ? zeigt Hilfetext 57
BLKFIND/BLKEXCL Problem: Suche nach String – Info unmittelbar vor und/oder nach String wird ebenfalls benötigt z.B. mehrzeilige Message in Joblog 58
BLKFIND/BLKEXCL (cont.) BLKFIND zeigt Blöcke von zusammenhängenden Zeilen an BLKEXCL blendet Blöcke von zusammenhängenden Zeilen aus 59
BLKFIND/BLKEXCL Syntax BLKFIND/BLKEXCL ? zeigt Hilfetext 60
LFDNUM Problem: Zeile(n) müssen mehrfach kopiert werden. Sie müssen fortlaufend nummeriert werden. z.B. Anzahl DD-Statements 61
LFDNUM (cont.) LFDNUM ersetzt einen String durch fortlaufende Nummerierung Bei mehrfachem Vorkommen des Strings in derselben Zeile wird String durch gleiche Nummerierung ersetzt. Unterschiedliche Nummerierung durch Angabe von SCOL, ECOL möglich Schrittweite kann gewählt werden Dezimal und Hex Nummerierung möglich Syntax (Hilfe durch LFDNUM ?): 62
LFDNUM (cont.) 63
Sie können auch lesen