Indicates the end of a block-if control structure.
No options or parameters
A block-if structure consists of one or more alternative sets of statements. The first of these is introduced by an
IF statement. There may then be further sets introduced by
ELSIF statements. Then you can have a final set introduced by an
ELSE statement, and the whole structure is terminated by an
ENDIF statement. Full details are given in the description of the
Commands for: Program control.
" Example PROC-1: Defining a procedure" PROCEDURE 'SQUARERT' " Define the options & parameters of the procedure " OPTION NAME='PRINT','TRACE'; MODE=t; DEFAULT='no' PARAMETER NAME='X','ROOTX'; MODE=p " Check that the option settings are valid and set scalars Sprint and Strace to indicate whether they are set to yes " SCALAR Sprint,Strace FOR Setting=PRINT,TRACE; Sset=Sprint,Strace IF Setting .EQS. 'yes' CALCULATE Sset = 1 ELSIF Setting .EQS. 'no' CALCULATE Sset = 0 ELSE EXIT [CONTROLSTRUCTURE=procedure] ENDIF ENDFOR " Check for invalid setting of parameter X ( i.e. < 0 ) " IF X < 0 PRINT 'X < 0 : square root cannot be calculated' ELSE " Calculate convergence limit & initialize " CALCULATE Clim = X/10000 & ROOTX = X " Loop until convergence " FOR [NTIMES=20] CALCULATE Previous = ROOTX & ROOTX = (X/Previous + Previous)/2 IF Strace PRINT [IPRINT=*] ROOTX ENDIF EXIT ABS(Previous-ROOTX) < Clim ENDFOR IF Sprint PRINT [IPRINT=*] 'square root of ',X,' is ',ROOTX;\ JUSTIFICATION=left ENDIF ENDIF ENDPROCEDURE " Use the procedure" SCALAR Rx SQUARERT X=48; ROOTX=Rx PRINT Rx " Use it and set the option" SQUARERT [PRINT=yes] X=48; ROOTX=Rx SQUARERT [PRINT=yes; TRACE=yes] 81; ROOTX=Rx