1 TO ss
REPEAT
# якщо підсумкові показники всіх фірм однакові, то вибирається перша зустрічна, на якій є необхідна кількість товару.
IF (QuBu [1] [I] = QuBu [2] [I]) AND (QuBu [1] [I] = QuBu [3] [I])
AND (QuBu [1] [I] <> 0)
DO LOOP
FOR J FROM 1 TO g
REPEAT
# підрахунок залишків і виявлення упущених клієнтів
IF balance [J]> = CRITER [2] [I] DO
balance [J]: = balance [J]-CRITER [2] [I];
QuanBuy [J] [I]: = 1;
LOST_clients [J]: = FALSE;
EXIT ;
END
END_LOOP
END
ELSIF (QuBu [1] [I] <> QuBu [2] [I]) OR (QuBu [1] [I] <> QuBu [3] [I])
DO
maxim: = 0;
FOR J FROM 1 TO g
REPEAT
IF QuBu [J] [I]> maxim DO
maxim: = QuBu [J] [I];
imaxim: = J;
JMAX: = I;
END
END_LOOP
Підрахунок залишків і обсягу втрачених продажів
IF balance [imaxim]> = CRITER [2] [I] DO
balance [imaxim]: = balance [imaxim]-CRITER [2] [I];
QuanBuy [imaxim] [JMAX]: = 1;
LOST_clients [imaxim]: = FALSE;
END
ELSIF balance [imaxim]
DISPLAY ("Товару НІ на% d ! N ", imaxim);
LOST_clients [imaxim]: = TRUE;
dem [imaxim]: = dem [imaxim] + CRITER [2] [I];
END
END
END_LOOP
FOR J FROM 1 TO ss
REPEAT
f: = f + QuanBuy [1] [J]; # підрахунок кількості покупців 1 фірми
END_LOOP
FOR J FROM 1 TO ss
REPEAT
f2: = f2 + QuanBuy [2] [J]; # підрахунок кількості покупців 2 фірми
END_LOOP
FOR J FROM 1 TO ss
REPEAT
f3: = f3 + QuanBuy [3] [J]; # підрахунок кількості покупців 3 фірми
END_LOOP
clients [1]: = f;
clients [2]: = f2;
clients [3]: = f3;
# Виявлення фірми-лідера
max_cl: = 0;
FOR I FROM 1 TO g
REPEAT
IF clients [I]> max_cl
DO
max_cl: = clients [I];
leader: = I;
END
END_LOOP
RETURN
END OF FChoice
Наприкінці тимчасового періоду кожній фірмі відправляється інформація про кількість покупців і про залишки товару на складах. Це реалізовано в компоненті високого рівня. p> HIGH LEVEL COMPONENT Market_HIGH
SUBCOMPONENTS
Firm,
Firm2,
Firm3,
buyer,
Market
COMPONENT CONNECTION
Firm.QueryStock1--> Market.QStock1;
Firm2.QueryStock2--> Market.QStock2;
Firm3.QueryStock3--> Market.QStock3; p> buyer.criterion {i OF 1 .. 9} {j OF 1 .. 100} -> Market.criterion [i] [j]; масив критеріїв покупців
Firm.parameters1 {i OF 1 .. 9} -> Firm3.parameters1 [i]; параметри 1 фірми в 3-ю
Firm2.parameters2 {i OF 1 .. 9} -> Firm3.parameters2 [i]; параметри 2 фірми в 3-ю
Market.g--> Firm.g;
...