<?xml version="1.0" encoding="ISO-8859-1"?>
<RSL xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="RSL">
  <domain dname="FORTRAN"/>
  <rslelems xsi:type="Pattern" ptoken="execution_part_construct_list">
    <phead name="before_advice_stmt"/>
    <ptext xsi:type="SimplePatternText" ptext="PRINT *, 'Before Calling Random...';"/>
  </rslelems>
  <rslelems xsi:type="Pattern" ptoken="execution_part_construct_list">
    <phead name="after_advice_stmt"/>
    <ptext xsi:type="SimplePatternText" ptext="PRINT *, 'After Calling Random...';"/>
  </rslelems>
  <rslelems xsi:type="Pattern" ptoken="NAME">
    <phead name="method_name"/>
    <ptext xsi:type="SimplePatternText" ptext=" RANDOM_NUMBER"/>
  </rslelems>
  <rslelems xsi:type="Pattern" ptoken="NAME">
    <phead name="within_code"/>
    <ptext xsi:type="SimplePatternText" ptext=" define_AB"/>
  </rslelems>
  <rslelems xsi:type="ExternalPattern" ptoken="Fortran90_program" dname="FORTRAN" eptext="around_advice_call">
    <phead name="around_advice_call">
      <params name="program" referTo="Fortran90_program"/>
      <params name="method_name" referTo="NAME"/>
      <params name="proceed_call" referTo="NAME"/>
      <params name="proceed_bef" referTo="execution_part_construct_list"/>
      <params name="proceed_aft" referTo="execution_part_construct_list"/>
      <params name="withincode" referTo="NAME"/>
    </phead>
  </rslelems>
  <rslelems xsi:type="Rule" rname="func_call" type="Fortran90_program">
    <params name="program" referTo="Fortran90_program"/>
    <r_lhs_pattern>
      <ruletext xsi:type="IDRuleText" text="program"/>
    </r_lhs_pattern>
    <r_rhs_pattern>
      <ruletext xsi:type="ComplexRuleText">
        <pref name="around_advice_call">
          <params xsi:type="RealParameter" name="program"/>
          <params xsi:type="PatternRef" name="method_name"/>
          <params xsi:type="PatternRef" name="method_name"/>
          <params xsi:type="PatternRef" name="before_advice_stmt"/>
          <params xsi:type="PatternRef" name="after_advice_stmt"/>
          <params xsi:type="PatternRef" name="within_code"/>
        </pref>
      </ruletext>
      <condition xsi:type="RuleNotEqCondition" lhs="program">
        <pref name="around_advice_call">
          <params xsi:type="RealParameter" name="program"/>
          <params xsi:type="PatternRef" name="method_name"/>
          <params xsi:type="PatternRef" name="method_name"/>
          <params xsi:type="PatternRef" name="before_advice_stmt"/>
          <params xsi:type="PatternRef" name="after_advice_stmt"/>
          <params xsi:type="PatternRef" name="within_code"/>
        </pref>
      </condition>
    </r_rhs_pattern>
  </rslelems>
  <ruleset rsname="calldemo">
    <rname>func_call</rname>
  </ruleset>
</RSL>

