BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
KarimJOHN
Calcite | Level 5

Hello everyone,

 

I would want to replicate the code from paper. And, The code gives several similar ERROR 22-322 and ERROR 76-322. I could not find the proper solution.

 

It shows that, several ERRORS 22-322 and ERROR 76-322 in log files (I attached the log file here {

142          p3 = p1;
                  --
                  22
                  76
ERROR 22-322: Syntax error, expecting one of the following: a quoted string, a numeric constant,
              a datetime constant.
ERROR 76-322: Syntax error, statement will be ignored.
143          p2 = p1;
144          p4 = p1; /*equal p*/
145          /* con1 = (p1+q1)*(p1+q1)/p1;
146          con2 = (p2+q2)*(p2+q2)/p2;
147          con3 = (p3+q3)*(p3+q3)/p3;
148          con4 = (p4+q4)*(p4+q4)/p4; */
149          e1 = exp(-(p1+q1)*t);      de1 = 1+(q1/p1)*e1;
150          e2 = exp(-(p2+q2)*(t- 4 ));  de2 = 1+(q2/p2)*e2;
                                 --
                                 22
                                 76
151          e3 = exp(-(p3+q3)*(t- 10 ));  de3 = 1+(q3/p3)*e3;
                                 ---
                                 22
                                 76
152          e4 = exp(-(p4+q4)*(t- 16 ));  de4 = 1+(q4/p4)*e4;
                                 ---
                                 22
                                 76
ERROR 22-322: Syntax error, expecting one of the following: !, !!, &, (, *, **, +, -, /, <, <=,
              <>, =, >, ><, >=, AND, EQ, GE, GT, LE, LT, NE, OR, ^<, ^=, ^>, |, ||, ~<, ~=, ~>.
ERROR 76-322: Syntax error, statement will be ignored.


}). 

Please, help me how to solve it.

 

Thanks in advance!

 

Karim John

___________________________________

Here is the script:

 

DATA DRAM;

INPUT t g1 g2 g3 g4;

DATALINES;

 

1 190 0 0 0

2 560 0 0 0

3 1000 0 0 0

4 1680 0 0 0

5 2542 3 0 0

6 2640 880 0 0

7 2350 2510 0 0

8 1820 4725 0 0

9 1170 7720 0 0

10 750 10940 0 0

11 455 13090 625 0

12 303 13330 3881 0

13 203 9977 8125 0

14 170 6896 13110 0

15 49 4646 17687 0

16 29 3297 19412 0

17 14 2916 17529 806

18 6 2384 14909 2922

19 4 2079 10475 5887

20 4 1676 8060 8440

21 3 1397 6450 9335

22 0 1107 5919 9046

23 0 894 5118 10450

24 0 829 4641 11348

;

RUN;

PROC PRINT DATA=DRAM; RUN;

PROC MODEL CONVERGE = 0.0000001 MAXITER = 10000 METHOD = MARQUARDT;

ENDOGENOUS g1 g2 g3 g4;

EXOGENOUS t;

PARAMETERS

p1 = 0.001

p2 = 0.001

p3 = 0.001

p4 = 0.001

q1 = 0.3

q2 = 0.3

q3 = 0.3

q4 = 0.3

m1 = 3000000

m2 = 1500000

m3 = 2000000

m4 = 1500000

 

p2 = p1;

p3 = p1;

p4 = p1; /*equal p*/

/* con1 = (p1+q1)*(p1+q1)/p1; con2 = (p2+q2)*(p2+q2)/p2; con3 = (p3+q3)*(p3+q3)/p3; con4 = (p4+q4)*(p4+q4)/p4; */

e1 = exp(-(p1+q1)*t); de1 = 1+(q1/p1)*e1;

e2 = exp(-(p2+q2)*(t- 4 )); de2 = 1+(q2/p2)*e2;

e3 = exp(-(p3+q3)*(t- 10 )); de3 = 1+(q3/p3)*e3;

e4 = exp(-(p4+q4)*(t- 16 )); de4 = 1+(q4/p4)*e4;

IF t<5 THEN /* Gen2 introduced in time 5 */

DO;

g1=m1*(1-e1)/de1;

g2=0;

g3=0;

g4=0;

END;

ELSE IF t<11 then /* Gen3 introduced at time 11*/

DO;

g1=m1*(1-e1)/de1*(1-(1-e2)/de2);

g2=(1-e2)/de2*(m2+m1*(1-e1)/de1)*(1-(1-e3)/de3);

g3=0;

g4=0;

END;

ELSE IF t<17 then /* Gen3 introduced at time 17*/

DO;

g1=m1*(1-e1)/de1*(1-(1-e2)/de2);

g2=(1-e2)/de2*(m2+m1*(1-e1)/de1)*(1-(1-e3)/de3);

g3=(1-e3)/de3*(m3+(1-e2)/de2*(m2+m1*(1-e1)/de1))*(1-(1-e4)/de4);

g4=0;

END;

ELSE

DO;

g1=m1*(1-e1)/de1*(1-(1-e2)/de2);

g2=(1-e2)/de2*(m2+m1*(1-e1)/de1)*(1-(1-e3)/de3);

g3=(1-e3)/de3*(m3+(1-e2)/de2*(m2+m1*(1-e1)/de1))*(1-(1-e4)/de4);

g4=(1-e4)/de4*(m4+(1-e3)/de3*(m3+(1-e2)/de2*(m2+m1*(1-e1)/de1)));

END;

FIT/FIML;

RUN;

1 ACCEPTED SOLUTION

Accepted Solutions
ed_sas_member
Meteorite | Level 14

Hi @KarimJOHN 

It seems that there is a semicolon missing after specifying the values of the parameters

m4 = 1500000

;

p2 = p1;


Another thing is that it seems confusing to SAS to specify values for p1, p2, p3 and p4 and then specify conditions such as p1=p2.

I believe you need to specify only one .

Best,

View solution in original post

3 REPLIES 3
andreas_lds
Jade | Level 19
Please post the log as text using the {I} icon.
ed_sas_member
Meteorite | Level 14

Hi @KarimJOHN 

It seems that there is a semicolon missing after specifying the values of the parameters

m4 = 1500000

;

p2 = p1;


Another thing is that it seems confusing to SAS to specify values for p1, p2, p3 and p4 and then specify conditions such as p1=p2.

I believe you need to specify only one .

Best,

KarimJOHN
Calcite | Level 5
Thank You for your advice. It works well. Thanks again.

hackathon24-white-horiz.png

2025 SAS Hackathon: There is still time!

Good news: We've extended SAS Hackathon registration until Sept. 12, so you still have time to be part of our biggest event yet – our five-year anniversary!

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.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 3 replies
  • 2475 views
  • 2 likes
  • 3 in conversation