Iniziospecifica attivita principale principale(d:Insieme(Dipendenti), g: Insieme(Giornate)); VariabiliProcesso da: Insieme(Dipendenti); dr: Insieme(Dipendenti); ris1: Map(Sede,int); ris2: Map(Dipendente,int); InizioProcesso scarta(d,g):(d); partiziona(d,g):(da,dr) fork { thread t1 : { sottoramo1(dr):(ris1) } thread t2 : { sottoramo2(da,g):(ris2); } } join t1,t2; report(ris1,ris2); FineProcesso FineSpecifica %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Iniziospecifica attivita sottoramo1 sottoramo1(dr: Insieme(Dipendenti)): (ris: Map(Sede,int)) VariabiliProcesso s:Sede n: int; InizioProcesso leggiSede():(s); //s==null significa terminare sottoattivita while(s!=null) { calcola(dr,s):(n) ris.aggiungientry(s,n); leggiSede():(s) } FineProcesso FineSpecifica %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Iniziospecifica attivita sottoramo2 sottoramo2(da: Insieme(Dipendenti), g:Insieme(Giornate)): (ris: Map(Dipendente,int)) VariabiliProcesso InizioProcesso calcoloGiornate(da,g):(ris); FineProcesso FineSpecifica