���������� ����������� �� ����� Fortran 95
����� 2.���������� ����������
������� COSH
�������� ������� COUNT
��������
integer, dimension (2,3) :: a, b integer, dimension (2) :: c integer, dimension (3) :: d integer :: e a = reshape((/1,2,3,4,5,6/), (/2,3/)) ! ������������ |1 3 5| |2 4 6| b = reshape((/1,2,3,5,6,4/), (/2,3/)) ! ������������ |1 3 6| |2 5 4| e = count(a==b) ! e �������� �������� 3 d = count(a==b, 1)! d �������� �������� 2,1,0 c = count(a==b, 2)! c �������� �������� 2,1 ������������ CPU_TIME
�������� ������� CSHIFT
������ call cpu_time(start_time) x = cos(2.0) call cpu_time(end_time) cos_time = end_time - start_time ! ����� �� ���������� � ��������� � ������ cosine (2.0)������� CSHIFT �������� ����������� ����� ���� ������ ����� ���� � �������. ��������, ���������� � ������ �����, ���������� � �������. ��������� ������ ����� ���������� �� ������ ���������� � � ������ ������������ � ������� ���������� (array-valued) ������. Syntax CSHIFT (array, shift, dim) ������������ ��������� array ����� ����� ����� ���. �� �� ����� ���� ��������. shift ������ ����� ��� INTEGER � ���� ��������, ���� array ����� ���� 1; � ��������� ������� �� ������ ���� �������� ��� ����� ���� n-1 � ����� (d1, d2, ..., ddim-1, ddim+1, ..., dn) , ��� (d1, d2, ..., dn) ���� ����� �������. �������������� �������� dim ������ ���� �������� ���� INTEGER �� ��������� � �������� �� 1 �� n , ��� n ���� ���� ������� array. ���� dim ������, �� �������������� �������������� � ������� �������� 1. ��������� ��������� ����� ��� �� ���, ������������� � �����, ��� � array.
���� array ����� ���� ����, �������� ���������� ���� �������� array
� ���������� ���������� ����������. ����� �� n ����� ��������� ������
� ���������� array(1 + MODULO(i + n - SIZE(array))) �� ����� i. ������ integer, dimension (2,3) :: a, b integer, dimension (3) :: c, d integer :: e a = reshape((/1,2,3,4,5,6/), (/2,3/)) ! ������������ |1 3 5| |2 4 6| c = (/1,2,3/) b = cshift(a,1) ! b �������� �������� |2 4 6| ! |1 3 5| b = cshift(a,-1,2)! b �������� �������� |3 5 1| ! |4 6 2| b = cshift(a,c,1) ! b �������� �������� |2 3 5| ! |1 4 6| d = cshift(c,2) ! c �������� �������� |3 1 2| �������� CYCLE�������� CYCLE ���������� ���������� ��������� �������� � ��������� DO loop. Syntax CYCLE [ do-construct-name ] ���: do-construct-name ���� ��� ���������� DO, ������� �������� �������� CYCLE. ���� do-construct-name �������, ���������, ��� do-construct-name ���������� � ������ ����������� ���������� DO, ����������� �������� CYCLE. ������ outer: do i=1, 10 inner: do j=1, 10 if (i>a) cycle outer if (j>b) cycle ! � ����� inner ... enddo inner enddo outer �������� DATA�������� DATA ������������ ��������� �������� ��� ����������. Syntax DATA data-stmt-set [ [ , ] data-stmt-set ] ... �����: data-stmt-set ���� object-list / value-list / object-list ���� ������ ����� ������� ���� ���������� ��� implied-dos. value-list ���� ������ ����� ������� [repeat *] data-constant. repeat ���� ����� ��������� ���� INTEGER. data-constant ���� ��������� ��������� (literal ��� �����������) ��� ����������� ���������. implied-do ���� (implied-do-object-list , implied-do-var = expr, expr[, expr]). implied-do-object-list ���� ������ ����� ������� ��������� �������, ��������� ��������� ��������� ��� implied-dos. implied-do-var ���� ��������� ���������� ���� INTEGER. expr ���� ��������� ��������� ���� INTEGER.���������
object-list ����������� � ������������������ ��������� ����������.
������,������� ��� �������� ����� � object-list, ������������ ������
������������������ ��� ��������� � ����������� �������. ������ �������
������������ ������������������ �� ��������� � ������� ��������� � ������.
implied-do ����������� � ������������������ ��������� ������� � ���������
��������� ��� ����������� implied-do-var, ��� � ���������� DO.
value-list �������������� � ������������������ ��������� ���������� ��������.
������ ����� �������� ������ ���� ����������, ������� ��� ���������� �����
��� ������� ��������� �������������� ���������� ��� ����-����������. repeat ����������, ������� ��� ��������� ��������� ������ ���� �������� � ������������������; ���������� repeat ����� ������ ���������� ���� ���.
����������� ������������������ ��������� ���������� � �������� ��������
��������� �� ������� ����������� ������������. ������ ���������� ����������
��������� �������� ��������������� ����������. ����� ����� �����������
������������������� ������ ���������. ������� ���������� ��� �� ����� �� �����
������������������ � ��������� ����� ������ ����.
����������, ��� ������� �������� � object-list, �� ������:
� �������� ������� ��� ��������� ���������� ���������, ������� ����� �
implied-do-object-list, ������ ������ ������ ���� ����������, � �������
���������� ������������ ���� ��� ���������� ��� implied-do-vars ����������
implied-dos, � ��� �������� ������ ���� �����������.
expr ������ �������� � �������� ��������� ������ ��������� ���
implied-do-vars ������������ implied-dos, � ��� �������� ������ ����
�����������. �������� �������� ������ ���� ���������� � ���������������� ��
����������� �� �������� ����������� ������������, ������� �������� ���������
�������� �� ��� �� �������� ����������� ������������. real :: a integer, dimension (-3:3) :: smallarray integer, dimension (10000) :: bigarray data a /3.78/, smallarray /7 * 1/ ! ����������� a �������� 3.78 � 1 ������� ! �������� � smallarray data (bigarray(i), i=1,10000,2) /5000*6/ ! ����������� 6 ������� �������� ! � �������� �������� ������������ DATE_AND_TIME���� � �������� real-time clock. Syntax DATE_AND_TIME (date, time, zone, values) �������������� ���������
date ������ ���� �������� ���� default CHARACTER � ������ ����� ����� ��
������� ���� ������, ����� �������� ������ ��������. ��� ������������ ���
INTENT (OUT) argument. �� ����� ����� ������ �������� ���������������
� �������� ���� cc������, ��� �� �������� ��������, �� -- ���� � ��������
�� -- ����� ���� � �� -- ���� ������. ���� ���� ����������, �������� �������.
time ������ ���� �������� ���� default CHARACTER � ������ ����� �����
�� ������� ���� ������, ����� �������� ������ ��������. ��� ���� ��������
INTENT (OUT). ��� ����� 10 �������� ��������������� � �������� ����
������.���, ��� �� ���� ���� ���, �� ���� ������, ��.��� �������� ������� �
������������. ���� ���� ����������, time ����������� ���������.
zone ������ ���� �������� ���� default CHARACTER � ����� ����� �� �������
���� ���� ��� ��������� ������� ��������. ��� ���� �������� INTENT (OUT).
��� ������� ��������������� �� ����� +-����, ��� �� � �� ���� ������� ��
������� �� ��������� Coordinated Universal Time (UTC, ��������� ����� ���
������� ����������� ����� ) � ����� � �������.
���� ���� ����������, ���� ������� ����������� ���������. ����� ���������������
���������� zone, ����� �������������� ���������� �������� � ����������
��������� TZ: TZ=ZZZ[+/-]d[d][LLL]����� ZZZ ���� �������������� �������, �������������� ��� ������� ��������� ����;
[+/-]d[d] ���� ��������� ����, ���������� ����� �� ����� ��� ���� ���� �
��������� ������, �������������� �������� ����� ��������� �������� � UTC �
����� (������������� ����� ������������� ����� � ������� �� UTC);
��������, "TZ=PST-8PDT" ������ �������������� �� �������� ��������� US �
������� ��� ����� ����, ����� ��������� ��������� �����, � "TZ=PST-8" �
��������� ����� ����. ���� ���������� ��������� TZ �� ����������� ���
����������� � �������� ��������, zone ����� ����������� ���������.
values ������ ����� ��� INTEGER �� ��������� � ���� 1. ��� �������� ����
INTENT (OUT). ��� ������ ������ ���� �� ������� ���� ������. ��������,
������������ � values, ������:
values (1) �������� ��� (��������, 1990) ��� -huge(0), ���� ���� ����������. ! ������� � Incline Village, NV on February 3, 1993 ! � ������ 10:41:04.1 integer :: dt(8) character (len=10) :: time, date, zone call date_and_time (date, time, zone, dt) ! date �������� �������� "19930203" ! time �������� �������� "104104.100" ! zone �������� �������� "-800" ! dt �������� �������� : 1993,2,3, ! -480,10,41,4,100. ������� DBLE������������ � ��� REAL ������� ��������. Syntax DBLE (a) �������� a ������ ����� ��� INTEGER, REAL ��� COMPLEX. ��������� ��������� ����� ��� REAL ������� ��������. ��� �������� ���� ������������� � ������� ��������� �������� a. ���� a ����� ��� COMPLEX, ��������� ������������ � ������� ��������� ��� ������������ �����. ������ double precision d d = dble (1) ! d �������� �������� 1.00000000000000 �������� DEALLOCATE
��������
���� �������������� STAT= ������������ � �������� DEALLOCATE �������
��������, stat-variable �������� �������� 0. ���� STAT= is ������������, �
�������� DEALLOCATE ��������� ������, stat-variable �������� ���������
����� ������������� ��������� �� ������. ���� ������ ��������� ���
���������� ��������� DEALLOCATE ��� STAT= specifier, �� ���������� ���������
������������.
���������� Deallocate ��� ������������ �������, �������� � ������ ������ �
������ ���, ��� ��� ���������, ������� �������������� ��� ���������� ��������
��� � ������, �������� � ������ � ��������� DEALLOCATE.
���� ��������� � ������ ������ ������������ � ����������� ��������, � ����
������ ��������� deallocat.
����������� ������������ ������� ��� ��������� � ��������� TARGET ��������
� ����, ��� ������ ���������� ������� ���������, ���������������� � ���,
���������� ��������������. deallocate (a, b, stat=s) ! �������� � ����������� a b ! ��� ������ ! s i�������� ��������� 0 ������� DIGITS���������� �������� �������� ����. Syntax DIGITS (x) �������� x ������ ����� ��� INTEGER ��� REAL. �� ����� ���� �������� ��� ��������. ��������� ����� ��� default INTEGER. ��� �������� ���� ���������� �������� �������� ���� � x. ������ real :: r integer :: i i = digits (r) ! i �������� �������� 24 ������� DIM
�������� z = dim(1.1, 0.8) ! z �������� �������� 0.3 z = dim(0.8, 1.1) ! z �������� �������� 0.0 �������� DIMENSION
�������� DIMENSION [ :: ] array-name (array-spec) [ , array-name (array-spec) ] ... �����: array-name ���� ��� �������. array-spec ���� explicit-shape-specs ��� assumed-shape-specs ��� deferred-shape-specs ��� assumed-size-spec. explicit-shape-specs ���� ������ ����� ������� ��������� [lower-bound : ] upper-bound, ������� ������������� ����� � ������� �������� ����� �����. assumed-shape-specs ���� ������ ����� ������� [lower-bound] : , ��� ������ � ����������� ���������������� ������������ ��������� ���������� ����� � ������� ������� �������������� �����. deferred-shape-specs ���� ������ ����� ������� ���������, ������� ��������� ���� ������� � ���������� ������. assumed-size-spec ���� [ explicit-shape-specs, ] [ lower-bound : ] * assumed-size-spec ��������� ����� ���������� ���������-�������, ������ �������� �������������� ��������� ������������ ���������-�������. lower-bound ���� ��������� INTEGER ���������, �������� �������� ����� ��������� ��� ����� � ����������� ������� � ������� ��������� ������ ������� ������� ��������� �������. upper-bound ���� ��������� INTEGER ���������, ������� ����� ��������� ��� ����� � ����������� ������� � ������� ��������� ������� ������� ������� ��������� �������.������ dimension a(3,2,1) ! a ���� ������ 3x2x1 dimension b(-3:3) ! b ���� 7-���������� ������ � ! ������ �������� -3 dimension c(:,:,:) ! c ���� ������ � �������������� ������ ��� ! ���������� ������ ! ����� 3 dimension d(*) ! d ���� ������ ��������������� ������� �������� DLL_EXPORT
�������� function half(x) implicit none integer :: half dll_export half half = x/2 return end function half �������� DLL_IMPORT
�������� program main implicit none integer :: foo, i dll_import foo i = half(i) stop end program main |
<<< | ���������� | ��������: 9 10 | >>> |