• 締切済み

処理をした後にとばしたい場所に飛ばしたい

まずは次ぎのソースをご覧になって下さい。 &a &b &c sub a {処理一番} sub b {処理二番} sub c {処理三番} 上記のプログラムでまず「sub a」の処理をさせます。 次に「sub b」の処理をさせます。 次に「sub c」の処理をさせます。 が、しかし「sub b」の処理の中で条件文があり、条件に満たない場合は「sub a」の中の「処理1番プログラム」の中の途中からまたスタートさせたい(処理を返えしたい)と思っています。 そのような事が出来るでしょうか?どうか教えて下さい。 お願いします。

みんなの回答

noname#25358
noname#25358
回答No.2

 sub a の中に分岐を作って、引数で処理し分けるのが一般的じゃないでしょうか。  すでに2つの引数が使われていたとすると、3つ目の引数としてフラグを用意します。  このとき、フラグの値が0なら今まで通り最初から処理するけど、1なら途中から、という具合。

  • alicia-y
  • ベストアンサー率40% (85/208)
回答No.1

$proc_no = 1; $flg = 0; while($proc_no){ if($proc_no == 1){ ($proc_no, $flg) = &a($flg); } elsif($proc_no == 2){ ($proc_no, $flg) = &b($flg); } elsif($proc_no == 3){ ($proc_no, $flg) = &c($flg); } else { $proc_no = 0; } } ってのはどう? 各サブルーチンで次に実行する番号($proc_no)と処理フラグ($flg)を返す。 終了するときは $proc_no を0にする。$flg によってサブルーチンの実行位置を 決定する。

関連するQ&A