IF ELSE block
Posted: Thu Apr 26, 2018 6:56 pm
I am trying to work with this code:
But this block:
is locking up the program and I can't figure out why. Any help appreciated.
Code: Select all
ALL 200
*
COMPUTE ALPHA = 0.1
COMPUTE BETAPI = 1.75
COMPUTE GAMMA = 0.3
COMPUTE RSTAR = 2.0
COMPUTE THETA = (1/(1+ALPHA*GAMMA*(BETAPI-1)))
COMPUTE PISTAR = 2.0
SET EXPECTEDPI = 2.0
SET PIZLB 1 200 = ((BETAPI-1)/BETAPI)*PISTAR-(RSTAR/BETAPI)
SET YSTAR = LOG(16374.2)
COMPUTE PISHOCK = 0.0
COMPUTE YSHOCK = 0.0
SET EPSILONPI 1 200 = 0.0
SET EPSILONY 1 200 = 0.0
SET EPSILONPI 2 2 = PISHOCK
SET EPSILONY 2 2 = YSHOCK
SET PI 1 1 = THETA*EXPECTEDPI + (1-THETA)*PISTAR +THETA*(GAMMA*EPSILONY+EPSILONPI)
IF YSHOCK=0.0
SET PI 2 2 = THETA*PI{1} + (1-THETA)*PISTAR +THETA*(EPSILONPI)
ELSE IF YSHOCK<0.0
SET PI 2 2 = THETA*PI{1} + (1-THETA)*PISTAR -THETA*(GAMMA*EXP(-EPSILONY)+EPSILONPI)
ELSE
SET PI 2 2 = THETA*PI{1} + (1-THETA)*PISTAR +THETA*(GAMMA*EXP(EPSILONY)+EPSILONPI)
DO ITER1 = 3, 200
IF PI(ITER1)<PIZLB(ITER1)
SET PI ITER1 ITER1 = (1/(1-ALPHA*GAMMA))*PI{1}+((ALPHA*GAMMA)/(1-ALPHA*GAMMA))*RSTAR
ELSE
SET PI ITER1 ITER1 = THETA*PI{1} + (1-THETA)*PISTAR +THETA*(GAMMA*EPSILONY+EPSILONPI)
END DO ITER1
*SET PI 3 200 = THETA*PI{1} + (1-THETA)*PISTAR +THETA*(GAMMA*EPSILONY+EPSILONPI)
SET Y 1 1 = EXP(YSTAR - THETA*ALPHA*(BETAPI-1)*(EXPECTEDPI-PISTAR+EPSILONPI)+(1-THETA*ALPHA*GAMMA*(BETAPI-1))*EPSILONY)
DO ITER = 2, 200
IF PI(ITER)<PIZLB(ITER)
SET Y ITER ITER = EXP(YSTAR + ALPHA*RSTAR + ALPHA*PI + EPSILONY)
ELSE
SET Y ITER ITER = EXP(YSTAR - THETA*ALPHA*(BETAPI-1)*(PI{1}-PISTAR+EPSILONPI)+(1-THETA*ALPHA*GAMMA*(BETAPI-1))*EPSILONY)
END DO ITER
SET INT = RSTAR + PISTAR + BETAPI*(PI-PISTAR)
SET REAL = INT - PI
*
SPGRAPH(HFIELDS=2,VFIELDS=2)
GRAPH(HEADER="Y") 1
#Y
GRAPH(HEADER="PI") 1
#PI
GRAPH(HEADER="RATES", KEY=UPRIGHT) 2
#INT
#REAL
SCATTER(STYLE=SYMBOLS,OVERLAY=LINE, OVSAME, OVCOUNT=1) 2
#Y PI
#Y PI
SPGRAPH(DONE)Code: Select all
IF YSHOCK=0.0
SET PI 2 2 = THETA*PI{1} + (1-THETA)*PISTAR +THETA*(EPSILONPI)
ELSE IF YSHOCK<0.0
SET PI 2 2 = THETA*PI{1} + (1-THETA)*PISTAR -THETA*(GAMMA*EXP(-EPSILONY)+EPSILONPI)
ELSE
SET PI 2 2 = THETA*PI{1} + (1-THETA)*PISTAR +THETA*(GAMMA*EXP(EPSILONY)+EPSILONPI)