System-level Special Attributes By Tym Stegner
Introducing the Special Attributes In the November 2009 article, we examined the system defined system-level attributes: $ID, $NREC, and $RECNO. In this article, we’ll go on to the other system-level attributes available to the dataset designer, the special attributes. The special attributes are system updated attributes that track user names, record numbers, or dates. You can adjust the date/time granularity by applying a date/time precision quality.
Tracking with the Special Attributes The user or dataset designer need only include named attributes having the following data types to store such information. These data are automatically updated by System 1032 itself when you or an application issue the updating command. The special attributes data types available are:
The Integer OF Identification (IOI, or IntofID) attribute is similar to the $ID system attribute, but with an additional capability. The $ID value of a record is renumbered when records are deleted or their sort order is changed by a dataset rebuilding operation, because the value of $ID is based on the physical order of the data records stored in the dataset. However, although an IOI attribute is also incremented automatically as $ID is, you can preserve its values across a dataset rebuild by including the IOI attribute in the RD used to dump and load the dataset in question. It is also possible to seed an IOI value to specify a particular magnitude of automatically updated numbers.
Using Special Attributes You can use these special attributes as you would use any other date/time or text attribute, with the limitation that the user cannot change their values nor add data directly into those attributes. For example:
<1032> Create Dataset TTYM2 1032 Data Definition Language DDL> Atr ABC Integer DDL_ Atr DOE Date of Entry DDL_ Atr DOC Date of Change DDL_ End 1032> Add To TTYM2 Only ABC 11 Record ID 1 Added To Dataset TTYM2 1032> Print All ABC DOE DOC ----------- ---------- ---------- 11 12/10/2009 ?????????? 1032> 1032> Change DOC '12/31/2009' %S1032-E-NOSYSITEMS, cannot change system attribute Line causing error "change doc '12/31/2009'" 1032> 1032> Change ABC 22 1 TTYM2 record changed 1032> Print All ABC DOE DOC ----------- ---------- ---------- 22 12/10/2009 12/10/2009 1032>
Another special attributes example As previously described, the major use of special attribute data types is tracking information about when and who updated records. The following example looks at one year’s worth of dinner review reports submitted. The requisite attributes are as follows:
Attribute SUBMITTED_BY orhome loa loan mortgage refinance SB User of Entry Keyed Attribute DATE_ENTERED or DE Date of Entry Keyed Attribute USER_CHANGED or UC User of Change
We will first use DATE_ENTERED to locate the records of interest, then create two reports: the first, a breakdown of who submitted the dinner review for the time period; the second, who last updated or closed the review.
1032> find DE betw 1/1/2000 and 1/1/2001 111 SUSHI records found 1032> print $count by $year(DE) by SB Who Entered Dining Bites ----------- 2000 BHEDBERG 2 DVSTONE 1 FFRIE 4 JREGA 2 NDIET 5 SMEAD 2 TSTEG 95 1032> print $count by $year(DE) by UC User Changed --------- 2000 BHEDBERG 8 DVSTONE 1 FFRIE 56 JREGA 1 NDIET 4 SMEAD 8 TSTEG 33
$COUNT provides an automatic record count of the number of records within a sort group. Thus, with no other attribute or data involvement, we can use these special attributes to see the top dining review submitters and updaters for the year 2000.
In Summary This article reviews the system updated special attribute data types. Using these attributes can add value to your datasets by automatically recording who updated what records and when. Also, by specifying which special attribute is used, you can keep an eye on which sort of action took place. Most sites use one or more of these attributes for tracking purposes. Another use might include providing hooks for record level security.
Model 204 USE OF AND ACCESS TO PRODUCTS AND FEATURES ARE IN ACCORDANCE WITH THE TERMS AND CONDITIONS OF THE USERS SOFTWARE LICENSE. THE PRESENTATION OF MATERIAL HEREIN DOES NOT, IN ANY MANNER, MODIFY SUCH TERMS AND CONDITIONS.
Clearing CRAM XDM Subsystem Control Blocks with CRAMCLR By Mark LaRocca
The M204XDM job is the cross region data mover that provides services to all Model 204 Onlines and BATCH2 jobs that use the XDM version of CRAM.
Every now and then an operator may cancel the M204XDM job. Although CCA recommends that the M204XDM job be flagged as non-swappable and non-cancelable, an operator may override this and XDM does not terminate gracefully. When this situation arises, resubmitting the CRAM XDM job will probably result in the following error:
This happens because CRAM XDM is installed using an z/OS subsystem name. For purposes of our example, lets call it CR01. Normally, the M204XDM job waits on a reply and the operator can respond EOJ or EOJ,FORCE to bring down the job gracefully. When the job is simply canceled, XDM cannot cleanup control blocks in storage for its z/OS subsystem name. Of course, this means that when the job is brought back up, CRAM XDM believes that this subsystem name is in use. What to do? There are three options:
Note that if a spare subsystem name is not available, you may need to add the new subsystem name to the operating system via the member IEFSSNxx in SYS1.PARMLIB. This may also require an IPL for the operating system to pick up the new SSN. Check with your systems programmer to see if an IPL is necessary.
Obtaining CRAMCLR In this article, I demonstrate how to use CRAMCLR to clear the CRAM subsystem and recover from such a scenario. But first, let me provide the installation instructions.
Why the special zap restriction? This is a simple precaution to protect our customers from accidentally running this job and clearing subsystem storage. Imagine an active M204XDM job handling multiple Onlines suddenly losing its stored information. Obviously, this is not a good thing. So, I remind you to take care when running CRAMCLR.
Using CRAMCLR Now, on to my main point: how do you use CRAMCLR? Basically, there are two scenarios for which you may need CRAMCLR JCL.
Scenario 1 The M204XDM job is down and fails to come up after issuing the M204XDM.007 message. In this scenario, you must clear the CRAM subsystem name storage. Our example uses subsystem CR01.
Run the following CRAMCLR JCL
//JOBLIB DD DSN=CRAM.AUTH.LOADLIB,DISP=SHR //XDMNC EXEC PGM=CRAMCLR,PARM=’CR01’ //SYSPRINT DD SYSOUT=A /*
If there are Onlines or other jobs using this subsystem name, this job will end without clearing the subsystem storage, and display informational messages indicating that other users may still be attached to this M204XDM job. After confirming that this subsystem name is correct, you can force it to clear as follows:
//JOBLIB DD DSN=CRAM.AUTH.LOADLIB,DISP=SHR //XDMNC EXEC PGM=CRAMCLR,PARM=’CR01=FORCE’ //SYSPRINT DD SYSOUT=A /*
Please take care that the name, CR01, is correct.
After successfully running CRAMCLR, bring up the M204XDM job.
Scenario 2 A CRAM batch job, such as BATCH2, ends with the M204XDM.007 message.
This might have been caused by an Online terminating abnormally as its CRAM XDM channels were not cleared properly.
Or, if it comes up successfully, a batch job using one of its CRAM channels may encounter the M204XDM.007 message. In this case, the CRAM XDM region is up and running, the Onlines connected to this XDM region are fine, and it is only the CRAM XDM channel that needs to be cleared.
For BATCH2 this channel is identified in the BATCH2 JCL on the EXEC card by PARM=’criochannelname’, and in the Online CCAIN as CRIOCHNL=criochannelname.
For our example, let’s use PSMLCRIO as the CRAM channel name. Below is the JCL to clear any particular CRAM XDM channel.
//JOBLIB DD DSN=CRAM.AUTH.LOADLIB,DISP=SHR //XDMNC EXEC PGM=CRAMCLR,PARM=’CR01,PSMLCRIO’ //SYSPRINT DD SYSOUT=A /*
After executing this JCL, re-run the batch job. Running the CRAMCLR JCL easily clears Scenario 2.
CRAM XDM should not encounter this problem, since the M204XDM job is meant to run 24/7 and should never be brought down at all. Furthermore, if you need to bring it down, simply do so in a graceful manner: reply EOJ to the region’s outstanding reply.
In Summary I hope that this information has cleared up (pun intended) any questions about clearing CRAM XDM subsystem names with the CRAMCLR utility.
Copyright © 2009 Computer Corporation of America. All right reserved. Published in the United States of America.