BookmarkSubscribeRSS Feed
chouchou
Calcite | Level 5

data temp;

length a 1 b 3 x;

infile 'file reference';

input a b x;

run;

What is the result?

A.The data set TEMP is created, but variable X is not created.

B. The data set TEMP is created and variable X has a length of 8.

C.The data set TEMP is not created because variable A has an valid length.

D. The data set TEMP is not created because variable A and B have invalid lengths.

The answer is C.

I couldn't understand the answer at all.

I also run the code, the result is that the data set TEMP is created with 0 observation, the length of variable a b x are 8 3 8.

SO the correct answer is B? Can anyone please kindly confirm the answer with me?

By the way, why the length of a cannot be set as 1? Thank you guys!

12 REPLIES 12
jwillis
Quartz | Level 8

length a 1 b 3 x;

The statement above creates three numeric variables, a, b and x.  A cannot be 1 because the minimum length for a numeric variable is 3.

The statement below creates one character variable and two numeric variables.  The default length of a numeric variable is 8.

length a $ 1 b 3 x;   (equivalent to: length a $ 1 b 3 x 8;)

chouchou
Calcite | Level 5

Hi Jiwillis, how do you know it is "a" that should be the character variable? not "b" or "X"?

Reeza
Super User

Errors out for me.

data temp;

length a 1 b 3 x;

input a b x;

cards;

2 5 8

3 4 5

13 2 3

;

run;

LOG:

246  data temp;

247

248  length a 1 b 3 x;

              -      -

              352    22

1    1

     -

     352

ERROR 352-185: The length of numeric variables is 3-8.

ERROR 22-322: Expecting a numeric constant.

249

250  input a b x;

251  cards;

NOTE: The SAS System stopped processing this step because of errors.

WARNING: The data set WORK.TEMP may be incomplete.  When this step was stopped there were 0

         observations and 3 variables.

NOTE: DATA statement used (Total process time):

      real time           0.00 seconds

      cpu time            0.00 seconds

255  ;

256

257  run;

chouchou
Calcite | Level 5

Hi Reeza,

Even if I changed the length of variable a to 3, error still exists. By the way, if the data set is created with error, whether should we call the data set is created or not created? Thank you.

12   data temp;
13   length a 3 b 3 x;
                     -
                     22
1    1
     -
     352
ERROR 22-322: Expecting a numeric constant.

ERROR 352-185: The length of numeric variables is 3-8.

14   input a b x;
15   cards;

NOTE: The SAS System stopped processing this step because of errors.
WARNING: The data set WORK.TEMP may be incomplete.  When this step was stopped there were 0
         observations and 3 variables.
WARNING: Data set WORK.TEMP was not replaced because this step was stopped.
NOTE: DATA statement used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds

19   ;


20   run;

ballardw
Super User

Do you by chance have a typo for answer C and should read "A has an invalid length"?

jakarman
Barite | Level 11

Sas is using floating point for numbers. Remember the slider.

By that avoid the misperception on counting the digits you see. They are meaningless for the numeric length. The minimum storage used in bytes is often 3 sometimes 2 never 1.

---->-- ja karman --<-----
chouchou
Calcite | Level 5

Thanks Jaap!

chouchou
Calcite | Level 5

Thanks Jaap!

However, even if I changed the length of variable a to 3, error still exists. By the way, if the data set is created with error, whether should we call the data set is created or not created? Thanks again.

jakarman
Barite | Level 11

Chouchou, The length statement is defining: variable(s) length variable(s) length    etc. Those are always two words and the length can be numeric or string (indicated by$).
The errors are often displayed with a  letter _  at the position the parser says it is wrong. With a monospace font (old hollerith cards) this will be aligned. In your post here it is a variable font. That _22 is at the position of the semicolon ;

It is telling then numeric constant after the x is missing.  

---->-- ja karman --<-----
chouchou
Calcite | Level 5


Hi Jaap,

Thank you for your quick reply. However I still don't understand why errors come out even if I changed the length of variable a to 3?

Can you please elaborate it for me, I would be greatly appreciate your help.

jakarman
Barite | Level 11

chouchou ,

I copied your log but only changed the character type to "courier new"

see where the error occurs not at the variable a but after x

12   data temp;
13   length a 3 b 3 x;
                     -
                     22
1    1
     -
     352
ERROR 22-322: Expecting a numeric constant.

ERROR 352-185: The length of numeric variables is 3-8

This should give no errors. It is not useful caused by floating point properties.

data temp;

length a 3 b 3 x 5 ;

---->-- ja karman --<-----
Tom
Super User Tom
Super User

Are you sure you copied the code from the question properly?

The addition of X to the LENGTH statement without a length following it is also an error and so none of answers is 100% correct.

But don't nit-pick the answers. 

C is still the best answer as it is the first error that will cause the data step to not run. 

A can be eliminated because just the inclusion of X in the INPUT statement will cause it to be created.

D can be eliminated because there is nothing wrong with length specified for B.

The intent of the step was to read the raw data and make a dataset.  The raw data will not be read.  Also note that if a dataset named TEMP already existed then it will not be replaced because of the error. So B can be eliminated.

sas-innovate-2024.png

Join us for SAS Innovate April 16-19 at the Aria in Las Vegas. Bring the team and save big with our group pricing for a limited time only.

Pre-conference courses and tutorials are filling up fast and are always a sellout. Register today to reserve your seat.

 

Register now!

How to Concatenate Values

Learn how use the CAT functions in SAS to join values from multiple variables into a single value.

Find more tutorials on the SAS Users YouTube channel.

Click image to register for webinarClick image to register for webinar

Classroom Training Available!

Select SAS Training centers are offering in-person courses. View upcoming courses for:

View all other training opportunities.

Discussion stats
  • 12 replies
  • 6421 views
  • 9 likes
  • 6 in conversation