.proc,compmod,abort=noabort/abort,module=$$,ol=/o,list=on, lo=f,base=cybopl,binfile=lgo. .* .* compile a module and process errors. .* .* entry module = module to compile, null if already .* on compile file. .* abort = $abort$ if you want to abort if .* errors occur. .* ol = present, generates object listing. .* absent, no object listing done. .* list = on if listing required, off if not. .* lo = ses.cybil list options. default = .* full listing. .* binfile = file to write binary to. .* default = lgo. .* ife($module$.ne.$$,compile) ses. gencomp seq=80 status b=base un=plato cybccmn .. m=(module) endif(compile) .* .* call cybil compiler if there were no errors. .* ife(efg.eq.0,gcompok) unload(seslist) *ses. cybil #lo=lo_ol l=seslist b=binfile ses. cybil #lo=o l=seslist b=binfile endif(gcompok) .* .* if no errors, copy print to the full listing file. .* ife(efg.eq.0,seserrs) ife($list$.eq.$on$,getlist) rewind(seslist) .*copy(seslist,full) ses. print f=seslist hn=0 endif(getlist) unload,seslist,compile. .* .* if errors occur, copy the print to full listing .* and then abort if requested. .* else(seserrs) rewind(seslist,errlist) copy(seslist,full) copy(errlist,errs) unload(seslist,errlist,compile) .* .* terminate job if requested. .* ife($abort$.eq.$abort$,abt) revert,abort. compilation errors .* else(abt) set(efg=0) endif(abt) .* endif(seserrs) .* revert. compmod ~