HP OpenVMS Systems

ask the wizard
Content starts here

Bit Masks vs Integers?

» close window

The Question is:

Where can I find the integer values for the return value
from a f$getqui("display_queue","queue_status","queue_name")
I found the list items you can use in both the lexical and
system service sections of the documentation but neither
listed the values.
I want to be able to make the one call and compare the
value instead of multiple calls and a long list of boolean

The Answer is :

  QUI$_QUEUE_STATUS returns a longword bitmask, not an integer value.
  From zero to (potentially) 32 status code bits can be set in this mask
  when the call returns.  Based on the length of the longword and the
  potential for any combination of bits to be set, the possible range
  of integers that could (potentially) be returned by this itemcode
  includes all values from 0 to %x0FFFFFFFF.  (The Wizard would expect
  that requiring up to 32 seperate bit masking operations to determine
  which of the possible statuses are present would usually be preferable,
  and would be rather easier to code, than a case table with up to four
  billion integer entries.)
  In the recent/current OpenVMS system service documentation for the
  sys$getqui[w] itemcode QUI$_QUEUE_STATUS, a table is present that lists
  the symbolic bit values -- this table also describes what each bit in
  the bitmask means.
  When working with OpenVMS bit definition symbols, realize that there
  are both "V" bit offsets and "M" bit mask values.  For instance, if
  the bit offset symbol FOO$V_MUMBLE has the value 3, then the associated
  FOO$M_MUMBLE will have the bitmask value 8.
  Existing discussions of the f$getqui lexical include the following
  topics: (813), (1240), (2159), (3951), (4546), (4568), (4903), (5188)
  (5471), (5567), (5651), (5793), (5982), (6315), (6877), etc.

answer written or last revised on ( 15-AUG-2001 )

» close window