Sorry,
think I need to use lock &base_table clear; instead of unlock &base_table ; but if I schedule it via LSF. job is exiting due to below lock ERROR , how can we mask these lock ERRORs only . see the log below
1 %macro try_lock(base_table=, audit_table=, sleep_interval=5, max_retries=12);
32 %local i lock_status;
33
34 %let i = 1;
35 %let lock_status = 1; /* non-zero means lock failed */
36
37 %do %while(&lock_status ne 0 and &i le &max_retries);
38
39 /* Attempt to lock the base audit table */
40
41 lock &base_table;
42
43
44 %let lock_status = &syslckrc;
45
46 %if &lock_status ne 0 %then %do;
47 %put NOTE: Lock attempt &i failed for &base_table. Sleeping for &sleep_interval seconds...;
48 data _null_;
49 call sleep(&sleep_interval, 1);
50 run;
51 %end;
52
53 %let i = %eval(&i + 1);
54 %end;
2 The SAS System Wednesday, July 16, 2025 01:09:00 PM
55
56 %if &lock_status = 0 %then %do;
57 %put NOTE: Successfully locked &base_table after %eval(&i - 1) attempt(s). Appending &audit_table...;
58
59 proc append base=&base_table data=&audit_table force;
60 run;
61
62
63 lock &base_table clear;
64
65
66 %end;
67 %else %do;
68 %put ERROR: Unable to acquire lock on &base_table after &max_retries attempts.;
69 %end;
70
71 %mend try_lock;
72 %try_lock(
73 base_table=test.audit_master,
74 audit_table=test.audit_temp_01,
75 sleep_interval=10,
76 max_retries=18
77 );
ERROR: A lock is not available for TEST.AUDIT_MASTER.DATA.
ERROR: Lock held by process 130544.
NOTE: Lock attempt 1 failed for test.audit_master Sleeping for 10 seconds...
NOTE: DATA statement used (Total process time):
real time 10.00 seconds
cpu time 0.00 seconds
ERROR: A lock is not available for TEST.AUDIT_MASTER.DATA.
ERROR: Lock held by process 130544.
NOTE: Lock attempt 2 failed for test.audit_master Sleeping for 10 seconds...
NOTE: DATA statement used (Total process time):
real time 10.00 seconds
cpu time 0.00 seconds
NOTE: TEST.AUDIT_MASTER.DATA is now locked for exclusive access by you.
NOTE: Successfully locked test.audit_master after 3 attempt(s). Appending test.audit_temp_01..
NOTE: Appending TEST.AUDIT_TEMP_01 to TEST.AUDIT_MASTER.
NOTE: There were 19 observations read from the data set TEST.AUDIT_TEMP_01.
NOTE: 19 observations added.
NOTE: The data set TEST.AUDIT_MASTER has 152 observations and 5 variables.
NOTE: PROCEDURE APPEND used (Total process time):
real time 0.07 seconds
cpu time 0.00 seconds
NOTE: TEST.AUDIT_MASTER.DATA is no longer locked by you.
... View more