Читайте также:
|
|
В примере вызываются три подпрограммы exdata, entidec и attrdec. В подпрограмме exdata даются примеры с операторами DATA. В подпрограмме entidec демонстрируются объектно-ориентированные декларации, содержащие описание свойств данных, указатели и адресаты для них, операция связи указателя с адресатом. В подпрограмме attrdec демонстрируются описание интерфейса в качестве предварительного описания вызываемой подпрограммы, атрибутное описание данных и еще раз указатели и адресаты.
program example2 call exdata! пример с операторами DATA call entidec! пример с объектно-ориентированными объявлениями call attrdec! пример с aтрибутными объявлениями end |
subroutine entidec ! Entity-oriented declaration: INTEGER, DIMENSION (:), POINTER:: days, hours ! Указатели на массив с неопределенными границами INTEGER (2), PARAMETER:: limit=12 INTEGER, TARGET:: A(4), B(8)! Aдресаты для указателей INTEGER, POINTER:: d, h! Указатели на целые INTEGER (2):: k = 4 INTEGER, TARGET:: p! Aдресат для указателя Logical ans days => A! Cвязь указателя с массивом DO I = 1, 4 A(I) = I B(2 * I - 1) = 2 B(2 * I) = 6 + I END DO Ans=associated(days)! Cведения о наличии связи указателя с массивом Write(*,'((a5),l1)') ' ans=',ans P = 5 d => p! Cвязь указателя с переменной write (*,'((a4),2i2)') ' p =', d, p end |
subroutine attrdec interface! Начало описания интерфейса subroutine summaa(poa,n,s) integer, DIMENSION(:), POINTER:: poa integer n, s end subroutine summaa end interface !Attribute-oriented declaration: INTEGER days, hours, t INTEGER (2):: k=4,limit DIMENSION days(:), hours(:) POINTER days, hours PARAMETER (limit=12) INTEGER, TARGET:: A(4), B(8) DO I = 1, 4 A(I) = I B(2*I-1) = 2 B(2*I) = 6 + I END DO Days => A write (*, '((a3),i2)') ' k=', k call summaa(days, 4, t) write (*, '((a3), i5)') ' t =', t days => A hours => B DO i = 1, 4 Write (*, '((a3), i2, (a3), i3)') ' a(', i, ')=', days(i) END DO End |
Subroutine summaa (poa, n, s) integer, DIMENSION(:), POINTER:: poa integer n, s s=0 do i = 1, n write (*, '((a13), i2, (a3), i3)') 'with poa a(', i, ')=', poa(i) s = s + poa (i) end do write (*, '((a3), i2)') 's=', s end |
Subroutine exdata ! statement DATA integer n, order, alpha, list(100) real coef(4), eps(2), pi(5), x(5,5) character*12 help complex*8 cstuff DATA n /0/, order /3/ DATA alpha /'A'/ DATA coef /1.0, 2*3.0, 1.0/, eps(1) /.00001/ DATA cstuff /(-1.0, -1.0)/ ! The following example initializes diagonal and below in ! a 5x5 matrix: DATA ((x (j, i), i = 1, j), j = 1, 5) / 15 * 1.0 / DATA pi /5*3.14159/ DATA list / 100 * 0 / DATA help(1:4), help(5:8), help(9:12) /3*'HELP'/ Write (*, '((a3), i2)') ' n=', n Write (*, '((a7), i2)') ' order=', order End |
Результат запуска получился такой n= 0 order= 3 ans=T p = 5 5 k= 4 with poa a(1)= 1 with poa a(2)= 2 with poa a(3)= 3 with poa a(4)= 4 s=10 t =10 a(1)= 1 a(2)= 2 a(3)= 3 a(4)= 4 Press any key to continue... |
Дата добавления: 2015-11-14; просмотров: 47 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
В разделе приведены примеры и результаты их запуска на Alfa | | | Пример 4. Определение и использование модуля, родовые процедуры |