Tips
更新日:2024年10月22日

目次

1-1 運用とファイル名の原則
1-2 変数への接頭辞と接尾辞
1-3 手続き名 につける接頭辞
1-4 入力支援ボタンの命名
 
2 表番号(ハンドル番号)を代入する変数名のサンプル
 
3-1 特殊な文字を分かり易く(文字コードと変数を使います)
3-2 ダブルクォーテーション、&表現式
3-3 ダッシュ(―)、ハイフン(‐)の入力方法
3-4 &STR の値を退避
 
4-1 [絞り込み] の設定
4-2 [項目]値 の訂正・代入
4-3 メッセージボックスの使用例
4-4 確認コマンドでエラーの戻り値を表示する
4-5 配列変数を引数で渡す場合には参照でなくても参照にすること

5-1 繰り返し 回数 … 繰り返し終了  ◇ 変数宣言 自動, 整数 { &i, &loop, &step }
5-2 後判定(後置判定)ループのサンプル
 
   
   

1-1 運用とファイル名の原則
原則1 フォームとイベント処理は1対1で対応させる
原則2 フォームとイベント処理は、同じフォルダの同じファイル名にする
原則3 表ファイルもフォーム+イベント処理と同じフォルダにする
 
  ( 以上、桐の釣魚大全 より引用 )
※年度別、部門別などで表ファイルを分ける場合には、原則3は適用できないケースも少なくないでしょう。
 
1-2 変数への接頭辞と接尾辞

局所変数 → 接頭辞に " m " を付ける ( 変数宣言 局所 , 文字列 { &m局所変数名 } ): m はモジュールの頭文字。

固有変数 → 接頭辞に " g " を付ける  ( 変数宣言 固有 , 文字列 { &g固有変数名 } ) : g はグローバルの頭文字。

共通変数 → 接頭辞に " p " を付ける  ( 変数宣言 共通 , 文字列 { &p共通変数名 } ) : p はパブリックの頭文字。

自動変数 → 接頭辞をつけない

配列変数 → 以上に加えて、接尾辞に "Dim" を付ける ( 例:&mドロップダウンリストDim )

 
1-3 手続き名 につける接頭辞

コマンドボタンから直接呼び出す「一般手続き」 を呼び出す場合 ⇒ オブジェクト名 + Click( 仮引き数リスト )

コマンドボタンから直接呼び出さない「一般手続き名」 ⇒ prc + 手続き名( 仮引き数リスト )

 
1-4 入力支援ボタンの命名
オブジェクト名+"入力支援ボタン "  ( 例 : txt氏名検索入力支援ボタン )
- 目次 -

2 表番号(ハンドル番号)を代入する 変数名のサンプル

自分自身 : &myTblNum       ( 使用例 : &myTblNum = &hwindow )

多重化表 : &multiTblNum      ( 使用例 : &multiTblNum = #IS表 )

その他 : &currentTblNum , &importTblNum , &exportTblNum , &openTblNum , &lookupTblNum

- 目次 -  

3-1 特殊な文字を分かり易く(文字コードと変数を使います)
文字 意味 変換例 設定例
"  半角二重引用符  #jis( #hex("22") )  &WQ = #jis( #hex("22") ) 
,  半角コンマ  #jis( #hex("2C") )  &comma = #jis( #hex("2C") )
\  半角円マーク  #jis( #hex("5C") )  &yen = #jis( #hex("5C") )
   半角空白文字(スペース)  #jis( #hex("20") )  &SP = #jis( #hex("20") )
-  半角ハイフォン・マイナス  #jis( #hex("2D") )  &bar = #jis( #hex("2D") ) 
例)
変数宣言 自動,文字列{ &WQ = #jis( #hex("22") ) } /* &WQ の値は半角二重引用符 ( " ) となります */
変数宣言 自動,文字列{ &SP = #jis( #hex("20") ) } /* &SP の値は半角スペースになります */
&WQ + "A" + "" + &SP + "" + "B" + &WQ /* 計算結果は "A B" になります */
※文字を直接使用するのではなく文字コードを使用するということです。ここでの変換例以外の方法もあるかと思います。
 
3-2 ダブルクォーテーション、&表現式
変数宣言 自動,文字列{ &WQ = #jis( #hex("22") ) } /* &WQ の値は半角二重引用符 ( " ) となります */
変数宣言 自動,文字列{ &表現式 } /* &表現式 をつかうことで、&変数名 の値を保持したままにします */
変数宣言 自動,整数 { &検索結果 }  
&表現式 = "*" + &WQ + &変数名 + &WQ + "*"  /* 準備した &表現式に 式の値を代入しています */
検索 [変数名] _ &表現式 , 終了状態 = &検索結果  

( "*" + &WQ + &文字列 + &WQ + "*" ⇒ "*""" + &文字列 + """*" ⇒ *"文字列"* ) ということです。

&表現式 = "*" + &WQ + &変数名 + &WQ + "*"  は "&表現式" を使わず
&変数名 = "*" + &WQ + &変数名 + &WQ + "*"  とも書けますが、変数の値が変わるとデバッグが難しくなります。
 
3-3 ダッシュ(―)、ハイフン(‐)の入力方法

ダッシュ : ―   「ダッシュ」 と入力して変換する。
ハイフン : -    「ハイフン」 と入力して変換する。

長音と間違えずに入力するには、以上の方法が便利です。

 
3-4 &STR の値を退避
変数宣言 自動,文字列 { &STRbak }

&STRbak = &STR          /* &STR の値を 自動変数 &STRbak に退避 */

&STR = &STRbak           /* &STRbakの値を 組み込み変数 &STR に戻す */
- 目次 -  


4-1 [絞り込み] の設定
 変数宣言 自動, 文字列{ &WQ = #jis( #hex("22") ) }
値を含む  絞り込み [住所1]{*"東京都"*}  変数宣言 自動, 文字列{ &値を含む = "*" + &WQ + "東京都" + &WQ + "*" }
値に一致  絞り込み [住所1]{"東京都"}  変数宣言 自動, 文字列{ &値に一致 = &WQ + "東京都" + &WQ }
値を含まない  絞り込み [住所1]{≠*"東京都"*}  変数宣言 自動, 文字列{ &値を含まない = "≠" + "*" + &WQ + "東京都" + &WQ + "*"  }
前方一致  絞り込み [住所1]{"東京都"*}  変数宣言 自動, 文字列{ &前方一致 = &WQ + "東京都" + &WQ + "*" }
後方一致  絞り込み [住所1]{*"東京都"}  変数宣言 自動, 文字列{ &後方一致 = "*" + &WQ + "東京都" + &WQ }
 
4-2 [項目]値 の訂正・代入
変数宣言 自動,長整数{&更新モード}  
メソッド呼び出し @フォーム.更新モード取得(&更新モード)
if ( &更新モード = 0 )
 行訂正 [郵便番号] = &郵便番号 , [都道府県] = &住所1 , [住所1] = &住所2
else
 項目値代入 [郵便番号] = &郵便番号 , [都道府県] = &住所1 , [住所1] = &住所2     /* 項目名、入力値はサンプルです */
end
 
4-3 メッセージボックスの使用例
変数宣言 自動,文字列{ &icon, &title = "cmd住所一括更新Click", &msg }
変数宣言 自動, 文字列{ &WQ = #jis( #hex("22") ) } &WQ の値は半角二重引用符 ( " ) となります
変数宣言 自動, 数値 { &ans }
*&title = "cmd住所一括更新Click()"  /* 変数宣言時に代入済みです。サンプルとして記載 */ メッセージを呼び出した手続きをタイトルにしています
&msg = &msg +   "  << 住所を更新します >>"
&msg = &msg + "\n"
&msg = &msg + "\n郵便番号から"
&msg = &msg + "\n都道府県と住所1を更新します。"
&msg = &msg + "\n"
&msg = &msg + "\n郵便番号の " + &WQ + "-" + &WQ +" を一旦取り除いて" 郵便番号の "-" を一旦取り除いて
&msg = &msg + "\n郵便番号簿の住所で更新します。"
&msg = &msg + "\nその後新たに " + &WQ + "-" + &WQ +" を付け直します。" その後新たに "-" を付け直します
&msg = &msg + "\n"
&msg = &msg + "\n実行しますか?"
メッセージボックス &title, &msg,ボタン指定 = 2,アイコン = ?,制御文字展開 = する,&ans
 * アイコン = i|?|!|E| 、ボタン指定 = 1:[OK]のみ|2:[OK]と[キャンセル] 簡単な解説を記載しています
if ( &ans = 1 )
 手続き実行 prc住所一括更新実行()
 確認 "完了しました"
end
 
4-4 確認コマンドでエラーの戻り値を表示する
 変数宣言 自動,整数{ &status }

 変数読み込み "History.vax",固有 , 終了状態 = &status

 if ( &status <> 1 )
  確認 "保存した変数の値が読み込めませんでした。終了状態 = " + #str( &status )
 end

確認メッセージに #str( &status ) を加えておくことで、エラーの戻り値を見ることができます
 
4-5 &STR の値を退避
変数宣言 自動,文字列 { &STRbak }

&STRbak = &STR          /* &STR の値を 自動変数 &STRbak に退避 */

&STR = &STRbak           /* &STRbakの値を 組み込み変数 &STR に戻す */
 
4-6 配列変数を引数で渡す場合には参照でなくても参照にすること
× 手続き定義開始 prcDimBottomGet( 文字列 &stringDim[], 参照 整数 &bottom )
手続き定義開始 prcDimBottomGet( 参照 文字列 &stringDim[], 参照 整数 &bottom )

(例)
手続き定義開始 cmdTestClick( )
 変数宣言 自動,文字列{ &icon, &title = "cmdTestClick( )", &msg }
 変数宣言 自動,整数 { &i, &loop, &step = 1 }
 変数宣言 自動,文字列{ &test[ 2 ] }

 手続き実行 prcDimBottomGet( &test, &loop ) /* これはNG → 手続き実行 prcDimBottomGet( &test[], &loop ) */
手続き定義終了

手続き定義開始 prcDimBottomGet( 参照 文字列 &stringDim[], 参照 整数 &bottom )
 変数宣言 自動,文字列{ &icon, &title = "prcDimBottomGet( )", &msg }
 変数宣言 自動,文字列{ &string }
 変数宣言 自動,整数 { &i, &loop, &step = 1 }

 &bottom = 0

 &loop = #配列要素数( "stringDim" )
┌繰り返し &i = 1, &loop, &step

│ &string = #trim( #変数( "stringDim", &i ), 3 )
│┌if ( &string = #u )
││
││ &bottom = &i - 1
←┼─繰り返し中止
│└end

└繰り返し終了

手続き定義終了

- 目次 -


5-1 繰り返し 回数 … 繰り返し終了  ◇ 変数宣言 自動, 整数 { &i, &loop, &step }
  ◇桐ヘルプより
構文: 繰り返し  <変数名> = <開始値>,<終了値>,<加算値>
    … <コマンド> …
繰り返し終了
パラメータ:
<変数名> 加算値を代入する変数の名前を指定します。
指定する変数は、データ型が数値、通貨、整数、長整数、実数のいずれかでなければいけません。
<開始値> 繰り返しを開始するときの数値を指定します(計算式)。
<終了値> 繰り返しを終了するときの数値を指定します(計算式)。
<加算値> 繰り返すたびに加算する数値を指定します(計算式)。
マイナスの値を指定すると、減算になります。
この値を省略すると、<開始値>≦<終了値>なら 1、<開始値>><終了値>なら -1 を加えます。
◇サンプル(桐ヘルプの引用ではありません)
 変数宣言 自動, 整数 { &i, &loop, &step = 1 }
 &loop = #配列要素数( m変数Dim )
 繰り返し &i = 1,&loop, &step
  &m変数Dim[&i] = ”代入する値”
 繰り返し終了
 
5-2 後判定(後置判定)ループのサンプル
  「前判定」と「後判定」があります。後判定は使用しないという方が多いようです。
後判定のサンプルとして掲載します。

ここでは、繰り返し &i = 1,&loop, &step としていますが、たまたまです(後判定に適した手順というわけではありません)。

手続き定義開始 prc後判定での「県名の候補を作成」サンプル()
 変数宣言 自動,整数 { &importTblNum }
 変数宣言 自動, 整数 { &i, &loop, &step = 1 }
 表 &mTbl郵便番号簿
 &importTblNum = #is表
 解除 *
 絞り込み 単一化 = { [住所1] }              /* &mTbl郵便番号簿の[住所1]には、"県" に相当するデータが入っています */
 if ( .not #eof )                       /* 絞り込んだ結果が 終端行でなければ(つまりデータ行が存在する) */
  &m県リストDim = { #未定義 }
  &loop = #配列要素数( "m県リストDim" )
  ジャンプ 行番号 = 先頭                /* 先頭行であることが自明の場合でも省略せずに */
  繰り返し &i = 1,&loop, &step
   &m県リストDim[&i] = [住所1] 
   ジャンプ 行番号 = 次行
   if ( #eof )
    繰り返し中止
   end
  繰り返し終了
 end
 終了 表 &importTblNum
手続き定義終了

このプロシージャは、入門講座 番外編 で使用することができます。
- 目次 -