Spec-Zone.ru › GNU Fortran 5

6.2.1 STRUCTURE и RECORD

Структуры записей — это расширение поставщика до Fortran-90 для создания пользовательских агрегированных типов данных. GNU Fortran не поддерживает структуры записей, а поддерживает только «производные типы» Fortran 90, которые имеют другой синтаксис.

Во многих случаях структуры записей можно легко преобразовать в производные типы. Для преобразования замените STRUCTURE /имя_структуры/ на TYPE имя_типа. Кроме того, замените RECORD /имя_структуры/ на TYPE(имя_типа). Наконец, в доступе к компонентам замените точку (.) на знак процента (%).

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

! Declaring a structure named ``item'' and containing three fields:
! an integer ID, an description string and a floating-point price.
STRUCTURE /item/
  INTEGER id
  CHARACTER(LEN=200) description
  REAL price
END STRUCTURE

! Define two variables, an single record of type ``item''
! named ``pear'', and an array of items named ``store_catalog''
RECORD /item/ pear, store_catalog(100)

! We can directly access the fields of both variables
pear.id = 92316
pear.description = "juicy D'Anjou pear"
pear.price = 0.15
store_catalog(7).id = 7831
store_catalog(7).description = "milk bottle"
store_catalog(7).price = 1.2

! We can also manipulate the whole structure
store_catalog(12) = pear
print *, store_catalog(12)

Этот код легко можно переписать в синтаксисе Fortran 90 следующим образом:

! ``STRUCTURE /name/ ... END STRUCTURE'' becomes
! ``TYPE name ... END TYPE''
TYPE item
  INTEGER id
  CHARACTER(LEN=200) description
  REAL price
END TYPE

! ``RECORD /name/ variable'' becomes ``TYPE(name) variable''
TYPE(item) pear, store_catalog(100)

! Instead of using a dot (.) to access fields of a record, the
! standard syntax uses a percent sign (%)
pear%id = 92316
pear%description = "juicy D'Anjou pear"
pear%price = 0.15
store_catalog(7)%id = 7831
store_catalog(7)%description = "milk bottle"
store_catalog(7)%price = 1.2

! Assignments of a whole variable do not change
store_catalog(12) = pear
print *, store_catalog(12)

© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-5.4.0/gfortran/STRUCTURE-and-RECORD.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API