Let us make the task SUMS able to accept two different commands. SUMS.IFL contains
interface SUMS parameter VALUE type '_REAL' endparameter action SQUARE obey needs VALUE endobey endaction action ADD obey needs VALUE endobey endaction endinterface
and SUMS.FOR contains
SUBROUTINE SUMS ( STATUS ) IMPLICIT NONE INCLUDE 'SAE_PAR' INCLUDE 'ACT_ERR' INTEGER STATUS REAL VALUE CHARACTER*(PAR__SZNAM) NAME IF ( STATUS .NE. SAI__OK ) RETURN CALL TASK_GET_NAME ( NAME, STATUS ) IF ( NAME .EQ. 'SQUARE' ) THEN CALL PAR_GET0R ( 'VALUE', VALUE, STATUS ) CALL MSG_SETR ( 'ANS', VALUE**2 ) CALL MSG_OUT ( ' ', 'answer is = ^ANS', STATUS ) ELSE IF ( NAME .EQ. 'ADD' ) THEN CALL PAR_GET0R ( 'VALUE', VALUE, STATUS ) CALL MSG_SETR ( 'ANS', VALUE+VALUE ) CALL MSG_OUT ( ' ', 'answer is = ^ANS', STATUS ) ENDIF END
As above, you can issue the ICL command
ICL> send sums obey square
and you will be prompted for VALUE. Thereafter, that same value of VALUE will be used, even if you
ICL> send sums obey add
However, notice that the interface file has now been changed to specify that VALUE is NEEDed by the actions. This means that you can
ICL> send sums obey add 42
and the value 42 is put into the parameter by the fixed-part before your application is called.
ADAM Guide to Writing Instrumentation Tasks