IMS Data in SAS Programs |
Using a DATA Step to Update a SAS Data File |
You can update a SAS data file with IMS data that is described by a view descriptor just as you can update a SAS data file using another SAS data file: by using a DATA step UPDATE statement. In this section, the term transaction data refers to the new data that is to be added to the original file.
You can even perform updates when the file to be updated is a Version 6 data file with user-defined, 8-byte SAS variable names and the transaction data is from Version 7 and later data sets containing generated variable names of up to 32 bytes.
You have two choices when you update a Version 6 SAS data file with data from later releases:
operate the current release in default mode. Your Version 6 program will run, but WHERE processing will not be available.
set the VALIDVARNAME system option to V6 to operate in Version 6 mode. The V6 option offers functionality comparable to Version 6 of the interface view engine, including WHERE processing. The VALIDVARNAME system option controls what type of variable names will be used in the SAS session by converting any nonconforming names to the specified format. For more information about the VALIDVARNAME system, see SAS Language Reference: Dictionary.
Example of VALIDVARNAME=V6 |
Suppose you have a Version 6 SAS data set, VER6.SSNUMS, which contains some customer names and Social Security numbers. You want to update this data set with data that is described by VLIB.SSNAME, a view descriptor based on the CUSTOMER segment of the IMS database ACCTDBD. Since this will require you to first sort the data then create an output data set with the sorted data, this is a good situation for using VALIDVARNAME=V6.
To perform the update, you would enter the following SAS statements:
options validvarname=V6; options nodate linesize=80; libname ver6 'SAS-data-library'; proc sort data=ver6.ssnums; by ssnumb; run; proc print data=ver6.ssnums; title2 'VER6.SSNUMS Data File'; run; proc sort data=vlib.ssname out=mydata.newnums; by ssnumb; run; proc print data=mydata.newnums; title2 'Data Described by MYDATA.NEWNUMS'; run; data mydata.newnames; update ver6.ssnums mydata.newnums; by ssnumb; run; proc print data=mydata.newnames; title2 'MYDATA.NEWNAMES Data File'; run;
The new SAS data file MYDATA.NEWNAMES is a Version 6 data file stored in a Version 6 library associated with the libref MYDATA.
The following three outputs show the results of PRINT procedures for the original data file, the transaction data, and the updated data file.
Data in the Data File to Be Updated, VER6.SSNUMS
The SAS System VER6.SSNUMS Data File OBS SSNUMB NAME 1 267-83-2241 GORDIEVSKY, OLEG 2 276-44-6885 MIFUNE, YUKIO 3 352-44-2151 SHIEKELESLAM, SHALA 4 436-46-1931 NISHIMATSU-LYNCH, CAROL
Data That is Described by Updated Data File MYDATA.NEWNUMS
The SAS System Data Described by MYDATA.NEWNUMS OBS SSNUMB NAME 1 156-45-5672 O'CONNOR, JOSEPH 2 178-42-6534 PATTILLO, RODRIGUES 3 234-74-4612 WIKOWSKI, JONATHAN S. 4 434-62-1224 SMITH, JAMES MARTIN 5 434-62-1234 SUMMERS, MARY T. 6 436-42-6394 BOOKER, APRIL M. 7 456-45-3462 LITTLE, NANCY M. 8 657-34-3245 BARNHARDT, PAMELA S. 9 667-73-8275 WALLS, HOOPER J. 10 667-82-8275 COHEN, ABRAHAM
Results of Updating a Version 6 SAS Data File with IMS Data
The SAS System MYDATA.NEWNAMES Data File OBS SSNUMB NAME 1 156-45-5672 O'CONNOR, JOSEPH 2 178-42-6534 PATTILLO, RODRIGUES 3 234-74-4612 WIKOWSKI, JONATHAN S. 4 267-83-2241 GORDIEVSKY, OLEG 5 276-44-6885 MIFUNE, YUKIO 6 352-44-2151 SHIEKELESLAM, SHALA 7 434-62-1224 SMITH, JAMES MARTIN 8 434-62-1234 SUMMERS, MARY T. 9 436-42-6394 BOOKER, APRIL M. 10 436-46-1931 NISHIMATSU-LYNCH, CAROL 11 456-45-3462 LITTLE, NANCY M. 12 657-34-3245 BARNHARDT, PAMELA S. 13 667-73-8275 WALLS, HOOPER J. 14 667-82-8275 COHEN, ABRAHAMFor more information about the UPDATE statement, see SAS Language Reference: Dictionary.
Copyright © 2007 by SAS Institute Inc., Cary, NC, USA. All rights reserved.