```Date: Tue, 8 Aug 2000 09:39:31 EDT Reply-To: Bernard Tremblay Sender: "SAS(r) Discussion" From: Bernard Tremblay Subject: Re: Should be an easy one: Informats etc. Comments: To: Mark.K.Moran@CCMAIL.CENSUS.GOV Content-Type: text/plain; charset=iso-8859-1; format=flowed Marc, Very sorry for your grandmother. It's very sad. I would like to solve some of those mysteries for you. Whenever you want to convert a numeric in character, you should specify the format unless you are knowing what's going to happen ... Since indcat must be formatted, SAS is using a best12. format and you have more than 3 spaces in front of the number wich explain why you don't get anything in the last 3 position of Var13 ... Mystery 1 solved. Since you scanned the first word and converted it to numeric. If you want to test first digit only, you must use a numeric function or simply use a character function to extract only first digit (Assuming the number can be more than 1 digit). Mystery 2 solved. And about the third mystery. You don't give much information. Did you have the 'drop=firstdgc firstdgt' specified too ? ... Mystery 3 solved ???? Corrected code follow: >Data STUF1of2 (drop=firstdgc); >length Var13 \$ 13; >set Rawdata1; >Var13=Trim(Var10)||trim(put(indcat,3.));/**to control spaces **/ >firstdgc=scan(Xold,1); >/**** not usefull firstdgt=input(firstdgc,8.);****/ >if substr(firstdgc,1,1) in ('1','2') then Ben='Y'; >else Ben='N'; >run; > >Data STUF2of2 (drop=firstdgc); /* same drop as first ???*/ >[same as far as I can tell except: ] >set Rawdata2 Regards and my deepest sympathies to you and your family, \\\|/// \\ - - // ( @ @ ) +-----oOOo-(_)-oOOo--+-----------------------------------+ | Bernard Tremblay | | | CSST | Tel: (418) 528-9313 | | | Fax: (418) 528-1493 | | | Int: Bernard.Tremblay@csst.qc.ca | +----------------------------+---------------------------+ | Imaginasys enr | Res: (418) 658-1411 | | | Int: bertrem@videotron.ca | | | Hot: imaginasys@hotmail.com | +--------------Oooo--+-----------------------------------+ oooO ( ) ( ) ) / \ ( (_/ \_) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ >From: Mark Moran >Reply-To: Mark.K.Moran@CCMAIL.CENSUS.GOV >To: SAS-L@LISTSERV.UGA.EDU >Subject: Should be an easy one: Informats etc. >Date: Mon, 7 Aug 2000 16:14:50 -0400 > >Not having a great day today (my Grandmother passed away this morning)... >My >head is swimming but I should be >able to figure this one out. Two, or maybe three, minor mysteries in this >SAS >6.12 datastep: > >I read in Var10 as a \$10. variable. I read in Var3 from columns 12-14 as a >numeric. I want Var13 to simply have >13 characters, the first 10 from Var10 and the last 3 from Var3. Whether I >put >trim(Var10) around the variable or >leave it as Var10||indcat, I'm still getting a 10 character variable which >has >the 10 characters from Var10 and >no contribution from indcat. Mystery 1. > >The variable Ben is supposed to check if the first digit of Xold is 1 or 2, >but >it is always coming out N instead of >sometimes Y and sometimes N. Mystery 2. > >I have two identical copies of this datastep, STUF1of2 and STUF2of2. With >Rawdata1, I'm getting the 2 new >variables out of STUF1of2 that I'm expecting (Var13 and Ben), plus for some >reason firstdgc is sticking around! With >the Rawdata2 for some reason I seem to be successfully getting exactly >those >variables I thought I should be getting >out of the datastep, yet I see no difference between the STUF1of2 code and >the >STUF2of2 code. Mystery 3. > >For our own internal policy reasons, I had to change a couple of the >variable >names to ask this question (in case >I've typed something inconsistently and created any fourth or fifth >mysteries!). > > >Data STUF1of2 (drop=firstdgc firstdgt); >length Var13 \$ 13; >set Rawdata1; >Var13=Trim(Var10)||indcat; >firstdgc=scan(Xold,1); >firstdgt=input(firstdgc,8.); >if firstdgt in (1,2) then Ben='Y'; >else Ben='N'; >run; > >Data STUF2of2 >[same as far as I can tell except: ] >set Rawdata2 > >- Mark ________________________________________________________________________ Get Your Private, Free E-mail from MSN Hotmail at http://www.hotmail.com ```

Back to: Top of message | Previous page | Main SAS-L page