Specifies that data lines follow.
Valid in: DATA step
Category: File-handling
Type: Declarative
See: Data lines cannot contain semicolons. Use the DATALINES4 Statement when your data contain semicolons.



Without Arguments

Use the DATALINES statement with an INPUT statement to read data that you enter directly in the program, rather than data stored in an external file.


Using the DATALINES Statement

The DATALINES statement is the last statement in the DATA step and immediately precedes the first data line. Use a null statement (a single semicolon) to indicate the end of the input data.
You can use only one DATALINES statement in a DATA step. Use separate DATA steps to enter multiple sets of data.
Note: If you insert tabs while entering data in the DATALINES statement, you might get unexpected results when using columnar input. This issue exists when you use the SAS Enhanced Editor or SAS Program Editor. To avoid the issue, do one of the following:
  • Replace all tabs in the data with single spaces.
  • Use the %INCLUDE statement from the SAS editor to submit your code.
  • If you are using the SAS Enhanced Editor, select Tools ->Options->Enhanced Editor to change the tab size from 4 to 1.

Reading Long Data Lines

SAS handles data line length with the CARDIMAGE system option. If you use CARDIMAGE, SAS processes data lines exactly like 80–byte punched card images padded with blanks. If you use NOCARDIMAGE, SAS processes data lines longer than 80 columns in their entirety.

Using Input Options with In-stream Data

The DATALINES statement does not provide input options for reading data. However, you can access some options by using the DATALINES statement in conjunction with an INFILE statement. Specify DATALINES in the INFILE statement to indicate the source of the data and then use the options that you need. For more information, see Reading In-stream Data with Options.


  • Use the DATALINES statement whenever data do not contain semicolons. If your data contain semicolons, use the DATALINES4 statement.
  • The following SAS statements also read data or point to a location where data are stored:
    • The INFILE statement points to raw data lines stored in another file. The INPUT statement reads those data lines.
    • The %INCLUDE statement brings SAS program statements or data lines stored in SAS files or external files into the current program.
    • The SET, MERGE, MODIFY, and UPDATE statements read observations from existing SAS data sets.


Example 1: Using the DATALINES Statement

In this example, SAS reads a data line and assigns values to two character variables, NAME and DEPT, for each observation in the DATA step:
data person;
   input name $ dept $;
John Sales
Mary Acctng

Example 2: Reading In-stream Data with Options

This example takes advantage of options available with the INFILE statement to read in-stream data lines. With the DELIMITER= option, you can use list input to read data values that are delimited by commas instead of blanks.
data person;
   infile datalines delimiter=','; 
   input name $ dept $;

See Also

System Options:
CARDIMAGE System Option in SAS System Options: Reference