HDTenEightyP/NetNews huggingface dataset:
From: macq@miguel.llnl.gov (Don MacQueen)
Newsgroups: bit.listserv.sas-l
Subject: Re: Comma delimited output file from SAS on MVS/ESA
Date: 30 Jul 92 21:22:04 GMT
Organization: Lawrence Livermore National Laboratory

In article <9207301512.AA21510@espresso.bcs.eca>, oldenkmp@ESPRESSO.BOEING.COM (P. Oldenkamp 5-4481) writes:
|> ----------------------------------------------------------------------
|> CONTENT:  Comment
|> SUMMARY:  SI to have SAS/ACCESS product for PC file formats.
|> REL/PLTF: 6.07.02/SunOS 6.06/MVS 6.06/CMS 6.04/PC-DOS
|> E-ADDR:   oldenkmp@ESPRESSO.boeing.com
|> NAME:     Paul OldenKamp
|> PHONE:    206-865-4481
|> ----------------------------------------------------------------------
|> Simon Dunkley commented on Kevin's complaint:
|> 
|> > Kevin Nechodom <knechod@EDU.UTAH.MED.STACC> writes:
|> > > Finally, to voice an old complaint, it would be nice if the standard
|> > > implementation of SAS included 'standard' (in quotes in deference to
|> > > those who actually measure and evaluate such standards) file formats,
|> > > like CSV, DBF, DIF, etc.  With the proliferation of UN*X workstations
|> > > and the migratation of DOS programs like dBase to those workstations,
|> > > the need is becoming greater!
|> > >
|> >     What about proc dbf and proc dif?
|> 
|> They don't exist in releases beyond 6.04.  At a marketing 'seminar' last
|> week the regional marketing manager announced that SI has decided to offer
|> a SAS/ACCESS product for popular PC file structures(dbf, dif, etc.) under
|> OS/2.  In response to a question, she said that no decision had been made
|> on Windows 3.1.
|> 
|> It occures to me that with SAS/TOOLKIT third parties could meet the need
|> and sell it independently of SI.  Wow, competition in SAS Software!!!
|> 

In my opinion what is needed is a DELIMITER= option for the FILE statement,
analagous to the same option for the INFILE statement. This option would
put the chosen delimiter between each variable named in a PUT statement,
with no extra spaces, and using the usual default formats. Or user
specified formats. Then people who wanted tab or comma delimiters could
do something as simple as:

data _null_;
  set whatever;
  file 'outfile.dat' delimiter=',';
  put x y z;
  run;

And get exactly what they want. No fuss, no muss, no macros, no
SAS/ACCESS, no SAS/TOOLKIT and having to buy extra software.

What could be simpler?
-- 
---------------------------------------------------
Don MacQueen                   macq@miguel.llnl.gov
Lawrence Livermore Nat. Lab.
7000 East Ave., L-307          (510) 423-1062
Livermore, CA 94550
---------------------------------------------------
Comments: Gated by NETNEWS@AUVM.AMERICAN.EDU
Newsgroups: bit.listserv.sas-l
Date:         Tue, 28 Jul 1992 20:14:07 -0500
Reply-To:     Kernon Gibes <gibes@SWIRL.MONSANTO.COM>
From:         Kernon Gibes <gibes@SWIRL.MONSANTO.COM>
Subject:      RE: writing variable names to external file
Comments: To: SAS-L@uga.cc.uga.edu@tin.monsanto.com
Comments: cc: GIBES@tin.monsanto.com

 CONTENT:   Question on a question
 SUMMARY:   Why should TRANSPOSE skip variable names?
 REL/PLTF:  not applicable (fyi - that's RELease / Platfrom )
 E-ADDR:    gibes@swirl.monsanto.com
 NAME:      Kernon Gibes
 PHONE:     (708) 506-2873
 DATE/TIME: 28 July 1992, 8:22 p.m. CDT

Steve Wickham wrote:

<stuff deleted>
>due to the transpose.  The transposed variables all have the same prefix, but
>the also have a number that ranges between 0 - 99, but not consecutively.
>Confused? An example:
>DATE RIVER SITE ORDER1 ORDER3 ORDER5 ORDER17 ORDER9 ORDER85
<stuff deleted>

Sorry Steve but I'm less interested in your original question than in
why TRANSPOSE would be doing this (besides you already have a couple of
fine answeres).   In my experience, TRANSPOSE doesn't skip variables but
of course if you look at a CONTENTS ORDER17 comes before ORDER9, etc.
However, this wouldn't explain what happened to ORDER2 assuming your
example was completely real.  Anyway, I would be interested in knowing
what TRANSPOSE code gives rise to this behavior.   TIA.
Comments: Gated by NETNEWS@AUVM.AMERICAN.EDU
Subject: (no subject given)
Newsgroups: bit.listserv.sas-l
Date:         Mon, 20 Jul 1992 16:09:36 -0400
Reply-To:     RIKARD@VCUMVS.BITNET
From:         RIKARD@VCUMVS.BITNET

******************************************************************
Content: Response
Summary: Proc Sort.
Release and platform: 5.18 and 6.07 under MVS
Name:    Pete Rikard
Mail addresses:BITNET Rikard@vcumvs Internet rikard@vcuucc.ucc.vcu.edu
Real Addresses:Virginia Commonwealth University, Computer Center
               110 S. 7th Street, 4th Floor, Richmond, VA 23219
               Phone (804) 786-4828    FAX: (804) 371-8464
******************************************************************
I like it, I like it. I would call this a stupid user trick from
Late Night with SAS-L, but that wouldn't be SAS PC.
>    Sometimes, just when you think you understand the SAS algorithms,
>    something pops up and make you existentially insecure. Consider
>    the following.
>       A student was trying to sort two datasets by, say, id and
>    school, in order to merge them together.  She clearly wanted
>    the dataset to look like id's within school's. She tried
>    the following code:
>     proc sort data=one;
>        by school;
>        by id;
>     proc sort data=two;
>        by school;
>        by id;
>     data total;
>         merge one two;
>      by school;
>      by id;
>
>     Needless to say,  the merge did not work, as it did not find
>     the datasets "sorted" by school.  I straightened her out by
> ....   Anyway, what gives?  Can anyone suggest what SAS is doing here?
*****************************************************************
lots more good commentary followed.
Actually I have learned more from what my users tried to do and
the interesting results they got than from many well schooled
users.

I admit that I haven't seen anyone try this and it's wrong, wrong,
wrong. But it is interesting.

It's wrong, wrong, wrong cause what you get is apparently version
dependent. A partial test for MVS was:
  proc sort; by a b ; by descending b a;
      5.18 gives a b
      6.07 gives descending b a;
  proc sort; by a ; by descending b a;
      5.18 gives a descending b;
      6.07 gives descending b a;
  proc sort; by a ; by descending b ;
      5.18 gives a descending b;
      6.07 gives descending b ;
 5.18 appears to give the sort of the FIRST use of the variable
 in all BY statements and 6.07 seems to simply use the last BY
 statement given.

In any case, users should only have one by statement.
******************************************************************
 This is duplicate message, my mailer has gone to sleep, so I send
 this a second time, another way.
******************************************************************
Organization: City University of New York/ University Computer Center
Date: Wednesday, 22 Jul 1992 11:38:22 EDT
From: <EDSCC@CUNYVM.BITNET>
Newsgroups: bit.listserv.sas-l
Subject: multiple identical id vars problem

Hi,
I'm an SPSSPC+ user who is learning to use SAS PC/DOS because I've
been convinced SAS handles data better than SPSS.
I'd like some help with what I'm told is an "easy" problem for SAS.
I work with raw data files that have multiple observations of the
identical id variable with different variables for each observation.
An example of my raw data file follows:

ID           CODE  TERM  DATE

(Where TERM = YYM and DATE = YYMMDD.)

002162706    292  901   900309
002162706    292  901   900403
002254401    299  891   890201
002254401    299  901   900303
002254401    276  901   900405

I need to write a program that finds each identical id variable.  When
an identical id variable is encountered, I want to add only the variables
associated with it to the first observation.  I want to have a new file
with one observation for each unique id variable.  An example
of what I'd like to have follows:

ID         CODE TERM DATE  CODE2 TERM2 DATE2  CODE3 TERM3 DATE3

002162706  292  901 900309 299   901   900403
002254401  299  891 890201 299   901   900303  299   901  900405

Can this be done?  If it can, how?

Thanks, in advance, for any help,
                                    Ed Silverman
Comments: Gated by NETNEWS@AUVM.AMERICAN.EDU
Mailer: Elm [revision: 66.33]
Newsgroups: bit.listserv.sas-l
Date:         Mon, 27 Jul 1992 14:15:40 MDT
Reply-To:     knechod@stacc.med.utah.edu
From:         Kevin Nechodom <knechod@STACC.MED.UTAH.EDU>
Subject:      Date Selection with Data Steps
Comments: To: SAS Mailing List <sas-l@uga.cc.uga.edu>

I am trying to write a data step script that will select a subset of
records out of a data set that has each record dated.

Data Set
--------
  Date
Received   Data ...
02/03/92   ....
05/04/92   ....
03/29/91   ....

I would like to make it easy for whoever uses this script to change
the cutoff date.

1. I think I can put the date into a data step that puts the date
   into its own data set.  Then merge that date with my actual data
   into a temp data set.  Then use a WHERE clause to select out the
   appropriate records.

Data tempdate;
  input cutoff mmddyy8.;
  cards;
04/15/92
;
data workmrge;
  .
  .
  .

2. Another approach which I used in an emergency was to use the
   DATEJUL function.

data work.junk;
  length cutoff 4;
  cutoff = datejul(92185); /* I do NOT like this!  It's not simple! */
  set prod.airheum;
  ;
run;
data WORK.FREQ;
   set work.junk;
   where recdate <= cutoff;
   .
   .
   .


I would like to avoid writing intermediate data sets and calculating
days-of-the-year.  Is there anything like the SCL INPUTN function that
returns:

  cutoff = INPUTN("04/15/92","mmddyy8.");

that I could use within the data step and a WHERE clause?

Prethanks for the mental bandwidth.

--
Kevin Nechodom UofU STACC        | Great Moments in Physics History:
 UofU doesn't even know I exist; | "E= m c cubed?  No, too gaudy.
 how would they care what I say? |  E= m c ?  No, too simple.
knechod@stacc.med.utah.edu       |  E= m c squared?  Ah, ha!"
Newsgroups: bit.listserv.sas-l,comp.windows.x
From: mstgil@sol.acs.unt.edu (Marc Ph. A. J. St.-Gil - Solbourne Administrator)
Subject: SUMMARY: SAS under X Window help needed
Keywords: X Window UNIX Sun Solbourne
Reply-To: mstgil@sol.acs.unt.edu
Organization: University of North Texas
Date: Fri, 31 Jul 1992 16:37:17 GMT

My original plea was:

>Hi,
>    I administer a Solbourne system with NCD X terminals and a Solbourne
>S4000 attached.  The Solbourne, in case you don't know is a Sun clone type
>system, but it comes only with basic MIT X11R4, not OpenWindows.  When my
>users start SAS from an X environment, they see the following error messages
>stream by:

>> Warning: translation table syntax error: Unknown keysym name: osfUp
>> Warning: ... found while parsing 'None<Key>osfUp:        sas-cursor-up() '
>> Warning: translation table syntax error: Unknown keysym name: osfDown
>> Warning: ... found while parsing '     None<Key>osfDown:      sas-cursor-down() '
[ hordes of similar messages deleted ]
>> Warning: translation table syntax error: Unknown keysym name: osfActivate
>> Warning: ... found while parsing '    <Key>osfActivate:   ArmAndActivate()'
>> Warning: translation table syntax error: Unknown keysym name: osfHelp
>> Warning: ... found while parsing '    <Key>osfHelp:	Help()'

>    My problem is that I can't seem to get SAS to use different keysyms from
>those listed above.  I have tried /usr/lib/X11/app-defaults/SAS, and changes
>galore to my .Xresources files used by xrdb to no avail.  They seem to be
>almost hard coded into SAS!?  Is anyone else out there using SAS on a UNIX
>system without benefit of mwm and the Motif libraries?  Any help would be
>most appreciated.

>Thanks,
>Marc    Puzzled SAS and X Window user/administrator

Many thanks go out to the people who quickly responded with the right answer.
I am including the first response below, but thanks should also go out to:
	dbl@osf.org (David B. Lewis)
	macq@miguel.llnl.gov (Don MacQueen)
	richardh@episun.epidem.uwa.edu.au (Richard Hockey)
	exujoel@exu.ericsson.se (Joel Oguete)
	SBYRNE@liverpool.ac.uk (Sue Byrne)

and here's the answer:
	>From: oldenkmp@espresso.boeing.com (P. Oldenkamp 5-4481)
	>Subject: Re: SAS under X Window help needed
	>To: mstgil@sol.acs.unt.edu
	>Date: Thu, 30 Jul 92 14:11:33 PDT
	>
	>Hello Marc,
	>
	>I seem to recall that I got the same result initially on one of our systems
	>when we forgot to follow the instructions on the pink alert notes to copy
	>!SASROOT/X11/app-defaults/XKeysymDB to /usr/lib/X11.
	>
	>Paul OldenKamp, Boeing Computer Services, Seattle

Now I'm down to just these few to hunt down and kill:
> Warning: Overriding earlier translation manager actions.
> Warning: Previous entry was: !<KeyPress>Help: sas-pf-key("1")
> Warning: New actions are: sas-pf-key("30")
> Warning: translation table syntax error: Missing '(' while parsing action sequence
> Warning: ... found while parsing 'Ctrl<Key>X: sas-toggle-insert()           <Key>osfInsert: sas-toggle-insert()'

Big thanks to you Paul,
Marc
Comments: Gated by NETNEWS@AUVM.AMERICAN.EDU
Newsgroups: bit.listserv.sas-l
Date:         Wed, 22 Jul 1992 10:10:10 PDT
Reply-To:     Melvin Klassen <KLASSEN@UVVM.BITNET>
Comments:     Warning -- original Sender: tag was NETNEWS@UVVM.UVIC.CA
From:         Melvin Klassen <KLASSEN@UVVM.BITNET>
Subject:      Re: BY-groups and new pages

"B. Bloemberg" <B.Bloemberg@UCI.KUN.NL> writes:
>my problems concerns BY-groups and new pages. (SAS 6.06 VM/CMS)
>How can I get the output of more BY-groups on a page?
The SAS documentation for PROC FREQ does not seem to allow this,
except for the reference in note 18 on page 352 of
"SAS (r) Procedures Guide, Version 6, Third Edition".
Comments: Gated by NETNEWS@AUVM.AMERICAN.EDU
X-Acknowledge-To: <HILL@CMSUVMA>
Newsgroups: bit.listserv.sas-l
Date:         Tue, 21 Jul 1992 12:55:35 CST
Reply-To:     Nancy <HILL@CMSUVMA.BITNET>
From:         Nancy <HILL@CMSUVMA.BITNET>
Subject:      MWSUG'92 Early Registration deadline is July 24, 1992

MWSUG'92 Early Registration ($100) deadline is July 24, 1992. After this date
regular registration is $150. If you have not received a registration
packet, please email me.
Thanks
Nancy
From: macq@miguel.llnl.gov (Don MacQueen)
Newsgroups: bit.listserv.sas-l
Subject: Re: Comma delimited output file
Date: 31 Jul 92 15:39:51 GMT
Organization: Lawrence Livermore National Laboratory

I agree with Howard Schreier that the presence of the desired
delimiter character within a text string presents a
problem (on input as well as output).

For the other software to which I occasionally need
to export data, the standard delimiter is the tab
character, in which case Howard's example, reproduced
below, is not a problem. I would claim that tabs within
a text string are very rare in SAS applications, so that
for me the simple delimiter option is adequate.

-- 
Howard's example:

   var1 (numeric):     126
   var2 (character):   O'Hara, Adam
   var3 (numeric):     621

---------------------------------------------------
Don MacQueen                   macq@miguel.llnl.gov
Lawrence Livermore Nat. Lab.
7000 East Ave., L-307          (510) 423-1062
Livermore, CA 94550
---------------------------------------------------
Comments: Gated by NETNEWS@AUVM.AMERICAN.EDU
Newsgroups: bit.listserv.sas-l
Date:         Fri, 31 Jul 1992 13:40:43 EDT
Reply-To:     "Patrick Spreng" <76666.136@COMPUSERVE.COM>
From:         "Patrick Spreng" <76666.136@COMPUSERVE.COM>
Subject:      Ghosts left on SAS/SHARE servers

Re: Ghosts left on SAS/SHARE servers
(SAS/SHARE release 6.07 on MVS)

> Where are the NOSTAE and DUMPPROL options specified --
>
> (1) In the execution JCL for the SAS/SHARE server?
> (2) In the SAS clist used by the users who attach to the server?
> (3) Both of the above?

To Tom Frenkel:

I experimented with it yesterday to be sure that I understood how it was
working (or failing) on our system.  Although I didn't try all combinations
and permutations, this seems to be the minimum requirement:

Specify NOSTAE in the SAS CLIST used by the users who attach to the
server.  The DUMPPROL option does not appear to be necessary.  The execu-
tion JCL for the SAS/SHARE server does not require any special options.

Good luck!

-- Bruce

Bruce Zak                      ^            CompuServe 76666,136
Lone Star Gas Company         /^\           Phone (214) 573-3475
Dallas, Texas                (_+_)          Fax   (214) 573-3174
Comments: Gated by NETNEWS@AUVM.AMERICAN.EDU
Newsgroups: bit.listserv.sas-l
Date:         Wed, 29 Jul 1992 17:32:34 EDT
Reply-To:     Andy Norton <76350.1604@COMPUSERVE.COM>
From:         Andy Norton <76350.1604@COMPUSERVE.COM>
Subject:      Comma delimited output file from SAS on MVS/ESA
Comments: To: SAS-L <SAS-L@AWIIMC12.IMC.UNIVIE.AC.AT>

----------------------------------------------------------------------
CONTENT:   Response
SUMMARY:   Response to Pauline Sing
           Using grouped format lists with literals;
           using variable lists _NUMERIC_ and _CHARACTER_
REL/PLTF:  6.07.01/CMS, 6.04/PC-DOS
E-ADDR:    76350.1604@compuserve.com
NAME:      Andy Norton
ADDRESS:   Trilogy Consulting, 5822 Lovers Lane, Kalamazoo MI 49002
PHONE:     (616) 344-2191
----------------------------------------------------------------------
Pauline Sing (DC.SYSD10@TS3.TEALE.CA.GOV) writes

> I am trying to create a comma delimited flat file from SAS on an MVS
> machine.  I know that I could put a ',' between each variable but I
> have 600 variables in 27 tables. I was wondering whether there is a
> shortcut? Any suggestions would be greatly appreciated.

Try the following technique:
    data _null_;
      set;
      put (_NUMERIC_  ) (best12. ',')
          (_CHARACTER_) (',' $12.);
    run;

See page 464 of the Version 6 Language Reference regarding "format
groups".  Any unneeded specifications are disregarded; i.e. there is
only one comma between numeric and character because the numeric
section stops as soon as the last numeric value is printed.

_NUMERIC_ and _CHARACTER_ are automatic variables lists referring to
all variables of the specified type.

P.S. it appears that including literals in format lists is illegal in
6.04.
Comments: Gated by NETNEWS@AUVM.AMERICAN.EDU
X-Envelope-to: SAS-L@AWIIMC12.BITNET
X-Mailer: ELM [version 2.2 PL0]
Newsgroups: bit.listserv.sas-l
Date:         Mon, 27 Jul 1992 15:07:06 EDT
Reply-To:     Daryl P Sawders <DARYL@PITTUNIX.BITNET>
From:         Daryl P Sawders <DARYL@PITTUNIX.BITNET>
Subject:      SQL ? and SAS...

I've been watching the SQL discussions for quite a while and it
just struck me that I haven't a clue on what types of files are
being used in these queries...

Does SQL under SAS work with any file that SAS understands ??

Do you need to have your datafiles in some special format ??

Is the SAS SQL PROC specially priced? or is it part of Base SAS ?

Short of asking the systems people... how can I tell if my
installation has SAS SQL on it's various machines ??

Thanks in advance,

   - Daryl -   A.T.U.S.Q.P.


Anxious To Use SQL Query Person ;-)
Comments: Gated by NETNEWS@AUVM.AMERICAN.EDU
X-Mailer: ELM [version 2.2 PL16]
Newsgroups: bit.listserv.sas-l
Date:         Wed, 29 Jul 1992 15:40:32 CDT
Reply-To:     "R. Snyder" <rsnyder@LOBBY.TI.COM>
From:         "R. Snyder" <rsnyder@LOBBY.TI.COM>
Subject:      Re: Target device option in SAS-GRAPH
Comments: To: murthy@GENE.COM
Comments: cc: sas-l@uga.cc.uga.edu
              29, 92 10:07 am

Smitha Krishnamurt Writes:
>
>  I am using SAS version 6.07 and trying run SAS-Graph using the new
>  graphics option targetdevice along with device option
>  so that I could preview the graphics output on my X-Windows terminal and
>  then send it to the printer(laser line printer).
>  Unfortunately it is neither displaying the graph nor routing it to the
>  printer. Could someone please help me.
>
>  BTW the following g-options are used in my program:
>
>   filename temp "grph.gsf";
>   goptions device= xcolor
>            targetdevice=ps300
>            gaccess=gsasfile
>            display
>            prompt
>            ftext=swissx
>            gsfmode=rotate
>            gsfname=temp
>            ;
> first I am using gplot procedure and then feeding the output to  greplay to
> replay the graphs in four different positions. Answers will be appreciated.
>
> thanks.
> smitha.
>

Smitha,

I read Paul Oldenkamp's reply to your question and generally agree. I set up
my printer driver a bit defferently, however.

Gprotocol:SASGPSTD
Gaccess:sasgastd>lj400raw -onb  {This is the printer name and a no banner
                                 option. SAS generates the UNIX Command
                                 "lp -dlj400raw -onb".}
<Other stuff left blank>

Devtype:PRINTER

With this setup I'm able to view a graph in a window (device=xcolor) and then
print form the graphics window pull down menu (command line). The targetdevice
value at the time the graph was created automatically routes the printout.

I noticed that you have used the gasfile option to generate a graphics stream
file. I don't think it will interfere but it may be redundant.

Bob Snyder, Texas Instruments, Sherman, TX
Comments: Gated by NETNEWS@AUVM.AMERICAN.EDU
X-Mailer: ELM [version 2.3 PL11]
Newsgroups: bit.listserv.sas-l
Date:         Sat, 18 Jul 1992 12:29:08 -0500
Reply-To:     Huub Rottgering <rottgeri@REUSEL.LEIDENUNIV.NL>
From:         Huub Rottgering <rottgeri@REUSEL.LEIDENUNIV.NL>
Subject:      question
Comments: To: sas-l@awiimc12.imc.univie.ac.at

Dear Sas Community,


Does any one have a simple straight forward solution for
using SAS for the following problem:

I have a data set with N observation X_i and Y_i
and variances for Y: sigma_y_i. I would like to fit
a least square model to this data set that takes into
account the known variances sigma_y_i.

As far as i understand from the explanation that goes with
proc reg, it is not possible to do this in this procedure. Note
that using option weight or freq won't do the
job. Using this the correct solution might be obtained
but the estimated errors are not calculated taking into
account sigma_y_i.

A solution would be  using proc mixed, but unfortunately
we have sas 6.07  on a unix sparc machine, where
proc mixed is not yet implemented.

regards,


Huub


--
Huub Rottgering
Institute:  Sterrewacht Leiden, Leiden University
mail:       P.O. Box 9513, 2300 RA Leiden, The Netherlands
Telefone:   31-71275838  Telex: 39058 astro nl  Telefax: 31-71275819
email:      rottgeri@strw.leidenuniv.nl
Comments: Gated by NETNEWS@AUVM.AMERICAN.EDU
X-VMS-To: IN%"sas-l@uga.bitnet"
Newsgroups: bit.listserv.sas-l
Date:         Mon, 27 Jul 1992 08:46:00 CDT
Reply-To:     BOKERSON@MEMSTVX1.BITNET
From:         BOKERSON@MEMSTVX1.BITNET
Subject:      all possible combinations merge

I am running SAS 6.07 with VAX/VMS 5.5...

Does anyone know of a good way of merging two data sets in an all combinations
merge for the by-variable when there are duplicates of the by variable in both
data sets to be merged and no other variable in common??  If I have three
observations of a by-variable value in the first data set and 4 in the second,
the final data set needs to have 12 observations with that value..

-----------------------------------------------------------------------------


Barbara Okerson                     BOKERSON@MEMSTVX1 (bitnet)
SAS Consultant                      BOKERSON@MSUVX1.MEMST.EDU (internet)
Academic Computer Services          (901)678-3682 (voice)
Memphis State University
Memphis, TN  38152
Comments: Gated by NETNEWS@AUVM.AMERICAN.EDU