decl int store(str file, int start); enddecl int store(str file, int start) { decl int x, fp, fp1, a, word, counter; enddecl begin x=exposcall("Create", file, 1); fp=exposcall("Open", "merge.dat"); fp1=exposcall("Open", file); x=exposcall("Seek", fp, start); counter=0; a=exposcall("Read", fp, word); while(a!=-2 AND counter<64) do x=exposcall("Write", fp1, word); a=exposcall("Read", fp, word); counter=counter+1; endwhile; x=exposcall("Close", fp); x=exposcall("Close", fp1); return 0; end } int main() { decl int x, pid, pid1, pid2; str file; enddecl begin x=initialize(); pid=exposcall("Fork"); if(pid!=0) then while(pid<13) do x=exposcall("Wait", pid); pid=pid+1; endwhile; else x=exposcall("Fork"); x=exposcall("Fork"); x=exposcall("Fork"); pid=exposcall("Getpid"); if(pid==5) then file="temp1.dat"; endif; if(pid==6) then file="temp2.dat"; endif; if(pid==7) then file="temp3.dat"; endif; if(pid==8) then file="temp4.dat"; endif; if(pid==9) then file="temp5.dat"; endif; if(pid==10) then file="temp6.dat"; endif; if(pid==11) then file="temp7.dat"; endif; if(pid==12) then file="temp8.dat"; endif; pid=(pid-5)*64; x=store(file, pid); x=exposcall("Exit"); endif; write("Stored"); pid=exposcall("Fork"); if(pid!=0) then while(pid<13) do x=exposcall("Wait", pid); pid=pid+1; endwhile; else x=exposcall("Fork"); x=exposcall("Fork"); x=exposcall("Fork"); x=exposcall("Exec", "m_sort.xsm"); endif; write("Sorted"); return 1; end }