Chapter Contents |
Previous |
Next |
SAS/ACCESS Interface to ADABAS Software |
When you specify a SAS WHERE clause, the SAS/ACCESS interface view engine translates those conditions into view WHERE clause conditions. Then, if the view descriptor includes a WHERE clause, the interface view engine connects the conditions with the Boolean operator AND. By default, the SAS WHERE clause conditions are connected before the view WHERE clause conditions. For example, if a view descriptor includes the condition
sex=femaleand the SAS WHERE clause condition translates into
position=marketingthe resulting selection criteria are
(position=marketing) and (sex=female)
When the interface view engine translates SAS WHERE clause conditions into view WHERE clause conditions, some SAS WHERE clause capabilities are not available in a view WHERE clause. That is, some SAS WHERE clauses cannot be totally satisfied by the interface view engine.
To allow for this possibility, the interface view engine first evaluates the SAS WHERE clause and determines whether the conditions can be handled. The interface view engine may be able to partially satisfy a SAS WHERE clause, as in the following example:
proc print data=vlib.emp1; where lastname < 'KAP' and payrate > 30 * overtime; run;The interface view engine translates as much of the SAS WHERE clause as possible without producing incorrect results or a syntax error. In the example above, the engine has no problem with the first condition, but the arithmetic in the second condition is not supported. The interface view engine uses the condition where lastname < 'KAP' to filter out as many logical records as possible to improve performance.
Any conditions that are not supported are bypassed by the interface view engine, and post-processing (handled automatically by the SAS System) is required after the engine does its subsetting. The engine bypasses
In Periodic Group Fields in WHERE Clauses , assume DF1, DF2, and DF3 are ADABAS data fields referenced by a view descriptor. Remember that the SAS System never sees view WHERE clauses.
SAS WHERE Clause | View WHERE Clause | Translation | Processing Required? |
---|---|---|---|
DF2=B OR DF3>DF4+10 | (DF1=A) | (DF1=A) | Yes |
DF2=B & DF3>DF4+10 | DF1=A | (DF2=B) & (DF1=A) | Yes |
DF2=B & DF3>C | DF1=A | (DF2=B) & (DF3>C) & (DF1=A) | No |
DF2=B OR DF3>C | DF1=A | (DF2=B) OR (DF3>C) & (DF1=A) | No |
SAS WHERE Clause Conditions Acceptable to ADABAS |
SAS WHERE Clause Syntax | View WHERE Clause Translation |
---|---|
= | = |
> | > |
< | < |
<> | != |
( | ( |
) | ) |
AND | AND |
OR | OR |
SAS WHERE Clause Syntax | View WHERE Clause Translation |
---|---|
DF1 BETWEEN 1 AND 3 | (DF1 >= 1 AND DF1 <= 3) |
DF1 IN (4,9,14) | DF1=4 OR DF1=9 or DF1=14 |
DF4 = '02AUG87'D | DF4 = 870802 |
SAS WHERE Clause Conditions Not Acceptable to ADABAS |
WHERE DF1 = DF4 * 3 WHERE DF4 < - DF5
WHERE DF1 WHERE (DF1 = DF2) * 20
DF1 =: ABC
'12:00'T '01JAN60:12:00'DT
When a SAS WHERE Clause Must Reference Descriptor Data Fields |
Chapter Contents |
Previous |
Next |
Top of Page |
Copyright 1999 by SAS Institute Inc., Cary, NC, USA. All rights reserved.