int main() { decl int temp, x, a, pidone, pidtwo, semid, iter, data, permission, fd; string filename; enddecl begin temp=exposcall("Read",-1,filename); temp=exposcall("Read",-1,permission); temp=exposcall("Create",filename, permission); pidone = exposcall("Fork"); if (pidone != 0 ) then fd=exposcall("Open",filename); iter=1; while(iter <= 100) do a=exposcall("Read",fd, data); if(a!=-2) then temp=exposcall("Write",-2, data); iter=iter+1; endif; endwhile; else semid = exposcall("Semget"); fd=exposcall("Open",filename); pidtwo = exposcall("Fork"); if(pidtwo == 0) then iter = 1; while(iter <= 100) do temp = exposcall("SemLock", semid); temp=exposcall("Write",fd, iter); temp = exposcall("SemUnLock", semid); iter=iter+2; endwhile; else iter = 2; while(iter <= 100) do temp = exposcall("SemLock", semid); temp=exposcall("Write",fd, iter); temp = exposcall("SemUnLock", semid); iter=iter+2; endwhile; endif; temp = exposcall("Semrelease", semid); endif; return 0; end }