TPK: DO; /* external I/O and real mathematical routines */ WRITE$STRING: PROCEDURE( S ) EXTERNAL; DECLARE S POINTER; END; WRITE$REAL: PROCEDURE( R ) EXTERNAL; DECLARE R REAL; END; WRITE$NL: PROCEDURE EXTERNAL; END; READ$REAL: PROCEDURE( R ) REAL EXTERNAL; DECLARE R POINTER; END; REAL$ABS: PROCEDURE( R ) REAL EXTERNAL; DECLARE R REAL; END; REAL$SQRT: PROCEDURE( R ) REAL EXTERNAL; DECLARE R REAL; END; /* end external routines */ F: PROCEDURE( T ) REAL; DECLARE T REAL; RETURN REAL$SQRT(REAL$ABS(T))+5*T*T*T; END F; MAIN: PROCEDURE; DECLARE Y REAL, A( 11 ) REAL, I INTEGER; DO I = 0 TO 10; CALL READ$REAL( @A( I ) ); END; DO I = 10 TO 0 BY -1; Y = F( A( I ) ); IF Y > 400.0 THEN CALL WRITE$STRING( @( 'TOO LARGE', 0 ) ); ELSE CALL WRITE$REAL( Y ); CALL WRITE$NL(); END; END MAIN; END TPK;