Help using Base SAS procedures

proc sql lenght

Reply
Contributor
Posts: 41

proc sql lenght

[ Edited ]

Hi,

 

I use proc sql to create a table B like this:

 

PROC SQL;
CREATE TABLE B
(BA char(20),
BB char(10),
BC char(3),
BD char(6),
BE char(6),
BF char(6),
BG char(20),
BH char(100),
BI char(6),
BJ num(20,2));

 

 

After I use a datastep to complete B according values of table A

 

data B (keep= BA BB BC BD BE BF BG BH BI BJ);
set A;
array cols {*} _character_;
do i1 = 1 to dim(cols);
	BA = "BA";
	BB= "BB";
	BC= "BC";
	BD= "BD";
	BE= "BE";
	BF= "BF";
	BG= "BG";
	BJ= 0;
  do;
	BH = "BH1";
	BI= "BI1";
	output;
  end;  
  do;
	BH= "BH2BH2BH2BH2BH2BH2BH2";
	BI = "BI2";
	output;
  end; 
end;
run;

 

The problem is on BH. When I try to write 

BH2BH2BH2BH2BH2BH2BH2

 It is outputing:

BH2

 

and the lenght of the field is 3...

Whereas I specified it like char(100)...

 

Do you know what can happen here? 

Thanks

Regular Contributor
Posts: 178

Re: proc sql lenght

When you run your data step you're not updating B, you're creating a new version of it. I'm guessing in the Data Set A the variable has a length of 3? If you want to preserve the length of BH you need to include a length statement or just put length statements in your data step and drop the Proc SQL e.g.

 

proc sql;
	create table B
	(BH char(100));
quit;

data B;
	length BH $100;
	BH="BHBHBH";
run;
Ask a Question
Discussion stats
  • 1 reply
  • 113 views
  • 0 likes
  • 2 in conversation