^ARGDIM

Return the dimension number of an argument

WSupported on Windows
USupported on Unix
VSupported on OpenVMS
NSupported in Synergy .NET
dim_num = ^ARGDIM(position, dim_index)

Return value

dim_num

The number of the specified dimension. (n)

Arguments

position

The ordinal position of the argument. (n)

dim_index

The index of the dimension to access. (n)

Discussion

If position specifies a nonexistent argument, an “Argument missing” error ($ERR_ARGMIS) is generated.

If position specifies an argument outside of the passed range, an “Incorrect number of subroutine arguments” error ($ERR_WROARG) is generated.

If dim_index specifies an invalid dimension index, an “Invalid number of dimensions” error ($ERR_INVDIM) is generated.

If the specified argument is not dimensioned, the only valid dim_index value is 1, and the return value will also be 1.

Examples

record
    val         ,[3,4,5]a2
    val2        ,a5
proc
    xcall sub(val, , val2)
end
subroutine sub
    arg         ,[*,*,*]a
    arg2        ,a
    arg3        ,a
record
    num,    i4
proc
    num = ^argdim(%argnum(arg), 1)              ;Returns 3
    num = ^argdim(%argnum(arg), 2)              ;Returns 4
    num = ^argdim(%argnum(arg), 3)              ;Returns 5
    num = ^argdim(3, 1)                         ;Returns 1
    num = ^argdim(2, 4)                         ;Error ARGMIS (#2 not passed)
    num = ^argdim(4, 4)                         ;Error WROARG (#4 beyond end)
    num = ^argdim(%argnum(arg), 7)              ;Error INVDIM (No dimension #7)
    xreturn
endsubroutine