Компилятор Fortran DVM
Руководство пользователя
* Март 2000 *

- дата последнего обновления 25.09.00 -


Оглавление

1 Введение
2 Назначение компилятора
3 Вызов компилятора
4 Опции компилятора
5 Компиляция программы в режиме отладки
6 Компиляция HPF-DVM программы
7 Сообщения компилятора


1 Введение

Данное руководство содержит инструкции по использованию компилятора Fortran DVM(FDVM) и является частью общего руководства пользователя DVM-системы.

В руководстве приняты следующие условные обозначения для описания синтаксических конструкций.

::= - по определению
| - альтернатива
[x] - необязательный элемент
y-list - список элементов y [ , y ]…

2 Назначение компилятора

Язык Fortran DVM (FDVM) является расширением языка Фортран 77 для параллельного программирования в модели DVM. Расширение оформлено в виде специальных комментариев (директив), которые аннотируют последовательную программу на языке Фортран 77.

Компилятор транслирует исходную программу на языке FDVM или HPF-DVM в следующие выходные программы.

3 Вызов компилятора

Вызов компилятора осуществляется следующей командной строкой:

dvm fdv [ <опции> ] <имя-файл>

где:

<опции> - указания о режимах компиляции. Если какое-либо указание отсутствует, то для него действует значение по умолчанию. Если две опции противоречат друг другу, то преимущество получает последняя из указанных в командной строке опций;
<имя-файла> - имя файла (без расширения), который содержит текст исходной программы на языке FDVM. Файл должен иметь расширение .fdv. Поиск входного файла производится только в текущей директории.

4 Опции компилятора

Для описания синтаксиса опций введены следующие обозначения. Жирным шрифтом будем выделять ключевые символы, а курсивом – параметры опций. Ниже перечислены опции компилятора.

-o file Поместить выходную программу в файл file;
-s Генерировать последовательную выходную программу;
-p Генерировать параллельную выходную программу;
-hpf1 Генерировать выходную программу на языке HPF1;
-hpf2 Генерировать выходную программу на языке HPF2;
-v Выдать сообщения о вызовах фаз компилятора, а также номер версии компилятора;
-w Выдать все предупреждающие сообщения;
-Idir Добавить директорию dir в список директорий, где осуществляется поиск include файлов.
-bindk Задает соответствие типов данных в компиляторах с языков Фортран и Си;
-dleveld[:fr-list] Генерировать дополнительный код для отладки программы;
-elevele[:fr-list] Генерировать дополнительный код для анализа производительности программы.

Выходной файл. Имя выходного файла, в котором компилятор размещает сгенерированную программу, указывается с помощью опции

-o file

где file представляет собой имя файла. Если опция не указана, то по умолчанию, выходной файл получает имя <имя-файла>.f или <имя-файла>.hpf в режиме генерации программы на языке HPF. Выходной файл записывается в текущую директорию.

Тип генерируемой программы. Тип генерируемой программы задается следующими опциями:

–s - последовательная программа
–p - параллельная программа
–hpf1 - программа на языке HPF1
–hpf2 - программа на языке HPF2

По умолчанию генерируется параллельная программа.

Директории для include-файлов. Если в исходной программе имеются операторы INCLUDE и не все include-файлы размещены в текущей директории, то необходимо указать опцию

-Idir

где dir - это имя директории. Поиск include-файла начинается с директорий, указанных в командной строке в том порядке, как они там перечислены. Затем поиск производится в текущей директории.

Дополнительная информация. Для идентификации версии компилятора и выполнения фаз компиляции необходимо указать опцию

-v

а для получения всех предупреждающих сообщений задать опцию

-w

Соответствие типов данных. Соответствие типов данных в компиляторах с языков Си и Фортран для ЭВМ, на которой будет выполняться сгенерированная программа, указывается с помощью опции

-bindk

где k - это целое число, которое указывает номер таблицы соответствия.

k = 0:

Фортран

Си

Размер (в байтах)

integer long   4
real float   4
double precision double 8
character char    1
logical long   4
k = 1:

Фортран

Си

Размер (в байтах)

integer int     4
real float   4
double precision double 8
character char    1
logical int     4
integer*8 long   8

Соответствие типов определяется стандартными компиляторами с языков Си и Фортран для объектной ЭВМ. По умолчанию, считается k = 0.

Замечание. Наличие или отсутствие опций –bind, -d, и -e не оказывает никакого влияния на генерацию программы на языке HPF ( режим –hpf1 или –hpf2).

5 Компиляция программы в режиме отладки

Для программ на языке FDVM предусмотрены два способа отладки:

Для каждого способа определено несколько уровней отладки.

Уровни функциональной отладки. Уровень функциональной отладки – это целое число от 0 до 4, оно определяет события в программе, о которых сообщается отладчику:

0 - нет событий,
1 - модификация распределенных массивов,
2 - модификация и использование распределенных массивов,
3 - модификация всех переменных,
4 - модификация и использование всех переменных.

Уровни отладки эффективности. Уровень отладки эффективности– это целое число от 0 до 4, которое определяет, какие участки программы рассматриваются в качестве интервалов выполнения программы. Для каждого такого интервала можно получить характеристики эффективности.

0 - нет интервалов,
1 - параллельные циклы и охватывающие их последовательные циклы,
2 - последовательности операторов, указанные в программе посредством директив INTERVAL и END INTERVAL,
3 - объединение подмножеств 1 и 2,
4 - все циклы и интервалы, заданные с помощью директив INTERVAL и END INTERVAL.

Последовательность операторов можно объявить интервалом с помощью директив:

CDVM$  INTERVAL [<целочисленное-выражение>]
      
<последовательность-операторов>
CDVM$  END INTERVAL

Каждый интервал операторов должен удовлетворять условиям блока операторов:

Другими словами запрещены передачи управления извне внутрь интервала, и изнутри интервала - на оператор вне интервала.

Фрагменты программы. Программу можно разделить на отдельные отлаживаемые фрагменты. Каждый фрагмент определяется директивами

CDVM$  DEBUG <номер-фрагмента> [( <параметр> )]
       <фрагмент-операторов>
CDVM$  END DEBUG <номер-фрагмента>

<номер-фрагмента> ::= <целое-положительное-число>
<параметр> ::=  D = levele
    |   E = leveld
    |   D = leveld , E = levele

где:

параметр D указывает максимально возможный уровень функциональной отладки,
параметр
E указывает максимально возможный уровень отладки эффективности,
leveld – целое число от 0 до 4,
levele – целое число от 0 до 4.

Фрагмент операторов должен удовлетворять условиям блока операторов.

Допускается вложенность фрагментов. Пусть f1 обозначает множество операторов охватывающего фрагмента, l1 – заданный в директиве DEBUG уровень отладки для данного фрагмента, а f2 и l2 - множество операторов и уровень отладки вложенного фрагмента. Тогда для множества операторов f1  f2 максимально допустимым является уровень l1, а для множества f2 максимально допустимым является уровень l2.

Вся программа считается по умолчанию фрагментом с номером 0 и максимально допустимыми уровнями отладки D = 4 , E = 4.

Пусть задана следующая структура фрагментов программной единицы:

                SUBROUTINE  SUB(…)
                         S1
CDVM$  DEBUG  1  (D = 4 , E = 1)
                          S2
CDVM$  DEBUG  2  (D = 1 , E = 3)
                          S3
CDVM$  END DEBUG  2
                          S4
CDVM$  END DEBUG  1
                          S5
	         END

Эта структура определяет следующие максимально допустимые уровни отладки:

Множество операторов

Уровень отладки

{ S1, S5 } D = 4 , E = 4
{ S2, S4 } D = 3 , E = 1
{ S3 } D = 1 , E = 3

Уровни отладки в опциях компилятора.

Уровень отладки для всей программы определяется опциями

-dleveld - для функциональной отладки,
-elevele - для отладки эффективности.

По умолчанию действуют опции –d0 и –e0.

Уровень отладки для отдельных фрагментов определяется опциями:

-dleveld [:fr-list]
-elevele [:fr-list]

где:

fr ::= Lfr [ - Hfr ]
Lfr ::= <номер-фрагмента>
Hfr ::= <номер-фрагмента>

Требуется, чтобы Lfr? Hfr.

fr-list это список, где каждый элемент списка представляет собой либо номер отдельного фрагмента, либо непрерывный диапазон номеров фрагментов. Пусть в директиве DEBUG определен для некоторого фрагмента уровень отладки равный m. Если для этого фрагмента в опциях компилятора задан уровень l, то фрагмент будет включен в отладку с уровнем min( m , l ).

Пусть при компиляции программы указаны следующие опции отладки

-d2:1-2  -e2

Для подпрограммы SUB будут установлены следующие уровни отладки:

Множество операторов

Уровень функциональной отладки

Уровень отладки эффективности

{ S1, S5 } 0 2
{ S2, S4 } 2 1
{ S3 } 1 2

Подробнее об отладке программы см. “Отладка DVM–программ. Руководство по использованию” и “Отладка эффективности DVM-программ. Руководство по использованию”.

Трассировка выполнения функций Lib-DVM. “Включить” и “отключить” сбор трассы обращений к Lib-DVM можно с помощью директив отладки

CDVM$  TRACE ON
CDVM$  TRACE OFF

6 Компиляция HPF-DVM программы

Для трансляции программы на языке HPF-DVM требуется выполнить команду

dvm fdv [ <опции> ] <имя-файла>.hpf

Дополнительно к опциям, описанным в разделе 3, определены следующие опции компилятора, которые позволяют повысить эффективность выходной программы. Они специфицируют свойства исходной HPF-DVM программы.

-Hshwwidth Указывает максимальную ширину теневых граней всех распределенных массивов, используемых в программе, width – целое неотрицательное число, по умолчанию width = 1;
-Honeq Указывает на возможность однократного выполнения запросов по удаленным данным;
-Honlyl Указывает, что в последовательных ветвях программы (вне циклов INDEPENDENT) операнды локализованы, т.е. отсутствует удаленный доступ к данным в последовательных ветвях.

7 Сообщения компилятора

Если компилятор обнаруживает в исходной программе ошибку, то он выдает сообщение следующего вида

< тип-сообщения> < номер-сообщения> on line < номер-строки> of < имя-файла> : < текст-сообщения>

где:

< тип-сообщения> - Warning предупреждающее сообщение, не препятствующее генерации выходной программы.
  - Error ошибка, при которой невозможна генерация программы.
< номер-строки> - целое число, которое указывает номер строки в файле < имя-файла> , при анализе которой обнаружена ошибка.
< текст-сообщения> -текст сообщения на английском языке.

Ниже приведены номера ошибок, тексты сообщений и пояснения к ним.

000 Compiler bug
Сообщение говорит об ошибке компилятора, а не пользователя. Рекомендуется сообщить об ошибке разработчикам компилятора.
001 Unknown option option is ignored
Предупреждение. Неправильно заданная (в командной строке) опция игнорируется.
002 Invalid option argument arg is ignored
Предупреждение. Неправильно заданный (в командной строке) параметр опции игнорируется.
003 No source file specified
В командной строке не указано имя входного файла.
004 Illegal command line format
Неправильный формат командной строки. Все опции должны предшествовать имени входного файла.
005 Can't open file filename
В текущей директории нет входного файла или он защищен от чтения. Include-файл не найден или защищен от чтения.
006 Can't open file filename for write
Вероятно, пользователь не имеет прав на запись в текущую директорию.
007 Null program
Входной файл не содержит программу на языке FDVM.
008 Missing final end statement or unclosed construct
Оператор PROGRAM, SUBROUTINE, FUNCTION, или BLOCK DATA не имеет завершающего END или нет завершающего оператора ENDIF или ENDDO для конструкции IF THEN или DO, соответственно.
009 Illegal continuation card ignored
Строка продолжения несовместима с начальной строкой или последняя отсутствует. В этом случае, строка продолжения игнорируется, а компилятор пытается продолжить анализ оператора.
010 Unclassifiable statement
Вероятно, неверно задано ключевое слово оператора Фортран 77 или директивы FDVM.
011 Non digit in statement number field
Поле метки содержит не цифровой символ.
012 Unbalanced quotes; closing quote supplied
Нет закрывающего апострофа.
013 Unbalanced parentheses, statement skipped
Несоответствие открывающих и закрывающих скобок.
014 Syntax error
Ошибка синтаксиса оператора Фортран 77 или директивы FDVM.
015 Comment too long. Truncated to 160 characters
Предупреждение. Комментарий превышает 160 символов.
016 Inconsistent declaration of identifier identifier
Имя уже использовалось для другого объекта.
017 Inconsistent constant declaration identifier
Идентификатор PARAMETER уже использован для другого объекта.
018 Inconsistent array declaration of identifier identifier
Идентификатор массива уже описан другим способом.
019 Inconsistent function identifier
Идентификатор FUNCTION уже определен как другой глобальный объект или как локальный массив.
020 Inconsistent procedure identifier
Идентификатор EXTERNAL уже определен как другой глобальный объект.
021 Inconsistent subroutine identifier
Идентификатор SUBROUTINE уже определен как другой глобальный объект.
022 Inconsistent program declaration identifier
Идентификатор PROGRAM уже определен как COMMON, FUNCTION, или SUBROUTINE.
023 Inconsistent common declaration identifier
Идентификатор COMMON уже определен как FUNCTION, PROGRAM или SUBROUTINE.
024 Function has the same name as a common block identifier
Предупреждение. Идентификатор функции совпадает с идентификатором COMMON блока.
025 Common block has the same name as a function identifier
Предупреждение. Идентификатор COMMON блока совпадает с идентификатором функции.
026 Inconsistent operands to boolean operation
Несовместимость операндов логической операции
027 Inconsistent operands to arithmetic operation
Несовместимость операндов арифметической операции
028 Non-logical expression in IF statement
Не логическое выражение в операторе IF
029 Statement order error: declaration after DATA or function statement
Неверный порядок операторов: оператор спецификации после оператора DATA или описания операторной функции.
030 Declaration among executables
Неверный порядок операторов: оператор спецификации среди исполняемых операторов.
031 ELSEIF out of place
Нарушено правило вложенности конструкций. Оператору ELSEIF невозможно сопоставить оператор IF-THEN.
032 ELSE out of place
Нарушено правило вложенности конструкций. Оператору ELSE невозможно сопоставить оператор IF-THEN.
033 Misplaced PROGRAM statement
Оператор PROGRAM расположен не на своем месте.
034 Misplaced SUBROUTINE statement
Оператор SUBROUTINE расположен не на своем месте.
035 Misplaced ENTRY statement
Оператор ENTRY расположен не на своем месте.
036 Statement cannot be reached
Предупреждение. Оператор никогда не будет выполнен.
037 IMPLICIT item must be single letter
В операторе IMPLICIT единицей спецификации должна быть буква.
038 Label out of range
Метка вне диапазона 1? 99999.
039 Label already that of a format
Метка совпадает с ранее описанной меткой оператора FORMAT.
040 Label label already defined
Повторное определение метки.
041 Non character entity identifier has length specification
Спецификация количества байтов при идентификаторе (например, CH*6) разрешена только в операторе CHARACTER.
042 No dimensions in DIMENSION statement
В операторе DIMENSION отсутствует спецификация измерений.
043 Too many dimensions
Количество измерений массива больше 7.
044 can't subscript identifier
Индексируется объект, не являющийся массивом.
045 can't take substring of identifier
Ссылка на подстроку не символьного объекта.
046 No backward DO loops
Метка цикла определена до оператора DO.
047 Symbolic constant not allowed as DO variable
Управляющей переменной цикла не может быть именованная символьная константа.
048 Must go to assigned variable
В операторе GO TO по предписанию должна быть указана переменная, получившая значение при помощи оператора ASSIGN.
049 Missing DVM directive prefix
Отсутствует префикс CDVM$ или *DVM$ перед DVM директивой.
050 Explicit shape specification is required
Требуется спецификация явной конфигурации в операторах PROCESSORS и TEMPLATE.
051 Distribution format list is omitted
Нет списка форматов распределения в директиве DISTRIBUTE.
052 Unexpected END statement read
Нарушена структура фортран-программы.
053 Illegal use of PROCESSORS name identifier
Идентификатор массива процессоров можно использовать только в операторах DISTRIBUTE, REDISTRIBUTE и MAP.
054 A distributee may not have the ALIGN attribute: identifier
Массив уже имеет атрибут ALIGN.
055 Distribution format BLOCK(n) is not permitted in FDVM
Формат распределения BLOCK(n) не поддерживается в FDVM.
056 Illegal shadow width specification
Неверная спецификация размера теневых граней.
057 An alignee may not have the DISTRIBUTE attribute: identifier
Массив уже имеет атрибут DISTRIBUTE.
058 The alignee identifier isn't an array
Объект, специфицированный директивой ALIGN, не является массивом.
059 'identifier' hasn't the DYNAMIC attribute
Указанный массив не имеет атрибута DYNAMIC.
060 'identifier' hasn't the ALIGN attribute
Указанный массив не имеет атрибута ALIGN.
061 The align-target identifier isn't declared as array
Объект, указанный в директиве ALIGN в качестве базы выравнивания, не является массивом.
062 The align-dummy identifier isn't a scalar integer variable
Идентификатор измерения (align-dummy), используемый в директиве ALIGN, должен быть скалярной целой переменной.
063 Illegal combination of attributes
Недопустимое сочетание атрибутов.
064 'identifier' has the DISTRIBUTE and ALIGN attribute
Указанный идентификатор имеет несовместимые атрибуты DISTRIBUTE и ALIGN.
065 No shape specification
Отсутствует спецификация измерений.
066 'identifier' isn't array
Указанный идентификатор не описан как массив.
067 'identifier' is not processor array
Требуется идентификатор массива процессоров.
068 'identifier' is not remote group name
Указанный идентификатор не имеет атрибута REMOTE_GROUP.
069 'identifier' is not declared as reduction group
Указанный идентификатор не имеет атрибута REDUCTION_GROUP.
070 Illegal reduction operation name
Неверно задано имя редукционной операции.
071 Illegal use of task array name identifier
Недопустимое использование идентификатора массива задач. Ссылка на массив задач может появиться только в директивах TASK_REGION, ON, REDISTRIBUTE, MAP и в директиве параллельного цикла задач.
072 'identifier' isn't distributed array
Требуется массив с атрибутом DISTRIBUTE, ALIGN или INHERIT.
073 Multiple declaration of identifier 'identifier'
Повторное описание идентификатора.
074 'identifier' isn't declared as group
Требуется переменная с атрибутом REMOTE_GROUP.
075 No dimensions in TASK directive
В операторе TASK отсутствует спецификация измерений.
076 Illegal rank of 'identifier'
Число измерений у массива задач больше 1.
077 'identifier' is not task array
Требуется массив задач.
078 Illegal interval number
В директиве INTERVAL номер интервала должен быть задан выражением целого типа.
079 Template 'identifier' is in COMMON
Идентификатор TEMPLATE не может быть описан как элемент COMMON блока.
080 Template may not be a dummy argument: identifier
Идентификатор c атрибутом TEMPLATE не может быть формальным аргументом.
081 ENTRY among specification statements
Предупреждение. Оператор ENTRY среди операторов спецификации.
082 Duplicate aligning of the array 'identifier'
Повторное выравнивание указанного массива.
083 POINTER 'identifier' is not integer variable
Идентификатор с атрибутом POINTER должен иметь тип INTEGER.
084 POINTER may not have SAVE attribute: identifier
Идентификатор с атрибутом POINTER не может иметь атрибут SAVE.
085 POINTER 'identifier' is not distributed object
Идентификатор с атрибутом POINTER должен иметь атрибут DISTRIBUTE или ALIGN.
086 Object 'identifier' has neither TEMPLATE nor PROCESSORS attribute
В объединенной директиве спецификации с атрибутом DIMENSION может быть описан только объект TEMPLATE или PROCESSORS.
087 Illegal shape specification in DIMENSION attribute
В объединенной директиве спецификации с атрибутом DIMENSION встретился недопустимый описатель массива.
088 Length of shadow-edge-list is not equal to the rank of array 'identifier'
Число указанных теневых граней не равно числу измерений массива.
089
attribute attribute appears more than once in the combined-directive
Указанный атрибут упоминается более одного раза в объединенной директиве спецификации.
090 The number of BLOCK/GENBLOCK elements of dist-format-list is greater than the rank of PROCESSORS 'identifier'
Количество форматов BLOCK и GENBLOCK не равно количеству измерений массива процессоров.
091 Missing HEAP declaration
Отсутствует описание пула динамической памяти HEAP.
092 Alignment tree root 'identifier' is not distributed
Корень дерева выравнивний массива не имеет атрибута DISTRIBUTE.
093 PAUSE statement is not permitted in FDVM
Оператор PAUSE запрещен в FDVM
094 Illegal statement in the range of parallel loop
Недопустимый оператор в теле параллельного цикла.
095 Only a value of ALLOCATE function or other POINTER may be assigned to a POINTER
Переменной POINTER можно присвоить только значение другой переменной POINTER или значение функции ALLOCATE.
096 Nested PARALLEL directives are not permitted
Вложенные параллельные циклы не допускаются.
097 PARALLEL directive must be followed by DO statement
Директива PARALLEL должна предшествовать оператору DO.
098 The directive is inside the range of PARALLEL loop
В теле параллельного цикла не должно быть директив FDVM.
099 Misplaced REMOTE_ACCESS directive
Директива REMOTE_ACCESS находится не на своем месте.
100 Nested TASK_REGION are not permitted
Запрещена вложенность конструкций TASK_REGION.
101 Statement is outside of on-block
Оператор внутри TASK_REGION не входит ни в один ON–блок.
102 No matching TASK_REGION
Для директивы END TASK_REGION нет соответствующей директивы TASK_REGION.
103
Misplaced directive
Директива не на своем месте. Область задач или ON –блок не является блоком операторов.
104 Nested ON-blocks are not permitted
Запрещена вложенность ON –блоков.
105 ON directive is outside of the task region
Директива ON вне области задач.
106 No matching ON directive
Для директивы END ON нет соответствующей директивы ON.
107 Parallel-task-loop directive is outside of the task region
Параллельный цикл задач вне области задач.
108 Missing END TASK_REGION directive
Нет завершающего оператора для конструкции TASK_REGION.
109 Missing END ON directive
Нет завершающего оператора для ON-блока.
110
Rank of array identifier is not equal to the length of the dist-format-list
Число измерений массива не равно числу указанных форматов.
111 Saved object may not have the DYNAMIC attribute: identifier
Массив имеет несовместимые атрибуты DYNAMIC и SAVE.
112 Object in COMMON may not have the DYNAMIC attribute: identifier
Массив имеет несовместимые атрибуты DYNAMIC и COMMON.
113 'identifier' hasn't the DYNAMIC attribute
Массив должен иметь атрибут DYNAMIC.
114 'identifier' does not appear in DISTRIBUTE/INHERIT directive
Массив должен иметь атрибут DISTRIBUTE или INHERIT.
116 Template 'identifier' appears as an alignee
Шаблон не может иметь атрибут ALIGN.
117 Dummy argument 'identifier' is aligned with local array
Формальный аргумент не может быть выровнен на локальный массив.
118 Aligned array 'identifier' is in COMMON but align-target is not
Массив с атрибутом COMMON может быть выровнен только на массив с атрибутом COMMON.
119 Aligned array 'identifier' has SAVE attribute but align-target has not
Массив с атрибутом SAVE может быть выровнен только на массив с атрибутом SAVE.
120 'identifier' does not appear in ALIGN and INHERIT directive
Массив должен иметь атрибут ALIGN или INHERIT.
121 'identifier' is a duplicate dummy argument
Одинаковые формальные аргументы в заголовке подпрограммы (функции).
122 Descriptor array error
Неверно задан аргумент функции ALLOCATE – дескриптор динамического массива.
123 Rank of pointer identifier is not equal to the length of the dist-format-list
Количество измерений динамического массива не совпадает с количеством заданных форматов.
124 Array 'identifier' may not be allocated
Указанный динамический массив не может быть размещен.
125 Array 'identifier' may not be aligned
Указанный массив не может быть выровнен.
126 Illegal aligning of 'identifier'
Неправильное задание выравниваний массивов (циклическая цепочка выравниваний).
127 Distributed object 'identifier' is not array
Атрибут DISTRIBUTE, ALIGN или INHERIT может иметь только массив.
128 Rank of aligned array identifier isn't equal to the length of align-source-list
Длина списка идентификаторов измерений в директиве ALIGN/REALIGN не совпадает с числом измерений указанного массива.
129 GEN_BLOCK and WGT_BLOCK in format-list
В списке форматов директивы DISTRIBUTE/REDISTRIBUTE указан и формат GEN_BLOCK, и формат WGT_BLOCK.
130 Wrong align-subscript expression
Нелинейное выражение выравнивания. Выражения выравнивания, операндом которого является идентификатор измерения I, должно иметь вид: a*I + b, где a, b – константа, переменная или выражение, заключенное в скобки.
132 Rank of align-target 'identifier' isn't equal to the length of align-subscript-list
Число индексов базы выравнивания не равно числу измерений по описанию.
133 More one occurenсe of do-variable 'identifier' in iteration-align-subscript-list
Повторное использование указанной переменной цикла в списке индексов базы выравнивания в директиве PARALLEL.
134 More one occurence of align-dummy 'identifier' in align subscript list
Повторное использование указанного идентификатора измерения в списке индексов базы выравнивания.
135 More one occurence of a do-variable in do-variable-use expression
Повторное использование указанной переменной цикла в выражении выравнивания.
136 More one occurence of an align-dummy in align-subscript expression
Повторное использование указанного идентификатора измерения в выражении выравнивания.
137 Illegal group name use: 'identifier'
Недопустимое использование идентификатора группы.
138 Illegal POINTER reference: 'identifier'
Недопустимое использование переменной с атрибутом POINTER.
139 Owner-computes rule
Предупреждение. Оператор выполняется по правилу собственных вычислений.
140 Wrong number of subscripts specified for identifier
Число индексов не равно числу измерений массива по описанию.
141 Illegal type of 'identifier'
В данном контексте требуется идентификатор определенного типа.
142 Low shadow width of 'identifier' is greater than the corresponding one specified in SHADOW directive
Размер левой теневой грани больше чем в директиве SHADOW.
143 High shadow width of 'identifier' is greater than the corresponding one specified in SHADOW directive
Размер правой теневой грани больше чем в директиве SHADOW.
144 Low shadow width of 'identifier' is greater than 1
Размер левой теневой грани больше 1.
145 High shadow width of 'identifier' is greater than 1
Размер правой теневой грани больше 1.
146 NEW_VALUE directive must be followed by REDISTRIBUTE or REALIGN directive
Директива NEW_VALUE должна предшествовать директиве REDISTRIBUTE или REALIGN.
147 Illegal operand list of MAXLOC/MINLOC
Неверный список операндов редукционной операции MAXLOC/MINLOC.
148 'identifier' is distributed array
Не допускается использование массива с атрибутом DISTRIBUTE, ALIGN или INHERIT.
149 Wrong operand of MAXLOC/MINLOC: identifier
Второй операнд редукционной операции MAXLOC/MINLOC должен быть одномерным массивом или скалярной переменной целого типа.
150 Illegal clause
В параллельном цикле задач допускается только спецификация NEW.
151 Wrong reduction variable 'identifier'
В качестве редукционной переменной можно использовать только одномерный массив или скалярную переменную.
152 Wrong type of reduction variable 'identifier'
Неверный тип редукционной переменной.
153 Double NEW clause
Повторная спецификация NEW.
154 Double REDUCTION clause
Повторная спецификация REDUCTION.
155 Double SHADOW_RENEW clause
Повторная спецификация SHADOW_RENEW.
156 Double REMOTE_ACCESS clause
Повторная спецификация REMOTE_ACCESS.
157 Double ACROSS clause
Повторная спецификация ACROSS.
158 Length of do-variable list in PARALLEL directive is greater than the number of nested DO statements
Количество переменных цикла, указанных в директиве PARALLEL, превышает количество операторов DO тесно-гнездового цикла.
159 Illegal do-variable-list in PARALLEL directive
Переменные цикла, указанные в директиве PARALLEL, не соответствуют переменным тесно-гнездового цикла.
160 Wrong iteration-align-subscript in PARALLEL
Нелинейное выражение выравнивания в директиве PARALLEL. Выражения выравнивания, операндом которого является переменная цикла I, должно иметь вид: a*I + b, где a, b – константа, переменная или выражение, заключенное в скобки.
161 Rank of array 'identifier' isn't equal to the length of iteration-align-subscript-list
Число индексов базы выравнивания в директиве PARALLEL не равно числу измерений массива по описанию.
162 Assumed-size array: identifier
Формальный аргумент – массив неопределенного размера не может использоваться ни как элемент ввода-вывода, ни как удаленная переменная в директиве REMOTE_ACCESS. В этих случаях размер массива должен быть известен.
163 Reverse is not supported
Выравнивание по убыванию индексов (реверс) запрещено.
164 Wrong regular subscript expression
Не регулярное индексное выражение в директиве REMOTE_ACCESS.
165 Length of remote-subscript-list is not equal to the rank of remote variable
Число индексов удаленной ссылки не соответствует числу измерений массива.
166 HEAP limit is exceeded
Неверная работа с указателями динамических массивов. Сообщение выдается во время выполнения программы.
167 Illegal template reference: 'identifier'
Идентификатор с атрибутом TEMPLATE может использоваться только в директивах ALIGN, REALIGN и PARALLEL.
168 Illegal variable in new-clause: identifier
Указанная переменная не может быть указана в спецификации NEW.
169 ENTRY of program unit distributed arrays are in
Предупреждение. Оператор ENTRY в процедуре, где используются распределенные массивы.
170 Name 'identifier' too long, truncated to 29
Предупреждение. Слишком длинное имя укорачивается до 29 символов.
171 No subscripts: identifier
В ссылке на массив отсутствуют индексы.
172 POINTER 'identifier' in left part of assign statement has DISTRIBUTE or ALIGN attribute
Указатель на массив в левой части оператора присваивания не должен иметь атрибутов DISTRIBUTE и ALIGN.
173 Pointers are of different rank
Указатели на массивы с разным числом измерений.
174 Pointers are of different type
Указатели на массивы с разным типом данных.
175 Wrong number of subscripts specified for 'identifier'
Указано неверное число индексов в ссылке на элемент массива.
176 'identifier' hasn't PROCESSORS/TASK attribute
Идентификатор должен иметь атрибут PROCESSORS или TASK.
177 Associated actual arguments must be aligned
Предупреждение. Фактические аргументы должны быть выровнены.
178 Illegal type of do-variable 'identifier'
Недопустимый тип переменной цикла.
179 Wrong dependence length of distributed array 'identifier'
Длина зависимости, заданная в спецификации ACROSS для указанного массива, не является целой константой.
180 Wrong dependence length list of distributed array 'identifier'
Число длин зависимостей, заданных в спецификации ACROSS для указанного массива, не совпадает с числом его измерений.
181 Illegal fragment number
Номер фрагмента в директиве DEBUG/ENDDEBUG должен быть целой константой без знака.
182 Unmatched directive
Для директивы END DEBUG не обнаружено соответствующей директивы DEBUG.
183 Buffer limit is exceeded
Количество удаленных ссылок (буферов) для одного массива не может быть больше 5.
184 Illegal I/O statement in the range of parallel loop
Недопустимый оператор ввода-вывода в теле параллельного цикла.
185 Illegal elements in control list
Неверные элементы в списке управляющей информации оператора ввода-вывода.
186 END= and ERR= specifiers are illegal in FDVM
Спецификаторы END= and ERR= запрещены в FDVM
187 IOSTAT= specifier is illegal in I/O of distributed array
Использование спецификатора IOSTAT= при вводе-выводе распределенного массива запрещено.
189 Invalid format specification
Указано неверное значение спецификатора FMT = .
190 Illegal I/O list
Недопустимый список ввода-вывода. FDVM накладывает ограничения на ввод-вывод распределенных массивов. Либо список ввода-вывода состоит из одного идентификатора распределенного массива, либо он не включает ссылок на распределенные массивы.
191 I/O of distributed array controlled by format specification or NAMELIST is not supported in FDVM
Для ввода-вывода распределенного массива по формату допускается только формат, заданный “*”.
192 Illegal I/O list item: identifier
В списке ввода-вывода – ссылка на элемент распределенного массива. В FDVM разрешается вводить-выводить распределенный массив только целиком.
193 Array shape declaration error: identifier
Ошибка в описании измерений массивов.
194 Can't calculate array length: identifier
Неизвестен размер массива.
195 Can’t find the corresponding MAP directive
Не обнаружено соответствующей директивы MAP.
196 Incorrect call of ALLOCATE function
Неверный список аргументов при вызове функции ALLOCATE.
197 Can’t use pointers in HPF1
FDVM-программа, которая содержит POINTER переменные, не конвертируется в HPF1.
222 Can’t find a descriptor for POINTER
Отсутствует описание дескриптора динамического массива.
250 Illegal nesting INDEPENDENT directive
Вложенные циклы INDEPENDENT не удовлетворяют условию тесно-гнездового цикла
251 More one occurеnce of do-variable 'identifier' in subscript list
Повторное использование указанной переменной цикла в списке индексов переменной в левой части оператора присваивания, расположенного в теле цикла INDEPENDENT.
252 More one occurеnce of a do-variable in subscript expression
Повторное использование переменной цикла в индексном выражении переменной в левой части оператора присваивания, расположенного в теле цикла INDEPENDENT.
254 No target for independent loop
Не найдена база выравнивания для цикла INDEPENDENT.
255 Reduction statement inside the range of INDEPENDENT loop, 'identifier' is reduction variable
Обнаружен редукционный оператор в теле цикла INDEPENDENT.