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
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;
Don't miss out on SAS Innovate - Register now for the FREE Livestream!
Can't make it to Vegas? No problem! Watch our general sessions LIVE or on-demand starting April 17th. Hear from SAS execs, best-selling author Adam Grant, Hot Ones host Sean Evans, top tech journalist Kara Swisher, AI expert Cassie Kozyrkov, and the mind-blowing dance crew iLuminate! Plus, get access to over 20 breakout sessions.
Learn the difference between classical and Bayesian statistical approaches and see a few PROC examples to perform Bayesian analysis in this video.
Find more tutorials on the SAS Users YouTube channel.