| SAS Companion for the OS/2 Environment |
This section illustrates
how to use the FILENAME, FILE, and
INFILE statements to perform more advanced I/O tasks, such as altering the
record format and length, appending data to a file, using the DRIVEMAP device-type
keyword to determine which hard drives are available.
Using the RECFM= option
in the FILENAME, FILE, %INCLUDE, and
INFILE statements enables you to specify the record format of your external
files. The following example shows you how to use this option.
Usually, the SAS System reads a line of data until a
carriage return and line feed character combination (the hexadecimal value
is
'0D0A'x) are encountered or until just a line feed character (the hexadecimal
value is
'0A0'x) is encountered. However, sometimes data do not contain these
carriage control characters but do have fixed-length records. In this case,
you can specify RECFM=F to read your data.
To read such a file, you need to use the LRECL= option
to specify the record length and the RECFM= option to tell the SAS System
that the records have fixed-length record format. Here are the required statements:
data test;
infile "test.dat" lrecl=60 recfm=f;
input x y z;
run;
In this example, the SAS System expects fixed-length
records that are 60 bytes long, and it reads in the three numeric variables:
X, Y, and Z.
You can also specify RECFM=F when your data do contain
carriage returns and line feeds, but you want to read these values as part
of your data instead of treating them as carriage control characters. When
you specify RECFM=F, the SAS System ignores any carriage controls and line
feeds and simply reads the record length you specify.
Occasionally, you may not
want to create a new output file,
but rather append data to the end of an existing file. In this case, you
can use the MOD option in the FILE statement as in the following example:
filename myfile "c:\sas\data";
data _null_;
infile myfile(newdata);
input sales expenses;
file myfile(jandata) mod;
put sales expenses;
run;
This example reads the variables SALES and EXPENSES
from the external data file C:\SAS\DATA\NEWDATA.DAT and appends records to
the existing data file C:\SAS\DATA\JANDATA.DAT.
If you are going to append data to several files in
a single directory, you can use the MOD option in the FILENAME statement instead
of in the FILE statement. You can also use the FAPPEND function or the PRINTTO
procedure to append data to a file. For more information, see the SAS functions
section in SAS Language Reference: Dictionary and the section on the PRINTTO procedure in SAS Procedures Guide.
You can use the DRIVEMAP
device-type keyword in the FILENAME
statement to determine which hard drives are available for use. Here is an
example using this keyword:
filename myfile drivemap;
data mymap;
infile myfile;
input drive $;
put drive;
run;
The information written to the SAS log looks similar
to that shown in Drive Mapping Information.
Drive Mapping Information
50 filename myfile drivemap;
51
52 data mymap;
53 infile myfile;
54 input drive $;
55 put drive;
56 run;
NOTE: The infile MYFILE is:
FILENAME=DRIVEMAP,
RECFM=V,LRECL=256
A:
C:
H:
J:
K:
L:
M:
N:
R:
S:
T:
U:
NOTE: 12 records were read from the infile MYFILE.
The minimum record length was 2.
The maximum record length was 2.
NOTE: The data set WORK.MYMAP has 12 observations
and 1 variables.
NOTE: The DATA statement used 2.04 seconds. |
You can use this technique in SAS/AF applications, where
you can build selection lists to let a user choose a hard drive. You can
also use the DRIVEMAP keyword to enable you to assign macro variables to the
various available hard drives.
Using the DRIVEMAP device-type keyword in the FILENAME
statement implies you are using the fileref for read-only purposes. If you
try to use the fileref associated with the DRIVEMAP device-type keyword in
a write or update situation, you receive an error message indicating you do
not have sufficient authority to write to the file.
Most OS/2 applications reads and writes character data
using OEM character codes. In Version 7, SAS does not provide the option to
read or write files using OEM character sets.
Characters such as the  are considered national
characters. OS/2 represents each character with a hexadecimal number. If
your external file was created with an OS/2 editor or in the SAS System under
OS/2, you do not need to do anything special. Simply read the file using
the FILENAME or FILE statements, as you would normally do.
Copyright © 1999 by SAS Institute Inc., Cary, NC, USA. All rights reserved.