Updating a SAS Data File with IMS Data

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 SAS 6 data file with user-defined, 8-byte SAS variable names and the transaction data is from SAS 7 and later data sets containing generated variable names of up to 32 bytes.
You have two choices when you update a SAS 6 data file with data from later releases:
  • operate the current release in default mode. Your SAS 6 program runs, but WHERE processing is not available.
  • set the VALIDVARNAME system option to V6 to operate in SAS 6 mode. The V6 option offers functionality comparable to SAS 6 of the interface view engine, including WHERE processing. The VALIDVARNAME system option controls what type of variable names are used in the SAS session by converting any nonconforming names to the specified format. For more information about the VALIDVARNAME system option, see SAS System Options: Reference.

Example of VALIDVARNAME=V6

Suppose you have a SAS 6 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 requires 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 SAS 6 data file stored in a SAS 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 SAS 6 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, ABRAHAM
For more information about the UPDATE statement, see SAS Statements: Reference.