Help using Base SAS procedures

Proc compare throws error in EG under specific conditions.

Reply
Contributor
Posts: 26

Proc compare throws error in EG under specific conditions.

Hi,
So below I'll step by step reproduce error which occurs after using proc compare with tables which has no-standard sas format.
Please open EG(version of mine 4.1(4.1.0.1019), and execute step-by this code below:
1.
/*create small test dataset*/
data testData;
input id;
datalines;
1
2
3
4
5
;
run;

2.
/*create datastep with fields for format*/
data testFormatTable;
keep start label FmtName;
fmtname ='testFormatName';
label='test';
start='1';
run;

3.
/*create format*/
proc format library=work cntlin=testFormatTable;
run;

4.
/*create two datasets - one use this test format created higher,secon dataset - use standard sas format*/
proc sql;
create table dset1 as
select id as IdField,
1 format testFormatName. as Status

from testData
order by idField
;
quit;

proc sql;
create table dset2 as
select id as idField,
2 format 15. as Status

from testData
order by idField
;
quit;

5
/*Run simple proc compare*/
proc compare base=dset1
compare=dset2
listvar listequalvar
out=difference
outall;
id idField;
run;

6.
So as result you will see normall usual results - html report and "difference" table.You can run this proc compare few times - all will be the same.

7.
But, if you manually open difference table(for reviewing data), and then close it, for clear lock, and then again run same proc compare - you will have
error.
Usual error which I had - proc compare runs for a long time, ate 50 % of cpu time, and never ends, so I had to manually kill sas process.
In more complicated tasks, when I used sorts procedure before proc compare I had such error(after second run same proc report):

ERROR: Read Access Violation In Task [ SORT (2) )
Exception occurred at (00F44786)
Task Traceback
Address Frame (DBGHELP API Version 4.0 rev 5)
00F44786 03BAFBD0 sashost:Main+0x1DAF6
00F3F8C8 03BAFC20 sashost:Main+0x18C38
00F390E1 03BAFC44 sashost:Main+0x12451
00F29335 03BAFCA8 sashost:Main+0x26A5
67961186 03BAFCDC sasxkern:mcn_main+0x10186
662E2111 03BAFF8C sassort:mcn_main+0x1111
00F32B02 03BAFFA4 sashost:Main+0xBE72
00F36C20 03BAFFB8 sashost:Main+0xFF90
77E6482F 03BAFFEC kernel32:GetModuleHandleA+0xDF

Also if I tried delete(using simpe proc sql) unneeded tables before runing proc compare again it throws such error:
ERROR: You cannot open SASHELP.TEST1.DATA for output access with
member-level control because SASHELP.TEST1.DATA is in use
by you in resource environment IOM ROOT COMP ENV.

Fixing this last error must be possible by instaling hot fix:
http://support.sas.com/kb/13/740.html
But it doesn't help...

So looks like proc compare with EG sometimes ,in specific conditions(specific format etc.) lock tables which participate in proc compare as input or output tables.
It's not usual lock, I tried create and clear lock using standard SAS tuls, but it didn't help, this "difference" tables treat as no locked(syslckrc macrovar=0).

So if someone had same or similar error - please answer.

Thanks!
SAS Super FREQ
Posts: 8,744

Re: Proc compare throws error in EG under specific conditions.

Hi:
This seems to be a fairly specific case and anything that results in a Read Access Violation probably should be reported to Tech Support -- especially since it involves PROC COMPARE -and- Enterprise Guide.

To open a track with Tech Support, fill out the form at this link:
http://support.sas.com/ctx/supportform/createForm

cynthia
Contributor
Posts: 26

Re: Proc compare throws error in EG under specific conditions.

Thanks!
Ask a Question
Discussion stats
  • 2 replies
  • 169 views
  • 0 likes
  • 2 in conversation