module functions { //full function body with multiple parameters, including passing modes, runs on clause and return value function f_sample2 ( template R3Msg p_radiusAccntReq, out template R3Msg p_radiusAccntRsp ) runs on R3Comp return FncRetCode { var FncRetCode v_ret := e_success; alt { [] r3Port.receive ( m_r3MonitorInd ( p_radiusAccntReq ) ) { v_ret := e_success; } [] r3Port.receive ( m_r3MonitorInd ( e_RadiusAccountingRequest, p_radiusAccntReq ) ) { v_ret := e_success; } [] r3Port.receive ( m_r3MonitorInd ( e_RadiusAccountingRequest, m_radiusAccntReq_any ) ) { return e_error; } } return v_ret; } //function skeleton with a single parameter, including a passing mode, with a runs on clause function f_sample1 (in template R3Msg p_radiusAccntReq) runs on R3Comp { } //function skeleton with a single parameter, with a runs on clause function f_sample11 (template R3Msg p_radiusAccntReq) runs on R3Comp { } //function skeleton without parameters, with a return value function f_sample () return r { } //full function body with multiple parameters, including passing modes, no further clauses function f_sample21( template R3Msg p_radiusAccntReq, out template R3Msg p_radiusAccntRsp ) { var integer v_var1 := 0; var integer v_var2 := 10; while (v_var1 < v_var2){ v_var1:=v_var1+1; } } }