Справочное руководство по языку Fortran 95

перевод Балуева А. Н.

Оглавление

Глава 2.Алфавитный справочник

Оператор GOTO

В начало страницы

                 Описание
Оператор GOTO  передает управление оператору, идентифицированному указанной
меткой.

                 Syntax
                           GOTO label
                 Здесь:
                 label есть метка оператора, представляющего цель перехода.

                 Замечания
                 label олжна быть меткой оператора, расположенного в той же
				единице видимости, что и оператор GOTO.

                 Пример
                                   a = b
                                   goto 10            ! переход к 10
                                   b = c              ! никогда не выполняется 
                                    10      c = d
                          		    10      c = d

Функция HUGE

В начало страницы
 
                 Описание
                 Наибольшее представимое число данного типа.

                 Syntax
                        HUGE (x)
                 Аргумент
                 x должен иметь тип REAL или  INTEGER.

                 Результат
Результат имеет тот же тип и разновидность, что и  x.  Его значение есть
значение наибольшего числа того же типа, что  x.


                 Пример
                 a = huge(4.1) ! a получает значение  0.340282E+39

Функция IACHAR

В начало страницы
       Описание
       Позиция символа в упорядоченной (collating) последовательности ASCII.

       Syntax
                 IACHAR (c)

       Аргумент
       c должно иметь тип default CHARACTER и длину один.

       Результат
Результат имеет тип default INTEGER.  Его значение есть позиция  c  в
упорядоченной последовательности  ASCII и лежит в области
        0 <= iachar(c) <= 127 .

       Пример
                 i = iachar('c') ! i получает значение 99

Функция IAND

В начало страницы


       Описание
       Побитовое логическое  AND.

       Syntax
                 IAND (i, j)

       Аргументы
       i должно иметь тип INTEGER.

       j должно иметь тип INTEGER той же разновидности, что и  i.

       Результат
Резулльтат имеет тип  INTEGER.  Его значение получается осуществлением
побитового логического  AND над  i и j.



                 Пример
                           i=53        ! i = 00110101 binary (последний байт)
                           j=45        ! j = 00101101 binary (последний байт)
                           k=iand(i,j) ! k = 00100101 binary (последний байт)
                                            ! k = 37 decimal

Функция IBCLR

В начало страницы

                 Описание
                 Заменяет нулем указанный бит.

                 Syntax
                         IBCLR (i, pos)
                 Аргументы
                 i должно быть типа INTEGER.
                 pos должен иметь тип INTEGER.  
Он должен быть неотрицательным и меньше, чем количество битов в  i.

                 Результат
Результат имеет тип  INTEGER той же разновидности, что и i.  Его значение
есть значение i кроме того, что бит  pos установлен на ноль. Напомним, что
самая младшая позиция имеет номер ноль.

                 Example
                           i = ibclr (37,2) ! i получает значение 33

Функция IBITS

В начало страницы

                 Описание
                 Извлекает последовательность битов.

                 Syntax
                        IBITS (i, pos, len)
Аргументы

i должно иметь тип INTEGER. pos должен иметь тип INTEGER. Он должен быть неотрицательным и pos+len должно быть меньше чем или равно количеству бит в i. len должен иметь тип INTEGER и быть неотрицательным.

Результат

Результат имеет тип INTEGER и ту же разновидность, что и i. Его значение есть значение последовательности из len бит, начинающейся с позиции pos, которая (последовательность) затем смещена до конца вправо и дополнена нулями слева. Напомним, что самая правая (младшая) позиция имеет номер 0.

       Пример
                 i = ibits (37,2,2) ! i получает значение 1

Функция IBSET

В начало страницы
 
       Описание
       Устанавливает указанный бит в единицу.

       Syntax
              IBSET (i, pos)
 
Аргументы

i должно иметь тип INTEGER. pos должен иметь тип INTEGER. Он должен быть неотрицательным и меньше чем количество бит в i.

Результат

Результат имеет тип INTEGER и ту же разновидность, что и i. Его значение есть значение i за исключением того, что бит в позиции pos заменен на 1. Заметим, позиция наименьшего порядка имеет номер 0.

       Пример
                 i = ibset (37,1) ! i получает значение 39

Функция ICHAR

В начало страницы

       Описание

Позиция символа в упорядоченной последовательности процессора, связанная с
разновидностью символа.

       Syntax
                 ICHAR (c)
       Аргумент
       c должен иметь тип CHARACTER и длину один.

Результат

Результат имеет тип default INTEGER. Его значение есть позиция c в упорядоченной последовательности процессора, связанная с разновидностью c и лежит в области 0 <= ichar c < количество символов в последовательности. ( ) n н 1 , where n is

                 Пример
                           i = ichar('c') ! i получает значение 99 для
                                                  ! символа c в  ASCII
                                           ! упорядоченной последовательности

Функция IEOR

В начало страницы


                 Описание
Побитовое логическое исключающее OR.

                 Syntax
                           IEOR (i, j)

                 Аргументы
                 i должно иметь тип INTEGER.

                 j должно иметь тип INTEGER и ту же разновидность, что и i.

                 Результат
                 Результат имеет тип INTEGER. Его значение получается
побитовым логическим исключающим OR над двоичными кодами  i и j.

                 Пример
                 i=53            ! i = 00110101 binary (байт низшего порядка)
                 j=45            ! j = 00101101 binary (lowest-order byte)
                 k=ieor(i,j)     ! k = 00011000 binary (lowest-order byte)
                                           ! k = 24 в десятичной форме

Конструкт IF

В начало страницы



                 Описание
Конструкт IF определяет, какой (или никакой) из одного или более блоков или
конструктов будет выполнен.



Syntax
          [construct-name:] IF (expr) THEN
                          block
          [ELSE IF (expr) THEN [construct-name]
                          block]
          ...
          [ELSE [construct-name]
                          block]
          END IF [construct-name]

Здесь:
construct-name есть необязательное имя конструкта.

expr есть скалярное  LOGICAL выражение.

block есть последовательность из нуля  или более операторов или исполнимых
конструктов.
Замечания

Исполняется не более чем один блок, содержащийся в конструкте IF. Если в конструкте содержится оператор ELSE, то выполняется точно один из блоков, содержащихся в конструкте. Выражения expr вычисляются в порядке их расположения в конструкте, пока не будет получено значение true или достигнут оператор ELSE или END IF. Если обнаружено значение true или встретился оператор ELSE, то выполняется непосредственно следующий блок и на этом исполнение конструкта завершается. Выражения expr в оставшихся операторах ELSE IF или конструктах IF не вычисляются. Если никакое из вычисленных expr не дало значения true и не было операторов ELSE, выполнение конструкта завершается без выполнения каких-либо блоков в пределах конструкта.

Если в операторе IF указано construct name, то соответствующий оператор END IF должен содержать то же самое construct name. Если оператор IF не имеет construct name, соответствующий оператор END IF тоже не должен его содержать.

            Пример
                    if (a>b) then
                    c = d
                    else if (a

Оператор IF-THEN

В начало страницы


                 Описание
Оператор  IF-THEN начинает конструкт IF.

                 Syntax
                           [ construct-name: ] IF (expr) THEN

                 Здесь:
construct-name есть необязательное имя конструкта IF.
expr есть скалярное выражение типа LOGICAL.
Замечания

Выполняется не более чем один из блоков, содержащихся в конструкте IF. Если в конструкте имеется оператор ELSE, то исполняется точно один из блоков, содержащихся в конструкте. Выражения expr вычисляются в порядке их расположения в конструкте, пока не будет получено значение true или достигнут один из операторов ELSE или END IF. Если обнаружено значение true или достигнут оператор ELSE, выполняется непосредственно следующий блок и на этом выполнение конструкта заканчивается. Выражения expr в оставшихся операторах ELSE IF конструкта IF не вычисляются. Если ни одно из вычисленных выражений expr не дало значения true и нет операторов ELSE, выполнение конструкта заканчивается без выполнения каких-то блоков в его пределах.

                 Пример
                           if (a>b) then
                             c = d
                           else
                             d = c
                           end if

Оператор IF

В начало страницы


                 Описание
Оператор IF определяет, должен выполняться или нет единственный исполнимый
оператор.

                 Syntax
                           IF (expr) action-statement

                 Здесь:
expr есть скалярное выражение типа  LOGICAL.

                                                                  

action-statement ecть исполнимый оператор, отличный от других  операторов  IF
или END программы, функции или подрутины.
Замечания

Выполнение оператора IF требует вычисления expr. Если значение expr есть true, то выполняется action-statement. Если это значение есть false, то action-statement не выполняется.

       Example
                 if (a >= b) a = -a

Оператор IMPLICIT

В начало страницы
Описание

Оператор IMPLICIT определяет, в пределах своей единицы видимости, тип и, возможно, разновидность длины CHARACTER для каждого имени, начинающегося с буквы, указанной в операторе IMPLICIT. Как альтернатива, он может указывать, что в пределах единицы видимости соглашения о начальных буквах не действуют.

       Syntax
                 IMPLICIT implicit-specs
       or
                 IMPLICIT NONE
       Здесь:
implicit-specs есть список через запятую  type-spec (letter-specs)
       type-spec есть INTEGER [kind-selector]
       или REAL [kind-selector]
       или DOUBLE PRECISION
       или COMPLEX [kind-selector]
       или CHARACTER [char-selector]
       или LOGICAL [kind-selector]
       или TYPE (type-name).
       kind-selector есть  ( [KIND = ] kind ).
       char-selector есть (LEN =  length [, KIND =  kind ] )
       или  (length [,[ KIND = ] kind ] )
       или ( KIND = kind [, LEN = length ] )
       или * char-length [,].
       type-name есть имя типа, определенного пользователем.
       kind есть скалярное выражение типа INTEGER, которое можно вычислить
       при компиляции.

length есть скалярное выражение типа INTEGER или * char-length есть скалярная литеральная константа типа INTEGER или (*) letter-specs есть список через запятую выражений формы буква[-буква]. буква есть одна из букв от A до Z.

Замечания

letter-spec состоящий из двух букв, разделенных знаком минус, эквивалентен написанию списка, содержащего в алфавитном порядке все буквы от первой указанной буквы до второй. Одна и та же буква не может появиться как отдельная буква или в диапазоне букв более одного раза во всех операторах IMPLICIT в единице видимости.

При отсутствии оператора implicit программная единица рассматривается так, как будто она имеет хост с объявлением

implicit integer (i-n), real (a-h, o-z)

IMPLICIT NONE указывает отсутствие определенного предназначения (defolt mapping) для всех букв. Если предназначение буквы не определено в данной единице видимости, по умолчанию оно определяется хостом данной единицы.

Если IMPLICIT NONE имеется в единице видимости, он должен предшествовать всем операторам PARAMETER в этой единице и быть единственным оператором IMPLICIT в этой единице.

Всякий объект данных, который не объявлен явно в операторе объявления типа, не есть встроенная функция и не сделан доступным посредством use или хост-ассоциации, считается неявно объявленным с типом (и параметрами типа разновидностью и длиной ) по первой букве своего имени при условии, что ее предназначение ( mapping ) не пусто (not null).

Явная спецификация типа в операторе FUNCTION подавляет оператор IMPLICIT для имени этой функциональной подпрограммы.

                 Пример
                   implicit character (c), integer (a-b, d-z)
                                       ! указывает, что все объекты данных
                                       ! с начальной буквой c неявно имеют
                                       ! тип character, а другие объекты данных
                                       ! имеют тип integer

Строка INCLUDE

В начало страницы
Описание

Строка INCLUDE побуждает обрабатывать текст из другого файла так, как если бы этим текстом заменить строку INCLUDE. Строка INCLUDE не является оператором Fortran.

       Syntax
       INCLUDE filename
Здесь:

filename есть литеральная константа типа CHARACTER, которая соответствует файлу, содержащему входной текст для вставки на место строки INCLUDE.

Замечания

Строка INCLUDE является единственным непустым (non-blank) текстом в этой входной строке (source line) кроме возможного конечного комментария. Метки оператора или дополнительные операторы недопустимы в этой строке.

       Пример
                 include "types.for" ! вставить файл с именем  types.for
                                     ! вместо этой строки INCLUDE

Функция INDEX

В начало страницы
Описание
      
Начальная позиция подцепочки (substring) внутри цепочки (string).

       Syntax
INDEX (string, substring, back)

       Обязательные аргументы
       string должен иметь тип  CHARACTER.
       substring должен иметь тип  CHARACTER той же разновидности, что и
       string.

       Необязательный аргумент
       back должен иметь тип LOGICAL.
Результат

Результат имеет тип default INTEGER. Если back отсутствует или имеет значение false, то значение результата есть номер позиции в string, где начинается первое вхождение или ноль, если нет такого значения или если string короче чем substring. Если substring имеет длину ноль, то значение результата есть один.

Если back присутствует и имеет значение true, то значение результата есть номер позиции в string, где начинается последнее вхождение substring. Если string короче чем substring или если substring не входит в string, возвращается значение ноль. Если substring имеет длину ноль, то выдается значение LEN(string)+1.

                 Пример
                          i = index('mississippi', 'si')
                                       ! i получает значение  4
                          i = index('mississippi', 'si', back=.true.)
                                       ! i получает значение  7

Оператор INQUIRE

В начало страницы
Описание

Оператор INQUIRE побуждает программу справиться о существовании файла, о связях, о методе доступа и других свойствах.



         Syntax
          INQUIRE (inquire-specs)
или
          INQUIRE (IOLENGTH = iolength) output-items
         Здесь:
inquire-specs есть список через запятую  следующих возможных текстов:
         [UNIT =] external-file-unit
      или FILE = file-name-expr
      или IOSTAT = iostat
      или ERR = label
      или EXIST = exist
      или OPENED = opened
      или NUMBER = number
      или NAMED = named
      или NAME = name
      или ACCESS = access
      или SEQUENTIAL = sequential
      или DIRECT = direct
      или FORM = form
      или FORMATTED = formatted
      или UNFORMATTED = unformatted
      или RECL = recl
      или NEXTREC = nextrec
      или BLANK = blank
      или POSITION = position
      или ACTION = action
      или READ = read
      или WRITE = write
      или READWRITE = readwrite
      или DELIM = delim
      или PAD = pad
      или FLEN = flen
      или BLOCKSIZE = blocksize
      или CONVERT =file-format
      или CARRIAGECONTROL = carriagecontrol.

external-file-unit есть скалярное выражение типа INTEGER, которое вычисляет для устройства ввода/вывода номер внешнего файла. file-name-expr есть скалярное выражение типа CHARACTER, которое определяет имя файла.

iostat есть скалярная переменная типа INTEGER, которой присваивается положительное значение при обнаружении ошибки, отрицательное значение при обнаружении конца файла или конца записи, и значение ноль в остальных случаях.

label есть метка оператора для перехода при ошибке. exist есть скалярная типа default LOGICAL переменная, которая получает значение true, если названный файл в FILE= specifier существует или устройство ввода/вывода, указанное в UNIT= specifier существует, и false в противных случаях.

opened есть скалярная переменная типа default LOGICAL, которая получает значение true, если файл или названное устройство ввода/вывода подсоединены, и false в противном случае.

number есть скалярная переменная типа INTEGER, которая получает значение номера устройства ввода/вывода внешнего файла или -1, если файл не присоединен или не существует.

named есть скалярная переменная типа default LOGICAL, которая получает значение true, если файл имеет имя, и false в противном случае. name есть скалярная переменная типа default CHARACTER, которая получает значением имя файла, если он имеет имя, и в противном случае остается неопределенной.

access есть скалярная переменная типа default CHARACTER, которая получает значение SEQUENTIAL, если файл предназначен для последовательного доступа, DIRECT, если файл предназначен для прямого доступа, TRANSPARENT, если файл подсоединен для доступа transparent , или UNDEFINED если файла нет.

sequential есть скалярная переменная типа default CHARACTER, которая получает значение YES, если последовательный доступ есть допустимый метод доступа к файлу, NO, если последовательный доступ недопустим, и UNKNOWN, если файл не подсоединен или не существует.

direct есть скалярная переменная типа default CHARACTER, которая получает значение YES, если прямой доступ возможен для файла, NO, если прямой доступ не разрешен, и UNKNOWN, если файл не подсоединен или не существует.

form есть скалярная переменная типа default CHARACTER, которой присваивается значение FORMATTED, если файл подсоединен для форматированного ввода/вывода, UNFORMATTED, если файл подсоединен для неформатированного ввода/вывода, и UNDEFINED, если связи нет.

formatted есть скалярная переменная типа default CHARACTER, которая получает значение YES, если formatted есть допустимая форма для файла, NO, если formatted недопустима, и UNKNOWN, если файл не присоединен или не существует.

unformatted есть скалярная переменная типа default CHARACTER, которая получает значение YES, если unformatted есть допустимая форма для файла, NO, если unformatted недопустима и UNKNOWN, если файл не присоединен или не существует.

recl есть скалярная переменная типа default INTEGER, которая вычисляется для определения длины записи в байтах для файла, присоединенного для прямого доступа, или для максимальной длины записи в байтах для файла, присоединенного для последовательного доступа, или ноль для файла не присоединенного или не существующего.

nextrec есть скалярная переменная типа default INTEGER, которая получает значение n+1, где n есть номер последней записи, прочтенной или записанной в файл, присоединенный для прямого доступа. Если в файл не писали или не читали из него с момента присоединения, переменная получает значение 1. Если файл не присоединен для прямого доступа, значение равно 0.

blank есть скалярная переменная типа default CHARACTER, в которую записывается NULL, если действует null blank control, ZERO, если действует zero blank control, и UNDEFINED, если файл не присоединен для форматированного ввода/вывода или не существует.

position есть скалярная переменная типа default CHARACTER, которая получает значение REWIND, если заново открытый файл последовательного доступа установлен в начальную позицию; APPEND, если он установлен перед записью

endfile, если такая существует, или на конечную позицию в противном случае; ASIS, если позиция есть после записи endfile; и UNDEFINED, если файл не присоединен или не существует.

action есть скалярная переменная типа default CHARACTER, которая устанавливается на READ, если файл предназначен только для чтения, на WRITE, если установленный файл предназначен для записи, или на READWRITE, если в файл можно и писать и читать, или на UNDEFINED, если файл не присоединен или не существует.

read есть скалярная переменная типа default CHARACTER, которой присваивается значение YES, если READ есть допустимое действие с файлом, NO, если READ есть недопустимое действие, и UNKNOWN, если файл не присоединен или не существует.

write есть скалярная переменная типа default CHARACTER, которой присваивается значение YES, если WRITE есть допустимое действие с файлом, NO, если WRITE есть недопустимое действие, и UNKNOWN, если файл не присоединен или не существует.

readwrite есть скалярная переменная типа default CHARACTER, которая получает значение YES, если READWRITE есть допустимое действие с файлом, NO, если READWRITE есть недопустимое действие с файлом, и UNKNOWN, если файл не присоединен или не существует.

delim есть скалярная переменная типа default CHARACTER, она получает значение APOSTROPHE, если апостроф будет использоваться для ограничения символьных констант, написанных с управляемым списком или с namelist-форматированием, QUOTE, если будут использоваться кавычки, NONE, если не будут использоваться ни кавычки ни апострофы, UNDEFINED, если файл не присоединен или не существует.

pad есть скалярная переменная типа default CHARACTER, которая получает значение YES, если форматированная входная запись дополняется пробелами, и NO, если файл не присоединен или не существует.

flen есть скалярная переменная типа default INTEGER, которая получает значение длины файла в байтах.

blocksize есть скалярная переменная типа default INTEGER, которая получает значение размера в байтах буфера ввода/вывода. Это значение может быть внутренним образом переделано в границу для длин записей, если устройство присоединено для прямого доступа и поэтому может оказаться не соответствующим спецификатору BLOCKSIZE, указанном в операторе OPEN. Значение есть ноль, если файл не присоединен или не существует.

file-format есть скалярная переменная типа default CHARACTER, которая получает значение BIG_ENDIAN, если действует конверсия big endian, LITTLE_ENDIAN, если действует конверсия little endian, IBM, если действунет конверсия в стиле IBM, и NATIVE, если никакая конверсия не действует.

carriagecontrol есть скалярная переменная типа default CHARACTER, которая получает значение FORTRAN, если первый символ форматированной последовательной записи должен использоваться для управления кареткой, и LIST в противном случае.

iolength есть скалярная переменная типа default INTEGER, которая получает значение от использования выходных объектов в операторе бесформатного вывода. Значение может быть использовано как RECL= specifier в операторе OPEN, который присоединяет файл для безформатного прямого доступа, когда имеются операторы ввода/вывода с тем же списком выходных объектов, которые представляют собой разделенный запятыми список элементов с iolength, как это объяснено чуть выше.

Замечания

inquire-specs магут содержать один FILE= specifier или одно UNIT= specifier, только не оба, и не более одного спецификатора других видов.

В запросе по форме unit в операторе INQUIRE statement, если необязательные символы UNIT= отсутствуют в спецификации устройства, эта спецификация должна стоять на первом месте в inquire-specs.

Когда возвращаемое значение спецификатора, отличного от NAME = specifier, имеет тип CHARACTER и процесор может выдавать буквы обоих регистров, это значение выдается буквами верхнего регистра.

Если во время выполнения оператора INQUIRE происходит ошибка, все спецификационные переменные оператора становятся неопределенными, за исключением перeменной в IOSTAT= specifier (если такие есть).


                 Пример
                           inquire (unit=8, access=acc, err=200)
                        ! каков метод доступа к unit 8? goto 200 при ошибке
                           inquire (this_unit, opened=opnd, direct=dir)
               ! открыто ли устройство  this_unit? допустим ли прямой доступ?
                           inquire (file="myfile.dat", recl=record_length)
                             ! какова длина записи в файле "myfile.dat"?

Функция INT

В начало страницы
                 Описание
                 конверсия к типу  INTEGER.

                 Syntax
               INT (a, kind)
               Обязательный аргумент
                 a должен иметь тип INTEGER, REAL или COMPLEX.

                 Необязательный аргумент
 kind должен быть скалярным выражением типа INTEGER, которое можно вычислить
при компиляции.
Result

Результат имеет тип INTEGER. Если kind присутствует, то он и определяет разновидность результата. Значение результата есть значение a без дробной части. Если a имеет тип COMPLEX, результат есть вещественная часть без дробной части.

         Пример

                 b = int(-3.6) ! b получает значение -3

Оператор INTEGER

В начало страницы
       Описание
Оператор INTEGER объявляет примитивы типа INTEGER.

       Syntax
   INTEGER [ kind-selector ] [[, attribute-list ] :: ] entity [, entity ] ...


       Здесь:
kind-selector есть ( [ KIND = ] scalar-int-initialization-expr )
scalar-int-initialization-expr есть скалярное выражение типа INTEGER, которое
можно вычислить при компиляции.
attribute-list есть разделенный запятыми список следующих возможных атрибутов:
PARAMETER, ALLOCATABLE, DIMENSION(array-spec), EXTERNAL, INTENT (IN) или
INTENT (OUT) или INTENT (IN OUT), PUBLIC или PRIVATE, INTRINSIC, OPTIONAL,
POINTER, SAVE, TARGET.
entity есть entity-name [(array-spec)] [ = initialization-expr ]
       или function-name [(array-spec)].
array-spec есть спецификация массива.
initialization-expr есть выражение, которое можно вычислить при компиляции.
entity-name есть имя объявляемого объекта данных.
function-name есть имя объявляемой функции.
Замечания

Один и тот же атрибут не должен появляться в операторе INTEGER более одного раза.

function-name может быть именем external, встроенной или операторной функции, или функции фиктивной процедуры. Запись вида = initialization-expr может появиться, если оператор содержит атрибут PARAMETER.

Если = initialization-expr появилась, то удвоенное двоеточие должно стоять перед списком примитивов. Каждый примитив имеет атрибут SAVE, если не стоит в в именованном блоке common.

Форма = initialization-expr не должна употребляться, если entity-name есть фиктивный аргумент, результат функции, объект в именованном блоке common (в случае когда объявление типа не находится в программной единице block data), объект в безымянном блоке common, размещаемый массив, указатель, внешнее имя, встроенное имя или автоматический объект.

Массив, объявленный с атрибутом POINTER или ALLOCATABLE, должен специфицироваться с отложенной формой.

array-spec для function-name, которая не имеет атрибута POINTER или ALLOCATABLE, должен специфицироваться с явной формой.

array-spec для function-name которая имеет атрибут POINTER или атрибут ALLOCATABLE, должен специфицироваться с отложенной формой.

Если указан атрибут POINTER, то атрибуты TARGET, INTENT, EXTERNAL или INTRINSIC не должны специфицироваться.

Если указан атрибут TARGET, атрибуты POINTER, EXTERNAL, INTRINSIC или PARAMETER специфицироваться не должны.

Атрибут PARAMETER не должен быть специфицирован для фиктивных аргументов, указателей, размещаемых массивов, функций или объектов в блоке common.

Атрибуты INTENT и OPTIONAL могут указываться только для фиктивных аргументов. Примитив не должен иметь атрибут PUBLIC, если его тип имеет атрибут PRIVATE.

Атрибут SAVE не должен указываться для объекта, который находится в блоке common block, для фиктивного аргумента, процедуры, результата функции или автоматического объекта данных.

Примитив не может иметь атрибут EXTERNAL, если имеет атрибут INTRINSIC. Примитив в операторе INTEGER не должен иметь атрибуты EXTERNAL или INTRINSIC, если только он не является функцией.

Массив не может иметь вместе атрибуты ALLOCATABLE и POINTER. Примитиву нельзя давать явно какой-нибудь атрибут более одного раза в единице видимости.



       Пример
                 integer :: a, b, c        ! a, b, и c имеют тип integer
                 integer, dimension (2, 4) :: d
                                           ! d есть массив  2 на 4 из целых
                 integer :: e = 2          ! целое  e инициализируется




<<< Оглавление Страницы:  12   13 >>>