You
can update a SAS data file with
ADABAS data that is described by a view descriptor, just
as you can update a SAS data file with data from another data file.
In this section, the term
transaction data refers to the new data that is to be added to the original file.
You can even do updates when the file to be updated is a Version
6 data file and the transaction data is from a Version 7 and later
source.
Suppose you have a Version
6 data file, LIB6.BIRTHDAY, that contains employee ID numbers, last
names, and birthdays. You want to update this data file with data
that is described by VLIB.EMPS, a view descriptor that is based on
the EMPLOYEE DDM. To perform the update, enter the following SAS
statements.
proc sort data=lib6.birthday;
by lastname;
run;
proc print data=lib6.birthday;
title "LIB6.BIRTHDAY Data File";
format birthdat date7.;
run;
proc print data=vlib.emps;
title "Data Described by VLIB.EMPS";
run;
data mydata.newbday;
update lib6.birthday vlib.emps;
by lastname;
run;
proc print;
title 'MYDATA.NEWBDAY Data File';
run;
In this example, the
new, updated SAS data file, MYDATA.NEWBDAY, is a Version 7 or later
data file. It is stored in the Version 7 or later SAS library associated
with the libref MYDATA.
When the UPDATE statement
references the view descriptor VLIB.EMPS and uses a BY statement in
the DATA step, the BY statement causes a BY clause to be generated
for the variable LASTNAME. (Note that a BY statement must reference
an
ADABAS descriptor data
field.) Thus, the BY clause causes the
ADABAS data to be presented to SAS in a sorted order for
use in updating the MYDATA.NEWBDAY data file. However, the data file
LIB6.BIRTHDAY had to be sorted before the update, because the UPDATE
statement expects both the original file and the transaction file
to be sorted by the BY variable.
The following three
outputs show the results of PRINT procedures on the original data
file, the transaction data, and the updated data file.
Data in the Data File to Be Updated, LIB6.BIRTHDAY
LIB6.BIRTHDAY Data File
OBS EMPID BIRTHDAT LASTNAME
1 129540 31JUL60 CHOULAI
2 356134 25OCT60 DUNNETT
3 127845 25DEC43 MEDER
4 677890 24APR65 NISHIMATSU-LYNCH
5 459287 05JAN34 RODRIGUES
6 346917 15MAR50 SHIEKELESLAN
7 254896 06APR49 TAYLOR-HUNYADI
Data That Is Described by the View Descriptor VLIB.EMPS
Data Described by VLIB.EMPS
OBS EMPID JOBCODE BIRTHDAT LASTNAME
1 456910 602 24SEP53 ARDIS
2 237642 602 13MAR54 BATTERSBY
3 239185 602 28AUG59 DOS REMEDIOS
4 321783 602 03JUN35 GONZALES
5 120591 602 12FEB46 HAMMERSTEIN
6 135673 602 21MAR61 HEMESLY
7 456921 602 12MAY62 KRAUSE
8 457232 602 15OCT63 LOVELL
9 423286 602 31OCT64 MIFUNE
10 216382 602 24JUL63 PURINTON
11 234967 602 21DEC67 SMITH
12 212916 602 29MAY28 WACHBERGER
13 119012 602 05JAN46 WOLF-PROVENZA
Results of Updating a Data File with ADABAS Data
MYDATA.NEWBDAY Data File
OBS EMPID BIRTHDAT LASTNAME JOBCODE
1 456910 24SEP53 ARDIS 602
2 237642 13MAR54 BATTERSBY 602
3 129540 31JUL60 CHOULAI .
4 239185 28AUG59 DOS REMEDIOS 602
5 356134 25OCT60 DUNNETT .
6 321783 03JUN35 GONZALES 602
7 120591 12FEB46 HAMMERSTEIN 602
8 135673 21MAR61 HEMESLY 602
9 456921 12MAY62 KRAUSE 602
10 457232 15OCT63 LOVELL 602
11 127845 25DEC43 MEDER .
12 423286 31OCT64 MIFUNE 602
13 677890 24APR65 NISHIMATSU-LYNCH .
14 216382 24JUL63 PURINTON 602
15 459287 05JAN34 RODRIGUES .
16 346917 15MAR50 SHIEKELESLAN .
17 234967 21DEC67 SMITH 602
18 254896 06APR49 TAYLOR-HUNYADI .
19 212916 29MAY28 WACHBERGER 602
20 119012 05JAN46 WOLF-PROVENZA 602
For more information
about the UPDATE statement, see
SAS Statements: Reference.
Note: You cannot update
ADABAS data directly using the DATA step,
but you can update
ADABAS data using the following procedures: APPEND, FSEDIT, FSVIEW, and
SQL. For more information about updating
ADABAS data, see
Browsing and Updating ADABAS Data.