Hi,
An update from IBM:
I found the caller of SMS was IDCAMS module IDCSA11 +x'24D4' base z/OS
1.7. The data shows they passed in a unit of all zeros in the control
block known as the ACERO. I verified that your ALLOCxx and your SMS base
configuration had a default unit so I would think
Dean,
Do your ACS routines allow for user specification of Data,Mngt, or Stor
classes?
Look for something similiar to this in your routines,
WHEN (DATACLAS EQ DATA_CLASS
UNIT EQ DASD_UNIT) /* ALLOW USERS TO SPECIFY */
DO
Correction below, without the =3d
From: O'Brien, David W. (NIH/CIT) [C]
Sent: Wed 8/22/2007 8:47 AM
To: IBM-MAIN@BAMA.UA.EDU
Subject: Re: SMS Question - Urgent
Dean,
Do your ACS routines allow for user specification of Data,Mngt, or Stor
classes?
Look
WHEN (DATACLAS EQ DATA_CLASS
UNIT EQ DASD_UNIT) /* ALLOW USERS TO SPECIFY */
DO /* DATA CLASS FOR ANY */
SET DATACLAS =3D DATACLAS /* DASD_UNIT ALLOCATION*/
EXIT
END
Until the OP fixes the
Good point, I should have removed the dasd unit test.
From: John Kington [mailto:[EMAIL PROTECTED]
Sent: Wed 8/22/2007 8:55 AM
To: IBM-MAIN@BAMA.UA.EDU
Subject: Re: SMS Question - Urgent
WHEN (DATACLAS EQ DATA_CLASS
UNIT EQ DASD_UNIT
Hi,
I added a STORCLAS and DATACLAS parm to the define and it didn't take. I
still got the required volume list missing. I modified the ACS routine
to include ''' (quote quote) in the filter list of valid DASD units. The
define was successful:
IGD01007I DATACLAS SPECIFIED (PRODVSAM)
Subject: Re: SMS Question - Urgent
Hi,
I added a STORCLAS and DATACLAS parm to the define and it didn't take. I
still got the required volume list missing. I modified the ACS routine
to include ''' (quote quote) in the filter list of valid DASD units. The
define was successful:
snipped
Sent: Wednesday, August 22, 2007 9:30 AM
To: IBM-MAIN@BAMA.UA.EDU
Subject: Re: SMS Question - Urgent
Dean,
Now test if it will assign the correct SC without the explicit
specification of the SC.
Bob Richards
-Original Message-
From: IBM Mainframe Discussion List [mailto:[EMAIL
In a message dated 8/22/2007 8:14:04 A.M. Central Daylight Time,
[EMAIL PROTECTED] writes:
zeros are being passed to SMS in the UNIT field. They are going to track
down who's doing this. I think John, said they might have closed a
loophole. Everybody that chimed in has provided me with a
Terrific! Let us know if we can be of further assistance! :-)
Bob Richards
-Original Message-
From: IBM Mainframe Discussion List [mailto:[EMAIL PROTECTED] On
Behalf Of Dean Montevago
Sent: Wednesday, August 22, 2007 9:34 AM
To: IBM-MAIN@BAMA.UA.EDU
Subject: Re: SMS Question - Urgent
I will post an update when IBM gets back to me.
-Original Message-
From: IBM Mainframe Discussion List [mailto:[EMAIL PROTECTED] On
Behalf Of Richards.Bob
Sent: Wednesday, August 22, 2007 9:36 AM
To: IBM-MAIN@BAMA.UA.EDU
Subject: Re: SMS Question - Urgent
Terrific! Let us know if we can
When I display the base configuration I have SYSDA as the default unit.
-Original Message-
From: IBM Mainframe Discussion List [mailto:[EMAIL PROTECTED] On
Behalf Of Ed Finnell
Sent: Wednesday, August 22, 2007 9:35 AM
To: IBM-MAIN@BAMA.UA.EDU
Subject: Re: SMS Question - Urgent
Yes it did. When I removed those parms from IDCAMS and ran the define w/
'' in the filterlist for DASD units the define worked and the
appropriate storclas dataclas were assigned.
Dean,
Great to hear that you have it working. I still suspect IBM means nulls
or binary zeros when they say the
In a message dated 8/22/2007 8:38:22 A.M. Central Daylight Time,
[EMAIL PROTECTED] writes:
When I display the base configuration I have SYSDA as the default unit.
Are the volumes in the new pool included in SYSDA? Guess the easy way is HCD
under EDT's.
Dean, there's may be an unintended consequence to be careful of now that you
added null to the list of valid unit types.
If you have a job that stacks datasets on a single tape volume by using
UNIT=AFF=ddname such as the following:
//TAPEV01 DD DSN=SDR.BKUP.ML1001(+1),DCB=(SYS2.DSCB),
Yup, they are in SYSDA.
-Original Message-
From: IBM Mainframe Discussion List [mailto:[EMAIL PROTECTED] On
Behalf Of Ed Finnell
Sent: Wednesday, August 22, 2007 9:45 AM
To: IBM-MAIN@BAMA.UA.EDU
Subject: Re: SMS Question - Urgent
In a message dated 8/22/2007 8:38:22 A.M. Central
for the tape
units is no where in the logic. We just defined it in the event we might
use it someday.
-Original Message-
From: IBM Mainframe Discussion List [mailto:[EMAIL PROTECTED] On
Behalf Of Chicklon, Tom
Sent: Wednesday, August 22, 2007 9:50 AM
To: IBM-MAIN@BAMA.UA.EDU
Subject: Re: SMS
In my shop Sysda points to ONE volume (IMO, idiotic) and my default SMS unit is
Sysda. Works fine.
From: Dean Montevago [mailto:[EMAIL PROTECTED]
Sent: Wed 8/22/2007 9:50 AM
To: IBM-MAIN@BAMA.UA.EDU
Subject: Re: SMS Question - Urgent
Yup, they are in SYSDA
?? What do the rest point to ?
-Original Message-
From: IBM Mainframe Discussion List [mailto:[EMAIL PROTECTED] On
Behalf Of O'Brien, David W. (NIH/CIT) [C]
Sent: Wednesday, August 22, 2007 9:56 AM
To: IBM-MAIN@BAMA.UA.EDU
Subject: Re: SMS Question - Urgent
In my shop Sysda points
Other esoterics point to the full range of DASD. My point was the default unit
in the SMS configuration did not need to point to all of your DASD. It probably
should but at least in my case it doesn't seem to be necessary.
Subject: Re: SMS Question - Urgent
Dean, my logic was along the lines of:
1. UNIT not valid? Then SC=null (null unit IS valid here)
2. UNIT=TAPE? Then SC=null (we don't SMS manage tapes)
3. Stuff we know we don't want to manage? SC=null (multiple tests...)
4. Stuff we want to manage? Set SC=whatever (again multiple tests,
select, when statements were trying to accomplish.
Bob Richards
-Original Message-
From: IBM Mainframe Discussion List [mailto:[EMAIL PROTECTED] On
Behalf Of Dean Montevago
Sent: Wednesday, August 22, 2007 9:56 AM
To: IBM-MAIN@BAMA.UA.EDU
Subject: Re: SMS Question - Urgent
Thank you
Subject: Re: SMS Question - Urgent
Dean,
I would recommend that you remove any dead code in your ACS routines. It
isn't that difficult to add it in at the appropriate time and it removes
any confusion when the routines are read by someone else.
Also, I totally agree with the suggestion someone
Hi,
I didn't forget about all of you who helped me. Thank you for the
suggestions. I opened a PMR with IBM, it appears that the unit being
passed to SMS is zeros. I am waiting for a slip from them. We did change
the freespace and the file shrunk by 15%. I will update when I have more
info.
Dean
Dean,
I didn't forget about all of you who helped me. Thank you for the
suggestions. I opened a PMR with IBM, it appears that the unit being
passed to SMS is zeros. I am waiting for a slip from them. We did change
Do you mean nulls instead of zeros?
the freespace and the file shrunk by 15%. I
On Tue, 21 Aug 2007 10:54:36 -0400, Dean Montevago wrote:
I didn't forget about all of you who helped me. Thank you for the
suggestions. I opened a PMR with IBM, it appears that the unit being
passed to SMS is zeros.
Not surprising. If you must check the UNIT, perhaps you want to check that
it
END
-Original Message-
From: IBM Mainframe Discussion List [mailto:[EMAIL PROTECTED] On
Behalf Of Tom Marchant
Sent: Tuesday, August 21, 2007 11:09 AM
To: IBM-MAIN@BAMA.UA.EDU
Subject: Re: SMS
.
From: Dean Montevago [mailto:[EMAIL PROTECTED]
Sent: Tue 8/21/2007 11:20 AM
To: IBM-MAIN@BAMA.UA.EDU
Subject: Re: SMS Question - Urgent
FILTLIST DASD_UNITS INCLUDE('3390','SYSDA','SYSALLDA
] On
Behalf Of O'Brien, David W. (NIH/CIT) [C]
Sent: Tuesday, August 21, 2007 11:44 AM
To: IBM-MAIN@BAMA.UA.EDU
Subject: Re: SMS Question - Urgent
Dean,
You might consider replacing (UNIT EQ DASD_UNITS)) with
(DSORG EQ 'VS'))
A VSAM file is obviously allocated to DASD. If a user/programmer has
Subject: Re: SMS Question - Urgent
Thanks. That's a thought. But what gets me is we did the same exact
thing for another VSAM file (except we used a fully qualified name) and
it worked no problem. The only difference was the OS level
Sounds like a bug to me also. Thanks for your help.
-Original Message-
From: IBM Mainframe Discussion List [mailto:[EMAIL PROTECTED] On
Behalf Of O'Brien, David W. (NIH/CIT) [C]
Sent: Tuesday, August 21, 2007 12:02 PM
To: IBM-MAIN@BAMA.UA.EDU
Subject: Re: SMS Question - Urgent
When
-Original Message-
From: IBM Mainframe Discussion List
[mailto:[EMAIL PROTECTED] On Behalf Of O'Brien, David W.
(NIH/CIT) [C]
Sent: Tuesday, August 21, 2007 11:02 AM
To: IBM-MAIN@BAMA.UA.EDU
Subject: Re: SMS Question - Urgent
When something works and you change release level
John,
Agreed, I've seen the same thing although It was long ago.
My point was more in trying to stop Dean from hitting his head against a wall
doing 'what worked before'. If it isn't working now, try something else.
John McKown wrote
When something works
On 2007-08-17 08:11, Dean Montevago [EMAIL PROTECTED]
wrote to IBM-Main:
I have a CICS VSAM file that is reaching it's 4gb limit. I want to
create an SMS pool for it. Can I define all the constructs and
activate the new rules while the region is up and using this file ?
Will they take affect
** DON'T PANIC **
take several deep breaths ... and think ...
your 3.2 screen shows:
Storage class . . . : PRODVSAM
Organization . . . : PS
Record format . . . : VB
as Tom pointed out, wrong DSORG - should show up as VS (at least).
from the ISMF test screen Lizette has wonderfully
Dean Montevago wrote:
Hi,
I have a CICS VSAM file that is reaching it's 4gb limit. I want to create an
SMS pool for it. Can I define all the constructs and activate the new rules
while the region is up and using this file ? Will they take affect the next
time the file is deleted/defined ?
Dean,
IBM Mainframe Discussion List IBM-MAIN@BAMA.UA.EDU wrote on 08/17/2007
08:09:57 AM:
Hi,
I have a CICS VSAM file that is reaching it's 4gb limit. I want to
create an SMS pool for it. Can I define all the constructs and
activate the new rules while the region is up and using this file ?
Yes, the new SMS rules are only invoked at allocation. They will have no effect
on an existing file.
They will be invoked at delete/define.
Are you going to use SMS compression on this file? In the past (last job) I
reduced VSAM and sequential files by an average of 50%. This works fine as
On Fri, 17 Aug 2007 08:09:57 -0400, Dean Montevago wrote:
I have a CICS VSAM file that is reaching it's 4gb limit. I want to
create an SMS pool for it. Can I define all the constructs and
activate the new rules while the region is up and using this file ?
Will they take affect the next time the
Dean,
Thanks for the input.
The file is non-SMS right now. It is reaching the 4gb limit. I am
creating a new pool for this and other VSAM datasets. We're small so
there aren't that many and they all all non-SMS right now. I plan on
moving them over to this pool. The compression sounds
folks use straight API's the ISV
products I assume the same but I will have to check.
-Original Message-
From: IBM Mainframe Discussion List [mailto:[EMAIL PROTECTED]
Behalf Of O'Brien, David W. (NIH/CIT) [C]
Sent: Friday, August 17, 2007 8:37 AM
To: IBM-MAIN@BAMA.UA.EDU
Subject: Re: SMS
Thanks John. Good point.
-Original Message-
From: IBM Mainframe Discussion List [mailto:[EMAIL PROTECTED]
Behalf Of John Kington
Sent: Friday, August 17, 2007 8:58 AM
To: IBM-MAIN@BAMA.UA.EDU
Subject: Re: SMS Question - Urgent
Dean,
Thanks for the input.
The file is non-SMS right
On Fri, 17 Aug 2007 08:48:00 -0400, Dean Montevago wrote:
The file is non-SMS right now. It is reaching the 4gb limit. I am
creating a new pool for this and other VSAM datasets. We're
small so there aren't that many and they all all non-SMS right
now. I plan on moving them over to this pool.
a genuine concern - but have you checked to see if the growth was not
due to bad Index CISZ ? at one site, the Indices are hardcoded to 512
in the IDCAMS statements, which caused the DATA component to grow rapidly.
dataclass will take effect at dataset creation time. EF/EA datasets need
to be
(3 2)
CONTROLINTERVALSIZE(2048))
-Original Message-
From: IBM Mainframe Discussion List [mailto:[EMAIL PROTECTED]
Behalf Of O'Brien, David W. (NIH/CIT) [C]
Sent: Friday, August 17, 2007 9:58 AM
To: IBM-MAIN@BAMA.UA.EDU
Subject: Re: SMS Question
Dean,
Ravi makes an excellent point. What are the Data and Index CI sizes for this
file? This is only a concern for KSDS files. I don't believe you mentioned VSAM
file type. If it is other than KSDS, what is the Data CI size? You seem to have
an old installation. It is not inconceivable that
Doesn't a too small index ci size get auto-magically over-ridden by a larger
size now?
-Original Message-
From: IBM Mainframe Discussion List [mailto:[EMAIL PROTECTED] On Behalf
Of Ambat Ravi Nair
Sent: Friday, August 17, 2007 9:50 AM
To: IBM-MAIN@BAMA.UA.EDU
Subject: Re: SMS Question
Only if it is grossly underestimated. It is possible to lose DATA CI space due
to a too small Indec CI size.
Mainstar's Catalog Recovery Plus has a Map command that reports on this.
Doesn't a too small index ci size get auto-magically over-ridden by a larger
a file. If you are having space usage problems it
might be worth looking into.
From: Dean Montevago [mailto:[EMAIL PROTECTED]
Sent: Fri 8/17/2007 10:22 AM
To: IBM-MAIN@BAMA.UA.EDU
Subject: Re: SMS Question - Urgent
No flames please, is this is archaic. It's
OK. I'm still having problems. I created a new DC, SC, and SG on my sandbox.
Defined volumes with the SG parm from DSF. Updated the ACS routines to point to
a test file. Translated validated them. They activated successfully. I tried
to IDCAMS the test VSAM file (KSDS) with no VOL parameter.
Dean,
OK. I'm still having problems. I created a new DC, SC, and SG on my
sandbox. Defined volumes with the SG parm from DSF. Updated the ACS
routines to point to a test file. Translated validated them. They
activated successfully. I tried to IDCAMS the test VSAM file (KSDS)
with no VOL
Brian,
SNIP
You might want to increase the BUFFERSPACE(55296) to
BUFFERSPACE(849920) This will definitely improve sequential
preformance as well as loading vitually all of your Index set
into memory during direct processing.
SNIP
Usually defining the ACCESS BIAS as SYSTEM would
and that the volume has been init'd as an SMS volume
Jack Kelly
LA Systems @ US Courts
x 202-502-2390
--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [EMAIL PROTECTED] with the message: GET
11:09 AM
To: IBM-MAIN@BAMA.UA.EDU
Subject: Re: SMS Question - Urgent
OK. I'm still having problems. I created a new DC, SC, and SG on my sandbox.
Defined volumes with the SG parm from DSF. Updated the ACS routines to point to
a test file. Translated validated them. They activated successfully
: SMS Question - Urgent
08/17/2007 11:13
AM
I have sometimes seen the VOL parm setup in an IDCAMS as VOL(*).
Lizette
OK. I'm still having problems. I created a new DC, SC, and SG on my sandbox.
Defined volumes with the SG parm from DSF. Updated the ACS routines to point
to a test file. Translated validated them. They activated
I just did a 3.2 allocate
Data Set Name . . . . : REFPROD.REF.DNO
General Data Current Allocation
Management class . . :
---snip---
No flames please, is this is archaic. It's been like this for years.
DEFINE CLUSTER
(NAME(REFPROD.REFMSTR)
RECORDSIZE(6000 6000)
FREESPACE(33 33)
Did you get anything in the sysout besides the IEC614I CREATE FAILED?
-Original Message-
From: Dean Montevago
Sent: Friday, August 17, 2007 12:15 PM
To: 'IBM Mainframe Discussion List'
Subject: RE: SMS Question - Urgent
FILTLIST
IDC3020I UNABLE TO ALLOCATE SPACE ON USER VOLUME
IDC3009I ** VSAM CATALOG RETURN CODE IS 68 - REASON CODE IS IGG0CLEW-192
IDC3003I FUNCTION TERMINATED. CONDITION CODE IS 12
--
For IBM-MAIN
-Original Message-
From: Dean Montevago
Sent: Friday, August 17, 2007 12:15 PM
To: 'IBM Mainframe Discussion List'
Subject: RE: SMS Question - Urgent
FILTLIST PRODVSAM INCLUDE(REFPROD.REF.DNO.**) also tried
('REFPROD.REF.DNO
[mailto:[EMAIL PROTECTED] On Behalf
Of Dean Montevago
Sent: Friday, August 17, 2007 9:20 AM
To: IBM-MAIN@BAMA.UA.EDU
Subject: Re: SMS Question - Urgent
-Original Message-
From: Dean Montevago
Sent: Friday, August 17, 2007 12:15 PM
To: 'IBM Mainframe Discussion List
My stuff is pretty basic:
PROC DATACLAS
/*/
/**DEFINE DASD UNIT NAMES
Dean,
FILTLIST DASD_UNITS INCLUDE('3390','SYSDA','SYSALLDA')
Add '' to your DASD_UNITS filter list. This will cover the case when no
unit= value
or null is being passed into your ACS routines.
Regards,
John
--
For IBM-MAIN
Dean,
FILTLIST PRODVSAM INCLUDE(REFPROD.REF.DNO.**) also tried
('REFPROD.REF.DNO')
WHEN ((DSN EQ PRODVSAM) AND
(UNIT EQ DASD_UNITS))
DO
SET STORCLAS EQ 'PRODVSAM'
WRITE 'STORCLAS SPECIFIED (' STORCLAS ')'
EXIT
END
Can you post the FILTLIST for
-Original Message-
From: IBM Mainframe Discussion List
[mailto:[EMAIL PROTECTED] On Behalf Of Dean Montevago
Sent: Friday, August 17, 2007 11:30 AM
To: IBM-MAIN@BAMA.UA.EDU
Subject: Re: SMS Question - Urgent
IDC3020I UNABLE TO ALLOCATE SPACE ON USER VOLUME
Message-
From: IBM Mainframe Discussion List [mailto:[EMAIL PROTECTED] On Behalf
Of McKown, John
Sent: Friday, August 17, 2007 10:14 AM
To: IBM-MAIN@BAMA.UA.EDU
Subject: Re: SMS Question - Urgent
-Original Message-
From: IBM Mainframe Discussion List
[mailto:[EMAIL PROTECTED] On Behalf
CREATE FAILED with code/message SMS-managed volumes specified for non-SMS
request.
Dean,
I think John's put the finger on the sore spot ... what DATACLAS and/or
MGMTCLAS are you assigning to this VSAM dataset so that it will become a
valid SMS-managed VSAM dataset?
HTH
Ulrich
Correction ...
Bob,
Question: I'm not an SMS expert but is this necessary: WRITE 'DATACLAS
SPECIFIED (' DATACLAS ')'
Dean is trying to leave bread crumbs so that he can
see where the path he is taking.
Regards,
John
--
For IBM-MAIN
Question: I'm not an SMS expert but is this necessary: WRITE 'DATACLAS
SPECIFIED (' DATACLAS ')'
Bob Pelletier
Connecticut Student Loan Foundation
Rocky Hill, Ct.
My stuff is pretty basic:
PROC DATACLAS
/*/
/**
:36 AM
To: IBM-MAIN@BAMA.UA.EDU
Subject: Re: SMS Question - Urgent
Question: I'm not an SMS expert but is this necessary: WRITE 'DATACLAS
SPECIFIED (' DATACLAS ')'
Bob Pelletier
Connecticut Student Loan Foundation
Rocky Hill, Ct.
My stuff is pretty basic:
PROC DATACLAS
snipped
WHEN ((DSN
On Fri, 17 Aug 2007 10:57:17 -0700, Ulrich Krueger wrote:
... what DATACLAS and/or
MGMTCLAS are you assigning to this VSAM dataset so that it will become a
valid SMS-managed VSAM dataset?
Correction ...
I meant to ask about STORCLAS and MGMGCLAS definitions.
MGMTCLAS ACS routine is
On Fri, 17 Aug 2007 15:01:11 -0400, Lizette Koehler
[EMAIL PROTECTED] wrote:
Have you tried the TEST facility in ISMF? Or do you have SMSDEBUG from
DTS? Both could help identify your problem.
Starting in z/OS 1.7 there is a SETSMS VOLSELMSG command that can be used
to help diagnose
In a message dated 8/17/2007 2:02:58 P.M. Central Daylight Time,
[EMAIL PROTECTED] writes:
They both go down the same path, right ?
Well they should, but are not. Can't think of any reason unless VVDS is
hosed.
Guess I'd start with DEVSER ===DS QD,ucb,1,validate then EXAMINE
Have you tried the TEST facility in ISMF? Or do you have SMSDEBUG from DTS?
Both could help identify your problem.
Lizette
MGMTCLAS ACS routine is irrelevant. It doesn't get invoked until after a
STORCLAS is assigned by the STORCLAS ACS routine.
The test for DASD_UNITS could be stopping
don't know how, and don't know
-Original Message-
From: IBM Mainframe Discussion List [mailto:[EMAIL PROTECTED]
Behalf Of Lizette Koehler
Sent: Friday, August 17, 2007 3:01 PM
To: IBM-MAIN@BAMA.UA.EDU
Subject: Re: SMS Question - Urgent
Have you tried the TEST facility in ISMF
@BAMA.UA.EDU
Subject: Re: SMS Question - Urgent
In a message dated 8/17/2007 1:24:38 P.M. Central Daylight Time,
[EMAIL PROTECTED] writes:
You might want to sprinkle some WRITE statements in the ACS routine to
show you where you've been.
I's just thinking does this thing have VVDS
Dean,
VVDS's are defined. Did the sprinkle. In 3.2 I can allocate, batch
is where I have the issue. They both go down the same path, right ?
You could add a WRITE statement to show what the UNIT variable contains.
Regards,
John
In a message dated 8/17/2007 1:24:38 P.M. Central Daylight Time,
[EMAIL PROTECTED] writes:
You might want to sprinkle some WRITE statements in the ACS routine to
show you where you've been.
I's just thinking does this thing have VVDS at all? Guess if we list the VTOC
it should show
To use ISMF TEST you go to Option 7.4.
Select one of the following Options:
1. DEFINE - Define an ACS Test Case
2. ALTER
Dean,
Can you post your storage class routine?
Bob Richards
-Original Message-
From: IBM Mainframe Discussion List [mailto:[EMAIL PROTECTED] On
Behalf Of Dean Montevago
Sent: Friday, August 17, 2007 3:03 PM
To: IBM-MAIN@BAMA.UA.EDU
Subject: Re: SMS Question - Urgent
VVDS's
On Fri, 17 Aug 2007 15:02:40 -0400, Dean Montevago wrote:
VVDS's are defined. Did the sprinkle. In 3.2 I can allocate, batch
is where I have the issue. They both go down the same path, right ?
In 3.2 you create a non-VSAM data set, and a unit is specified by TSO
ALLOCATE by default. The batch
Dean,
Bob has a good point. You can't be SMS managed unless a STORCLAS is
assigned. The way I read the IDC3009I massage is that SMS managed volumes
are specified for a dataset that is not SMS eligible (i.e. Does not have a
STORCLAS).
I'd give up trying to diagnose you DATACLAS routines for now
83 matches
Mail list logo