���������� ����������� �� ����� Fortran 95

������� ������� �. �.

����������

����� 2.���������� ����������

������� COSH

� ������ ��������

��������
��������������� cosine.
Syntax
COSH (x)
��������
x ������ ����� ��� REAL.
���������
��������� ����� ��� �� ��� � �������������, ��� � x. ��� �������� ���� ������������� ���� REAL ���������������� �������� x.
������
r = cosh(.5) ! r �������� �������� 1.12763

������� COUNT

� ������ ��������

��������
������� ���������� ��������� true � ����� ����� ���������� ���������.
Syntax
COUNT (mask, dim)
������������ �������
mask ������ ����� ��� LOGICAL. ��� �� ����� ���� ��������.
�������������� ��������
dim ������ ���� �������� ���� INTEGER � �������� 1 <= dim <= n , ��� n ���� ���� mask. ��������������� ����������� �������� �� ����� ���� �������������� ��������� ����������.
���������
��������� ���� ��� INTEGER �� ���������. ��� �������� � ���� ����������� ��������� �������:

  1. ���� dim ����������� ��� mask ����� ���� 1, ��������� ���� ������. ��� �������� ���� ���������� ���������, ��� ������� mask ���� true.
  2. ���� dim ������������ ��� mask ����� ���� ������ 1, �� ��������� ���� ������ ����� n-1 ����� (d1, d2, ..., ddim-1, ddim+1, ..., dn), ��� (d1, d2, ..., dn) ���� ����� mask, � n ���� ���� mask. ��������� ���� ���������� ��������� true ��� ������� ���������������� ������� � mask.
������
        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

� ������ ��������

��������
����� ����������.
Syntax
CPU_TIME (time)
��������
time ������ ���� �������� ���� REAL. ��� ���� �������� INTENT (OUT), ������� �������� �������� ������� ���������� � ��������.
�������, ��� CPU_TIME �������� ����������� ����� ���������� ������ �����, ����� ���������� ��������� �������������� ��� Windows � ����������� �� NT ��� ����� ��� �������������� ��� Linux � ����������� ��� Linux. � ��������� ������� CPU_TIME ����� ���� ��� SYSTEM_CLOCK.

������� 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.

���� array ����� ���� 2 ��� ������, ������ ������ ������ ����� ��������� dim ���������� ���������� �� shift ���������. shift ����� ����� �������� ������.
������
                          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, �� ������:
���� ��������� ����������, ��������� ��������� ����������� ���������� ��� ����-����������;
������� � ���� common, ���� �������� DATA �� ������ � ����������� ������� ���� ������ ;
������� � ���������� common block;
���� ������ ������� ��� ���������� �������;
���� ������������� ��������, ����������, ����������� ��������.

� �������� ������� ��� ��������� ���������� ���������, ������� ����� � 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);
� [LLL]���� �������������� �������������� ����, �������������� ������� ��������� ����� (daylight savings time). ���� [LLL] ������������, �� 1 ����������� � [+/-]d[d]. ZZZ � LLL (���� ����) ����������� � ������� ���������.

��������, "TZ=PST-8PDT" ������ �������������� �� �������� ��������� US � ������� ��� ����� ����, ����� ��������� ��������� �����, � "TZ=PST-8" � ��������� ����� ����. ���� ���������� ��������� TZ �� ����������� ��� ����������� � �������� ��������, zone ����� ����������� ���������.

values ������ ����� ��� INTEGER �� ��������� � ���� 1. ��� �������� ���� INTENT (OUT). ��� ������ ������ ���� �� ������� ���� ������. ��������, ������������ � values, ������:

values (1) �������� ��� (��������, 1990) ��� -huge(0), ���� ���� ����������.
values (2) �������� ����� ���� ��� -huge(0), ���� ���� ����������.
values (3) �������� ���� ������ ��� -huge(0), ���� ���� ����������.
values (4) �������� �������� �� ��������� � Coordinated Universal Time (UTC) � ������� ��� -huge(0), ���� ��� ���������� ����������.
values (5) �������� ����� ��� � ��������� �� 0 �� 23 ��� -huge(0), ���� ����� ���.
values (6) �������� ������ ���� � ��������� �� 0 �� 59 ��� -huge(0), ���� ����� ���.
values (7) �������� ������� ������ � ��������� �� 0 �� 60 ��� -huge(0).
values (8) �������� ������������, ���������� �� ������� ��� -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

� ������ ��������

��������
�������� DEALLOCATE ����������� ������, ������� ������������ ��������� � ������������ ���������� � ������������� ���������.
Syntax
DEALLOCATE ( object-list [, STAT = stat-variable ] )
�����:
object-list ���� ������ ����� ������� ���������� ��� ����������� ��������. stat-variable ���� ��������� ���������� ���� INTEGER.
���������

���� �������������� 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

� ������ ��������

��������
�������� ����� ����� �������, ���� �������� ������������; ���� � ��������� ������.
Syntax
DIM (x, y)
���������
x ������ ���� ���� INTEGER ��� REAL.
y ������ ���� ���� �� ���� � �������������, ��� � x.
���������
��������� ����� ��� �� ���, ��� � x. ��� �������� ���� x - y, ���� x ������ ��� y, � 0 � ��������� ������.
������

                           z = dim(1.1, 0.8) ! z �������� ��������  0.3
                           z = dim(0.8, 1.1) ! z �������� ��������  0.0

�������� DIMENSION

� ������ ��������

��������
�������� DIMENSION ���������� ����� �������.
Syntax

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

� ������ ��������

��������
�������� DLL_EXPORT ���������, ����� ��������� ������ ���� ���������� � ������������ ����������.
Syntax
DLLEXPORT dll-export-names
���:
dll-export-names ���� ������ ��������, ������������ � ������� ������� ���������.
���������
���������, ��������� � dll-export-names, �� ������ ���� ���������� �����������.
������

                function half(x)
                  implicit none
                  integer :: half
                  dll_export half
                  half = x/2
                  return
                end function half

�������� DLL_IMPORT

� ������ ��������

��������
�������� DLL_IMPORT ���������, ����� ��������� ������ ���� ������������� �� ������������ ����������.
Syntax
DLL_IMPORT dll-import-names
���:
dll-import-names ���� ������ ����� ������� ���� ��������.
������

                           program main
                             implicit none
                             integer :: foo, i
                             dll_import foo
                             i = half(i)
                             stop
                           end program main


<<< ���������� ��������:  9   10 >>>