MainframeSupports
tip uge 45/1999:

Hører du også til en af dem, der har bandet ISPF-editoren langt væk, når du ville kopiere den samme linie til flere forskellige steder. Så er der hjælp at hente i denne uges tip. Vi har lånt tippet af en konsulent fra en af vore samarbejdspartnere og omskrevet det en lille smule, men grundideen er den samme.

Følgende EDIT- macro virker på den måde, at man

  • Markerer den linie, man ønsker at kopiere ved at give den en label kaldes .INS
  • Udsteder en FIND-kommando, som vil finde de linier, man ønsker at indsætte den markerede linie efter
  • Indtaster navnet på EDIT-macroen i kommandofeltet og trykker på Enter

  • Herefter vil EDIT-macroen indsætte linien markeret med label .INS efter alle de linier, hvor søgeteksten i FIND-kommandoen optræder.
     
    /* REXX */
    ADDRESS ISREDIT
    "MACRO"
    ADDRESS ISPEXEC "CONTROL ERRORS RETURN"
    "(INSLINE) = LINE .INS"
    IF RC <> 0
    THEN DO
      SAY "Der er ikke fundet nogen linie med label .INS"
      RETURN
    END
    "CURSOR = 1 1"
    "RFIND"
    IF RC <> 0
    THEN DO
      SAY "Søgestrengen er ikke fundet"
      RETURN
    END
    INSCOUNT = 0
    DO WHILE RC = 0
      "(LINENO) = LINENUM .ZCSR"
      "LINE_AFTER "LINENO" = DATALINE (INSLINE)"
      INSCOUNT = INSCOUNT + 1
      LINENO = LINENO + 2
      "CURSOR = "LINENO" 1"
      IF RC = 0
      THEN
        "RFIND"
    END
    SAY "Der er indsat "INSCOUNT" linie"COPIES('r', INSCOUNT <> 1)
    EXIT


    Vi tager forbehold for stavefejl, da EDIT-macroen er en omformuleret afskrift af den originale EDIT-macro. Den her skitserede EDIT-macro er med andre ord ikke afprøvet. Tekster udskrevet af EDIT-macroen er absolut ikke kønne, så her kan man indsætte sin egen tekstudskrivning, for eksempel vil brugen af  ISPF SETMSG gøre underværker.

    Når man een gang har set, hvordan man kan få kopieret den samme linie flere gange, så er der ikke langt til næste modifikation. Vi har allerede tænkt på en udgave, hvor man markerer flere linier som en blok eksempelvis med CC og kopierer hele blokken. En anden modifikation er kun at indsætte efter ikke excludede linier, så man i højere grad selv kan styre, hvor der skal indsættes. Og du kan sandsynligvis selv finde på endnu mere. Vi vil selvfølgelig gerne høre fra dig, hvis du laver en smart modifikation.

    Sidste uges tip        Tip oversigten