begin ; !Copy
!Modded JHB 10/12/84: removed FCOMM call & replaced by COPY.
!Modded JGH 24/01/85: uses PAM values rather than always / & to use stream 0
! GDMR 28/06/85: concatenation now works (again?)
option "-nocheck-nodiag"
include "inc:util.imp"
string (255)parm,in,out
byte sep = '/'
integer output stream
routine copy char by char
integer sym
on 3,9 start
selectoutput(0)
returnif event_event=9
printstring(event_message)
newline unless event_message=""
return
finish
select input (0)
openinput(1,in) and selectinput(1) if in#""
select output(output stream); ! GDMR
cycle
readsymbol(sym); printsymbol(sym)
repeat
end
predicate done remotely
integer i
on 3 start
false
finish
falseif in="" or out="" or charno(in,1)=':' or charno(out,1)=':'
for i = 1,1,length(in) cycle
falseif charno(in,i)=','
repeat
copy(in,out)
true
end
onevent 3,4 start
selectoutput(0); printline(event_message)
stop
finish
Select input (0)
Select output (0)
sep = PAM_group sep if pam_group sep >=' '
parm = cliparam
if parm = "" start
Prompt ("Input file(s): ")
read line (in)
Prompt ("Output file: ")
read line (out)
Prompt (":")
else
in = parm and out = "" unless parm -> in.(TO STRING(SEP)).out
finish
unless done remotely start
if out = "" start
output stream = 0
else
open output(1, out)
output stream = 1
finish
parm = in.","
copy char by char while parm -> in.(",").parm
finish
endofprogram