PACKET umgebungswechselmanagerDEFINES umgebungswechsel:LET ack=0,nak=1, manager=" manager";PROC umgebungswechsel(KNOTEN CONST k,TEXT CONST zieltask, INT VAR fstatus):INT VAR kanal;pruefezieltask;IF fstatus=ackTHEN gibkanalfrei ;sendedatenbankkennungundkanalanmanager;IF fstatus=ackTHEN sendesystembaumundaktuellenknotenansohntaskFI ;belegekanalwiederFI . pruefezieltask:disablestop;TASK VAR zielmanager:=/(zieltask+manager), stellvertreter;IF iserrorTHEN fstatus:=nakELSE fstatus:=ackFI ;clearerror. sendedatenbankkennungundkanalanmanager:DATASPACE VAR dsvar:=nilspace;call( zielmanager,kanal,dsvar,stellvertreter,fstatus);forget(dsvar). sendesystembaumundaktuellenknotenansohntask:holesystembaumundanfangsknoten; call(stellvertreter,anfangsknoten,systembaumds,fstatus);forget(systembaumds). gibkanalfrei:kanal:=channel(myself);break(quiet).belegekanalwieder:continue( kanal).holesystembaumundanfangsknoten:DATASPACE VAR systembaumds:=systembaum; INT CONST anfangsknoten:=nummer(k).END PROC umgebungswechsel;PROC call(TASK CONST zielmanager,INT CONST kanal,DATASPACE VAR ds,TASK VAR stellvertreter, INT VAR fstatus):call(zielmanager,kanal,ds,fstatus);IF fstatus=ackTHEN BOUND TASK VAR t:=ds;stellvertreter:=tFI ;forget(ds);break(quiet);END PROC call; END PACKET umgebungswechselmanager