> %PrintProbleme(&TableContraintes, org, %SUPERQ(org eq
> 0 or org eq .), "Rejet1 : org=0", 1);
>
> I have trouble withe the parameter : org eq 0 or org
> eq .
I won't argue about the wisdom of using a macro here, but just point out
1 in sql[pre] org eq 0 or org is null [/pre]may perform better
2 in data step[pre] (if org) [/pre] selects non-missing and non-zero data
3 in macro language superq() expects a macro variable (, or macro name) as the parameter, and not plain syntax [pre] %str( org eq 0 or org = . ) [/pre] might provide adequate protection for that dot. An alternative providing slightly stronger protection than %str() is %quote().
Error handling of the failing parameter will (probably) be complicated by the internals of your macro %PrintProbleme.
Since this simple use without macro protection of your filter syntax [pre] %let BC =
org eq 0 or org = .
;[/pre] works just fine outside a macro... see this log[pre]51 %let BC =
52 org eq 0 or org = .
53 ;
54 DATA ;
55 INPUT ORG REP$ ;
56 LIST;CARDS;
RULE: ----+----1----+----2----+----3----+----4----+----5----+----6----
57 1 REP1
58 2 report2
59 . empty
60 0 return-code-OK
NOTE: The data set WORK.DATA4 has 4 observations and 2 variables.
NOTE: DATA statement used (Total process time):
real time 0.00 seconds
cpu time 0.00 seconds
61 ;
62 option symbolgen mlogic mprint ;
63 data cases;
64 set ;
SYMBOLGEN: Macro variable BC resolves to org eq 0 or org = .
65 if &bc ;
66 run;
NOTE: There were 4 observations read from the data set WORK.DATA4.
NOTE: The data set WORK.CASES has 2 observations and 2 variables.
NOTE: DATA statement used (Total process time):
real time 0.00 seconds[/pre]
I'm assuming the problem you get is caused by the handling of the parameter, rather than that dot in the value of the parameter.
Good Luck
PeterC