コマンドの処理 3 COPY(修正版)2016年07月03日 09:50

転写指令copy行の転写を行う。形式は、

     (.,.)k行3

指定された範囲を行3の後ろに転写する。転写だから指令を"c"にしたいが、 すでに使ってしまったので、苦しいが"k"とする。 転写指令ののためのdocmdの該当部分は、以下の通り。

      else if (lin(i) == COPYCMD) {
          i = i + 1
          if (getone(lin,i,line3,status) == EOF)
              status = ERR
          if (status == OK)
              if (ckp(lin,i,pflag,status) == OK)
                  if (defalt(curln,curln,status) == OK)
                      status = kopy(line3)
          }

実際の転写はkopy()で行う。

Kopy()のRATFOR版は、以下の通り。

# kopy.r4 -- copy lines into aonother line
      integer function kopy(line3)
      integer line3
      integer line,junk
      integer gettxt,inject,nextln

      include ctxt.fi
      include clines.fi

      kopy = ERR
      if (line3 <= line1 | line3 < line2)
          return
      curln = line3
      for (line = line1; line <= line2; line = nextln(line)) {
          junk = gettxt(line)
          kopy = inject(txt)
      }
      return
      end

Kopy()のWATCOM fortran77版は、以下の通り。

c kopy.f -- copy lines into aonother line
      integer function kopy(line3)
      integer line3
      integer line,junk
      integer gettxt,inject,nextln

      include ctxt.fi
      include clines.fi

      kopy = -3                         ! ERR(-3)
      if ((line3 .le. line1) .or. (line3 .lt. line2)) then
          return
      end if
      curln = line3
      line = line1
      while (line .le. line2) do
          junk = gettxt(line)
          kopy = inject(txt)
          line = nextln(line)
      end while
      return
      end