BookmarkSubscribeRSS Feed
MargaretCoffey
Calcite | Level 5

I'm uses SAS 9.3.

I have a macro that concatenates some SAS datasets and exports the new file into Access. 

If the concatenation and export is successful, I then manually delete the source file; for they are redundant to concatenation.

Libname Library "&WorkPath";
%Let ACCESS_Name = WGRR1701_TShell_MAIN_MODASA6_Output;

 %MergeOP(Suffix=
     _1   _2   _3 ,

  TabVol=Yes, 
  Briefing=No,
  __OUTACCESSDS = &ACCESS_Name,
  __OutPath=&WorkPath );

 

The log looks like this:

323         %MergeOP(Suffix=
324             _1   _2   _3 ,
325        
326          TabVol=Yes,
327          Briefing=No,
328          __OUTACCESSDS = &ACCESS_Name,
329          __OutPath=&WorkPath );
MPRINT(MERGEOP):   Data Library.TabVol;
MPRINT(MERGEOP):   set Library.TabVol_1 Library.TabVol_2 Library.TabVol_3 ;
MPRINT(MERGEOP):  run;

NOTE: There were 7480 observations read from the data set LIBRARY.TABVOL_1.
NOTE: There were 6325 observations read from the data set LIBRARY.TABVOL_2.
NOTE: There were 5445 observations read from the data set LIBRARY.TABVOL_3.
NOTE: The data set LIBRARY.TABVOL has 19250 observations and 78 variables.
NOTE: DATA statement used (Total process time):
      real time           0.49 seconds
      cpu time            0.48 seconds
      

MPRINT(MERGEOP):   proc export data = Library.TabVol OUTTABLE= "TabVol" DBMS=ACCESSCS REPLACE ;
MPRINT(MERGEOP):   AACC;
MPRINT(MERGEOP):   DATABASE="F:\surveys\WGRR\WGRR1701\6-Tabs\6_MAIN_SA6\ModASA6\WGRR1701_TShell_MAIN_MODASA6_Output.mdb" ;
MPRINT(MERGEOP):   DBDSOPTS="INSERTBUFF=25 DBCOMMIT=0";
MPRINT(MERGEOP):   run ;

NOTE: "TabVol" table was successfully created.
NOTE: PROCEDURE EXPORT used (Total process time):
      real time           17.12 seconds
      cpu time            0.51 seconds

 

I would like to programmatically test if the export was "successful."  If "successful," then I would add new section to the macro to delete the base files.  In this example, the base files are TabVol_1, TabVol_2 and TabVol_3.

 

In my organization, we batch submit to process all macros.  I had found some code that would read in the .log file and scan the .log for key words.  I can only get that to work with in interactive mode; not with in batch.

 

data log_test;
	infile "F:\SAM2\Versions_of_SAM\SAM2_20171128\log_check_test.log" truncover;
	input a_line $256.;
	if index(a_line, "ERROR:") > 0
	then abort cancel;
run;
1 REPLY 1
Vince_SAS
Rhodochrosite | Level 12

Maybe you can check for a non-zero value in the SYSCC or SYSERR automatic macro variables?

 

Vince DelGobbo

SAS R&D

sas-innovate-2024.png

Join us for SAS Innovate April 16-19 at the Aria in Las Vegas. Bring the team and save big with our group pricing for a limited time only.

Pre-conference courses and tutorials are filling up fast and are always a sellout. Register today to reserve your seat.

 

Register now!

How to Concatenate Values

Learn how use the CAT functions in SAS to join values from multiple variables into a single value.

Find more tutorials on the SAS Users YouTube channel.

Click image to register for webinarClick image to register for webinar

Classroom Training Available!

Select SAS Training centers are offering in-person courses. View upcoming courses for:

View all other training opportunities.

Discussion stats
  • 1 reply
  • 666 views
  • 0 likes
  • 2 in conversation