Description of SETVMDBK

Download count: 4 this month, 5049 altogether.
Downloads for SETVMDBK:
  VMARC archive: v-29K

From Kris Buelens, IBM Belgium

Original Author: Chuck Meyer, Chuck Meyer Systems, Inc.

Changes in V1.2.b by Kris Buelens, Dec 2002

  • Add DIAG88 as new settable VMDBK flag.
Changes in V1.2.a by Kris Buelens, Oct 2002
  • Avoid REXX abends in DH and QVTOD EXEC when real storage address becomes greater than 950 MB
  • QVTOD tells you where to find RXTOD when it is not found instead of simply abending.
Changes in V1.2 by Kris Buelens, Oct 2002
  • Support z/VM in QVTOD EXEC and DH EXEC (CPUID displayed in header was wrong).
  • Support EPOCH in SETVMDBK under z/VM
Changes by Kris Buelens, Sep 2002
  • Support z/VM
  • Add QUERY function
  • Correct bug: when you asked for LNKEXCLV the LNKSTABL bit was set
  • Options that never worked are commented (gives EMSG iso NOP)
Changes by Kris Buelens, 2006, 2007
  • 1 Sep 2006: Support z/VM 5.2.0
  • 24 Apr 2007: Improve CONCOPY support; add DATAMOVER and LIBCTL
  • 29 May 2007: Check if string follows = sign for e.g. DISTRIB/PRIVCL Example: SETVMDBK EREP DIST=TEST
  • 29 May 2007: Avoid NOVALUE when setting a STRING (e.g. DISTRIB)


Unless the QUERY modifier is used, SETVMDBK alters data in the VMDBK of a specified, logged-on, user.

Many of CP's directory options (such as DEVINFO, MAINTCCW, TODENABLE, etc.) require the user to LOGOF and LOGON, before the option takes effect. Now you may turn many of these options ON and OFF dynamically, while the user is logged-on, without even requiring any modification to the user's directory entry.

SETVMDBK allows a class-C user to alter a VMDBK (the VM block) of any currently logged-on user. If VSE1 needs MAINTCCW set ON (perhaps so that it can run DSF), just have any Class-C user issue "SETVMDBK VSE1 MAINTCCW", and the job is done. Would you like to set VSE2's LNKNOPAS to OFF? Enter "SETVMDBK VSE2 \LNKNOPAS". You may turn OFF any option, by prefacing it with any commonly-used not-sign ("^", "\", "~").

Some OPTION information (such as SPOOLMAX, V=R, etc.) is either not kept in the VMDBK, or only takes effect at LOGON time; so these options can not be altered by this program.

This program also operates as a REXX function-call, but then it operates only on its own VMDBK. When invoked this way, data is returned which can be used to restore the option back to its original value. So an EXEC that has to run DSF on any class-C userid, may use the following to guarantee execution -

         sav1 = SETVMDBK('MAINTCCW')   /* set my MAINTCCW to ON     */
         'ICKDSF ..."
         Call   SETVMDBK  sav1         /* restore MAINTCCW as found */
Whether invoked as a COMMAND or as a FUNCTION, these are always true -
  • Each execution alters only one VBDBK;
  • Any number of options may be turned ON and/or OFF on one execution;
  • Abbreviations are allowed, to the minimum length needed for uniqueness;
  • Some options allow for many characters or bytes to be altered -- this is done by specifying a keyword, an equal sign, and the desired value (ala Assembler keyword macros).
So the following command will alter 4 of PHRED's options -
     1. Link-Exclusive is set OFF
     2. Link-Stable    is set ON
     3. PrivClass      is promoted to KVS
     4. Device-Info    is set ON
The following command queries some of PHRED's options -
     1. Link-Exclusive
     2. Link-Stable
     3. Distribution code
PrivClas alterations are done REGARDLESS of the "SET_PRIVCLASS" option defined in the SYSTEM.CONFIG.

SETVMDBK has no external requirements, just class-C at execution time.

Two other (somewhat related, but otherwise independent) programs are also provided (also requiring only class-C privileges to execute).

provides full-screen-display of HostStorage ("D H" command), with a lot of shortcut options. Some possible options are -
         "DH 1000 200"       shows same storage as "CP D HT1000 200"
         "DH PHRED VDEV 191" shows PHRED's VDEV-block for 191
         "DH RDEV 220"       shows the RDEV-block for device 0220
displays the TOD clock of any logged-on user. This is mainly to inquire about guests who have altered their TOD clock by either -
  1. 1. issuing a "CP SET VTOD" command
  2. 2. using the guest OpSys to set a new TOD value
  3. 3. specifying "TOD=xxx" or "EPOCH=yyy" on a SETVMDBK command