ISPF Edit User Line Commands: Implementierung bei der HUK - Jürgen Eberle

Die Seite wird erstellt Kai Schweizer
 
WEITER LESEN
ISPF Edit User Line Commands: Implementierung bei der HUK - Jürgen Eberle
ISPF Edit User Line Commands: Implementierung bei der HUK

                                                    Jürgen Eberle
                                                    Juergen.Eberle@huk-coburg.de
ISPF Edit User Line Commands: Implementierung bei der HUK - Jürgen Eberle
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
ISPF Edit User Line Commands: Implementierung bei der HUK - Jürgen Eberle
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
ISPF Edit User Line Commands: Implementierung bei der HUK - Jürgen Eberle
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?
ISPF Edit User Line Commands: Implementierung bei der HUK - Jürgen Eberle
Edit Line Command REXX

 Dies ist das REXX Edit Macro, das den Zeilenbefehl NLC ausführt
ISPF Edit User Line Commands: Implementierung bei der HUK - Jürgen Eberle
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 Edit User Line Commands: Implementierung bei der HUK - Jürgen Eberle
Ergebnis der Ausführung des Zeilenbefehls

 Zeilenbefehl wird in Prefix Area eingegeben
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