%EXTERNALINTEGERFN POWII %ALIAS "F_POWII"(%INTEGER IARG,NARG) ! ! CALCULATES IARG**NARG ! %INTEGER X,Y %INTEGER N X= IARG Y= 1 N= NARG %IF N=0 %then %result= 1 !%START ! %IF X#0 %THEN %RESULT= 1 %ELSESTART ! Error message suppressed to give conformity with other systems. ! %IF TEST=1 %THEN TERROR( IPOWERZERO ) %ELSE ERROR( IPOWERZERO ) ! %RESULT= 1 ! %FINISH !%FINISH %IF X=1 %THEN %RESULT= 1 %IF X=-1 %START %IF N<0 %THEN N= -N %IF N&1=1 %THEN %RESULT= -1 %ELSE %RESULT= 1 %FINISH !Error message suppressed to conform to '77' standard. !%IF N<0 %START ! %IF TEST=1 %THEN TERROR( IPOWEXPNEG ) %ELSE ERROR( IPOWEXPNEG ) ! %RESULT= 0 !%FINISH %IF X=0 %or n<0 %THEN %RESULT= 0 %CYCLE %IF N&1#0 %THEN Y= Y*X N = N>>1 %IF N#0 %THEN X= X*X %ELSE %EXIT %REPEAT %IF Y=0 %START %IF TEST=1 %THEN TERROR( IPOWLARGE ) %ELSE ERROR( IPOWLARGE ) %RESULT= 0 %FINISHELSE %RESULT= Y %END {OF POWII}