admin 管理员组

文章数量: 1086019


2024年3月10日发(作者:直线异步电动机)

SAS Certificate Base Practice Questions and Detailed Answers

Chapter 1: Basic Concepts

Chapter 2: Referencing Files and Setting Options

Chapter 3: Editing and Debugging SAS Programs

Chapter 4: Creating List Reports

Chapter 5: Creating SAS Data Sets from Raw Data

Chapter 6: Understanding DATA Step Processing

Chapter 7: Creating and Applying User-Defined Formats

Chapter 8: Creating Enhanced List and Summary Reports

Chapter 9: Producing Descriptive Statistics

Chapter 10: Producing HTML Output

Chapter 11: Creating and Managing Variables

Chapter 12: Reading SAS Data Sets

Chapter 13: Combining SAS Data Sets

Chapter 14: Transforming Data with SAS Functions

Chapter 15: Generating Data with DO Loops

Chapter 16: Processing Variables with Arrays

Chapter 17: Reading Raw Data in Fixed Fields

Chapter 18: Reading Free-Format Data

Chapter 19: Reading Date and Time Values

Chapter 20: Creating a Single Observation from Multiple Records

Chapter 21: Creating Multiple Observations from a Single Record

Chapter 22: Reading Hierarchical Files

Chapter 1: Basic Concepts Answer Key

1.

How many observations and variables does the data set below contain?

1

Correct

answer:

2.

Correct

answer:

a. 3 observations, 4 variables

b. 3 observations, 3 variables

c. 4 observations, 3 variables

d. can't tell because some values are missing

c

Rows in the data set are called observations, and columns are called variables. Missing values

don't affect the structure of the data set.

How many program steps are executed when the program below is processed?

data ;

infile jobs;

input date name $ job $;

run;

proc sort data=;

by name;

run;

proc print data=;

run;

a. three

b. four

c. five

d. six

a

When it encounters a DATA, PROC, or RUN statement, SAS stops reading statements and

executes the previous step in the program. The program above contains one DATA step and

two PROC steps, for a total of three program steps.

3.

What type of variable is the variable AcctNum in the data set below?

2

Correct

answer:

4.

Correct

answer:

a. numeric

b. character

c. can be either character or numeric

d. can't tell from the data shown

b

It must be a character variable, because the values contain letters and underscores, which are

not valid characters for numeric values.

What type of variable is the variable Wear in the data set below?

a. numeric

b. character

c. can be either character or numeric

d. can't tell from the data shown

a

It must be a numeric variable, because the missing value is indicated by a period rather than

by a blank.

5.

Which of the following variable names is valid?

3

Correct

answer:

6.

Correct

answer:

7.

Correct

answer:

a. 4BirthDate

b. $Cost

c. _Items_

d. Tax-Rate

c

Variable names follow the same rules as SAS data set names. They can be 1 to 32 characters

long, must begin with a letter (A–Z, either uppercase or lowercase) or an underscore, and can

continue with any combination of numbers, letters, or underscores.

Which of the following files is a permanent SAS file?

a. e

b. s

c. r1

d. all of the above

d

To store a file permanently in a SAS data library, you assign it a libref other than the default

Work. For example, by assigning the libref Profits to a SAS data library, you specify that files

within the library are to be stored until you delete them. Therefore, SAS files in the Sashelp

and Sasuser libraries are permanent files.

In a DATA step, how can you reference a temporary SAS data set named Forecast?

a. Forecast

b. st

c. st (after assigning the libref Sales)

d. only a and b above

d

To reference a temporary SAS file in a DATA step or PROC step, you can specify the one-

4

level name of the file (for example, Forecast) or the two-level name using the libref Work (for

example, st).

8.

What is the default length for the numeric variable Balance?

Correct

answer:

9.

Correct

answer:

a. 5

b. 6

c. 7

d. 8

d

The numeric variable Balance has a default length of 8. Numeric values (no matter how

many digits they contain) are stored in 8 bytes of storage unless you specify a different length.

How many statements does the following SAS program contain?

proc print data=le

label double;

var state day price1 price2; where state='NC';

label state='Name of State';

run;

a. three

b. four

c. five

d. six

c

The five statements are

PROC PRINT statement (two lines long)

5

VAR statement

WHERE statement (on the same line as the VAR statement)

LABEL statement

RUN statement (on the same line as the LABEL statement).

10.

What is a SAS data library?

a. a collection of SAS files, such as SAS data sets and catalogs

b. in some operating environments, a physical collection of SAS files

c. in some operating environments, a logically related collection of SAS files

d. all of the above

Correct

d

answer:

Every SAS file is stored in a SAS data library, which is a collection of SAS files, such as

SAS data sets and catalogs. In some operating environments, a SAS data library is a physical

collection of files. In others, the files are only logically related. In the Windows and UNIX

environments, a SAS data library is typically a group of SAS files in the same folder or

directory.

Chapter 2: Referencing Files and Setting Options

1.

If you submit the following program, how does the output look?

options pagesize=55 nonumber;

proc tabulate data=;

class actlevel;

var age height weight;

table actlevel,(age height weight)*mean;

6

run;

options linesize=80;

proc means data= min max maxdec=1;

var arterial heart cardiac urinary;

class survive sex;

run;

a. The PROC MEANS output has a print line width of 80 characters, but the PROC

TABULATE output has no print line width.

b. The PROC TABULATE output has no page numbers, but the PROC MEANS output

has page numbers.

c. Each page of output from both PROC steps is 55 lines long and has no page numbers,

and the PROC MEANS output has a print line width of 80 characters.

d. The date does not appear on output from either PROC step.

Correct:

c

answer:

When you specify a system option, it remains in effect until you change the option or end

your SAS session, so both PROC steps generate output that is printed 55 lines per page with

no page numbers. If you don't specify a system option, SAS uses the default value for that

system option.

2.

In order for the date values 05May1955 and 04Mar2046 to be read correctly, what value must

the YEARCUTOFF= option have?

a. a value between 1947 and 1954, inclusive

b. 1955 or higher

c. 1946 or higher

d. any value

Correct

d

answer:

As long as you specify an informat with the correct field width for reading the entire date

value, the YEARCUTOFF= option doesn't affect date values that have four-digit years.

3.

When you specify an engine for a library, you are always specifying

a. the file format for files that are stored in the library.

b. the version of SAS that you are using.

c. access to other software vendors' files.

d. instructions for creating temporary SAS files.

Correct

a

answer:

7

4.

Correct

answer:

5.

A SAS engine is a set of internal instructions that SAS uses for writing to and reading from

files in a SAS library. Each engine specifies the file format for files that are stored in the

library, which in turn enables SAS to access files with a particular format. Some engines

access SAS files, and other engines support access to other vendors' files.

Which statement prints a summary of all the files stored in the library named Area51?

a. proc contents data=area51._all_ nods;

b. proc contents data=area51 _all_ nods;

c. proc contents data=area51 _all_ noobs;

d. proc contents data=area51 _all_.nods;

a

To print a summary of library contents with the CONTENTS procedure, use a period to

append the _ALL_ option to the libref. Adding the NODS option suppresses detailed

information about the files.

The following PROC PRINT output was created immediately after PROC TABULATE

output. Which SAS system options were specified when the report was created?

Correct

answer:

6.

8

a. OBS=, DATE, and NONUMBER

b. PAGENO=1, and DATE

c. NUMBER and DATE only

d. none of the above

b

Clearly, the DATE and PAGENO= options are specified. Because the page number on the

output is 1, even though PROC TABULATE output was just produced. If you don't specify

PAGENO=, all output in the Output window is numbered sequentially throughout your SAS

session.

Which of the following programs correctly references a SAS data set named SalesAnalysis

that is stored in a permanent SAS library?

a. data nalysis;

set r1sales;

if sales>100000;

run;

b. data ;

set sales_nalysis;

if totalsales>50000;

run;

c. proc print data=r1;

var sales salesrep month;

run;

d. proc freq data=nalysis;

tables quarter*sales;

run;

9

Correct

b

answer:

7.

Correct

answer:

8.

Correct

answer:

Librefs must be 1 to 8 characters long, must begin with a letter or underscore, and can contain

only letters, numbers, or underscores. After you assign a libref, you specify it as the first

element in the two-level name for a SAS file.

Which time span is used to interpret two-digit year values if the YEARCUTOFF= option is

set to 1950?

a. 1950-2049

b. 1950-2050

c. 1949-2050

d. 1950-2000

a

The YEARCUTOFF= option specifies which 100-year span is used to interpret two-digit year

values. The default value of YEARCUTOFF= is 1920. However, you can override the default

and change the value of YEARCUTOFF= to the first year of another 100-year span. If you

specify YEARCUTOFF=1950, then the 100-year span will be from 1950 to 2049.

Asssuming you are using SAS code and not special SAS windows, which one of the

following statements is false?

a. LIBNAME statements can be stored with a SAS program to reference the SAS library

automatically when you submit the program.

b. When you delete a libref, SAS no longer has access to the files in the library.

However, the contents of the library still exist on your operating system.

c. Librefs can last from one SAS session to another.

d. You can access files that were created with other vendors' software by submitting a

LIBNAME statement.

c

The LIBNAME statement is global, which means that librefs remain in effect until you

modify them, cancel them, or end your SAS session. Therefore, the LIBNAME statement

assigns the libref for the current SAS session only. You must assign a libref before accessing

SAS files that are stored in a permanent SAS data library.

9.

What does the following statement do?

libname osiris spss 'c:myfilessasdatadata';

a. defines a library called Spss using the OSIRIS engine

b. defines a library called Osiris using the SPSS engine

c. defines two libraries called Osiris and Spss using the default engine

d. defines the default library using the OSIRIS and SPSS engines

10

Correct

b

answer:

In the LIBNAME statement, you specify the library name before the engine name. Both are

followed by the path.

10.

What does the following OPTIONS statement do?

options pagesize=15 nodate;

a. suppresses the date and limits the page size of the log

b. suppresses the date and limits the vertical page size for text output

c. suppresses the date and limits the vertical page size for text and HTML output

d. suppresses the date and limits the horizontal page size for text output

Correct

b

answer:

These options affect the format of listing output only. NODATE suppresses the date and

PAGESIZE= determines the number of rows to print on the page.

Chapter 3: Editing and Debugging SAS Programs Answer Key

1.

As you write and edit SAS programs it's a good idea to

a. begin DATA and PROC steps in column one.

11

b. indent statements within a step.

c. begin RUN statements in column one.

d. all of the above

Correct

d

answer:

2.

Correct

answer:

3.

Correct

Although you can write SAS statements in almost any format, a consistent layout enhances

readability and enables you to understand the program's purpose. It's a good idea to begin

DATA and PROC steps in column one, to indent statements within a step, to begin RUN

statements in column one, and to include a RUN statement after every DATA step or PROC

step.

What usually happens when an error is detected?

a. SAS continues processing the step.

b. SAS continues to process the step, and the log displays messages about the error.

c. SAS stops processing the step in which the error occurred, and the log displays

messages about the error.

d. SAS stops processing the step in which the error occurred, and the program output

displays messages about the error.

c

Syntax errors generally cause SAS to stop processing the step in which the error occurred.

When a program that contains an error is submitted, messages regarding the problem also

appear in the SAS log. When a syntax error is detected, the SAS log displays the word

ERROR, identifies the possible location of the error, and gives an explanation of the error.

A syntax error occurs when

a. some data values are not appropriate for the SAS statements that are specified in a

program.

b. the form of the elements in a SAS statement is correct, but the elements are not valid

for that usage.

c. program statements do not conform to the rules of the SAS language.

d. none of the above

c

answer:

12

Syntax errors are common types of errors. Some SAS system options, features of the Editor

window, and the DATA step debugger can help you identify syntax errors. Other types of

errors include data errors, semantic errors, and execution-time errors.

4.

How can you tell whether you have specified an invalid option in a SAS program?

Correct

answer:

5.

Correct

answer:

6.

a. A log message indicates an error in a statement that seems to be valid.

b. A log message indicates that an option is not valid or not recognized.

c. The message "PROC running" or "DATA step running" appears at the top of the

active window.

d. You can't tell until you view the output from the program.

b

When you submit a SAS statement that contains an invalid option, a log message notifies you

that the option is not valid or not recognized. You should recall the program, remove or

replace the invalid option, check your statement syntax as needed, and resubmit the corrected

program.

Which of the following programs contains a syntax error?

b

The DATA step contains a misspelled keyword (dat instead of data). However, this is such a

common (and easily interpretable) error that SAS produces only a warning message, not an

error.

What does the following log indicate about your program?

Correct

answer:

13

proc print data=99

var origin dest cargorev;

22

76

ERROR 22-322: Syntax error, expecting one of the

following:

;, (, DATA, DOUBLE, HEADING, LABEL,

N, NOOBS, OBS, ROUND, ROWS, SPLIT,

STYLE,

UNIFORM, WIDTH.

ERROR 76-322: Syntax error, statement will be

ignored.

11 run;

a. SAS identifies a syntax error at the position of the VAR statement.

b. SAS is reading VAR as an option in the PROC PRINT statement.

c. SAS has stopped processing the program because of errors.

d. all of the above

d

Because there is a missing semicolon at the end of the PROC PRINT statement, SAS

interprets VAR as an option in PROC PRINT and finds a syntax error at that location. SAS

stops processing programs when it encounters a syntax error.

14

Chapter 4: Creating List Reports Answer Key

1.

Which PROC PRINT step below creates the following output?

Correct

answer:

2.

Correct

15

c

The DATA= option specifies the data set that you are listing, and the ID statement

replaces the Obs column with the specified variable. The VAR statement specifies

variables and controls the order in which they appear, and the WHERE statement

selects rows based on a condition. The LABEL option in the PROC PRINT statement

causes the labels that are specified in the LABEL statement to be displayed.

Which of the following PROC PRINT steps is correct if labels are not stored with the

data set?

a

answer:

16

You use the DATA= option to specify the data set to be printed. The LABEL option

specifies that variable labels appear in output instead of variable names.

3.

Which of the following statements selects from a data set only those observations for

Correct

answer:

4.

Correct

answer:

which the value of the variable Style is RANCH, SPLIT, or TWOSTORY?

d

In the WHERE statement, the IN operator enables you to select observations based on

several values. You specify values in parentheses and separate them by spaces or

commas. Character values must be enclosed in quotation marks and must be in the

same case as in the data set.

If you want to sort your data and create a temporary data set named Calc to store the

sorted data, which of the following steps should you submit?

c

In a PROC SORT step, you specify the DATA= option to specify the data set to sort.

The OUT= option specifies an output data set. The required BY statement specifies the

variable(s) to use in sorting the data.

5.

Which options are used to create the following PROC PRINT output?

17

Correct

answer:

6.

13:27 Monday, March 22, 1999

Patient Arterial Heart Cardiac Urinary

203 88 95 66 110

54 83 183 95 0

664 72 111 332 12

210 74 97 369 0

101 80 130 291 0

a. the DATE system option and the LABEL option in PROC PRINT

b. the DATE and NONUMBER system options and the DOUBLE and NOOBS

options in PROC PRINT

c. the DATE and NONUMBER system options and the DOUBLE option in

PROC PRINT

d. the DATE and NONUMBER system options and the NOOBS option in PROC

PRINT

b

The DATE and NONUMBER system options cause the output to appear with the date

but without page numbers. In the PROC PRINT step, the DOUBLE option specifies

double spacing, and the NOOBS option removes the default Obs column.

Which of the following statements can you use in a PROC PRINT step to create this

output?

Correct

answer:

7.

Correct

answer:

8.

18

d

You do not need to name the variables in a VAR statement if you specify them in the

SUM statement, but you can. If you choose not to name the variables in the VAR

statement as well, then the SUM statement determines the order of the variables in the

output.

What happens if you submit the following program?

proc sort data=es;

run;

proc print data=es;

var age height weight pulse;

where sex='F';

run;

a. The PROC PRINT step runs successfully, printing observations in their sorted

order.

b. The PROC SORT step permanently sorts the input data set.

c. The PROC SORT step generates errors and stops processing, but the PROC

PRINT step runs successfully, printing observations in their original (unsorted)

order.

d. The PROC SORT step runs successfully, but the PROC PRINT step generates

errors and stops processing.

c

The BY statement is required in PROC SORT. Without it, the PROC SORT step fails.

However, the PROC PRINT step prints the original data set as requested.

If you submit the following program, which output does it create?

proc sort data= out=;

Correct

answer:

19

by months amount;

run;

proc print data= noobs;

var months;

sum amount payment;

where months<360;

run;

a.

b.

c.

d.

a

Column totals appear at the end of the report in the same format as the values of the

variables, so b is incorrect. is sorted by Month and Amount, so c is

incorrect. The program sums both Amount and Payment, so d is incorrect.

9.

Choose the statement below that selects rows which

20

Correct

answer:

10.

the amount is less than or equal to $5000

the account is 101-1092 or the rate equals 0.095.

c

To ensure that the compound expression is evaluated correctly, you can use parentheses

to group

account='101-1092' or rate eq 0.095

OBS Account Amount Rate MonthsPayment

1 101-1092 $22,000 10.00%60 $467.43

2 101-1731 $114,0009.50% 360 $958.57

3 101-1289 $10,000 10.50%36 $325.02

4 101-3144 $3,500 10.50%12 $308.52

5 103-1135 $8,700 10.50%24 $403.47

6 103-1994 $18,500 10.00%60 $393.07

7 103-2335 $5,000 10.50%48 $128.02

8 103-3864 $87,500 9.50% 360 $735.75

9 103-3891 $30,000 9.75% 360 $257.75

For example, from the data set above, a and b above select observations 2 and 8 (those

that have a rate of 0.095); c selects no observations; and d selects observations 4 and 7

(those that have an amount less than or equal to 5000).

What does PROC PRINT display by default?

a. PROC PRINT does not create a default report; you must specify the rows and

columns to be displayed.

b. PROC PRINT displays all observations and variables in the data set. If you

want an additional column for observation numbers, you can request it.

c. PROC PRINT displays columns in the following order: a column for

observation numbers, all character variables, and all numeric variables.

d. PROC PRINT displays all observations and variables in the data set, a column

for observation numbers on the far left, and variables in the order in which they

21

occur in the data set.

Correct

d

answer:

You can remove the column for observation numbers. You can also specify the

variables you want, and you can select observations according to conditions.

Chapter 5: Creating SAS Data Sets from Raw Data Answer Key

1.

Which SAS statement associates the fileref Crime with the raw data file

C:StatesDataCrime?

a. filename crime 'c:statesdatacrime';

b. filename crime c:statesdatacrime;

c. fileref crime 'c:statesdatacrime';

d. filename 'c:statesdatacrime' crime;

Correct

a

answer:

22

Before you can read your raw data, you must reference the raw data file by creating a

fileref. You assign a fileref by using a FILENAME statement in the same way that

you assign a libref by using a LIBNAME statement.

2.

Filerefs remain in effect until

Correct

answer:

3.

Correct

answer:

4.

a. you change them.

b. you cancel them.

c. you end your SAS session.

d. all of the above

d

Like LIBNAME statements, FILENAME statements are global; they remain in effect

until you change them, cancel them, or end your SAS session.

Which statement identifies the name of a raw data file to be read with the fileref

Products and specifies that the DATA step read only records 1-15?

a. infile products obs 15;

b. infile products obs=15;

c. input products obs=15;

d. input products 1-15;

b

You use an INFILE statement to specify the raw data file to be read. You can specify a

fileref or an actual filename (in quotation marks). The OBS= option in the INFILE

statement enables you to process only records 1 through n.

Which of the following programs correctly writes the observations from the data set

below to a raw data file?

Correct

answer:

23

d

The keyword _NULL_ in the DATA statement enables you to use the power of the

DATA step without actually creating a SAS data set. You use the FILE and PUT

statements to write out the observations from a SAS data set to a raw data file. The

FILE statement specifies the raw data file and the PUT statement describes the lines to

write to the raw data file. The filename and location that are specified in the FILE

statement must be enclosed in quotation marks.

5.

Which raw data file can be read using column input?

24

Correct

answer:

6.

a.

b.

c.

d. all of the above

b

Column input is appropriate only in some situations. When you use column input,

your data must be standard character or numeric values, and they must be in fixed

fields. That is, values for a particular variable must be in the same location in all

records.

Which program creates the output shown below?

Correct

answer:

7.

25

a

The INPUT statement creates a variable using the name that you assign to each field.

Therefore, when you write an INPUT statement, you need to specify the variable

names exactly as you want them to appear in the SAS data set.

Which statement correctly reads the fields in the following order: StockNumber,

Price, Item, Finish, Style?

Field Name Start Column End Column Data Type

StockNumber 1 3 character

Finish 5 9 character

Style 11 18 character

Item 20 24 character

Price 27 32 numeric

Correc t

answer:

8.

Correct

answer:

9.

26

b

You can use column input to read fields in any order. You must specify the variable

name to be created, identify character values with a $, and name the correct starting

column and ending column for each field.

Which statement correctly re-defines the values of the variable Income as 100

percent higher?

a. income=income*1.00;

b. income=income+(income*2.00);

c. income=income*2;

d. income=*2;

c

To re-define the values of the variable Income in an Assignment statement, you

specify the variable name on the left side of the equal sign and an appropriate

expression including the variable name on the right side of the equal sign.

Which program correctly reads instream data?

a. data n;

input datalines;

if country='JAPAN';

MonthAvg=amount/12;

1998 US CARS 194324.12

1998 US TRUCKS 142290.30

1998 CANADA CARS 10483.44

1998 CANADA TRUCKS 93543.64

1998 MEXICO CARS 22500.57

1998 MEXICO TRUCKS 10098.88

1998 JAPAN CARS 15066.43

1998 JAPAN TRUCKS 40700.34

;

b. data n;

input Year 1-4 Country $ 6-11

Vehicle $ 13-18 Amount 20-28;

if country='JAPAN';

MonthAvg=amount/12;

datalines;

run;

c. data n;

input Year 1-4 Country 6-11

Vehicle 13-18 Amount 20-28;

if country='JAPAN';

MonthAvg=amount/12;

datalines;

1998 US CARS 194324.12

1998 US TRUCKS 142290.30

1998 CANADA CARS 10483.44

1998 CANADA TRUCKS 93543.64

1998 MEXICO CARS 22500.57

1998 MEXICO TRUCKS 10098.88

1998 JAPAN CARS 15066.43

1998 JAPAN TRUCKS 40700.34

;

d. data n;

input Year 1-4 Country $ 6-11

Vehicle $ 13-18 Amount 20-28;

if country='JAPAN';

MonthAvg=amount/12;

datalines;

1998 US CARS 194324.12

1998 US TRUCKS 142290.30

1998 CANADA CARS 10483.44

1998 CANADA TRUCKS 93543.64

1998 MEXICO CARS 22500.57

1998 MEXICO TRUCKS 10098.88

1998 JAPAN CARS 15066.43

1998 JAPAN TRUCKS 40700.34

;

27

Correct

d

answer:

To read instream data, you specify a DATALINES statement and data lines, followed

by a null statement (single semicolon) to indicate the end of the input data. Program a

contains no DATALINES statement, and the INPUT statement doesn't specify the

fields to read. Program b contains no data lines, and the INPUT statement in program

c doesn't specify the necessary dollar signs for the character variables Country and

Vehicle.

10.

Which SAS statement subsets the raw data shown below so that only the observations

in which Sex (in the second field) has a value of F are processed?

28

a. if sex=f;

b. if sex=F;

c. if sex='F';

d. a or b

Correct

c

answer:

To subset data, you can use a subsetting IF statement in any DATA step to process

only those observations that meet a specified condition. Because Sex is a character

variable, the value F must be enclosed in quotation marks and must be in the same

case as in the data set.

Chapter 6: Understanding DATA Step Processing Answer Key

1.

Which of the following is not created during the compilation phase?

Correct

answer:

2.

Correct

answer:

3.

Correct

answer:

29

a. the data set descriptor

b. the first observation

c. the program data vector

d. the _N_ and _ERROR_ automatic variables

b

At the beginning of the compilation phase, the program data vector is created. The program

data vector includes the two automatic variables _N_ and _ERROR_. The descriptor portion

of the new SAS data set is created at the end of the compilation phase. The descriptor portion

includes the name of the data set, the number of observations and variables, and the names and

attributes of the variables. Observations are not written until the execution phase.

During the compilation phase, SAS scans each statement in the DATA step, looking for syntax

errors. Which of the following is not considered a syntax error?

a. incorrect values and formats

b. invalid options or variable names

c. missing or invalid punctuation

d. missing or misspelled keywords

a

Syntax checking can detect many common errors, but it cannot verify the values of variables

or the correctness of formats.

Unless otherwise directed, the DATA step executes

a. once for each compilation phase.

b. once for each DATA step statement.

c. once for each record in the input file.

d. once for each variable in the input file.

c

30

The DATA step executes once for each record in the input file, unless otherwise directed.

4.

At the beginning of the execution phase, the value of _N_ is 1, the value of _ERROR_ is 0,

Correct

answer:

5.

Correct

answer:

6.

and the values of the remaining variables are set to

a. 0

b. 1

c. undefined

d. missing

d

The remaining variables are initialized to missing. Missing numeric values are represented by

periods, and missing character values are represented by blanks.

Suppose you run a program that causes three DATA step errors. What is the value of the

automatic variable _ERROR_ when the observation that contains the third error is processed?

a. 0

b. 1

c. 2

d. 3

b

The default value of _ERROR_ is 0, which means there is no error. When an error occurs,

whether it is one error or multiple errors, the value is set to 1.

Which of the following actions occurs at the end of the DATA step?

a. The automatic variables _N_ and _ERROR_ are incremented by one.

b. The DATA step stops execution.

c. The descriptor portion of the data set is written.

d. The values of variables created in programming statements are re-set to missing in the

program data vector.

31

Correct

d

answer:

By default, at the end of the DATA step, the values in the program data vector are written to

the data set as an observation, the value of the automatic variable _N_ is incremented by one,

control returns to the top of the DATA step, and the values of variables created in

programming statements are set to missing. The automatic variable _ERROR_ retains its

value.

7.

Look carefully at the DATA step shown below. Based on the INPUT statement, in what order

Correct

answer:

8.

Correct

answer:

will the variables be stored in the new data set?

data ;

infile invent;

input IDnum $ 15-19 Item $ 1-13 Instock 21-22

BackOrd 24-25;

Total=instock+backord;

run;

a. IDnum Item InStock BackOrd Total

b. Item IDnum InStock BackOrd Total

c. Total IDnum Item InStock BackOrd

d. Total Item IDnum InStock BackOrd

a

The order in which variables are defined in the DATA step determines the order in which the

variables are stored in the data set.

If SAS cannot interpret syntax errors, then

a. data set variables will contain missing values.

b. the DATA step does not compile.

c. the DATA step still compiles, but it does not execute.

d. the DATA step still compiles and executes.

c

When SAS can't interpret syntax errors, the DATA step compiles, but it does not execute.

9.

What is wrong with this program?

32

Correct

answer:

10.

Correct

answer:

data ;

infile invent

input Item $ 1-13 IDnum $ 15-19 Instock 21-22

BackOrd 24-25;

total=instock+backord;

run;

a. missing semicolon on second line

b. missing semicolon on third line

c. incorrect order of variables

d. incorrect variable type

a

A semicolon is missing from the second line. It will cause an error because the INPUT

statement will be interpreted as invalid INFILE statement options.

Look carefully at this section of a SAS session log. Based on the note, what was the most

likely problem with the DATA step?

NOTE: Invalid data for IDnum in line 7 15-19.

RULE: ----+----1----+----2----+----3----+----4

7 Bird Feeder LG088 3 20

Item=Bird Feeder IDnum=. InStock=3 BackOrd=20

Total=23 _ERROR_=1 _N_=1

a. A keyword was misspelled in the DATA step.

b. A semicolon was missing from the INFILE statement.

c. A variable was misspelled in the INPUT statement.

d. A dollar sign was missing in the INPUT statement.

d

The third line of the log displays the values for IDnum, which are clearly character values.

The fourth line displays the values in the program data vector and shows that the values for

IDnum are missing, even though the other values are correctly assigned. Thus, it appears that

numeric values were expected for IDnum. A dollar sign, to indicate character values, must be

missing from the INPUT statement.

Chapter 7: Creating and Applying User-Defined Formats Answer Key

33

1.

If you don't specify the LIBRARY= option, your formats are stored in s, and they

exist

a. only for the current procedure.

b. only for the current DATA step.

c. only for the current SAS session.

d. permanently.

Correct

c

answer:

34

If you do not specify the LIBRARY= option, formats are stored in a default format catalog

named s. As the libref Work implies, any format that is stored in s

is a temporary format that exists only for the current SAS session.

2.

Which of the following statements will store your formats in a permanent catalog?

Correct

answer:

3.

Correct

answer:

a

To store formats in a permanent catalog, you first write a LIBNAME statement to associate the

libref with the SAS data library in which the catalog will be stored. Then add the LIB= (or

LIBRARY=) option to the PROC FORMAT statement, specifying the name of the catalog.

When creating a format with the VALUE statement, the new format's name

cannot end with a number

cannot end with a period

cannot be the name of a SAS format, and

a. cannot be the name of a data set variable.

b. must be at least two characters long.

c. must be at least eight characters long.

d. must begin with a dollar sign ($) if used with a character variable.

d

The name of a format that is created with a VALUE statement must begin with a dollar sign

($) if it applies to a character variable.

4.

Which of the following FORMAT procedures is written correctly?

35

Correct

answer:

5.

b

A semicolon is needed after the PROC FORMAT statement. The VALUE statement begins

with the keyword VALUE and ends with a semicolon after all the labels have been defined.

Which of these is false? Ranges in the VALUE statement can specify

a. a single value, such as 24 or 'S'.

b. a range of numeric values, such as 0–1500.

c. a range of character values, such as 'A–'M'.

d. a list of numeric and character values separated by commas, such as

90,'B',180,'D',270.

36

Correct

d

answer:

You can list values separated by commas, but the list must contain either all numeric values or

all character values. Data set variables are either numeric or character.

6.

How many characters can be used in a label?

Correct

answer:

7.

Correct

answer:

8.

a. 40

b. 96

c. 200

d. 256

d

When specifying a label, enclose it in quotation marks and limit the label to 256 characters.

Which keyword can be used to label missing values as well as any values that are not specified

in a range?

a. LOW

b. MISS

c. MISSING

d. OTHER

d

MISS and MISSING are invalid keywords, and LOW does not include missing values. The

keyword OTHER can be used in the VALUE statement to label missing values as well as any

values that are not specifically included in a range.

You can place the FORMAT statement in either a DATA step or a PROC step. What happens

when you place the FORMAT statement in a DATA step?

a. You temporarily associate the formats with variables.

b. You permanently associate the formats with variables.

c. You replace the original data with the format labels.

d. You make the formats available to other data sets

37

Correct

b

answer:

By placing the FORMAT statement in a DATA step, you permanently associate the defined

formats with variables.

9.

The format JOBFMT was created in a FORMAT procedure. Which FORMAT statement will

Correct

answer:

10.

Correct

answer:

apply it to the variable JobTitle in the program output?

a. format jobtitle jobfmt;

b. format jobtitle jobfmt.;

c. format jobtitle=jobfmt;

d. format jobtitle='jobfmt';

b

To associate a user-defined format with a variable, place a period at the end of the format

name when it is used in the FORMAT statement.

Which keyword, when added to the PROC FORMAT statement, will display all the formats in

your catalog?

a. CATALOG

b. LISTFMT

c. FMTCAT

d. FMTLIB

d

Adding the keyword FMTLIB to the PROC FORMAT statement displays a list of all the

formats in your catalog, along with descriptions of their values.

Chapter 8: Creating Enhanced List and Summary Reports Answer Key

38

1.

If Style has four unique values and you submit the following program, which output do you

get? (Assume that all the other variables are numeric.)

proc report data= nowd;

column style sqfeet bedrooms price;

define style / group;

run;

39

a.

b.

c.

Correct

answer:

2.

Correct

answer:

3.

40

d.

a

This program creates a summary report, which consolidates into one row all observations from

the data set that have a unique combination of values for the variable Style.

When you define an order variable,

a. the detail rows are ordered according to their formatted values.

b. you can't create summary reports.

c. PROC REPORT displays only the first occurrence of each order variable value in a set

of rows that have the same value for all order variables.

d. all of the above

d

Order variables do order rows according to the formatted values of the order variable, and

PROC REPORT suppresses repetitious printing of order values. However, you can't use order

variables in a summary report.

Which attributes or options are reflected in this PROC REPORT output?

Correct

answer:

4.

41

Style SqFeet Price

RANCH 720 $34,550

TWOSTORY 1040 $55,850

SPLIT 1190 $65,850

TWOSTORY 1240 $69,250

RANCH 1250 $64,000

SPLIT 1305 $73,650

CONDO 1390 $79,350

CONDO 1400 $80,050

RANCH 1500 $86,650

RANCH 1535 $89,100

SPLIT 1615 $94,450

TWOSTORY 1745 $102,950

TWOSTORY 1810 $107,250

CONDO 1860 $110,700

CONDO 2105 $127,150

a. SKIPLINE and FORMAT=

b. CENTER, HEADLINE, HEADSKIP, and either WIDTH=, SPACING=, or

FORMAT=

c. SPACING= only

d. CENTER, FORMAT=, and HEADLINE

b

The HEADLINE option underlines the headings, and the HEADSKIP option skips a line

between the headings and the rows in the report. Also, Style is centered, and the column for

Price is wider than the default.

To create a summary report that shows the average number of bedrooms and the maximum

number of baths for each style of house, which DEFINE statements do you use in your PROC

REPORT step?

Correct

answer:

5.

42

b

To create a summary report, you must define a group variable. To produce the statistics that

you want, you must specify the MEAN and MAX statistics for Bedrooms and Baths.

Which program does not contain an error?

Correct

answer:

6.

43

c

Program c correctly specifies a computed variable in the COLUMN statement, defines the

variable in a DEFINE statement, and computes values using the form tic in

a compute block.

What output does this PROC REPORT step produce?

proc report data= nowd;

column style sqfeet bedrooms price;

run;

a. a list report ordered by values of the first variable in the COLUMN statement

44

b. a summary report ordered by values of the first variable in the COLUMN statement

c. a list report that displays a row for each observation in the input data set and which

calculates the SUM statistic for numeric variables

d. a list report that calculates the N (frequency) statistic for character variables

Correct

c

answer:

7.

Correct

By default, PROC REPORT displays character variables as display variables. A report that

contains one or more display variables has a detail row for each observation in the data set. By

default, PROC REPORT displays numeric variables as analysis variables, which are used to

calculate the default statistic SUM.

Which of the following programs produces this output?

c

answer:

45

In this output, the table cells contain a frequency count for each unique value of an across

variable, Style. You don't have to specify across variable values in your PROC REPORT

step.

8.

If you submit this program, where does your PROC REPORT output appear?

Correct

answer:

9.

Correct

answer:

proc report data= nowd;

column style sqfeet bedrooms price;

define style / group;

run;

a. in the PROC REPORT window

b. as HTML and/or SAS listing output

c. both of the above

d. neither of the above

b

In nonwindowing mode, your PROC REPORT output appears as HTML and/or as SAS listing

output, depending on your option settings.

How can you create output with headings that break as shown below?

Style of Average Maximum

House Bedrooms Baths

CONDO 2.75 2.5

RANCH 2.25 3

SPLIT 2.666666 3

TWOSTORY 3 3

a. You must specify the SPLIT= option in the PROC REPORT statement and use the

split character in column headings in DEFINE statements.

b. You must use the default split character in column headings in DEFINE statements.

c. You must specify either the WIDTH= or the SPACING= attribute in DEFINE

statements.

d. These headings split this way by default.

d

By default, columns for character variables are the same as the variable's length, and columns

for numeric variables have a width of 9. So these headings split this way by default.

46

10.

Suppose you want to create a report using both character and numeric variables. If you don't

Correct

answer:

1.

Correct

answer:

2.

use any DEFINE statements in your PROC REPORT step,

a. your PROC REPORT step will not execute successfully.

b. you can produce only list reports.

c. you can order rows by specifying options in the PROC REPORT statement.

d. you can produce only summary reports.

b .Unless you use DEFINE statements to define order variables or group variables, you can't

order rows or produce summary reports. However, DEFINE statements are not required in all

PROC REPORT steps.

Chapter 9: Producing Descriptive Statistics Answer Key

The default statistics produced by the MEANS procedure are n-count, mean, minimum,

maximum, and

a. median.

b. range.

c. standard deviation.

d. standard error of the mean.

c

By default, the MEANS procedure produces the n-cout, mean, minimum, and standard

deviation.

Which statement will limit a PROC MEANS analysis to the variables Boarded, Transfer,

and Deplane?

a. by boarded transfer deplane;

b. class boarded transfer deplane;

c. output boarded transfer deplane;

d. var boarded transfer deplane;

Correct

d

answer:

To specify the variables that PROC MEANS analyzes, add a VAR statement and list the

variable names.

3.

The data set includes the following variables. Which is a poor candidate for

47

Correct

answer:

4.

Correct

answer:

5.

PROC MEANS analysis?

a. IDnum

b. Age

c. Height

d. Weight

a

Unlike Age, Height, or Weight, the values of IDnum are unlikely to yield any useful

statistics.

Which of the following statements is true regarding BY-group processing?

a. BY variables must be either indexed or sorted.

b. Summary statistics are computed for BY variables.

c. BY-group processing is preferred when you are categorizing data that contains few

variables.

d. BY-group processing overwrites your data set with the newly grouped observations.

a

Unlike CLASS processing, BY-group processing requires that your data already be indexed or

sorted in the order of the BY variables. You might need to run the SORT procedure before

using PROC MEANS with a BY group.

Which group processing statement produced the PROC MEANS output shown below?

Correct

answer:

6.

48

a. class sex survive;

b. class survive sex;

c. by sex survive;

d. by survive sex;

b

A CLASS statement produces a single large table, whereas BY-group processing creates a

series of small tables. The order of the variables in the CLASS statement determines their

order in the output table.

Which program can be used to create the following output?

Correct

answer:

7.

Correct

answer:

8.

49

d

You can use either PROC MEANS or PROC SUMMARY to create the table. Adding a

PRINT option to the PROC SUMMARY statement produces the same reports as if you used

PROC MEANS.

By default, PROC FREQ creates a table of frequencies and percentages for which data set

variables?

a. character variables

b. numeric variables

c. both character and numeric variables

d. none: variables must always be specified

c

By default, the PROC FREQ creates a table for all variables in a data set.

Frequency distributions work best with variables that contain

50

a. continuous values.

b. numeric values.

c. categorical values.

d. unique values.

Correct

c

answer:

9.

Both continuous values and many unique values can result in lengthy and meaningless tables.

Frequency distributors work best with categorical values.

Which PROC FREQ step produced this two-way table?

Correct

answer:

10.

51

d

An asterisk is used to join the variables in a two-way TABLES statement. The first variable

forms the table rows, and the second variable forms the table columns.

Which PROC FREQ step produced this table?

Correct

answer:

1.

52

d

An asterisk is used to join the variables in crosstabulation tables. The only results that are

shown in this table are cell percentages. The NOFREQ option suppresses cell frequencies, the

NOROW option suppresses row percentages, and the NOCOL option suppresses column

percentages.

Chapter 10: Producing HTML Output Answer Key

Using ODS statements, how many types of output can you generate concurrently?

a. 1 (only listing output)

b. 2

c. 3

53

d. as many as you want

Correct

d

answer:

You can generate any number of output types as long as you open the ODS destination for

each type of output that you want to create.

2.

If ODS is set to its default settings, what types of output are created by the code below?

Correct

answer:

3.

Correct

answer:

4.

ods html file='c:';

ods pdf file='c:';

a. HTML and PDF

b. PDF only

c. HTML, PDF, and listing

d. No output is created because ODS is closed by default.

c

Listing output is created by default, so these statements create HTML, PDF, and listing output.

What is the purpose of closing the Listing destination in the code shown below?

ods listing close;

ods html ... ;

a. It conserves system resources.

b. It simplifies your program.

c. It makes your program compatible with other hardware platforms.

d. It makes your program compatible with previous versions of SAS software.

a

By default, SAS programs produce listing output. If you want only HTML output, it's a good

idea to close the Listing destination before creating HTML output, because an open destination

uses system resources.

When the code shown below is run, what will the file D: contain?

Correct

answer:

5.

Correct

answer:

6.

54

ods html body='d:';

proc print data=;

run;

proc print data=;

run;

ods html close;

a. The PROC PRINT output for .

b. The PROC PRINT output for .

c. The PROC PRINT output for both and .

d. Nothing. No output will be written to D:.

c

When multiple procedures are run while HTML output is open, procedure output is appended

to the same body file.

When the code shown below is run, what file will be loaded by the links in

D:?

ods html body='d:'

contents='d:'

frame='d:';

a. D:

b. D:

c. D:

d. There are no links from the file D:.

a

The CONTENTS= option creates a table of contents containing links to the body file,

D:.

The table of contents created by the CONTENTS= option contains a numbered heading for

a. each procedure.

b. each procedure that creates output.

c. each procedure and DATA step.

d. each HTML file created by your program.

Correct

b

answer:

55

7.

Correct

answer:

8.

Correct

answer:

The table of contents contains a numbered heading for each procedure that creates output.

When the code shown below is run, what will the file D: display?

ods html body='d:'

contents='d:'

frame='d:';

a. The file D:.

b. The file D:.

c. The files D: and D:.

d. It displays no other files.

c

The FRAME= option creates an HTML file that integrates the table of contents and the body

file.

What is the purpose of the URL= suboptions shown below?

ods html body='d:' (url='')

contents='d:'

(url='')

frame='d:';

a. To create absolute link addresses for loading the files from a server.

b. To create relative link addresses for loading the files from a server.

c. To allow HTML files to be loaded from a local drive.

d. To send HTML output to two locations.

b

Specifying the URL= suboption in the file specification provides a URL that ODS uses in the

56

links it creates. Specifying a simple (one name) URL creates a relative link address to the file.

9.

Which ODS HTML option was used in creating the following table?

Correct

answer:

10.

Correct

answer:

a. format=brown

b. format='brown'

c. style=brown

d. style='brown'

c

You can change the appearance of HTML output by using the STYLE= option in the ODS

HTML statement. The style name doesn't need quotation marks.

What is the purpose of the PATH= option?

ods html path='d:output' (url=none)

body=''

contents=''

frame='';

a. It creates absolute link addresses for loading HTML files from a server.

b. It creates relative link addresses for loading HTML files from a server.

c. It allows HTML files to be loaded from a local drive.

d. It specifies the location of HTML file output.

d

You use the PATH= option to specify the location for HTML output. When you use the

PATH= option, you don't need to specify the full pathname for the body, contents, or frame

files.

Chapter 11: Creating and Managing Variables Answer Key

1.

Which program creates the output shown below?

57

Correct

answer:

2.

58

a. data test2;

infile furnture;

input StockNum $ 1-3 Finish $ 5-9 Style $ 11-18

Item $ 20-24 Price 26-31;

if finish='oak' then delete;

retain TotPrice 100;

totalprice+price;

drop price;

run;

proc print data=test2 noobs;

run;

b. data test2;

infile furnture;

input StockNum $ 1-3 Finish $ 5-9 Style $ 11-18

Item $ 20-24 Price 26-31;

if finish='oak' and price<200 then delete;

TotalPrice+price;

run;

proc print data=test2 noobs;

run;

c. data test2(drop=price);

infile furnture;

input StockNum $ 1-3 Finish $ 5-9 Style $ 11-18

Item $ 20-24 Price 26-31;

if finish='oak' and price<200 then delete;

TotalPrice+price;

run;

proc print data=test2 noobs;

run;

d. data test2;

infile furnture;

input StockNum $ 1-3 Finish $ 5-9 Style $ 11-18

Item $ 20-24 Price 26-31;

if finish=oak and price<200 then delete price;

TotalPrice+price;

run;

proc print data=test2 noobs;

run;

c

Program c correctly deletes the observation in which the value of Finish is oak and the value of Price is less than

also creates TotalPrice by summing the variable Price down observations, then drops Price by using the D

data set option in the DATA statement.

How is the variable Amount labeled and formatted in the PROC PRINT output?

Correct

answer:

3.

Correct

answer:

59

data credit;

infile creddata;

input Account $ 1-5 Name $ 7-25 Type $ 27

Transact $ 29-35 Amount 37-50;

label amount='Amount of Loan';

format amount dollar12.2;

run;

proc print data=credit label;

label amount='Total Amount Loaned';

format amount comma10.;

run;

a. label Amount of Loan, format DOLLAR12.2

b. label Total Amount Loaned, format COMMA10.

c. label Amount, default format

d. The PROC PRINT step does not execute because two labels and two formats are assigned to the same varia

b

The PROC PRINT output displays the label Total Amount Loaned for the variable Amount and formats this variab

the COMMA10. format. Temporary labels or formats that are assigned in a PROC step override permanent labels o

that are assigned in a DATA step.

Consider the IF-THEN statement shown below. When the statement is executed, which expression is evaluated firs

if finlexam>=95

and (research='A' or

(project='A' and present='A'))

then Grade='A+';

a. finlexam>=95

b. research='A'

c. project='A' and present='A'

d. research='A' or

e. (project='A' and present='A')

c

Logical comparisons that are enclosed in parentheses are evaluated as true or false before they are compared to othe

expressions. In the example above, the AND comparison within the nested parentheses is evaluated before being co

the OR comparison.

60

4.

Consider the small raw data file and program shown below. What is the value of Count after the fourth record is r

Correct

answer:

5.

data s;

infile numbers;

input Tens 2-3;

Count+tens;

run;

a. missing

b. 0

c. 30

d. 70

d

The Sum statement adds the result of the expression that is on the right side of the plus sign to the numeric variable

the left side. The new value is then retained for subsequent observations. The Sum statement treats the missing valu

so the value of Count in the fourth observation would be 10+20+0+40, or 70.

Now consider the revised program below. What is the value of Count after the third observation is read?

data s;

infile numbers;

input Tens 2-3;

retain Count 100;

count+tens;

run;

61

a. missing

b. 0

c. 100

d. 130

Correct

d

answer:

6.

Correct

answer:

7.

The RETAIN statement assigns an initial value of 100 to the variable Count, so the value of Count in the third ob

would be 100+10+20+0, or 130.

For the observation shown below, what is the result of the IF-THEN statement?

Status Type Count Action Control

ok 3 12 E Go

if status='OK' and type=3

then Count+1;

if status='S' or action='E'

then Control='Stop';

a. Count = 12 Control = Go

b. Count = 13 Control = Stop

c. Count = 12 Control = Stop

d. Count = 13 Control = Go

c

You must enclose character values in quotation marks, and you must specify them in the same case in which they a

the data set. The value ok is not identical to OK, so the value of Count is not changed by the IF-THEN statement.

Which of the following can determine the length of a new variable?

a. the length of the variable's first value

b. the assignment statement

c. the LENGTH statement

d. all of the above

62

Correct

d

answer:

The length of a variable is determined by its first reference in the DATA step. When creating a new character varia

allocates as many bytes of storage space as there are characters in the first value that it encounters for that variable.

reference to a new variable can also be made with a LENGTH statement or an assignment statement. The length of

8.

Correct

answer:

9.

variable's first value does not matter once the variable has been referenced in your program.

Which set of statements is the most efficient equivalent to the code shown below?

a

Answer a is the most efficient. You can write multiple ELSE statements to specify a series of mutually exclusive co

The ELSE statement must immediately follow the IF-THEN statement in your program. An ELSE statement execu

the previous IF-THEN/ELSE statement is false.

What is the length of the variable Type, as created in the DATA step below?

data n;

set s;

TotLoan+payment;

if code='1' then Type='Fixed';

else Type='Variable';

length type $ 10;

run;

Correct

answer:

10.

Correct

answer:

63

a. 5

b. 8

c. 10

d. It depends on the first value of Type.

a

The length of a new variable is determined by the first reference in the DATA step, not by data values. In this case,

of Type is determined by the value Fixed. The LENGTH statement is in the wrong place; it must be read before an

reference to the variable in the DATA step. The LENGTH statement cannot change the length of an existing variab

Which program contains an error?

b

64

To select variables, you can use a DROP or KEEP statement in any DATA step. You can also use the DR

KEEP= data set options following a data set name in any DATA or PROC step. However, you cannot use

KEEP statements in PROC steps.

1.

Correct

answer:

2.

Chapter 12: Reading SAS Data Sets Answer Key

If you submit the following program, which variables appear in the new data set?

data c(drop=age group);

set s(keep=age weight group);

if group=2 and age>40;

run;

a. none

b. Weight

c. Age, Group

d. Age, Weight, Group

b

The variables Age, Weight, and Group are specified using the KEEP= option in the SET

statement. After processing, Age and Group are dropped in the DATA statement.

Which of the following programs correctly reads the data set Orders and creates the data set

FastOrdr?

Correct

answer:

3.

Correct

65

c

You specify the data set to be created in the DATA statement. The DROP= data set option

prevents variables from being written to the data set. Because you use the variable OrdrTime

when processing your data, you cannot drop OrdrTime in the SET statement. If you use the

KEEP= option in the SET statement, then you must list OrdrTime as one of the variables to

be kept.

Which of the following statements is false about BY-group processing?

When you use the BY statement with the SET statement,

a. the data sets that are listed in the SET statement must be indexed or sorted by the

values of the BY variable(s).

b. the DATA step automatically creates two variables, FIRST. and LAST., for each

variable in the BY statement.

c. FIRST. and LAST. identify the first and last observation in each BY group, in that

order.

d. FIRST. and LAST. are stored in the data set.

d


本文标签: 直线 作者