Ошибки 1-4 обрабатываются следующим алгоритмом:
for (int i=0; i<VectJoinTotal.size(); i++)
{
String out = ((Vector)VectJoinTotal.get(i)).elementAt(0).toString();
String out_id = ((Vector)VectJoinTotal.get(i)).elementAt(1).toString();
String in = ((Vector)VectJoinTotal.get(i)).elementAt(2).toString();
String in_id = ((Vector)VectJoinTotal.get(i)).elementAt(3).toString();
if (VectNames.indexOf(out) == -1)
{
error.set("При установлении связей используется неопределенный блок1 - "+out+"!");
return false;
}
if (VectNames.indexOf(in) == -1)
{
error.set("При установлении связей используется неопределенный блок2 - "+in+"!");
return false;
}
if (out.equals(in))
{
error.set("При установлении связей в качестве выхода и входа используется один и тот же блок - "+out+"!");
return false;
}
if (((Hashtable)(HTidTotal.get(out))).get(out_id) == null)
{
error.set("При установлении связей используется идентификатор "+out_id+", не соответствующий блоку "+out+"!");
return false;
}
if (((Hashtable)(HTidTotal.get(in))).get(in_id) == null)
{
error.set("При установлении связей используется идентификатор "+in_id+", не соответствующий блоку "+in+"!");
return false;
}
if (i != VectJoinTotal.size()-1)
{
for (int j=i+1; j<VectJoinTotal.size(); j++)
{
if (in.equals(((Vector)VectJoinTotal.get(j)).elementAt(2).toString()) && in_id.equals(((Vector)VectJoinTotal.get(j)).elementAt(3).toString()))
{
error.set("При установлении связей на вход "+in_id+" блока "+in+" значение передаётся более чем с одного выхода!");
return false;
}
}
}
}
Остальные ошибки обрабатываются при выполнении последовательности пентад.
Выполнение последовательности пентад представляет собой вычисление выражений программы, преобразованных в последовательность пентад. Для хранения вычисленных значений используется приведённый ниже объект:
final Vector VectValues = new Vector(); //вектор для хранения значений переменных
Для выполнения последовательности пентад применяется следующий алгоритм:
<br><div align=center><b><big>Выполнение последовательности пентад</big></b></div>
<%String block_name = new String(); int ii; int i; int block_ind = 0; Object err = ""; Object tmp; Object tmp2; int ind; int ind2; Float val; Float val2; Object res; Vector TmpNames = new Vector(VectNames); boolean found = true;%>
<% while (TmpNames.size() != 0)
{for (ii=0; ii<TmpNames.size(); ii++)
{
for (int j=0; j<VectJoinTotal.size(); j++)
{
String in = ((Vector)VectJoinTotal.get(j)).elementAt(2).toString();
if ((in.equals(TmpNames.get(ii))))
{
found=false;
break;
}
else found=true;
}
if (found)
{
block_ind = VectNames.indexOf(TmpNames.get(ii));
block_name = (String)(TmpNames.get(ii));
break;
}
}
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.