BookmarkSubscribeRSS Feed
☑ This topic is solved. Need further help from the community? Please sign in and ask a new question.
Rixile106
Fluorite | Level 6

Good day.

 

Am encounting the above error message 

any idea on how to solve this 

below is my script.

DATA WRK.FINAL_OD_LIMIT_1 (ENCODING=ANY);
    MERGE FIN.TO_MVP1_CLIENT (IN=A)
          EIW_BI.BI_ACCOUNT (IN=B)
          LMT.Final_pdg2 (IN=C)
          EIW_BI.BI_PRODUCT (IN=D);
    BY BP_ID;
    IF A AND B AND C AND D
       AND B.PRODUCT = D.PRODUCT_ID
       AND A.BP_ID = B.CUSTOMER_NUM
       AND A.BP_ID = C.FE_GEN_CUST_NO
       AND B.PRODUCT IN (0141,4478,0144,0060,0161,1337,9285,4305,1825,0006,4356)
       AND TAKE_UP_DATE_WA BETWEEN 20230510 AND &YDAY
       AND BA_CHQ_LIMIT_DIFF_CD_PD ne .      /* Use 'ne' for not equal to */
       AND BA_CHQ_LIMIT_DIFF_CD_PD ne 0
       AND DA_Decision = 'Approved';
    BASE = C.CPM_CHQ_AMNT_CURR_LIM_1;
    NEW_LIMIT = C.BA_OD_LIMIT_CD;
    OFFER_LIMIT_FINAL = C.OFFER_LIMIT_FINAL;
    DIFF = C.BA_CHQ_LIMIT_DIFF_CD_PD;
    Product_Type = C.Product_Type;
    Province = C.Province;
    Centre = C.Centre;
    AE_Name = C.AE_Name;
    TAKE_UP_DATE_DT = CATS(SUBSTR(PUT(TAKE_UP_DATE_WA, 8.), 1, 4), '-',
                           SUBSTR(PUT(TAKE_UP_DATE_WA, 12.), 1, 2), '-',
                           SUBSTR(PUT(TAKE_UP_DATE_WA, 14.), 1, 2));
    FORMAT TAKE_UP_DATE_DT DATE9.;
    PRODUCT_NAME = D.PRODUCT_NAME;
    DROP TAKE_UP_DATE_WA PRODUCT_ID CUSTOMER_NUM FE_GEN_CUST_NO;
RUN;
Spoiler
Spoiler
log



The SAS System Friday, February 9, 2024 05:54:00 PM

1 ;*';*";*/;quit;run;
2 OPTIONS PAGENO=MIN;
3 %LET _CLIENTTASKLABEL='Program 1';
4 %LET _CLIENTPROCESSFLOWNAME='Standalone Not In Project';
5 %LET _CLIENTPROJECTPATH='';
6 %LET _CLIENTPROJECTPATHHOST='';
7 %LET _CLIENTPROJECTNAME='';
8 %LET _SASPROGRAMFILE='';
9 %LET _SASPROGRAMFILEHOST='';
10
11 ODS _ALL_ CLOSE;
12 OPTIONS DEV=SVG;
13 GOPTIONS XPIXELS=0 YPIXELS=0;
14 %macro HTML5AccessibleGraphSupported;
15 %if %_SAS_VERCOMP_FV(9,4,4, 0,0,0) >= 0 %then ACCESSIBLE_GRAPH;
16 %mend;
17 FILENAME EGHTML TEMP;
18 ODS HTML5(ID=EGHTML) FILE=EGHTML
19 OPTIONS(BITMAP_MODE='INLINE')
20 %HTML5AccessibleGraphSupported
21 ENCODING='utf-8'
22 STYLE=HTMLBlue
23 NOGTITLE
24 NOGFOOTNOTE
25 GPATH=&sasworklocation
26 ;
NOTE: Writing HTML5(EGHTML) Body file: EGHTML
27


28 DATA WRK.FINAL_OD_LIMIT_1 (ENCODING=ANY);
29 MERGE FIN.TO_MVP1_CLIENT (IN=A)
30 EIW_BI.BI_ACCOUNT (IN=B)
31 LMT.Final_pdg2 (IN=C)
32 EIW_BI.BI_PRODUCT (IN=D);
NOTE: Data file LMT.FINAL_PDG2.DATA is in a format that is native to another host, or the file encoding does not match the session
encoding. Cross Environment Data Access will be used, which might require additional CPU resources and might reduce
performance.
33 BY BP_ID;
34 IF A AND B AND C AND D
35 AND B.PRODUCT = D.PRODUCT_ID
_________
557
ERROR: DATA STEP Component Object failure. Aborted during the COMPILATION phase.
ERROR 557-185: Variable B is not an object.

NOTE: The SAS System stopped processing this step because of errors.
NOTE: MVA_DSIO.OPEN_CLOSE| _DISARM| STOP| _DISARM| 2024-02-09T20:08:29,259+02:00| _DISARM| WorkspaceServer| _DISARM| SAS|
_DISARM| | _DISARM| 2334| _DISARM| 27422720| _DISARM| 12| _DISARM| 31| _DISARM| 0| _DISARM| 232345680| _DISARM| 0.010000|
_DISARM| 0.299220| _DISARM| 2023121308.960172| _DISARM| 2023121309.259392| _DISARM| 0.010000| _DISARM| | _ENDDISARM
NOTE: MVA_DSIO.OPEN_CLOSE| _DISARM| STOP| _DISARM| 2024-02-09T20:08:29,273+02:00| _DISARM| WorkspaceServer| _DISARM| SAS|
_DISARM| | _DISARM| -1| _DISARM| 27422720| _DISARM| 12| _DISARM| 31| _DISARM| 0| _DISARM| 232345680| _DISARM| 0.010000|
_DISARM| 0.181015| _DISARM| 2023121309.092299| _DISARM| 2023121309.273314| _DISARM| 0.010000| _DISARM| | _ENDDISARM
NOTE: MVA_DSIO.OPEN_CLOSE| _DISARM| STOP| _DISARM| 2024-02-09T20:08:29,273+02:00| _DISARM| WorkspaceServer| _DISARM| SAS|
_DISARM| | _DISARM| 236804| _DISARM| 27422720| _DISARM| 12| _DISARM| 31| _DISARM| 0| _DISARM| 232345680| _DISARM| 0.010000|
_DISARM| 0.178877| _DISARM| 2023121309.094858| _DISARM| 2023121309.273735| _DISARM| 0.010000| _DISARM| | _ENDDISARM
NOTE: MVA_DSIO.OPEN_CLOSE| _DISARM| STOP| _DISARM| 2024-02-09T20:08:29,288+02:00| _DISARM| WorkspaceServer| _DISARM| SAS|
_DISARM| | _DISARM| -1| _DISARM| 27422720| _DISARM| 12| _DISARM| 31| _DISARM| 0| _DISARM| 232345680| _DISARM| 0.010000|
2 The SAS System Friday, February 9, 2024 05:54:00 PM

_DISARM| 0.030627| _DISARM| 2023121309.257582| _DISARM| 2023121309.288209| _DISARM| 0.010000| _DISARM| | _ENDDISARM
NOTE: PROCEDURE| _DISARM| STOP| _DISARM| 2024-02-09T20:08:29,288+02:00| _DISARM| WorkspaceServer| _DISARM| SAS| _DISARM| |
_DISARM| 1148223488| _DISARM| 27422720| _DISARM| 12| _DISARM| 31| _DISARM| 0| _DISARM| 232345680| _DISARM| 0.020000| _DISARM|
0.330023| _DISARM| 2023121308.958401| _DISARM| 2023121309.288424| _DISARM| 0.020000| _DISARM| | _ENDDISARM
NOTE: DATA statement used (Total process time):
real time 0.32 seconds
user cpu time 0.02 seconds
system cpu time 0.00 seconds
memory 1847.31k
OS Memory 26780.00k
Timestamp 02/09/2024 08:08:29 PM
Step Count 87 Switch Count 0
Page Faults 0
Page Reclaims 51
Page Swaps 0
Voluntary Context Switches 19
Involuntary Context Switches 0
Block Input Operations 0
Block Output Operations 0

36 AND A.BP_ID = B.CUSTOMER_NUM
37 AND A.BP_ID = C.FE_GEN_CUST_NO
38 AND B.PRODUCT IN (0141,4478,0144,0060,0161,1337,9285,4305,1825,0006,4356)
39 AND TAKE_UP_DATE_WA BETWEEN 20230510 AND &YDAY
40 AND BA_CHQ_LIMIT_DIFF_CD_PD ne . /* Use 'ne' for not equal to */
41 AND BA_CHQ_LIMIT_DIFF_CD_PD ne 0
42 AND DA_Decision = 'Approved';
43 BASE = C.CPM_CHQ_AMNT_CURR_LIM_1;
44 NEW_LIMIT = C.BA_OD_LIMIT_CD;
45 OFFER_LIMIT_FINAL = C.OFFER_LIMIT_FINAL;
46 DIFF = C.BA_CHQ_LIMIT_DIFF_CD_PD;
47 Product_Type = C.Product_Type;
48 Province = C.Province;
49 Centre = C.Centre;
50 AE_Name = C.AE_Name;
51 TAKE_UP_DATE_DT = CATS(SUBSTR(PUT(TAKE_UP_DATE_WA, 8.), 1, 4), '-',
52 SUBSTR(PUT(TAKE_UP_DATE_WA, 12.), 1, 2), '-',
53 SUBSTR(PUT(TAKE_UP_DATE_WA, 14.), 1, 2));
54 FORMAT TAKE_UP_DATE_DT DATE9.;
55 PRODUCT_NAME = D.PRODUCT_NAME;
56 DROP TAKE_UP_DATE_WA PRODUCT_ID CUSTOMER_NUM FE_GEN_CUST_NO;
57 RUN;
58
59
60 %LET _CLIENTTASKLABEL=;
61 %LET _CLIENTPROCESSFLOWNAME=;
62 %LET _CLIENTPROJECTPATH=;
63 %LET _CLIENTPROJECTPATHHOST=;
64 %LET _CLIENTPROJECTNAME=;
65 %LET _SASPROGRAMFILE=;
66 %LET _SASPROGRAMFILEHOST=;
67
68 ;*';*";*/;quit;run;
69 ODS _ALL_ CLOSE;
70
71
72 QUIT; RUN;
73

1 ACCEPTED SOLUTION

Accepted Solutions
Tom
Super User Tom
Super User

Or easier

'Alfred' <= name <=  'John'

Which will work in either IF or WHERE.

View solution in original post

5 REPLIES 5
Kurt_Bremser
Super User
AND B.PRODUCT = D.PRODUCT_ID

This is SQL syntax, which is not valid in a DATA step.

Use this

and product = product_id

Statements like

Product_Type = C.Product_Type;

serve no purpose and have to be removed.

You also seem to have a serious musunderstanding about dates in SAS.

TAKE_UP_DATE_DT = CATS(SUBSTR(PUT(TAKE_UP_DATE_WA, 8.), 1, 4), '-',
                           SUBSTR(PUT(TAKE_UP_DATE_WA, 12.), 1, 2), '-',
                           SUBSTR(PUT(TAKE_UP_DATE_WA, 14.), 1, 2));
    FORMAT TAKE_UP_DATE_DT DATE9.;

In the first statement, you create the variable as character, but in the second, you try to assign a numeric format to it.

In SAS, date values are numeric and count the days from 1960-01-01. If take_up_date_wa is a SAS date, you do not need to do any conversion. A simple rename will achieve what you seem to want to do.

You also need to review all your conditions involving dates.

Rixile106
Fluorite | Level 6

I Re ran the code with the following changes as per your advise however am still getting the below error message.

enhance script
DATA WRK.FINAL_OD_LIMIT_1 (ENCODING=ANY);
    MERGE FIN.TO_MVP1_CLIENT (IN=A)
          EIW_BI.BI_ACCOUNT (IN=B)
          LMT.Final_pdg2 (IN=C)
          EIW_BI.BI_PRODUCT (IN=D);
    BY BP_ID;
    IF A AND B AND C AND D
       AND PRODUCT = PRODUCT_ID
       AND BP_ID = CUSTOMER_NUM
       AND BP_ID = FE_GEN_CUST_NO
       AND PRODUCT IN (0141,4478,0144,0060,0161,1337,9285,4305,1825,0006,4356)
       AND TAKE_UP_DATE_WA BETWEEN '2023-05-10' AND &YDAY
       AND BA_CHQ_LIMIT_DIFF_CD_PD ne .      /* Use 'ne' for not equal to */
       AND BA_CHQ_LIMIT_DIFF_CD_PD = 0
       AND DA_Decision = 'Approved';
  
    TAKE_UP_DATE_DT = INPUT(TAKE_UP_DATE_WA, yymmdd10.);
    FORMAT TAKE_UP_DATE_DT DATE9.;
    PRODUCT_NAME = PRODUCT_NAME; /* Assuming this variable is defined elsewhere */
    DROP TAKE_UP_DATE_WA PRODUCT_ID CUSTOMER_NUM FE_GEN_CUST_NO;
RUN;
Spoiler
error 



388
202
ERROR 388-185: Expecting an arithmetic operator.

ERROR 202-322: The option or parameter is not recognized and will be ignored.


Patrick
Opal | Level 21

The BETWEEN-AND Operator is only valid in WHERE conditions. You can't use it with an IF condition. That's the reason for the syntax error you get.

data test;
  set sashelp.class;
  if name between 'Alfred' and 'John';
run;

Patrick_0-1707532164632.png

Below two options are valid syntax for the selection you want.

/* option 1 */
data test;
  set sashelp.class;
  if name>='Alfred' and name<='John';
run;

/* option 2 */
data test;
  set sashelp.class;
  where name between 'Alfred' and 'John';
run;

 

 

Tom
Super User Tom
Super User

Or easier

'Alfred' <= name <=  'John'

Which will work in either IF or WHERE.

Tom
Super User Tom
Super User

Looks like a very strange thing to do.

Do you really have only one observation per BP_ID in each of those input datasets? 

If you want to match on PRODUCT_ID why is it not included in the BY statement?

 

sas-innovate-2024.png

Available on demand!

Missed SAS Innovate Las Vegas? Watch all the action for free! View the keynotes, general sessions and 22 breakouts on demand.

 

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
  • 5 replies
  • 554 views
  • 0 likes
  • 4 in conversation