HP OpenVMS Systems

ask the wizard
Content starts here

Locating $UCBDEF Definitions?

» close window

The Question is:

I would like to use the $GETDVI system service, using the DVI$_STS item code to
 return a device unit status as a 4-byte bit vector.  Each bit in the vector
 supposedly corresponds to a symbolic name defined by the $UCBDEF macro.
 However, the $UCBDEF state
ment in my Macro-32 program is an "unrecognized statement".  Do you know what
 my problem is?  Are the symbolic names, like UCB$V_POWER defined somewhere else?
Thank you.

The Answer is :

    By default MACRO-32 programs will search SYS$SHARE:STARLET.MLB for
    macro definitions. The $UCBDEF macro however, is defined in
    SYS$SHARE:LIB.MLB which is not searched by default. You can specify
    libraries to be searched on the command line with the /LIBRARY
    qualifier, for example:
    or in the code itself with the .LIBRARY directive:
    	.TITLE MyProgram
    The decision as to which macros are stored in which library is somewhat
    arbitrary. The general principle is that STARLET.MLB will contain the
    most frequently accessed macros used by user mode programmers. LIB.MLB
    contains macros related to operating system internals, device drivers,
    inner mode, machine dependent and privileged code. Use the LIBRARY/LIST
    command to search for macros. For example:
    Directory of MACRO library SYS$COMMON:[SYSLIB]LIB.MLB;2 on  1-APR-2000 21:37:51
    Creation date:  23-NOV-1999 13:04:15      Creator:  Librarian A09-22
    Revision date:  23-NOV-1999 13:04:17      Library format:   3.0
    Number of modules:   1011                 Max. key length:  31
    Other entries:          0                 Preallocated index blocks:   173
    Recoverable deleted blocks:      0        Total index blocks used:      55
    Max. Number history records:      20      Library history records:       0

answer written or last revised on ( 1-APR-2000 )

» close window