-- Public Domain -- 2006, March 21 -- by Ghen Egorof (egege@rambler.ru) -- Standard disclaimer: Use at your own risk! --One-dimensional arrays' writing and reading include get.e include machine.e --In order to open a file --use "wb" for writing --and "rb" for reding global procedure put2(integer fn,sequence shar) --write 16-bit numbers integer c for i=1 to length(shar) do c = shar[i] puts(fn,and_bits(c,#FF) & (and_bits(c,#FF00) / #100)) end for end procedure global function get2(integer fn) --read 16-bit numbers integer c sequence shar shar = {} while 1 do c = getc(fn) if c = -1 then exit end if c += #100*getc(fn) shar &= c end while return shar end function global procedure put4(integer fn,sequence intar)--write 32-bit numbers for i=1 to length(intar) do puts(fn,int_to_bytes(intar[i])) end for end procedure global function get4(integer fn) --read 32-bit numbers integer c sequence intar intar = {} while 1 do c = getc(fn) if c = -1 then exit end if intar &= bytes_to_int(c & get_bytes(fn,3)) end while return intar end function global procedure put255(integer fn,sequence star)--write short strings (strlen < 256 symbols) for i=1 to length(star) do puts(fn,length(star[i]) & star[i]) end for end procedure global function get255(integer fn) --read short strings integer c sequence star star = {} while 1 do c = getc(fn) if c=-1 then exit elsif c then star = append(star,get_bytes(fn,c)) else star = append(star,"") end if end while return star end function