^XTRNL

Provides the value of a link-time symbol

 

 

 

VSupported on OpenVMS
^XTRNL(symbol)

Arguments

symbol

A symbol that represents a 32-bit value to be resolved at link time. (D_ADDR)

Discussion

^XTRNL provides the value of a link-time global symbol. The resulting value is resolved and built into the code as a literal at link time.

If ^XTRNL is used to pass a value to a subroutine, it passes the value of the symbol by value as follows:

^VAL(value)

^XTRNL is primarily used to pass arguments to system routines.

Examples

The example below returns the username of the current OpenVMS process.

function get_username
record
    usrnam              ,a15
    usrnamlen           ,i2
    d_usrnamlen         ,d2
record itmlst
    buflen              ,i2     ,^size(usrnam)
    itmcod              ,i2
    bufadr              ,i4
    retlen              ,i4
    terminator          ,i4     ,0
proc
    itmcod = ^xtrnl(JPI$_USERNAME)
    bufadr = ^addr(usrnam)
    retlen = ^addr(usrnamlen)
    clear usrnam
    xcall sys$getjpiw( , , , %ref(itmlst), , , )
    freturn(%atrm(usrnam))
endfunction

See %FSTAT Examples for another example of ^XTRNL.