指令以外の行は、テキストである。これを書き出すルーチンtext()の 臨時第一版を示す。この版は下請けルーチンput()を呼び出すだけである。
RATFORでは、
# text.r4 -- process text lines (interim version 1)
subroutine text(inbuf)
character inbuf(INSIZE)
call put(inbuf)
return
end
WATCOM fortran 77では、
c text.f -- process text lines (interim version 1)
subroutine text(inbuf)
integer*1 inbuf(82) ! INSIZE(82)
call put(inbuf)
return
end
下請けルーチンput()では、ページのレイアウトを考慮した出力が作り出される。
RATFOR版は、以下の通り。
# put.r4 -- put out line with proper spacing and indenting
subroutine put(buf)
character buf(MAXLINE)
integer min
integer i
include cpage.ri
include cparam.ri
if (lineno == 0 | lineno > bottom)
call phead
for (i = 1; i <= tival; i = i + 1) # indenting
call putc(BLANK)
tival = inval
call putlin(buf,STDOUT)
call skip(min(lsval-1,bottom-lineno))
lineno = lineno + lsval
if (lineno > bottom)
call pfoot
return
end
WATCOM fortran77版は、以下の通り。
c put.f -- put out line with proper spacing and indenting
subroutine put(buf)
integer*1 buf(82) ! MAXLINE(82)
integer min
integer i
include cpage.fi
include cparam.fi
if ((lineno .eq. 0) .or. (lineno .gt. bottom)) then
call phead
end if
i = 1 ! indenting
while (i .le. tival) do
call putc(32) ! BLANK(32)
i = i + 1
end while
tival = inval
call putlin(buf,6) ! STDOUT(6)
call skip(min(lsval-1,bottom-lineno))
lineno = lineno + lsval
if (lineno .gt. bottom) then
call pfoot
end if
return
end
ページ見出し、ヘッダーとフッターは、phead()、pfoot()で書き出す。 put()は、これらを適当な位置で書き出すよう制御する。
phead()のRATFOR版は、以下の通り。
# phead.r4 -- put out page header
subroutine phead
include cpage.ri
curpag = newpag
newpag = newpag + 1
if (m1val > 0) {
call skip(m1val - 1)
call puttl(header,curpag)
}
call skip(m2val)
lineno = m1val + m2val + 1
return
end
WATCOM fortran 77版は、以下の通り。
c phead.f -- put out page header
subroutine phead
include cpage.fi
curpag = newpag
newpag = newpag + 1
if (m1val .gt. 0) then
call skip(m1val-1)
call puttl(header,curpag)
end if
call skip(m2val)
lineno = m1val + m2val + 1
return
end
pfoot()のRATFOR版は、以下の通り。
# pfoot.r4 -- put out page footer
subroutine pfoot
include cpage.ri
call skip(m3val)
if (m4val > 0) {
call puttl(footer,curpag)
call skip(m4val - 1)
}
return
end
WATCOM fortran 77版は、以下の通り。
c pfoot.f -- put out page footer
subroutine pfoot
include cpage.fi
call skip(m3val)
if (m4val .gt. 0) then
call puttl(footer,curpag)
call skip(m4val - 1)
endif
return
end
phead()、pfoot()とも、ページ見出しの書き出しはputtl()を使用する。 puttl()は、書き出す内容にPAGEMUN記号("#")が含まれていた場合、 その場所にページ番号を入れ込む。
puttl()のRATFOR版は、以下の通り。
# puttl.r4 -- put title line with optional page number
subroutine puttl(buf,pageno)
character buf(MAXLINE)
integer pageno
integer i
for (i = 1; buf(i) != EOS; i = i + 1)
if (buf(i) == PAGENUM)
call putdec(pageno,1)
else
call putc(buf(i))
return
end
WATCOM fortran 77版は、以下の通り。
c puttl.for -- put title line with optional page number
subroutine puttl(buf,pageno)
integer*1 buf(82) ! MAXLINE(82)
integer pageno
integer i
i = 1
while (buf(i) .ne. -2) do ! EOS(-2)
if (buf(i) .eq. 35) then ! PAGENUM('#',35)
call putdec(pageno,1)
else
call putc(buf(i))
end if
i = i + 1
end while
return
end
ページ見出しは、gettl()でページ見出し用のバッファーにセットする。
gettl()のRATFOR版は、以下の通り。
※コメントの受付件数を超えているため、この記事にコメントすることができません。