「StiLL」 デザイン情報180 StiLLコマンド--条件ジョウケンカエ処理ショリ構築コウチク
                             
  【テーマ】 カエ処理ショリ条件ジョウケンしたいときってありませんか?今回コンカイはその構築コウチク方法ホウホウをご紹介ショウカイします。     方法ホウホウ】「ボタン連続実行レンゾクジッコウ(BtPush)」のナカでセルリンクボタン「繰返クリカエ実行ジッコウ(BtLoop)」をモチカエ回数カイスウおよび条件ジョウケン一致イッチをセルリンクボタン「条件ジョウケン分岐ブンキ実行ジッコウ(BtPushIf)」で判定ハンテイしてツギ実行ジッコウさせるボタンを分岐ブンキします。カエしは「ボタン連続実行(BtPush)」自身ジシン再帰呼サイキヨしをオコナうことで実現ジツゲンします。     参考サンコウ】サンプル例をご用意しておりますのであわせてご参照ください。  
  対応Ver. :StiLL-XV1.0 以降
対応種類:StiLL Dev・Pro
    対応Ver. :StiLL-XV1.0 以降
対応種類:StiLL Dev・Pro
    対応Ver. :StiLL-XV1.0 以降
対応種類:StiLL Dev・Pro
 
                             
 今回コンカイ内容ナイヨウ  
繰返クリカエ処理ショリ途中トチュウで、とある条件ジョウケンのときに繰返クリカエ処理ショリから方法ホウホウをご紹介ショウカイします。
セルリンクボタンの 「カエ実行ジッコウ(BtLoop)」 では繰返クリカエしを実行ジッコウ途中トチュウせません。
そこで、今回コンカイはセルリンクボタン 「ボタン連続レンゾク実行ジッコウ(BtPush)」 でカエ処理ショリ構築コウチクするカンガカタをご紹介ショウカイします。
 サンプル例をご用意ヨウイしておりますのでご参照ください。
構築コウチクのポイント
 1)(BtPush)自身ジシンの 『再帰呼び出し』 による条件付き繰返し処理を構築コウチクします。
     ※ 『再帰サイキし』 とは処理ショリしているプログラム(ここではBtPush)が自分ジブン自身ジシンすことです。
 2)『再帰呼び出し』 を繰返すとメモリを消費するので呼び出せる回数に限界があります。
    そのタメカエしのアイダにセルリンクボタンの 「繰返し実行(BtLoop)」 を挿入ソウニュウしてカエしの回数カイスウオギナいます。
 3)ただし前述ゼンジュツのとおり(BtLoop)は途中トチュウではせないので一回イッカイ繰返クリカエ回数カイスウスクなく設定セッテイして、
    条件を満足した場合に繰返クリカエしをすまでの時間ジカンロスをミジカくします。
 4)上記ジョウキの(BtLoop)を複数フクスウ(BtPush)に設定セッテイすることで時間ジカンロスを短縮タンシュクしながらも全体ゼンタイ繰返クリカエ回数カイスウやします。
    また(BtPush)の設定セッテイでは IF関数カンスウ使ツカ条件ジョウケン満足マンゾクした場合バアイは(BtLoop)を実行ジッコウしないようにしここでも時間ジカンロスを抑制ヨクセイします。
 5)条件ジョウケン満足マンゾクしない状態ジョウタイ永久エイキュウループにオチイらないよう、カエ回数カイスウでもせる仕組シクみをホドコします。
以下イカ全体ゼンタイ(ボタン構成コウセイ)をシメします。
全体ゼンタイこのサンプルでは条件を満足マンゾクしない(セルG18=1)ときのカエしの最大サイダイスウを100万回としています。
        ※総合ソウゴウ判定ハンテイ(セルG18) には、シキ=IF(AND(F17<=G17,F19=1),1,9) 入力ニュウリョクしておきます。
■ ボタンの説明セツメイ  
設定セッテイおよび説明セツメイわせておみください】
・@ボタン連続実行(BtPush):BTN 1 の設定セッテイ (開始ボタン)
このボタンには次のボタンを設定しています。
 1. 画面ガメン表示ヒョウジ停止テイシ(DispOff):STILLDISPOFF
 2. カウンタ初期化ショキカ(BtSetValue):テキスト 1
 3. ボタン連続実行(BtPush):BTN 2
 4. ボタン連続実行(BtPush):次の処理
・カウンタ初期ショキ(BtSetValue):テキスト 1 の設定セッテイ
カエしの初期値ショキチとして 1 を セルF17 と セルF19 に設定セッテイします。 ⇒
・ボタン連続実行レンゾクジッコウ(BtPush):BTN 2 の設定セッテイ
このボタンには次のボタンを設定しています。
 1. ボタン連続実行(BtPush):BTN 3
 2. 条件ジョウケン分岐ブンキ実行ジッコウA(BtPushIf):フローチャート 2
・ボタン連続実行レンゾクジッコウ(BtPush):BTN 3 の設定セッテイ
このボタンは(BTN 4)の実行ジッコウ設定セッテイしています。
 セルD23 のシキ: ="BTN 4," & F14
 セルD24 から セルD27 には セルD23を参照サンショウするシキ、=D23 を入力ニュウリョクしています。
・ボタン連続実行レンゾクジッコウ(BtPush):BTN 4 の設定セッテイ
このボタンは(BTN 5)の実行ジッコウ選択センタクするツギシキ設定セッテイしています。
 セルG23 のシキ: =IF(F19=1,"BTN 5,"&F14,"")
 セルG24 から セルG27 には セルG23を参照サンショウするシキ、=G23 を入力ニュウリョクしています。
カエ実行ジッコウ(BtLoop):BTN 5 の設定セッテイ
このボタンには次のボタンの実行ジッコウを設定しています。
条件ジョウケン分岐ブンキ実行ジッコウ@(BtPushIf):フローチャート 1
またこのボタンの 「終了シュウリョウ数値スウチ」 を繰返クリカエ回数カイスウ基準キジュンとしますので、「初期数値」 および 「増減数値」 には 1 を設定します。
※「終了シュウリョウ数値スウチ」 は後段コウダンの 「ご参考サンコウまでに」 をおみいただき状況ジョウキョウわせた回数カイスウ設定セッテイします。
「リンクするセル」 は設定セッテイしません。(設定セッテイするとパフォーマンスがちます)
条件ジョウケン分岐ブンキ実行ジッコウ@(BtPushIf):フローチャート 1 の設定セッテイ
このボタンはシメトオり、セルG18 のアタイ判定ハンテイしてツギトオ実行ジッコウするボタンを選択センタクします。
セルG18 = 1 のトキ、ボタン連続レンゾク実行ジッコウ(BtPush):BTN 6 を実行ジッコウ
セルG18 ≠ 1 [それ以外イガイ] のトキナニもしない(None):BTN 9 を実行ジッコウ
・ボタン連続レンゾク実行ジッコウ(BtPush):BTN 6 の設定セッテイ
このボタンに設定セッテイした処理ショリが、条件ジョウケン満足マンゾクする(セルF19 ≠ 1)まで、または 「最大サイダイ繰返クリカエ回数カイスウ」 までカエ実行ジッコウされます。
ここでは以下イカのボタンを設定セッテイしています。
 1. ボタン連続実行(BtPush):BTN 7 ・・・ 繰返クリカエ処理ショリ設定セッテイ
 2. セルデータコピー(BtCellCopy):カウントUp (繰返クリカエ回数カイスウ
   ※セルF18 のシキ: =F17+D37
・ボタン連続レンゾク実行ジッコウ(BtPush):BTN 7 の設定セッテイ
ここで繰返クリカエ処理ショリ設定セッテイします。
このボタンの処理ショリ条件ジョウケン満足マンゾクした場合バアイ、 セルF19 にアタイレイ: 9)を設定セッテイするようにします。
この設定セッテイで、セルG18 「総合判定」 のアタイが 9 となりカエしからます。
条件ジョウケン分岐ブンキ実行ジッコウA(BtPushIf):フローチャート 2 の設定セッテイ
このボタンはシメトオり、セルG18 のアタイ判定ハンテイしてツギトオ実行ジッコウするボタンを選択センタクします。
セルG18 = 1 のトキ、ボタン連続レンゾク実行ジッコウ(BtPush):BTN 2 を実行ジッコウ。 ・・・ 繰返しの継続(再帰呼サイキヨし)
セルG18 ≠ 1 [それ以外イガイ] のトキナニもしない(None):BTN 9 を実行ジッコウ。 ・・・ カエしの終了シュウリョウ (BTN 8 「次の処理」 にススむ)
・ボタン連続レンゾク実行ジッコウ(BtPush):BTN 8 の設定セッテイ
繰返クリカエしをアト実行ジッコウする処理ショリ設定セッテイします。
以上イジョウのようなボタン構成コウセイ条件ジョウケン満足マンゾクしたときに繰返クリカエ実行ジッコウから処理ショリ構築コウチクできます。
■ ご参考サンコウまでに  
1.繰返し回数(セルG17)をチイさくする場合バアイは以下の手順で行います。
  @ 「BTN 5(BtLoop)」 の 「終了数値」 をチイさくする。
     200 ⇒ 100 ⇒ 50 など
  A 「BTN 3(BtPush)」 の 「設定数」 を削減サクゲンする。
     レイ設定セッテイスウを1つに削減サクゲン
(BTN 3)
  B 上記ジョウキの 「終了シュウリョウ数値スウチ」 と 「設定セッテイスウ」 のわせレイ
@終了シュウリョウ数値スウチ A設定セッテイスウ 最大繰返し回数 条件ジョウケンシントキ時間ジカンロス
1 1 1000 1ビョウ以内イナイ
5 1     5000
10 1 10000
10 3     30000
10 5 50000
50 2     100000 2.5ビョウ以内イナイ
100 3     300000 5ビョウ以内イナイ
100 5     500000
200 5     1000000 10ビョウ以内イナイ
チュウ)「条件が真の時の時間ロス」とは、
   条件を満足マンゾクしたとき、繰返しから抜け出るまでの見込ミコ最大サイダイ秒数ビョウスウです。
   ※全体ゼンタイ処理ショリ時間ジカンではありませんのでご留意リュウイください。
   ※見込ミコ最大サイダイビョウスウはお使ツカいのパソコントウ環境カンキョウにより変動ヘンドウします。
サンプル例をご用意しておりますのでご参照ください。 
(各ボタンの設定内容の詳細はStiLLヘルプをご確認ください)  
Copyright(C) アイエルアイ総合研究所 無断転載を禁じます