The Force Object Storage command forces an object to non-volatile
storage. Only the object types *USRIDX, *USRQ, and *USRSPC may be
specified and the object must be in the *USER domain. Without
forcing the object to non-volatile storage (disk), a system failure
could cause the object on disk to contain the value prior to your
change.
A typical command would be:
FRCOBJSTG OBJ(xxx) OBJTYPE(*USRSPC)
When an object is changed by the system, the system normally
schedules the writing of the changed pages to disk storage. While
the actually writing to disk normally occurs very quickly, the
changed pages are not on disk immediately after you complete a change
operation.
Some object types provide a FORCE parameter on the create command
(see CRTDTAQ or CRTMSGQ) to ensure that any changes will be
immediately forced to non-volatile storage. The CRTPF FRCRATIO(1)
function is a similar option.
The APIs used to create *USRIDX, *USRQ, and *USRSPC objects do not
provide a 'force' parameter. The FRCOBJSTG command may be used after
making a change to one of these object types to ensure that the
changed pages are written immediately to non-volatile storage.
Domains
-------
When an object is created, it is placed in either the *SYSTEM or
*USER domain. Typical object types such as *FILE, *DTAARA, *CMD, etc
are always placed in the *SYSTEM domain.
At Level 40 Security, the system ensures that objects in the *SYSTEM
domain may only be accessed using system interfaces such as data
management. This prevents improper access or change.
User *PGM objects are placed in the *USER domain to allow them to be
called (CALL command). System *PGM objects will be in the *USER
domain if they may be called directly such as API programs. Internal
system programs such as the CPP for CRTUSRPRF are in the *SYSTEM
domain to prevent them from being called directly by the CALL
command. The CPP for CRTUSRPRF may only be used by invoking the
CRTUSRPRF command.
You can see the domain of an object by using DSPOBJD or the TAA Tool
DSPOBJD2.
An object type such as a *USRSPC is normally placed in the *USER
domain to allow access using a pointer. The QALWUSRDMN system value
and the DOMAIN parameter on the QUSCRTUS API determine which domain
will be used for a *USRSPC.
FRCOBJSTG escape messages you can monitor for
---------------------------------------------
TAA9891 Unsupported object type
TAA9892 Unable to find the object
TAA9893 Object is in the system domain
TAA9894 Could not force the object. See job log.
Escape messages from based on functions will be re-sent.
Command parameters *CMD
------------------
OBJ The qualified name of the object to be forced. The
library value defaults to *LIBL.
OBJTYPE The type of object to be forced. Only *USRIDX,
*USRQ, or *USRSPC objects may be specified.
Restrictions
------------
Only *USRIDX, *USRQ, or *USRSPC objects may be specified and the
object must exist in the *USER domain.
Prerequisites
-------------
The following TAA Tools must be on your system:
RTVOBJD2 Retrieve object description 2
SNDESCMSG Send escape message
Implementation
--------------
None, the tool is ready to use.
Objects used by the tool
------------------------
Object Type Attribute Src member Src file
------ ---- --------- ---------- ----------
FRCOBJSTG *CMD TAAOBJM QATTCMD
TAAOBJMR *PGM RPGLE TAAOBJMR QATTRPG
|