-------------------- Expanded MTAB Access -------------------- The modifier structure (MTAB) used by the device- and unit-specific SET and SHOW commands provides a simple and elegant method of manipulating the 16 bits of the user portion of the UNIT flags field -- the regular MTAB. For other modifier targets or to modify numeric value fields, the extended MTAB mechanism offers complete flexibility, albeit at the cost of the simplicity of regular MTABs. The main cost is that extended MTABs require the use of validation and print routines. Often those routines are trivial, doing nothing more than setting or clearing a flag in the DEVICE flags field, or printing a word if the flag bit is set. If the extended SET takes a numeric value parameter, then the validation routine must parse the parameter, validate against any minimum and maximum value restrictions, mask the target, and insert the new value. If several fields are to be set, then several validation and print routines must be written, each of which is only slightly different than the others. The extra work to use extended MTABs to manipulate DEVICE flags creates the temptation to use a UNIT flag for an option that is logically part of the device (e.g., a strap on the controller card) rather than part of the connected peripheral (e.g., a strap on the drive). For devices with single units, distinguishing between the device and the unit is usually not needed. For devices with multiple units, though, this blurs the distinction between them, potentially creating confusion for the user when issuing SET or SHOW commands ("Do I specify the device name or the unit name?"). It would be helpful to have a mechanism that combines the ease of use of regular MTABs with the flexibility of extended MTABs. This is a proposal for such a mechanism -- the expanded MTAB. The goal is to eliminate the need for validation and print routines in the majority of cases, or, if elimination is not possible, then to reduce the code in such routines to just the unique processing required. Expanded MTABs work with SET/SHOW and SET/SHOW commands to modify: - The user portion of the "flags" field of the DEVICE or UNIT structure. - Any portion of a user field (e.g., "u4") of the UNIT structure (or of the DEVICE structure, should one be added in the future). For units, the field designated in unit 0 identifies the field that will be modified when another unit is specified (e.g., a command specifying unit 3 modifies the indicated field in the fourth UNIT in the units array). - Any portion of a global "uint32" scalar variable for a device command or a global "uint32" array element corresponding to the unit number for a unit command. The modifications may apply to: - A flag or set of flags indicated by a "SET