codedMessages2.put("RR42_2","как массив в функции");
//1001
codedMessages.put("R1","Неверное расположение директивы: можно располагать только %s %s %s.");
codedMessages.put("R2","Неверное выражение: слишком много переменных цикла.");
codedMessages.put("R3","Неверное выражение: возможно только вида a * i + b.");
codedMessages.put("R4","Неверное расположение директивы: для области '%s' ожидается 'SPF END PARALLEL_REG_DIR', а была получена 'SPF PARALLEL_REG_DIR'.");
codedMessages.put("R5","Неверное расположение директивы: для области '%s' ожидается 'SPF END PARALLEL_REG_DIR'.");
codedMessages.put("R6","Неверное расположение директивы: для области '%s' ожидается 'SPF END PARALLEL_REG_DIR'.");
codedMessages.put("R7","Неверное расположение директивы: ожидается 'SPF PARALLEL_REG_DIR', а была получена 'SPF END PARALLEL_REG_DIR'.");
codedMessages.put("R8","Неверное расположение директивы: ожидается 'SPF PARALLEL_REG_DIR' в той же области видимости.");
codedMessages.put("R9","Неверное расположение директивы: ожидается 'SPF PARALLEL_REG_DIR'.");
codedMessages.put("R10","Неправильная расстановка области распараллеливания: есть несколько входов во фрагмент '%s', вызванные оператором ENTRY.");
codedMessages.put("R11","Неправильная расстановка области распараллеливания: есть несколько входов во фрагмент '%s', вызванные оператором GOTO.");
codedMessages.put("R12","Неправильное расположение строк: можно выбирать строки только в исполняемой части кода.");
codedMessages.put("R13","Неправильное расположение строк: начало не может быть больше конца.");
codedMessages.put("R14","Неправильное расположение строк: начало и конец при расширении не могут лежать в разных областях.");
codedMessages.put("R15","Неправильное положение строки: начало и конец не могут быть в неявных фрагментах.");
codedMessages.put("R16","Неправильное положение строк: начало и конец не могут быть в разных процедурах.");
codedMessages.put("R17","Неправильное расположение строк: выделенный фрагмент при расширении не должен включать фрагменты разных областей.");
codedMessages.put("R18","Неправильное расположение строк: начало и конец должны быть в одной области видимости.");
codedMessages.put("R19","Неправильное расположение строк %d-%d: нельзя объединить фрагменты в разных областях видимости.");
codedMessages.put("R20","Неправильное расположение строк: начало и конец должны быть в одной области видимости.");
//1002
codedMessages.put("R21","Переменная '%s' не используется в цикле.");
codedMessages.put("R22","Переменная '%s' не используется в цикле.");
//1003
codedMessages.put("R23","Переменная '%s' не изменяется в цикле.");
codedMessages.put("R24","Переменная '%s' не изменяется в цикле.");
//1004
codedMessages.put("R25","Размерность массива '%s' %d, а должна быть 1.");
//1005
codedMessages.put("R26","Тип массива '%s' должен быть INTEGER.");
//1006
codedMessages.put("R27","Типом переменной '%s' должен быть массив.");
codedMessages.put("R28","Переменная '%s' не является массивом.");
codedMessages.put("R29","Переменная '%s' не является массивом.");
//1007
codedMessages.put("R30","Размер массива не может быть вычислен.");
//1008
codedMessages.put("R31","Размер массива '%s' %d, а вы вводите %d.");
codedMessages.put("R32","Размерность массива '%s' %d, а вы вводите %d.");
//1009
codedMessages.put("R33","Массив '%s' является приватным.");
codedMessages.put("R34","Массив '%s' является приватным.");
//1010
codedMessages.put("R35","Разрешены только положительные числа.");
//1011
codedMessages.put("R36","Нет такого выражения '%s' в цикле.");
//1012
codedMessages.put("R37","Невозможно определить размеры массива '%s'.");
codedMessages.put("R149","Невозможно определить размеры цикла '%s'.");
//1013
codedMessages.put("R38","Отличается количество формальных и фактических параметров для процедуры '%s'.");//Требуется выполнить подстановку процедуры '%s', так как
codedMessages.put("R39","Отличается тип фактического (%s : %s) и формального (%s : %s) %d-го параметра для процедуры '%s'.");//Требуется выполнить подстановку процедуры '%s', так как
codedMessages.put("R40","Требуется выполнить подстановку процедуры '%s', так как можно передавать массивы только целиком.");
codedMessages.put("R41","Требуется выполнить подстановку процедуры '%s' из-за обращения к неприватному массиву '%s' в цикле на строке %d %s.");
codedMessages.put("R42","Требуется выполнить подстановку процедуры '%s' из-за обращения к неприватному массиву '%s' %s.");
codedMessages.put("R43","Требуется подставить процедуру '%s' из-за разной размерности массива '%s', передаваемого в качестве параметра: размерность формального параметра = %d, а фактического параметра = %d.");
codedMessages.put("R44","Для процедуры '%s' обнаружено несоответствие типов формального и фактического параметра для массива '%s'.");
codedMessages.put("R45","Необходимо подставить процедуру '%s', так как через параметр %d передается итерационная переменная цикла на строке %d и она используется в индексном выражении в обращении к массиву в теле этой процедуры.");
codedMessages.put("R47","Данная процедура не вызывается в данном проекте.");
//1016
codedMessages.put("R48","Невозможно вычислить количество итераций данного цикла, информация о количестве итераций для всех остальных циклов в области распараллеливания '%s' будет проигнорирована.");
//1017
codedMessages.put("R49","Невозможно найти определение для символа '%s' в данной области видимости.");
//1018
codedMessages.put("R50","Данный цикл не в END DO формате.");
codedMessages.put("R51","Данный цикл не в END DO формате.");
//1019
codedMessages.put("R52","Включаемый файл '%s' содержит исполняемые операторы, что запрещено к распараллеливанию в системе SAPFOR.");
//1020
codedMessages.put("R53","Активные DVM-директивы не поддерживаются.");
//1021
codedMessages.put("R54","Обращение к массиву '%s' содержит более одной индексной переменной циклов.");
codedMessages.put("R55","Обращение к массиву '%s' по измерению '%d' не содержит итерационных переменных циклов.");
//1022
codedMessages.put("R56","Обращение к массиву '%s' имеет косвенную адресацию.");
//1023
codedMessages.put("R57","Невозможно вычислить индексное выражение в обращении к массиву '%s'.");
//1024
codedMessages.put("R58","Коэффициент A в линейном обращении A*x+B к массиву '%s' не может быть отрицательным, так как инверсное распределение не поддерживается.");
//1025
codedMessages.put("R59","Невозможно сопоставить обращение к массиву на запись '%s' с данными циклом.");
//1026
codedMessages.put("R60","Обнаружен оператор записи в нераспределенный массив '%s', связанный с данным циклом.");
codedMessages.put("R61","Обнаружен оператор записи в нераспределенный массив '%s', связанный с данным циклом.");
//1027
codedMessages.put("R179","Обнаружен более, чем один оператор в одной и той же строке, попробуйте применить проход 'Коррекция стиля кода'.");
//1028
codedMessages.put("R62","Описание модуля '%s' должно находиться в данном файле.");
//1029 && 1030
codedMessages.put("R158","Рекурсия не анализируется для приватных переменных в common-блоке '%s'.");
codedMessages.put("R159","Анализ приватных переменных невозможен для данного цикла из-за: '%s'.");
codedMessages.put("R160","Переменная '%s' из списка приватных переменных не может быть классифицирована как приватная.");
codedMessages.put("R161","Массив '%s' из списка приватных переменных не может быть классифицирована как приватный.");
codedMessages.put("R163","Добавлена приватная переменная по массиву '%s");
//1031
codedMessages.put("R63","Неверное имя области: имя '%s' уже объявлено на строке %d.");
//1032
codedMessages.put("R64","Неверное имя области: имя '%s' уже объявлено в common-блоке '%s'.");
//1033
codedMessages.put("R65","Область распараллеливания '%s' включает саму себя в файле '%s'.");
//1034
codedMessages.put("R66","Неверное расположение области: не существует common-блока в текущей функции '%s' со следующими массивами:%s.");
//1035
//--- TODO
//1036
codedMessages.put("R67","Невозможно построить дерево выравнивания в данной области распараллеливания, используя пользовательские DVM-директивы.");
//1037
codedMessages.put("R68","Массив '%s' не может быть распределен из-за ограничений ввода/вывода, накладываемых DVM системой.");
//1038
codedMessages.put("R69","Оператор PAUSE является запрещенным в параллельной программе.");
codedMessages.put("R70","Оператор EQUIVALENCE не поддерживается на данный момент.");
//1039
codedMessages.put("R71","Переменные '%s' и '%s' находятся в одной области ассоциации (common block '%s'), но имеют разные типы (файлы - %s:%d и %s:%d).");
//1040
codedMessages.put("R72","Первые %d измерений массива '%s' запрещены к распределению из-за передачи к процедуру '%s'.");
codedMessages.put("R73","Первое измерение массива '%s' запрещено к распределению из-за передачи в процедуру '%s'.");
//1041
codedMessages.put("R74","Область распараллеливания '%s'содержит строку, которая включена в другую область, необходимо применить проход 'Разрешение конфликтов областей'.");
//1042
codedMessages.put("R75","Распределенный массив '%s' состоящий в common блоке '%s' должен иметь описание в главной программной единице.");
//1043
codedMessages.put("R76","Неверное выражение в директиве: ожидается список переменных.");
codedMessages.put("R77","Неверное выражение в директиве: ожидается %d тесно-вложенных циклов на строке %d, но их всего %d.");
codedMessages.put("R78","Неверное выражение в директиве: ожидается переменная '%s' на позиции %d.");
//1044
codedMessages.put("R79","Поддерживаются процедуры только без побочных эффектов.");
codedMessages.put("R80","Поддерживаются процедуры только без побочных эффектов.");
//1045
codedMessages.put("R81","Аргумент '%s' процедуры '%s' имеет неизвестные нижнюю и/или верхнюю границы.");
//1046
codedMessages.put("R82","Количество формальных и фактических параметров не одинаково для вызова данной процедуры '%s'.");
codedMessages.put("R83","Количество формальных и фактических параметров не одинаково для вызова данной процедуры '%s'.");
codedMessages.put("R84","Количество формальных и фактических параметров не одинаково для вызова данной процедуры '%s'.");
//1047
codedMessages.put("R85","%d измерение массива '%s' не может быть распределено из-за различных отображений на циклы в операциях присваиваний.");
codedMessages.put("R86","Массив '%s' не может быть распределен, так как все его измерения запрещены к распределению.");
codedMessages.put("R87","Массив '%s' не может быть распределен.");
codedMessages.put("R88","Массив '%s' не может быть распределен.");
codedMessages.put("R89","Массив '%s' не может быть распределен.");
codedMessages.put("R90","Массив '%s' не может быть распределен из-за использования RESHAPE.");
codedMessages.put("R91","Массив '%s' не может быть распределен.");
codedMessages.put("R164","Массив '%s' не может быть распределен из-за использования конструктора инициализации");
//1048
codedMessages.put("R92","Процедура '%s' с одинаковым именем была объявлена в более, чем одном месте: в файле '%s':%d и '%s':%d.");
//1049
codedMessages.put("R93","Процедура не является чистой (без побочных эффектов) из-за наличия данного оператора.");
//1050
codedMessages.put("R146","Найдена более, чем одна главная программная единица (PROGRAM).");
codedMessages.put("R147","Не найдена ни одна главная программная единица (PROGRAM).");
//1051
codedMessages.put("R148","Обнаружены вызовы MPI-процедур, включен режим специальный режим распараллеливания MPI-программ.");
//1052
codedMessages.put("R150","Ошибка в расстановке пользовательских интервалов - не удалось найти конец интервала.");
//1053
codedMessages.put("R154","Ошибка в выражении SHRINK клаузы: переменная должна быть массивом в файле '%s'.");
//1054
codedMessages.put("R155","Длина маски для массива '%s' должна быть равна %d, но указано только %d измерений в файле '%s'.");
//1055
codedMessages.put("R156","Ошибка в выражении маски на %d позиции массива '%s': в качестве значения могут быть только 0 и 1 в файле '%s'.");
//1056
codedMessages.put("R157","Массив '%s' в клаузе SHRINK также должен быть объявлен в клаузе private в файле '%s'.");
//1057
codedMessages.put("R175","Переменная '%s' должна использоваться в следующем операторе.");
//1058
codedMessages.put("R176","В левой части клаузы PARAMETER должна быть переменная.");
//1059
codedMessages.put("R182","Редукционная операция по элементу массива '%s' на данный момент не поддерживается.");
//1060
codedMessages.put("R183","Расположение операторов FORMAT в области описания типов данных не поддерживается, попробуйте применить проход 'Коррекция стиля кода'.");
//1061
codedMessages.put("R184","Область объявления массива '%s' конфликтует с предыдущей областью. Возможно, это вызвано использованием include-файлов. Попробуйте применить проход 'Подстановка заголовочных файлов'.");
//2001
codedMessages.put("R94","Невозможно автоматически преобразовать данное присваивание к циклу.");
codedMessages.put("R95","Невозможно автоматически преобразовать данное присваивание к циклу.");
//2002
codedMessages.put("R96","Арифметический IF был преобразован в IF-ENDIF.");
codedMessages.put("R97","Вычисляемый GOTO был преобразован в IF-ENDIF.");
//2003
codedMessages.put("R98","Невозможно автоматически преобразовать цикл в END DO формат.");
//2004
codedMessages.put("R99","Цикл был преобразован в END DO формат.");
//2005
codedMessages.put("R100","Циклы в строке %d и в строке %d были объединены.");
//2006
codedMessages.put("R101","Была выполнена подстановка макроса с именем '%s'.");
//2007
codedMessages.put("R102","Возникла непредвиденная ситуация во время генерации выходного текста.");
codedMessages.put("R103","Возникла непредвиденная ситуация во время генерации выходного текста.");
//2008
// -- TODO
//2009
codedMessages.put("R104","Невозможно разделить данный цикл из-за следующей зависимости: %s.");
//2010
codedMessages.put("R105","Данный цикл содержит косвенные подциклы, поэтому не может быть разделен.");
codedMessages.put("R106","У данного цикла есть ограничение на разделение в строке %s (наличие операторов goto, print, stop или этот цикл не является DO-ENDDO).");
codedMessages.put("R107","У данного цикла есть зависимости, которые нельзя проанализировать, поэтому он не может быть разделен в строке %s.");
//2011
codedMessages.put("R177","Подстановка процедур разрешена только в исполняемой части кода.");
//2012
codedMessages.put("R173","Операторы SAVE и DATA запрещены в дублируемых процедурах");
//2013
codedMessages.put("R174","Операторы SAVE и DATA запрещены в дублируемых процедурах: переменная '%s'");
codedMessages.put("R108","Добавлена across-зависимость к массиву '%s' в цикле.");
//3002
codedMessages.put("R109","Добавлена приватная переменная '%s' к циклу на строке %d.");
//3003
codedMessages.put("R110","Добавлена редукционная переменная '%s' с типом операции '%s' к циклу на строке %d.");
//3004
codedMessages.put("R111","Неизвестный тип редукционной операции по скаляру '%s'.");
//3005
codedMessages.put("R112","Неизвестная зависимость по скалярной переменной '%s' (попробуйте вручную специфицировать ее тип).");
//3006
codedMessages.put("R113","Неизвестная зависимость по массиву препятствует распараллеливанию данного цикла.");
codedMessages.put("R114","Неизвестная зависимость по скаляру препятствует распараллеливанию данного цикла.");
codedMessages.put("R115","Внешние или внутренние операторы перехода (GOTO/EXIT) препятствуют распараллеливанию данного цикла.");
codedMessages.put("R116","Операторы ввода/вывода препятствуют распараллеливанию данного цикла.");
codedMessages.put("R117","Операторы STOP препятствуют распараллеливанию данного цикла.");
codedMessages.put("R118","Обнаружены конфликтные присваивания, которые препятствуют распараллеливанию данного цикла.");
codedMessages.put("R119","Невозможность сопоставить обращение к массиву на запись препятствует распараллеливанию данного цикла.");
codedMessages.put("R120","Косвенная адресация по распределяемому массиву препятствует распараллеливанию данного цикла.");
codedMessages.put("R121","Обращение к нераспределенному массиву на запись препятствует распараллеливанию данного цикла.");
codedMessages.put("R122","Найдены различные правила выравнивания массивов, используемых на запись в данном цикле, препятствует распараллеливанию.");
codedMessages.put("R123","Процедуры с побочным эффектом препятствуют распараллеливанию данного цикла.");
codedMessages.put("R124","%s зависимость между %s (строка %d) и %s (строка %d) с неизвестным расстоянием препятствует распараллеливанию цикла на строке %d.");
codedMessages.put("R125","%s зависимость между %s (строка %d) и %s (строка %d) с неизвестным расстоянием препятствует распараллеливанию.");
codedMessages.put("R144","Обнаружено непрямоугольное пространство итераций, что препятствует распараллеливанию данного цикла.");
codedMessages.put("R145","Обнаружены DVM интервалы внутри цикла, что препятствует распараллеливанию данного цикла.");
codedMessages.put("R178","Данный вид циклов не поддерживается системой.");
//--TODO R124 R125 про неопределенную длину зависимости
//3007
codedMessages.put("R126","Невозможно создать с шаблоном для массива '%s': размерность массива '%d' и это не соответствует '%d'.");
codedMessages.put("R127","Невозможно сопоставить выравнивания массивов, передаваемых в процедуру.");
//3008
codedMessages.put("R128","Внутренняя ошибка анализа, распараллеливание не будет выполнено для данного файла.");
//3009
codedMessages.put("R129","Добавленный REMOTE_ACCESS для обращения к массиву '%s' может привести к сильному замедлению.");
//3010
codedMessages.put("R130","Не обнаружены массивы или свободные циклы для распределения в данном проекте.");
codedMessages.put("R131","Не обнаружены массивы или свободные циклы для распределения в данной области распараллеливания.");
//3011
codedMessages.put("R132","У массивов '%s' и '%s' разные правила выравнивания согласно обращению на запись в данном цикле.");
//3012
codedMessages.put("R133","Области распараллеливания %sимеют общую используемую процедуру '%s', необходимо применить проход 'Разрешение конфликтов областей'.");
//3013
codedMessages.put("R134","Области распараллеливания %sимеют общий используемый локальный массив '%s', необходимо применить проход 'Разрешение конфликтов областей'.");
codedMessages.put("R152","Области распараллеливания %sимеют общий используемый массив из модуля '%s', необходимо применить проход 'Разрешение конфликтов областей'.");
//3014
codedMessages.put("R135","Область распараллеливания '%s' содержит common-массив '%s', используемый в области и вне её, необходимо применить проход 'Разрешение конфликтов областей'.");
//3015
codedMessages.put("R136","Область распараллеливания '%s' не имеет DVM-интервала для фрагмента, необходимо применить проход 'Разрешение конфликтов областей'.");
//3016
codedMessages.put("R137","Невозможно считать DVM-статистику для получения времен.");
//3017
codedMessages.put("R138","Область распараллеливания '%s' не содержит копирования массива '%s' в DVM-интервале, необходимо применить проход 'Разрешение конфликтов областей'.");
//3018
codedMessages.put("R139","Область распараллеливания '%s' не содержит копирования массива '%s' в DVM-интервале, необходимо применить проход 'Разрешение конфликтов областей'.");
//3019
//--- TODO предиктор
//3020
codedMessages.put("R140","Обнаружен массив '%s', являющийся параметром процедуры, в которую передаются как распределенные, так и нераспределенные массивы. Возможно, стоит запретить к распределению обнаруженные массивы, либо продублировать соответствующую процедуру.");
codedMessages.put("R141","Обнаружен распределяемый массив '%s', передаваемый в качестве параметра в процедуру.");
codedMessages.put("R153","Обнаружен не распределяемый массив '%s', передаваемый в качестве параметра в процедуру.");
codedMessages.put("R142","Для массива '%s' не удается найти единого распределения, внутренняя ошибка системы.");
//3021
codedMessages.put("R151","Пустые области распараллеливания не допускаются.");
//3022
codedMessages.put("R171","Невозможно определить правила выравнивания для массива '%s'.");
//4001
//---TODO ошибки из SAGE
//4002
codedMessages.put("R143","Неверное объявление PURE процедуры - отсутствуют операторы INTENT.");
//5001
codedMessages.put("R165","В клаузе 'INTERVAL' первый аргумент должен быть 'TIME' или 'ITER', а второй - типа integer.");
//5002
codedMessages.put("R166","Директива %s с клаузой '%s' может располагаться только в исполняемой части кода.");
//5003
codedMessages.put("R167","Директива CHECKPOINT с клаузой 'FILES' должна содержать одно значение типа integer.");
//5004
codedMessages.put("R168","Переменная '%s' в клаузе '%s' должна быть объявлена в той же области видимости.");
//5005
codedMessages.put("R169","Недопустимый параметр в клаузе TYPE директивы CHECKPOINT.");
//5006
codedMessages.put("R170","Клауза '%s' может быть указана только один раз.");
//5007
codedMessages.put("R172","Переменная '%s' не может быть указана одновременно в клаузах 'VARLIST' и 'EXCEPT'.");
}
intidxOfCode=coded.indexOf(':');
if(idxOfCode==-1)
returncoded;// наверно не ошибка, если вдруг передано сообщение без кода
else{
Stringcode=coded.substring(0,idxOfCode);
Stringmessage=coded.substring(idxOfCode+1);
if(codedMessages.containsKey(code)){
Stringoriginal=codedMessages.get(code);
if(message=="")
returnoriginal;
else{
String[]splited=message.split("#");
intidx=0;
intsum=0;
do{
idx=original.indexOf('%',idx);
if(idx!=-1){
sum++;
idx+=2;
}
}while(idx!=-1);
if(sum!=splited.length&&!message.equals(""))
thrownewPassException("Ошибка при декодировании собщений на русском языке");