Initial commit

This commit is contained in:
2022-08-19 15:22:33 +02:00
commit d682fae506
545 changed files with 48172 additions and 0 deletions

180
gen/metaf.f Normal file
View File

@ -0,0 +1,180 @@
subroutine meta_put(str, value)
character str*(*)
real value
integer i
if (value .eq. 0.0) then
i=index(str,'=')
if (i .gt. 0) then
if (i .eq. 1) return
if (i .eq. len(str)) then
call meta_put_str(str(1:i-1), ' ', 0)
else
call meta_put_str(str(1:i-1), str(i+1:), 0)
endif
return
endif
endif
call meta_put_real(str, value, 0)
end
subroutine sym_put_str(name, str)
character name*(*), str*(*)
call meta_put_str(name, str, 1)
end
subroutine sym_put_real(name, value)
character name*(*)
real value
call meta_put_real(name, value, 1)
end
subroutine sym_get_str(name, l, str)
character name*(*), str*(*)
integer l
str=' '
call meta_get_str(name, str)
call str_trim(str, str, l)
end
subroutine sym_get_real(name, value)
character name*(*)
real value
call meta_get_real(name, value)
end
subroutine fit_put_str(name, str)
character name*(*), str*(*)
call meta_put_str(name, str, 1)
end
subroutine fit_put_real(name, value)
character name*(*)
real value
call meta_put_real(name, value, 1)
end
subroutine fit_get_str(name, l, str)
character name*(*), str*(*)
integer l
str=' '
call meta_get_str(name, str)
call str_trim(str, str, l)
end
subroutine fit_get_real(name, value)
character name*(*)
real value
call meta_get_real(name, value)
end
subroutine sym_list(lun, listmode, to_lev, except)
integer lun, listmode
integer to_lev
character*(*) except
integer l
external sym_out_file
integer meta_lim_level
if (listmode .gt. 0) call sym_out_lev(1)
do l=meta_lim_level(-99999),meta_lim_level(to_lev)
if (listmode .eq. 0) call sym_out_lev(l)
call meta_list(l, listmode, 0, sym_out_file, lun, except)
call meta_list(l, listmode, 1, sym_out_file, lun, except)
call sym_out_ln(lun) ! line break
enddo
end
subroutine sym_out_file(lun, line)
integer lun, lvl
character line*(*) ! empty line means evt. line break
character buf*256
integer l/0/, lev/0/
save buf, l, lev
integer ll
character ind*32/' '/
call str_trim(line, line, ll)
if (l+ll .gt. 80-lev) then
if (lev .eq. 0) then
write(lun, '(a)') buf(1:l)
else
write(lun, '(a,a)') ind(1:lev),buf(1:l)
endif
l=0
elseif (l .gt. 0) then
buf(l+1:l+2)=';'
l=l+2
endif
buf(l+1:)=line
l=l+ll
return
entry sym_out_ln(lun)
if (l .gt. 0) then
if (lev .eq. 0) then
write(lun, '(a)') buf(1:l)
else
write(lun, '(a,a)') ind(1:lev),buf(1:l)
endif
endif
l=0
return
entry sym_out_lev(lvl)
lev=lvl
end
subroutine sym_show(lev)
integer lev
call meta_set_level(lev)
end
subroutine sym_newline
entry sym_level
end
subroutine sym_read(lun, wrapper)
integer lun
external wrapper
character line*132
external meta_put
integer j, iostat
call wrapper(' ', 0.0, meta_put) ! reset
call dat_delimiters(';', '=', '''')
10 continue
read(lun, '(a)', iostat=iostat) line
if (iostat .ne. 0 .or. line .eq. ' ') return
j=0
do while (line(j+1:j+1) .eq. ' ')
j=j+1
enddo
call meta_set_level(j)
call dat_intprt(line, wrapper, meta_put)
goto 10
end
subroutine sym_purge(lev)
integer lev
call meta_purge(lev, 99999)
end
subroutine obsolete
print *,'obsolete function called'
end