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.deIBM 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
9LMAC 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
10Implementierungsdetails (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
11Implementierungsdetails (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
12Funktionen 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
13Funktionen (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 !
+---------------------------------------------+
14Funktionen (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
15H/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.
16H/HELP (cont.)
17RV – 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
18AR – Align Right
Align Right richtet die Zeile am rechten Rand aus
19AL – Align Left
AL richtet die Zeilen am linken Rand aus.
20CE – Center
CE zentriert den Text der Zeilen.
21AU – Align Up
AU richtet die Zeile an der darüber liegenden Zeile aus.
22AD – Align Down
AD richtet die Zeile an der nächsten Zeile aus
23EA – EBCDIC ASCII / AE – ASCII EBCDIC
Mit EA kann Text, der in EBCDIC codiert ist, nach ASCII konvertiert werden
24EA – EBCDIC ASCII / AE – ASCII EBCDIC
AE konvertiert ASCII Text nach EBCDIC.
25CL – Compare Line
CL vergleicht die Zeile mit der nachfolgenden Zeile. Änderungen werden markiert
Bei Gleichheit der Zeilen wird ein entsprechender Hinweis angezeigt
26CM – Comment
CM schließt Text in einen REXX-ähnlichen Kommentar ein
27CM – Comment (cont.)
Der Kommentar wird an der zu kommentierenden ersten Zeile ausgerichtet
28CM – Comment (cont.) - JCL
Bei JCL Statements wird JCL-konformer Kommentar erzeugt
29CM – Comment (cont.) - JCL
Für JCL Statements kann der Kommentar wieder entfernt werden, wenn erneut CM
eingegeben wird
30E – 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
31REV - 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)
32DI – Data Set Info
DI liefert Data Set Informationen
33DI – 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
34DL – Data Set List
DL liefert Kataloginformationen in separater temporärer Datei
35DS – DSLIST (3.4)
Mit DS wird DSLIST (3.4) aufgerufen
Volume-Informationen werden berücksichtigt
36DXn – DSLIST mit n Qualifiern
DXn ruft DSLIST mit n Qualifiern auf
DX ohne Angabe eines n entspricht DX1
37DM – Display Memberlist (3.1)
DM ruft ISPF 3.1 Memberlist für die Datei auf
38LD – RACF LISTDSD/LD
LD liefert RACF Informationen für die Datei
39Erkennen 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
40EX – Execute TSO Command
EX führt TSO Commands aus
Commands können sich über mehrere Zeilen erstrecken
CMDs müssen mit „+“ oder „ , “ verbunden sein
41JU – JCL Uppercase
JU wandelt JCL-Statements in Uppercase um.
Kommentare werden nicht verändert.
In Hochkommata eingeschlossener Text wird nicht verändert.
42JU – JCL Uppercase
nicht, da Kommentar
Text zwischen ‘…‘ bleibt erhalten
nicht, da kein //
43DH – HSM Recover
Mit DH können die Backup Kopien in HSM angezeigt werden.
44DH – 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.
45Erweiterungsmö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
46RFE – Request for Enhancement
Neue, webbasierte Anwendung, um Erweiterungswünsche für Produkte einzugeben
URL:
http://www-01.ibm.com/support/docview.wss?uid=swg21615828
4748
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.
54Useful EDIT Macro: BLKCOPY
Problem: Kopieren einer (oder mehrerer) Zeilen hinter alle (nicht excluded) Zeilen
55BLKCOPY (cont.)
BLKCOPY kopiert Zeilen hinter alle nicht excluded Zeilen
56BLKCOPY Syntax
BLKCOPY oder BLKCOPY ? zeigt Hilfetext
57BLKFIND/BLKEXCL
Problem: Suche nach String – Info unmittelbar vor und/oder nach String wird
ebenfalls benötigt
z.B. mehrzeilige Message in Joblog
58BLKFIND/BLKEXCL (cont.)
BLKFIND zeigt Blöcke von zusammenhängenden Zeilen an
BLKEXCL blendet Blöcke von zusammenhängenden Zeilen aus
59BLKFIND/BLKEXCL Syntax
BLKFIND/BLKEXCL ? zeigt Hilfetext
60LFDNUM
Problem: Zeile(n) müssen mehrfach kopiert werden. Sie müssen fortlaufend
nummeriert werden.
z.B. Anzahl DD-Statements
61LFDNUM (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 ?):
62LFDNUM (cont.)
63Sie können auch lesen