© serviceprofessionalgmbh

Allows overlapping copying of rows. The target could be inside of the copy block.

/* REXX * EDIT MACRO *************************************************/
/*                                                                   */
/* Macroname.: $XCOPY                                                */
/* Zweck.....: Erlaubt das Kopieren mit ueberlappenden Bereichen.    */
/*                                                                   */
/*             Der Kopierbereich wird ueber das Zeilenkommando       */
/*             $, $n oder $$ definiert. Das Ziel des Kopiervorgangs  */
/*             wird durch das Label .VOR oder .NACH festgelegt.      */
/*             Fehlt die Zielangabe, wird als Ziel das Dateiende     */
/*             (hinter die letzte Datenzeile) angenommem.            */
/*                                                                   */
address isredit
"macro NOPROCESS"
"process range $"
if rc > 0 then do
   zedsmsg="Sorry..."
   zedlmsg="Kopierbereich mit Zeilenbefehl $, $n oder $$ markieren"
   address ispexec "setmsg msg(isrz000)"
   exit
end
"(fline) = linenum .zfrange"
"(lline) = linenum .zlrange"
richtung = "AFTER"
"(dline) = linenum .nach"
if dline = 0 then do
   "(dline) = linenum .vor"
   if dline = 0 then do
      "dline = linenum .zlast"
   end
   else do
      richtung = "BEFORE"
   end
end
"label" dline "= ' ' 0"
macrocmd="LINE_"richtung
do cnt=fline to lline
   "(linedata) = line" cnt
   temp.cnt = linedata
end
do cnt=lline to fline by -1
   data=temp.cnt
   interpret '"'macrocmd dline "= '&data'"""
end
startmsg=left('Beginn neuer Bereich ',70,'*')
endemsg=left('Ende neuer Bereich ',70,'*')
interpret '"'macrocmd dline "= msgline '&startmsg'"""
dline=dline+lline-fline+1
interpret '"'macrocmd dline "= msgline '&endemsg'"""
exit 0
back to Edit Macros