- 締切済み
UWSCに制限時間を付けたいです
UWSCでループの中のループで無限ループにハマってしまいプログラムが終わらなくなった時のために 一定時間経ったら最期の判定に行く前であっても読み込んだUWS自体を強制的に終了させれるようにしたいです REPEAT REPEAT xxxxxxxx ←ここで無限ループに UNTIL UNTIL 上のようになります また最期のUNTILに t=GETTIME() UNTIL ((GETTIME()-t)>=3) //3秒以内に終わらなかったら終了 上のように制限時間を付けても、判定のある最期まで行けないと動かなくなり 使うループの数が多いため 最初の方か最期のほうに数行書くだけでいいように作りたいです ご教授お願いしますm(__)m
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- mindatg
- ベストアンサー率48% (110/227)
>また最期のUNTILに >t=GETTIME() >UNTIL ((GETTIME()-t)>=3) //3秒以内に終わらなかったら終了 もし上記の、>t=GETTIME() をUNTIL直前に書いているならREPEATに入る前に実行すべきです。 ハマっている処理で何が起きているのか、原因を調べるべきだとは思いますが、 簡単な解決案としてはBREAK、またはTRY-EXCEPTをお勧めします。 //BREAK例 DIM i = 10 REPEAT print i i = i - 2 IF i < 0 THEN BREAK UNTIL i = 5 上記は、ループ終了条件がi=5なのにiが5になる事が無い、ループ終了条件が適切ではない例です。 iが0未満になったらBREAKによりループを抜けさせています。 //TRY-EXCEPT例 DIM i = 10 DIM a = "壱" TRY REPEAT print i i = i - a print i + "2回目" UNTIL i < 0 EXCEPT print "エラー" ENDTRY こちらは、処理そのものがおかしい場合です。文字列から数値を引こうとしているのでエラーになる例です。 大体はUWSC側からオーバーフローなりなんなりのメッセージが表示されますが、処理によっては止まらない場合があります。 処理が継続できないエラーが発生した場合は、EXCEPT内の処理が実行されます。
お礼
ありがとうございます 無限ループに入った時の処理の仕方なので私のプログラムには使えないみたいです すいません