Review the following examples for a better understanding of OPSVALUE:
enqsys = OPSINFO('MSFID'); vrc=0 /* Get our sysid */
enqnew = 'HELD BY' userid 'ON' enqsys /* New value for enqueue */
if sysid <> '' then do /* Remote resource? */
Address 'OPSCTL' "MSF DEFAULT SYSTEM("sysid")" /* Xsys request*/
enqsys = sysid /* Sysid for variable name */
end
enqvar = 'GLVTEMP0.ENQ.'enqsys'.'resource /* ENQ variable name */
do i=1 to 100 while vrc=0 /* Try 100 times or works */
enqold = OPSVALUE(enqvar,'V') /* Get current ENQ value */
if enqold = '' | enqold = enqvar then /* If ENQ is free */
vrc = OPSVALUE(enqvar,'C',enqnew,enqold) /* Grab ENQ */
else
rc = OPSWAIT(1) /* Wait a little and retry */
end
if sysid <> '' then /* Reset Xsys environment */
Address 'OPSCTL' "MSF DEFAULT SYSTEM(*)"
if vrc = 0 then /* Test ENQ obtained */
say 'Enqueue of' enqsys'.'resource 'failed. enqold /* Failure */
else
deqlist = deqlist enqvar /* Save var name for DEQ */
xrc = OPSCLEDQ() /* Clear EDQ */
vcnt = OPSVALUE('GLOBALA.TEST.','T') /* Get data on subnodes */
do i=1 to vcnt while QUEUED() > 0 /* Loop thru subnode data */
pull varname /* First record is name */
pull vardata /* Second is data record */
if WORD(vardata,12) = 'NONE' then /* Real old variable */
vardate = 19900101 /* Set to ancient date */
else /* Get data as yyyymmdd */
vardate = SPACE(TRANSLATE(WORD(vardata,12),' ','/'),0)
if DATE('B') - DATE('B',vardate,'S') > 365 then /* Not used? */
rcnt = OPSVALUE(varname,'R') /* Delete var + subnodes */
end
val = OPSVALUE('GLOBALA.TEST.','D') /* Delete all subnodes */
sec = OPSVALUE('GLOBAL.READWRITE','H') /* Request update auth */
if sec <> 'AUTH' then
sec = OPSVALUE('GLOBAL.READONLY','H') /* Try read only auth */
| Copyright © 2011 CA. All rights reserved. | Tell Technical Publications how we can improve this information |