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;
April 27 – 30 | Gaylord Texan | Grapevine, Texas
Walk in ready to learn. Walk out ready to deliver. This is the data and AI conference you can't afford to miss.
Register now and lock in 2025 pricing—just $495!
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.
Ready to level-up your skills? Choose your own adventure.