VMS Help  —  FORTRAN  Data  Arrays  Constructors
  An array constructor is a sequence of scalar values that is
  interpreted as a rank-one array.  The array element values are
  those specified in the sequence.  An array constructor takes the
  following form:

     (/ac-value-list/)

     ac-value-list  Is a list of one or more expressions
                    or implied-do loops. Each ac-value must
                    have the same type and kind type parameter.

  An implied-do loop in an array constructor takes the following
  form:

    (ac-value-expr, do-variable = expr1, expr2 [,expr3])

    ac-value-expr  Is a scalar expression evaluated for each
                   value of the d-variable to produce an array
                   element value.

    do-variable    Is the name of a scalar integer variable.
                   Its scope is that of the implied-do loop.

    expr           Is a scalar integer expression. The expr1
                   and expr2 specify a range of values for
                   the loop; expr3 specifies the stride.

  The array constructor has the same type as the ac-value-list
  expressions.

  If the sequence of values specified by the array constructor is
  empty (there are no expressions or the implied-do loop produces no
  values), the rank-one array has a size of zero.

  The ac-value specifies the following:

   o  If it is a scalar expression, its value specifies an element of
      the array constructor.

   o  If it is an array expression, the values of the elements of the
      expression, in array element order, specify the corresponding
      sequence of elements of the array constructor.

   o  If it is an implied-do loop, it is expanded to form an array
      constructor value sequence under the control of the DO
      variable, as in the DO construct.

  If every expression in an array constructor is a constant
  expression, the array constructor is a constant expression.

  If an implied-do loop is contained within another implied-do loop
  (nested), they cannot have the same DO variable (do-variable).

  There are three forms for an ac-value, as follows:

    C1 = (/4,8,7,6/)                  ! A scalar expression
    C2 = (/B(I, 1:5), B(I:J, 7:9)/)   ! An array expression
    C3 = (/(I, I=1, 4)/)              ! An implied-do loop

  You can also mix these forms, for example:

    C4 = (/4, A(1:5), (I, I=1, 4), 7/)

  To define arrays of more than one dimension, use the RESHAPE
  intrinsic function.

  The following are alternative forms for array constructors:

   o  Square brackets (instead of parentheses and slashes) to enclose
      array constructors; for example, the following two array
      constructors are equivalent:

        INTEGER C(4)
        C = (/4,8,7,6/)
        C = [4,8,7,6]

   o  A colon-separated triplet (instead of an implied-do loop) to
      specify a range of values and a stride; for example, the
      following two array constructors are equivalent:

        INTEGER D(3)
        D = (/1:5:2/)              ! Triplet form
        D = (/(I, I=1, 5, 2)/)     ! Implied-do loop form

  The following example shows an array constructor using an
  implied-do loop:

    INTEGER ARRAY_C(10)
    ARRAY_C = (/(I, I=30, 48, 2)/)

  The values of ARRAYC are the even numbers 30 through 48.

  The following example shows an array constructor of derived type
  that uses a structure constructor:

    TYPE EMPLOYEE
      INTEGER ID
      CHARACTER(LEN=30) NAME
    END TYPE EMPLOYEE

    TYPE(EMPLOYEE) CC_4T(4)
    CC_4T = (/EMPLOYEE(2732,"JONES"), EMPLOYEE(0217,"LEE"),     &
              EMPLOYEE(1889,"RYAN"), EMPLOYEE(4339,"EMERSON")/)

  The following example shows how the RESHAPE intrinsic function is
  used to create a multidimensional array:

    E = (/2.3, 4.7, 6.6/)
    D = RESHAPE(SOURCE = (/3.5,(/2.0,1.0/),E/), SHAPE = (/2,3/))

  D is a rank-two array with shape (2,3) containing the following
  elements:

    3.5   1.0   4.7
    2.0   2.3   6.6
Close Help