File input/output: Difference between revisions

Content added Content deleted
(Added solution for Action!)
Line 213: Line 213:
(read-from-file in (expt 2 40) state)
(read-from-file in (expt 2 40) state)
(write-to-file out contents state)))</lang>
(write-to-file out contents state)))</lang>

=={{header|Action!}}==
The attached result has been obtained under DOS 2.5.
{{libheader|Action! Tool Kit}}
<lang Action!>INCLUDE "D2:IO.ACT" ;from the Action! Tool Kit

PROC Dir(CHAR ARRAY filter)
BYTE dev=[1]
CHAR ARRAY line(255)

Close(dev)
Open(dev,filter,6)
DO
InputSD(dev,line)
PrintE(line)
IF line(0)=0 THEN
EXIT
FI
OD
Close(dev)
RETURN

PROC CopyFile(CHAR ARRAY src,dst)
DEFINE BUF_LEN="1000"
BYTE in=[1], out=[2]
BYTE ARRAY buff(BUF_LEN)
CARD len

Close(in)
Close(out)
Open(in,src,4)
Open(out,dst,8)

DO
len=Bget(in,buff,BUF_LEN)
IF len>0 THEN
Bput(out,buff,len)
FI
UNTIL len#BUF_LEN
OD

Close(in)
Close(out)
RETURN

PROC Main()
CHAR ARRAY filter="D:*.*",
src="D:INPUT.TXT", dst="D:OUTPUT.TXT"

Put(125) PutE() ;clear screen

PrintF("Dir ""%S""%E",filter)
Dir(filter)

PrintF("Copy ""%S"" to ""%S""%E%E",src,dst)
CopyFile(src,dst)

PrintF("Dir ""%S""%E",filter)
Dir(filter)
RETURN</lang>
{{out}}
[https://gitlab.com/amarok8bit/action-rosetta-code/-/raw/master/images/File_input_output.png Screenshot from Atari 8-bit computer]
<pre>
Dir "D:*.*"
DOS SYS 037
DUP SYS 042
INPUT TXT 011
617 FREE SECTORS

Copy "D:INPUT.TXT" to "D:OUTPUT.TXT"

Dir "D:*.*"
DOS SYS 037
DUP SYS 042
INPUT TXT 011
OUTPUT TXT 011
606 FREE SECTORS
</pre>


=={{header|Ada}}==
=={{header|Ada}}==