まずは次ぎのソースをご覧になって下さい。

&a
&b
&c

sub a {処理一番}
sub b {処理二番}
sub c {処理三番}

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

A 回答 (2件)

 sub a の中に分岐を作って、引数で処理し分けるのが一般的じゃないでしょうか。


 すでに2つの引数が使われていたとすると、3つ目の引数としてフラグを用意します。

 このとき、フラグの値が0なら今まで通り最初から処理するけど、1なら途中から、という具合。
    • good
    • 0

$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 によってサブルーチンの実行位置を
決定する。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード


人気Q&Aランキング

おすすめ情報