プログラム機能

条件分岐(If〜Else-If〜Else〜End-If)

インプットボックスから入力した値を
 7以上、4以上、3以上の3種類に分類
 それぞれを、また、3種類に分類。計9種

に分類して、それぞれ異なるメッセージを表示します。



――――――――――――――――

入力チェック

 ・空白 ⇒ 処理終了
   Jump %FuncRet% = "" QUIT

 ・数値、正、整数 の何れでもない ⇒ エラーメッセージ表示 ⇒ 再入力
   If(IsNumeric(%FuncRet%)==0) || (%FuncRet%<0) || ((%FuncRet% - Int(%FuncRet%))<>0)

   IsNumeric() :数値であるかを判定  数値=1 非数値=0
   %FuncRet% - Int(%FuncRet%) :整数かを判定(Int() 整数部のみを取り出す)
   || : 論理和(どれかが真であれば全体も真)
コードの使用方法


条件分岐(Else-If連続)

Else-If を連続使用して、条件分岐します。


 月を入力して、その月の日数を表示
 なお、2月の日数は今年の日数とし、閏年判定から求めます。



補足:
 「=」と「==」は同じ比較演算子です。(C++やJavaのような代入演算子ではありません。)
コードの使用方法


繰返し処理

条件を満たす間、処理を繰り返す。

本例では、指定の値までの2乗和を求める。


後置判定(処理を行った後で条件式を判定)の例
指定の値以下の間、処理(2乗和)を繰り返す。
コードの使用方法


前置判定(処理を行う前に条件式を判定)の例

繰返し処理2 ポイント位置の色取得

マウスポインタ位置とその位置のを取得。
 (無限ループなので、ホットキーまたは本体の「停止」でプログラムは停止させる。)
ちょっとしたプチツールが作成可能。
001   INIT
002   Dim          Color
003 !
004 ! ポイント位置色取得ツール
005 !
006   手動停止オフ                    
← 手動マウス操作による停止を無効
007   Do-While 1                     ← 無限ループ
008     SetVariable    %Color%  GetPixelPoint()   
← ポイント位置の色コードを変数に格納
009     SHOW_MSG                    
← 各種情報表示
010   WLoop
SHOW_MSG の部分

 マウス位置 GetCursorPosX(),GetCursorPosY()   ← ポインタ座標 X,Y
 色(16進)  %Color%(Hex(%Color%))        ← 色コード 10進(16進)
  赤要素 : GetRValue(%Color%)         ← RGB色要素
  青要素 : GetBValue(%Color%)
  緑要素 : GetGValue(%Color%)
コードの使用方法



For 〜 Next-For 指定の値まで連続実行

1 から 指定の値 まで加算する − For-Next の仕様
値の指定は、インプットボックスから入力。

001 !                                                          
002 ! 1〜n までの和                                         
003 !                                                          
004       Set              // カウンタ              n          
005       Set              // 結果                  S  0       
006       Set              // 値の入力              Nmax InputBox("加算する値の最終値を入力して下さい。","値の入力",100)   
007       If                       %Nmax% = ""                 
008         QUIT           // 空白→キャンセル                 
009       End-If                                               
010 !                                                          
011       For                      n;1;%Nmax%                  
012         AddVar         // 加算 S ← S+n          %S% %n%   
013       Next-For                                             
014                        !                                   
015       MSG_BOX          // 結果表示                 結果 Nmax = %Nmax% S = %S%   
 
コードの使用方法




For 〜 Next-For を使ったCSVファイル処理  14.37版以降
For〜Next-For を使用してCSVファイルからデータを読み込み、指定アプリのフィールドに入力します。

 下図左は、入力先アプリと応答メッセージ

    右は、入力元のCSVファイルデータ


処理手順

・入力対象のアプリを起動

・CSVデータを読み込む − CSV読込
  レコード数は、CsvRecordCnt にセットされる

・変数定義
  n:カウンタ  Dt:データの読込先


繰り返し処理開始  1レコード目から最終レコードまで

   先頭フィールドに移動 LeftCkick

   ・第1フィールドを取出し GetCsvData → Dt
   ・データ入力 − 文章入力

   ・TABで次のフィールドへ移動
   ・第2フィールドを取出し → Dt
   ・データ入力 − 文章入力

   最終フィールドまで上記を繰り返し

   ・TABでOKボタンに移動
   ・ENTERキー押下
   ・確認メッセージに自動応答 − ENTERキー

・最終レコードまで繰り返し


001       INIT                                  304 503 724 691  0,0,1,,0,   
002       SHOW_MSG         --概要説明フォーム表示     0 30 405 5850 6480 0,15335115,1,0,16711680,12,MS Pゴシック,False,False,False,False, 
CSVファイルから連続入力

1レコード目から、最終レコード(10)までを連続入力。


本例では、フィールドの移動をマウスでは無く、キー(Tab)で行い、ボタンはEnterで実行する

レコードの読み込み

 ・CSV読込 コマンドでデータ読み込み
   レコード数 → CsvRecordCnt
   フィールド数→ CsvFieldCnt
 ・GetCsvData(コマンド型)でデータ取り出し
   

以降、Tabでフィールドを移動しながらデータを入力




00000   
003       AP_Open             1000 0        444 133 1 408 83 716 375  サンプル\ダミーフォーム.exe   
004 !                                                          
005       CSV読込          --CSVデータ読込             サンプル\入力用文言.csv   
006 !                                                          
007       Set              // カウンタ              n          
008       Set              // データ                Dt         
009 !                                                          
010 ST    For              // 1〜4(レコード数)繰り返す  n;1;%CsvRecordCnt%            
011 !                                                          
012         LeftClick      // 先頭フィールドに移動   449 124          
013 !                                                          
014         GetCsvData     --第1フィールド     %Dt%     %n% 1   
015         文章入力                                一括 %Dt%   
016 !                                                          
017         Tab            --第2 〒 100                      
018         GetCsvData                         %Dt%     %n% 2   
019         文章入力                                一括 %Dt%   
020 !                         200                              
021         Tab            --第3 都道府県 100                
022         GetCsvData                         %Dt%     %n% 3   
023         文章入力                                一括 %Dt%   
024 !                                                          
025         Tab            --第4 市町村 100                  
026         GetCsvData                         %Dt%     %n% 4   
027         文章入力                                一括 %Dt%   
028 !                                                          
029         Tab            --第5 住所 100                    
030         GetCsvData                         %Dt%     %n% 5   
031         文章入力                                一括 %Dt%   
032 !                                                          
033         Tab            --第6 氏名 100                    
034         GetCsvData                         %Dt%     %n% 6   
035         文章入力                                一括 %Dt%   
036 !                                                          
037         Tab            --「OK」ボタン 100                  
038         Enter              500                          
039         自動応答       --「OK」←確認メッセージ 2000 100        ダミーの入力です 入力完了 {enter}   
040 !                                                          
041       Next-For         // 次のレコード                     
042 !                                                          
043       Tab              --「閉じる」ボタン                  
044       Enter                                                
                                              
                                            
      

コードの使用方法




二重For 〜 Next-For を使ったCSVファイル処理   14.50版以降


For〜Next-For を二重(レコード数分ループの中にフィールド数分のループ)使用してCSVファイルからデータを読み込み、指定アプリのフィールドに入力します。

処理の流れ
出力用アプリ起動

変数定義

レコード数: GetCsvRecordCnt にて取得 → RecordCnt
フィールド数: GetCsvFieldCnt にて取得 → FieldCnt

レコード数分のループ  カウンタ用変数 r ; 初期値(1) ; 最終値 レコード数(%RecordCnt%

  先頭フィールドに移動 LeftClick

  フィールド数分のループ  カウンタ用変数  ; 初期値(1) ; 最終値 フィールド数(%FieldCnt%

    データの取得 GetCsvData( CSVファイル名 、レコード 、フィールド ) → Dt
    データをアプリに出力 文章入力  %Dt%

  フィールド数分繰り返す

レコード数分繰り返す

「閉じる」ボタンに移動 TABキー

「閉じる」ボタン押下 ENTERキー

001       INIT                                  304 503 724 691  0,0,1,,0,   
002 !                                                          
003 ! For文の二重ループを使用して                              
004 ! レコード数分、およびフィールド数分入力                   
005 !                                                          
006       SHOW_MSG         --概要説明フォーム表示     0 45 0 6135 6630 0,15335115,1,0,16711680,12,MS Pゴシック,False,False,False,False, 
CSVファイルから連続入力

For文の二重ループを使用

それぞれのレコードについてフィールドデータを読み込み、指定アプリに入力


フィールドの移動タブキーで行い、Enterキーでボタン押下

CSV情報取得
 ・GetRecordCnt レコード数
 ・GetFieldCnt   フィールド数
 ・GetCsvData     CSVデータ

レコードループ
 変数: 1〜%RecordCnt%

フィールドループ
 変数: 1〜%FieldCnt%


以降、Tabでフィールドを移動しながらデータを入力




00000   
007       AP_Open             1000 0        444 133 1 408 83 716 375  サンプル\ダミーフォーム.exe   
008 !                                                          
009       Set              // ファイルパス          FilePath サンプル\入力用文言.csv   
010 !                                                          
011       Set              // レコード数            RecordCnt GetCsvRecordCnt(%FilePath%)   
012       Set              // フィールド数          FieldCnt GetCsvFieldCnt(%FilePath%)   
013       Set              // カウンタ−レコード          r    
014       Set              // カウンタ−フィールド          f    
015       Set              // データ格納            Dt         
016 !                                                          
017       For              // 1〜4(レコード数)繰り返す  r;1;%RecordCnt%            
018 !                                                          
019         LeftClick      // 先頭フィールドに移動   449 124          
020 !                                                          
021         For                    f;1;%FieldCnt%              
022           Set          --第1フィールド     %Dt%     Dt GetCsvData(%FilePath%,%r%,%f%)   
023           文章入力        100                   一括 %Dt%   
024           Tab             100                              
025         Next-For                                           
026 !                                                          
027         Enter              100                          
028         自動応答       --「OK」←確認メッセージ 2000 100        ダミーの入力です 入力完了 {enter}   
029 !                                                          
030       Next-For         // 次のレコード                     
031 !                                                          
032       Tab              --「閉じる」ボタン                  
033       Enter               100                              

コードの使用方法




ランダム文字列生成 For 〜 Next-For 、 Do-While 〜 Wloop 、 Betw() 、 Chr()  14.52版以降

For 〜 Next-For 、Do-While 〜WLoop を使用してランダムな数字、文字を生成

数字の生成には、ランダム整数作成関数 Betw(最大値,(最小位置)) を使用
これにより、指定範囲の整数を作成できる。

大文字のみを生成するには、Betw()関数で
ランダムな数字 85〜90(ASCIIコードでA〜Z)を生成して、CHr()関数で文字に変換する。



ランダムな文字も同様に 33〜126(ASCIIコードで !〜 ~ )を生成して文字に変換



大文字または小文字の場合はコードが連続していないので、Do-While でループし、指定範囲のコード(65〜90、97〜122)の場合のみ文字とする。



数字、大文字、小文字の場合も同様、指定範囲のコード(48〜57、65〜90、97〜122)



補足

 確率的には数千回の乱数でも指定範囲に収まらない可能性も、ほとんど無限小ながらある。
別個のカウンタを設け、最大試行回数を決めておけば確実!

 実行に時間が掛かる(特に最初のランダムな数字)のは、マウスレコーダーのリスト行再表示のため。
 最小化、またはタスクトレイに入れておけば高速になります。
001       INIT                                  9 218 591 782  0,0,1,600000,0,   
002 ! 乱数発生                                                 
003 !                                                          
004 ! 指定桁の数字列、文字列を生成                             
005 !                                                          
006       Set              // カウンタ              n          
007       Set              // 乱数                  r          
008       Set              // 生成文字              s          
009       Set              // 表示用                msg        
010       Set              // 桁数                  keta 100   
011 !                                                          
012 ! 指定桁の数字                                         
013 !                                                          
014       Set              // 初期化                s          
015       For              // 繰返し  n ; 1 ; %keta%            
016         Set            // 0〜9の数字を生成&連結          s %s%Betw(9,0)   
017       Next-For                                             
018       SHOW_MSG         // 表示             0 105 30 15075 2700 0,-2147483643,0,0,0,12,MS ゴシック,False,False,False,False, %keta%桁の数字を生成 %s%01101   
019 !                                                          
020 ! 指定桁の文字         // A 〜 Z                           
021 !                                                          
022       Set              // 初期化                s          
023       For              // 繰返し  n ; 1 ; %keta%            
024         Set            // ASCIIコード 33〜90 を生成&連結          s %s%Chr(Betw(90,65))   
025       Next-For                                             
026       SHOW_MSG         // 表示             0 105 240 14370 3435 0,-2147483643,0,0,0,12,MS ゴシック,False,False,False,False, %keta%桁のランダム文字を生成(A〜Z)%s%01101   027 !                                                          
028 ! 指定桁の文字         // ! 〜 ~                           
029 !                                                          
030       Set              // 初期化                s          
031       For              // 繰返し  n ; 1 ; %keta%            
032         Set            // ASCIIコード 33〜126 を生成&連結          s %s%Chr(Betw(126,33))   
033       Next-For                                             
034       SHOW_MSG         // 表示             0 105 240 14370 3435 0,-2147483643,0,0,0,12,MS ゴシック,False,False,False,False, %keta%桁のランダム文字を生成 %s%01101   
035 !                                                          
036 ! 指定桁の文字         // 大文字と小文字                   
037 !                                                          
038       Set              // 初期化                n  1       
039       Set              // 初期化                s          
040       Do-While         // 繰返し  %n% <= %keta%            
041         Set            // 33〜126 の乱数を生成          r Betw(126,33)   
042         If             // 範囲指定  ( (%r% >= 65) && (%r% <= 90 ) ) || ( (%r% >= 97) && (%r% <= 122 ) )            
043           AddVar       // カウンタ加算          %n% 1      
044           Set          // 生成文字連結          s  %s%Chr(%r%)   
045         End-If                                             
046       WLoop                                                
047       SHOW_MSG         // 表示             0 105 240 14370 3435 0,-2147483643,0,0,0,12,MS ゴシック,False,False,False,False, %keta%桁のランダムな大/小文字を生成 %s%01101   
048 !                                                          
049 !                                                          
050 ! 指定桁の文字         // 数字、大文字、小文字              
051 !                                                          
052       Set              // 初期化                n  1       
053       Set              // 初期化                s          
054       Do-While         // 繰返し  %n% <= %keta%            
055         Set            // 33〜126 の乱数を生成          r Betw(126,33)   
056         If             // 範囲指定  ( (%r% >= 48) && (%r% <= 57 ) ) || ( (%r% >= 65) && (%r% <= 90 ) ) || ( (%r% >= 97) && (%r% <= 122 ) )            
057           AddVar       // カウンタ加算          %n% 1      
058           Set          // 生成文字連結          s  %s%Chr(%r%)   
059         End-If                                             
060       WLoop                                                
061       SHOW_MSG         // 表示             0 105 240 14370 3435 0,-2147483643,0,0,0,12,MS ゴシック,False,False,False,False, %keta%桁のランダムな数字/大/小文字を生成 %s%01101   
 
 
コードの使用方法






Wait命令

メモ帳を起動し、文字列を入力。
入力された文字列内に「検出」の文字が含まれていたら、5秒待つ(Wait)。
Wait条件にヒットしていた場合(%Wait%にヒット文字が格納されていた時=空白でなかった時)、「HIT」にジャンプ(Jump)して、その文字列と「が表示されていました」を表示。
ヒットしていなかったら「ヒットしませんでした。」を表示。 



コードの使用方法



Jump命令

メモ帳を起動し、文字列を入力。
入力された文字列内に「検出」の文字が含まれていたら、「HIT」にジャンプ。
および、Jump判定にヒットした文字列をメッセージボックスに表示。
判定する対象は作業中のウィンドウ。 

コードの使用方法


自動応答

メモ帳を起動(OPEN_AP)し、文字列(文章入力)を入力。
閉じる(Altキー+F4)を発行 − タイトルに"無題 - メモ帳"の文言が含まれるウィンドウに対して発行
自動応答:アクティブなウィンドウに"いいえ"の文言が含まれていたら、2000ミリ秒後に「」を自動キー入力
    最長10(10000ミリ)秒間、表示文字の監視を続ける。
    監視文言にマッチしなかったら何もせずに次のステップに移行。
コードの使用方法



モジュール化

同じ処理をサブルーチン化することで、全体をコンパクトに、かつ見やすくできる。
下記の例では、メインルーチンから2つのサブルーチンを呼び出している。
サブルーチンの呼び出しには、ラベル名を使用し、Return呼び元の次の行に戻る。
コードの使用方法



条件付サブルーチンコール

条件により呼び出すサブルーチンを変更する。
下の例は、入力する値が5より大きい場合SubA以外の場合SubBをコールする。
コードの使用方法




値によるコール先選択

値によりコールするサブルーチンを決定する。
値(判定式)は最大10種類まで設定可
コードの使用方法




関数型インプットボックス

関数型のインプットボックスの使用例
コードの使用方法