OPS3781S ABEND X'000C3000' occurred at OPINBO at various OFFSETs
search cancel

OPS3781S ABEND X'000C3000' occurred at OPINBO at various OFFSETs


Article ID: 130384


Updated On:


OPS/MVS Event Management & Automation


Received this error message during OPSMVS startup after IPL and also after attempts to re-cycle OPSMVS:

OPS3781S ABEND X'000C3000' occurred at OPINBO+X'0000482C' - Browse checkpoint processing suspended      

Workaround:  OPSLOG2 was set to be the live log in option =4.13, log data started recording on OPSLOG2.

Subsequent attempts to inactivate OPSLOG1 resulted in:

 address OPSCTL OPSLOG failed. RC=153


How can the issue with OPSLOG1 be resolved?


OPS/MVS all releases


This abend occurs when the number of messages stored in an OPSLOG dataset reaches the maximum threshold of 2 GB (X'7FFFFFFF' or decimal 2147483647). The number of messages stored in OPSLOG can be checked by going to OPSVIEW option =4.1.1 and reviewing the BROWSECHECKNUM parameter which will show the current message count.

All messages written to the OPSLOG have a unique Message Number, which is incremented sequentially.   The OPSLOG is a linear VSAM dataset.   Once the message number reaches its maximum value, then the only option is recovery, as noted below.  In order to avoid this situation, Broadcom encourages implementing the OPS3445O message strategy so that the OPSLOG is switched to a secondary OPSLOG once the original reaches the 80% threshold.   The archive of the old OPSLOG will automatically take place when the switch occurs.  


When an OPSLOG dataset is allowed to exceed to 2 GB limit and stops recording, the only option available to resolve the issue requires shutting down OPS/MVS and reallocating the OPSLOG dataset having the problem. The steps necessary follow below.

1. Shut down OPS/MVS.

2. Delete the OPSLOG dataset in error.

3. Copy the following REXX exec to a member in an appropriate library and modify the fields in red to reflect the system smfid, dataset name and attributes associated with the OPSLOG in need of reallocation:

/* REXX */                                                             
/* Set the smfid of the system in which these data sets will be      */
/* allocated. Since these data sets must be unique per system, it    */
/* is recommended that the smfid be used as part of the data set     */
/* name.                                                             */
smfid = 'SYSA'                                                         
/* Set primary OPSLOG data set attributes.                           */
/*   OPSLOG_dsn       - Name of the primary OPSLOG. Default logic    */
/*                      will create dsn of 'SYS1.OPS.smfid.OPSLOG'   */
/*                      Set to '' if not utilizing.                  */
/*   OPSLOG_volser    - Volser where the primary OPSLOG should be    */
/*                      allocated.                                   */
/*   OPSLOG_cylinders - Number of primary cylinders to allocate for  */
/*                      the primary OPSLOG. Default logic requests   */
/*                      for '790' cylinders. The setting of the      */
/*                      BROWSEMAX operand of the OPSLOG DEFINE       */
/*                      statement within the OPSSPA00 start-up       */
/*                      member for the primary OPSLOG will need      */
/*                      altered if this value is modified.           */
OPSLOG_dsn     = 'SYS1.OPS.'smfid'.OPSLOG'   /* Data set name        */
OPSLOG_volser  = 'xxxxxx'                    /* Volser for OPSLOG    */
OPSLOG_cylinders  = '790'                    /* # of primary and...  */
                                             /* secondary cylinders  */
if OPSLOG_dsn <> '' then                                               
  address TSO                                                          
  "DEFINE CLUSTER ( NAME('"OPSLOG_dsn"')",                             
                    "LINEAR )",                         
                    "DATA ( NAME('"OPSLOG_dsn".DATA') )"
   say 'DEFINE of 'OPSLOG_dsn' executed. RC = 'rc       

4. Execute the REXX program in the TSO foreground via the EXECUTE command:

EXEC 'your.rexx.library(member_name)'

5. Ensure the return code is 0 upon execution. A clean, empty OPSLOG dataset has now been allocated and is ready for use.

6. Restart OPS/MVS and check that all is well in the "OPSLOG Definitions" panel, OPSVIEW option =4.13.


Next, to prevent OPSLOG from reaching the 2 GB limit going forward, please do the following:

1. Copy the message rule hlq.CCLXRULS(OPS3445O) to an appropriate ruleset and enable/auto-enable it.

2. Copy the member hlq.CCLXSAMP(OPS3445O) to an appropriate REXX library present in the STEPLIB concatenation of the OSF servers.

Carefully review all comments in each member for detailed instructions regarding implementation.

Within the comments, the purpose of these members is stated as follows:

Purpose    - Each event in the OPSLOG contains a message number
            that is incremented for each logged event. The  
            highest possible message number is slightly higher
            than 2 billion. The "live" OPSLOG must be     
            switched to a new OPSLOG to avoid an outage. This
            rule will fire on the early warning message of  
            this condition nearing, and perform a switch to a
            new (pre-allocated) "live" OPSLOG.              

Additional Information

There is a community post that covers questions regarding the OPS3445O message.