Desktop productivity for business analysts and programmers

Variable length change

New Contributor
Posts: 3

Variable length change

When we create a dataset from a other, sobre characteres variables "change" its length.


For example:


data new_dataset;

set old_dataset;

keep email name;

where control = 0;



But when we see the results, the name "Alexandre" changes to "Alexandr", but when we double click we can see a hidden "e".

The same happens to email variable.


The problem is that when I export to a TXT file, the name exports as "Alexandr".

Super User
Posts: 10,581

Re: Variable length change

Posted in reply to TanaraRose

Look at the attributes of "name". It may have a shorter display format than the defined length.

Maxims of Maximally Efficient SAS Programmers
How to convert datasets to data steps
How to post code
Respected Advisor
Posts: 3,278

Re: Variable length change

Posted in reply to TanaraRose

Could you please clarify something?


Where do you see this shortened version of the text?


Are you looking in Viewtable? If so, that's not unusual for the Viewtable to show a truncated text string, but the text is all there, as you said, you can expand the field and see it all, it's nothing to worry about.

Paige Miller
Posts: 1,334

Re: Variable length change

Posted in reply to PaigeMiller

Something a little odd is going on here.


First, I replicated your code, and as I expected the name field comes out at the full length.


So, either something odd is happening in your environment, or there's another explanation.


I suspect there is a $8. format on your variable. This will be copied through the data step, and EG will use it as guidance in how to display the variable.


Not sure about the export.


I suggest you run this little piece of code. It will create a SAS dataset of one record, containing information about your new dataset.


data test_dataset;

set old_dataset;

keep name;

where control = 0;


proc datasets nolist nodetails;

contents data=test_dataset out=dataset_description noprint;


proc delete data=test_dataset;



Look at the following:


TYPE: should be 2 (character)
LENGTH: should be long enough to contain Alexandre. If it's 8, there's something odd happening.
FORMAT, FORMATL: These are the fields that will show if there's a format on your variable. If there's a character format with a length of 8 on it, that's your problem. Just remove or modify it.


If none of the above seem to be an issue, post the dataset created by this code; it should contain the clues needed.




Ask a Question
Discussion stats
  • 3 replies
  • 4 in conversation