何個のスレッド数が適正かを判断するために、スレッド数は可変、外からわたすようにしておきます。ここからワーカーコマンドで別スレッドで実行するメソッドを呼び出します。スレッド数と担当番号を渡します。呼び出された側では、OPテーブルの全レコードについて、担当番号のレコードだけ処理します。全レコード数をスレッド数で割った余りが自分の担当番号と一致した場合にだけ処理する、というロジックにしました。テーブルとフィールドはコンポーネント化を考慮してポインタで参照しています。FORMを呼び出して進捗状況を表示します。WORKERしています。このため親メソッドからワーカー名(第1引数)をもらっています。FORMで現在の進捗を表示するメソッドです。ホストプロジェクトで画面に表示されているフォームの進捗バーと文字列に、処理数を渡しています。named;"vC01_lstCW_CountStr")$ptr->{$myNum}:=$msg【注意】この例では、ユーザによる途中キャンセルが実装されていません。