<return> ステップには、String 型の属性値が 1 つあります。この値は戻り値です。値が指定されていない場合、ブロックは値が返されずにステップ実行されます。
次の例は、<try> および <finally> ブロック内の <return> ステップを示しています。値 b が返されます (Java の場合と同様)。
<try> <block> <return value="a" </block> <catch/> <finally> <return value="b"> </finally> </try> |
条件付きで使用される <return> ステップの例を、次に示します (分かりやすいよう行番号を追加)。var1 が true の場合、5 行目の <return> ステップによってブロックの残りのブロックがスキップされます。8 行目と 9 行目はまったく実行されません。var1 が true ではない場合は、9 行目の <return> ステップが、ブロック内で実行される最後のステップになります。
1. <control name = "blah" returns="true"> 2. <varList> 3. <var name="var1" default="val1"/> 4. <var name="var2" default="val2"/> 5. </varList> 6. <if> 7. <condition><istrue value=":[var1]"/></condition> 8. <then> 9. <return value=":[var2]"> 10. </then> 11. </if> 12. <assign varName="var2" value="new value"/> 13. <return value=":[var2]"/> 14.</control> |
一方、次の例は、<try> ブロック内での <return> ステップの条件付きの使用を示しています。var1 が true かどうかにかかわらず、15 行目が実行される最後の行になります。
1. <control name="blah" returns="true"> 2. <varList> 3. <var name="var1" default="val1"/> 4. <var name="var2" default="val2"/> 5. </varList> 6. <try> 7. <block> 8. <if> 9. <condition><istrue value=":[var1]"/></condition> 10. <then> 11. <return value=":[var2]"> 12. </then> 13. </if> 14. <assign varName="var2" value="new value"/> 15. <return value=":[var2]"/> 16. </block> 17. <catch/> 18. <finally> 19. <pause delaySecs="5"/> 20. </finally> 21. </try> 22.</control> |
次の例は、inlineSubplan または execSubplan 本体の <SimpleSteps> 内にある <return> ステップを示しています。制御は、inlineSubplan または execSubplan を呼び出す一連のステップ内の次の行に戻ります。4 行目の <return> ステップのあとの、次のステップは 7 行目です。
1. <complexSteps> 2. <inlineSubplan> 3. <simpleSteps> 4. <return/> 5. </simpleSteps> 6. </inlineSubplan> 7. <inlineSubplan> 8. <simpleSteps> 9. <pause delaySecs="1"/> 10. </simpleSteps> 11. </inlineSubplan> 12.</complexSteps> |