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

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

Оглавление

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

Функция ASIN

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

Description
Arcsine.
Syntax
ASIN (x)
Arguments
x должен иметь тип REAL и лежать в пределах -1 x 1 .
Result
Результат имеет ту же разновидность, что и x. Его значение есть представление типа REAL для arcsine(x), выраженное в радианах.
Example

                   r = asin(.5) ! r is assigned the value 0.523599

Оператор Assigned GOTO (устаревшее)

В начало страницы
Description
Оператор присваиваемого GOTO определяет передачу управления оператору-преемнику, указываемому переменной, получившей значение метки в операторе ASSIGN. Если присутствует заключенный в скобки список меток, variable должна получить в качестве значения одну из перечисленных меток.
Syntax
GOTO assign-variable [[ , ] (labels)]
где:
assign-variable есть скалярная переменная типа INTEGER, получившая значение в операторе ASSIGN.
labels есть список меток, разделенных запятыми.
Замечания
В момент выполнения оператора GOTO assign-variable должна быть определена и иметь значение метки перехода в той же самоцй единице видимости.
Example
                          assign 100 to i
                          goto i
                   100    continue

Оператор ASSIGN (устаревшее)

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

Description
Присваивает значение метки оператора переменной типа INTEGER.
Syntax
ASSIGN label TO assign-variable
Где:
label есть метка оператора.
assign-variable есть скалярная переменная типа INTEGER.
Замечания
assign-variable должна быть именованной переменной по умолчанию вида INTEGER. Она не может быть компонентой структуры или элементом массива. label должна быть назначением оператора перехода по метке (branch target statement) или меткой оператора FORMAT в той же самой единице видимости. Получившая значение INTEGER, assign-variable не должна использоваться как метка.
Получив значение метки по ASSIGN, assign-variable может быть только меткой.
Пример

                                  assign 100 to i

                                  goto i
                          100     continue

Оператор присваивания Assignment

В начало страницы
Description
Присваивает значение выражения справа от знака равенства переменной слева от знака равенства.
Syntax
variable = expression
Здесь:
variable есть скалярная переменная, массив или переменная производного типа.
expression есть выражение, результат которого конвертируем с variable.
Замечания

Численной переменной можно присваивать только численное значение; переменной CHARACTER ---только значение CHARACTER той же самой разновидности; переменной LOGICAL можно присваивать только LOGICAL; переменной производного типа можно присваивать только значение того же производного типа.

Вычисление expression производится перед присваиванием. Если разновидность выражения отлична от разновидности переменной, значение выражения подвергается неявному преобразованию типа к типу и разновидности variable. При этом точность может быть потеряна.

Если expression имеет значением массив, переменная тоже должна быть массивом. Если expression есть скаляр, а переменная есть массив, всем элементам variable присваиваются значение expression. Если переменная есть указатель, она должна быть ассоциирована с назначением. Назначению присваивается значение expression. Если variable и expression имеют тип CHARACTER с разными длинами, значение expression усекается, если оно длиннее чем variable, иди дополняется справа пробелами, если оно короче чем variable.

Пример
         real :: a=1.5, b(10)
         integer :: i=2, j(10)
         character (len = 5) :: string5 = "abcde"
         character (len = 7) :: string7 = "cdefghi"
         type person
                  integer :: age
                  character (len = 25) :: name
         end type person
         type (person) :: person1, person2
         i = a                     ! i получает int(a)
         i = j                     ! ошибка
         j = i                     ! каждому элементу в j присваивается
                                   ! значение  2
         j = b                     ! каждому элементу в j присваивается
                                   ! соответствующее значение в b
                                   ! конвертированое к целому
         string5 = string7 ! string5 получает значение  "cdefg"
         string7 = string5 ! string7 получает значение "abcde "
         person1 % age = 5
         person1 % name = "john"
         person2 = person1 ! каждой компоненте в  person2 присваивается
                                   ! значение соответствующей
                                   ! компоненты в  person1

Функция ASSOCIATED

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

Description
Определяет, ассоциирован ли указатель с назначением.
Syntax
ASSOCIATED (pointer, target)
Обязательный аргумент
pointer должен быть указателем с определенным статусом ассоциированности.
Необязательный аргумент
target должен быть указателем или назначением. Если это указатель, его статус ассоциированности не должен быть неопределенным.
Result
Результат по умолчанию имеет тип LOGICAL. Если target отсутствует, результат будет true, если pointer в данный момент ассоциирован с назначением, и false в противном случае. Если target присутствует и есть указатель, результат есть true, если pointer и target в данный момент ассоциированы с тем же самым назначением, и false в проиивном случае. Если target присутствует и есть назначение, результат есть true, если pointer и назначение ассоциированы, и false в противном случае.
Пример

                          real, pointer :: a, b, e
                          real, target :: c, f
                          logical :: l
                          a => c
                          b => c
                          e => f
                          l = associated (a)  ! l получает значение  true
                          l = associated (a, c) ! l получает значение true
                          l = associated (a, b) ! l получает значение true
                          l = associated (a, f) ! l получает значение false
                          l = associated (a, e) ! l получает значение false

Функция ATAN

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

Description
Arctangent.
Syntax
ATAN (x)
Arguments
x должен иметь тип REAL.
Result
Результат есть представление типа REAL значения arctangent(x), выраженное в радианах, для x из области -2 x 2 .
Пример

                 a = atan(.5) ! a получает значение  0.463648

Функция ATAN2

В начало страницы
Description
Арктангенс от y/x (главное значение аргумента комплексного числа (x,y)).
Syntax
ATAN2 (y, x)
Arguments
y должен быть типа REAL.
x должен быть той же разновидности, что и y. Если y имеет значение ноль, x не должен иметь значением ноль.
Result
Результат имеет ту же разновидность, что и x. Его значение есть REAL-представление в радианах аргумента комплексного числа (x,y).
Пример
                 x = atan2 (1, 1) ! x получает значение .785398

Оператор BACKSPACE

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

Description
Оператор BACKSPACE устанавливает позицию в файле перед началом текущей записи записи, если такая имеется, или перед началом предыдущей записи.
Syntax
BACKSPACE unit-number
или
BACKSPACE (position-spec-list)
Здесь:
unit-number есть скалярное выражение INTEGER, соответствующее номеру входного/выходного устройства внешних файлов.
position-spec-list есть [[ UNIT = ] unit-number][, ERR = label ][, IOSTAT = stat ] где UNIT=, ERR= и IOSTAT= могут располагаться в любом порядке, но если UNIT= опущено, то unit-number должен стоять на первом месте.
label есть метка оператора, к которому надо перейти, если во время исполнения BACKSPACE произошла ошибка.
stat есть переменная типа INTEGER, которой присваивается положительное значение, если произошла ошибка, и отрицательное значение, если обнаружено состояние end-of-file или end-of-record, и 0 в остальных случаях.
Замечания
Если нет ни текущей ни предыдущей записи, позиция файла не меняется.
Если предыдущая запись есть конец файла, файл устанавливается на позицию перед ней.
Если оператор BACKSPACE произвел неявно запись конца файла, файл устанавливается перед записью, предшествующей конечной записи.
Продвижение назад по файлу, который связан но не существует, запрещено.
Продвижение назад по файлу через записи с использованием list-directed или namelist-форматирования запрещается.
Пример

             backspace 10 ! продвигается назад файл в устройстве 10
            backspace (10, err = 100)
                     ! продвигается назад файл в устройстве  10
                     ! при ошибке переход по метке 100

Функция BIT_SIZE

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

Описание
Размер в битах объекта данных типа INTEGER.
Syntax
BIT_SIZE (i)
Аргумент
i должно иметь тип INTEGER.
Результат
Результат имеет ту же разновидность, что i. Его значение равно количеству битов в i.
Пример

                 integer :: i, m
                 integer, dimension (2) :: j, n
                 m = bit_size (i) ! m получает значение 32
                 n = bit_size (j) ! n получает значение  [32 32]

Оператор BLOCK DATA

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

Описание
Оператор BLOCK DATA есть первый оператор в программной единице блок данных.
Syntax
BLOCK DATA [block-data-name]
Здесь:
block-data-name есть необязательное имя программной единицы блок данных.
Пример

                 block data mydata
                   common /d/ a, b, c
                   data a/1.0/, b/2.0/, c/3.0/
                 end block data mydata

Функция BTEST

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

Описание
Тестирует один бит объекта данных типа INTEGER
Syntax
BTEST (i, pos)
Аргументы
i должно иметь тип INTEGER.
pos должна иметь тип INTEGER. Она должна быть неотрицательной и меньше чем BIT_SIZE (i). Биты нумеруются от самого младшего до самого старшего, начиная с 0.
Результат
Тип результата по умолчанию LOGICAL. Он имеет значение true, еслит бит pos имеет значение 1 и false если бит pos имеет has значение 0.
Пример

                l = btest (1, 0) ! l получает значение  true
                l = btest (4, 1) ! l получает значение  false
                l = btest (32, 5) ! l получает значение true

Оператор CALL

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

Description
Оператор CALL вызывает сабрутину и передает ей список аргументов.
Syntax
CALL subroutine-name [( [ actual-arg-list ] )]
Здесь:
subroutine-name есть имя сабрутины.
actual-arg-list есть [[keyword = ] actual-arg] [, ...]
keyword есть имя фиктивного аргумента в subroutine-name.
actual-arg есть выражение, переменная, имя процедуры или alternate-return-spec.
alternate-return-spec есть *label
label есть метка опрератора.
Замечания
Общие:
actual-arg-list определяет соответствие между наборами фактических аргументов и фиктивных аргументов сабрутины.

Если присутствует keyword = то фактический аргумент передается фиктивному, имя которого совпадает с keyword. Если keyword = отсутствует, фактический аргумент передается фиктивному в сответствующей позиции списка фиктивных аргументов. keyword = должен появиться с некоторым actual-arg , если никаких предыдущих keyword = не появлялось в actual-arg-list. keyword = может появиться только при явном интерфейсе процедуры в единице видимости. Фактический аргумент может быть опущен, если соответствующий фиктивный аргумент имеет атрибут OPTIONAL. Каждый фактический аргумент должен ассоциироваться с соответствующим фиктивным аргументом.

Объекты данных как аргументы:
Фактический аргумент должен быть той же разновидности , что и соответствующий фиктивный аргумент.
Если фиктивный аргумент есть массив предполагаемой формы (assumed-shape), имеющий по умолчанию тип CHARACTER, его длина должна быть согласована с соответствующим фактическим аргументом. Полная длина фиктивного аргумента типа CHARACTER по умолчанию должна быть меньше или такая же как у фактического аргумента. Если фиктивный аргумент есть указатель, фактический аргумент должен быть указателем их типы, параметры разновидности и ранги должны быть согласованы.

При вызове сабрутины фиктивный указатель получает статус, ассоциированный с соответствующим фактическим аргументом. При окончании сабрутины фактический аргумент получает статус указателя, ассоциированного с фиктивным аргументом. Если фактический аргумент имеет атрибут TARGET, всякие указатели, ассоцированные с ним, остаются ассоциированными с фактическим аргументом. Если фиктивный аргумент имеет атрибут TARGET, любой указатель, ассоциированный с ним, становится неопределенным по завершении сабрутины. Ранги фиктивных аргументов и соответствующих фактических аргументов должны быть согласованы, за исключением случаев, когда фактический аргумент есть элемент массива, который не есть массив предполагаемой формы или указатель на массив, или подцепочка такого элемента.

Процедуры как аргументы.

Если фиктивный аргумент есть фиктивная процедура, соответствующий фактический аргумент должен быть специальным именем внешней, модульной, фиктивной или встроенной процедуры. Встроенные функции AMAX0, AMAX1, AMIN0, AMIN1, CHAR, DMAX1, DMIN1, FLOAT, ICHAR, IDINT, IFIX, INT, LGE, LGT, LLE, LLT, MAX0, MAX1, MIN0, MIN1, REAL и SNGL не допускаются в качестве фактических аргументов.
Если имя групповой встроенной функции есть также и специальное имя, то только специальная процедура может соответствовать фиктивному аргументу. Если фиктивная процедура имеет неявный интерфейс, то или имя фиктивного аргумента печатается явно, или на процедуру ссылаются как на функцию. Фиктивная процедура не должна вызываться как подрутина и фактический аргумент должен быть функцией или фиктивной процедурой.
Если фиктивная процедура имеет неявный интерфейс и процедура вызывается как подрутина, фактический аргумент должен быть сабрутиной или фиктивной процедурой.

Альтернативные выходы как аргументы:

Если фиктивный аргумент есть звездочка, то соответствующий фактический аргумент должен быть alternate-return-spec. Метка в alternate-return-spec должна помечать выполнимый конструкт в единице видимости, содержащей ссылку на процедуру.

Пример
                         ...
                         call alpha (x, y)
                         ...

                         subroutine alpha (a, b)
                             implicit none
                             real, intent(in) :: a
                             real, intent(out) :: b
                             ...
                         end subroutine alpha

Функция CARG

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

Description
Передает item процедуре как данные типа C по значению. CARG может использоваться только как фактический аргумент.
Syntax
CARG (item)
Аргументы
item может быть именованным объектом данных любого встроенного типа за исключением COMPLEX и четырехбайтного LOGICAL. Это объект данных, для которого нужно получить (return) значение. item есть INTENT(IN) аргумент.


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