Copyright Digital Equipment Corp. All rights reserved.

IARGPTR

 IARGPTR ()

 Class:  Inquiry function - Specific

 Returns a pointer to the actual argument list for the current
 routine.  IARGPTR takes no arguments and returns an INTEGER*8
 address of the calling-standard defined "argument block".

 The first element in the array contains the argument count;
 subsequent elements contain the INTEGER(KIND=8) address of the
 actual arguments.

 Formal (dummy) arguments which can be omitted must be declared
 VOLATILE.

 The following example shows the IARGPTR intrinsic:

 C      Test IARGPTR intrinsic function.
        EXTERNAL TEST_ARGPTR
        INTEGER*4 X,Y,Z,FOO
        X = 10
        Y = 20
        Z = 100
        FOO = 4
  
        PRINT 80, %LOC(X), %LOC(Y), %LOC(Z), %LOC(FOO)
 80     FORMAT (' Argument addresses: ',4(1X, Z16))
        CALL TEST_ARGPTR (4, X, Y, Z, FOO)
        END

        OPTIONS /EXTEND_SOURCE
        SUBROUTINE TEST_ARGPTR (N_ARGS)
        POINTER (II, I_ARGN)
        INTEGER*8 I_ARGN
        POINTER (I_PTR, I_VAL)
        INTEGER I_VAL
               
        II = IARGPTR()             ! Get address of arg block
        II = II + SIZEOF (II)      ! Get address of address of first arg

        DO I = 1, N_ARGS+1
         I_PTR = I_ARGN            ! Get address of actual from homed
                                   !   arg list
         print 90, I, I_PTR, I_VAL
 90      format ( ' Argument ',I2, ' address = ',Z16, ', contents = ',Z16)
         II = II + SIZEOF (II)  ! Get address of address of next arg
        END DO
        RETURN
        END