Chapter 10: 閉じる時、多重化、その他


"住所録" と "郵便番号簿" フォームに 開始時に "Startup" ボタンを実行するように設定していますが
同様に、フォームを閉じるときについても準備しておくことをお勧めします。
フォームには、開くときと閉じるときに実行する手続きを記載する "枠" を標準として準備しておくということです。
*準備している手続きの中身は何もなくてもかまわないということです。

フォーム "住所録" と "郵便番号簿" に設定しているコマンドボタンの属性を次のように変更してくだい。

"cmdMainMenu" ボタンの属性

cmdMainMenu

----------

"cmd郵便番号簿" ボタンの属性

cmd郵便番号簿ボタンの属性

----------

"cmd住所録" ボタンの属性  

cmd住所録ボタンの属性

 

"住所録" のイベントは次のようになります。 "郵便番号簿" のイベントは次のようになります。

"住所録" のイベント     "郵便番号簿" のイベント

これで、フォーム起動時には "Startup"ボタンを実行して、フォームを閉じる際には "Close" を実行する というルーチンができあがりです。


変数値を保存している表ファイルですが、 "変数保存表.tbx" が開かれている場合には エラーが発生します。

そこで次のように "変数保存表.tbx" がすでに開かれているときには、多重化して開きます。
* "変数保存表.tbx" は実際の作業時にユーザーが開く表ではないので本来は不要な処理ですね(ここでは学習の為ということです)。

次の変更部分は、"住所録"、"郵便番号簿" 両方とも同じになります。

表が開いているとき多重化 

 

また ライブラリ "Yubinjyusho.CMX" は次のように変更します。

変更が終わったら動作を確認してみましょう。"変数保存表.tbx" を開いたまま、
フォーム "住所録"では フッタ表示 、 フォーム "郵便番号簿" ではファイル選択 をしてみてください。

 

ここでは 表 " 変数保存表.WTX " を編集対象表にするフォームがありません(本来ユーザーが開いたり編集するものではないからです)。

通常の作業中に、フォームを開いていて表示状態ではなく編集状態の時には表を多重化することができません。
その場合コメント行のサンプルのように(下線 青 の部分です)
" メソッド呼び出し ハンドル = &openTblNum,@フォーム.更新モード設定( 0 ) " として表示モードに切り替えます。

*フォームウィンドウのハンドルと編集対象表の表番号は同値になります。


その他 ( Tips )

"郵便番号簿"フォームを定義画面で開いて、テキストボックス "txt読み込みファイル名表示" を作成してください。
属性のソースは #ファイル名( &m読み込みファイル名 , 2 ) としてください。

最後に ファイル選択の為の入力支援ボタンが付いている "txt読み込みファイル名"オブジェクトの上に重ねます。
*出来上がったら、フォームを開いてその効果を確かめてください。

ファイル名表示 

 

以上でこの講座は終了です。お役に立てれば幸いです。

 


参考:ライブラリ "Yubinjyusho.CMX"

1   *****  バージョンとか日付やタイトル等を付けておくとよいかも *****
2  
3  手続き定義開始 フッタ部を表示( )
4   変数宣言 自動,文字列{ &sectionName }
5   変数宣言 自動,整数 { &isSection, &visible }
6  
7   &sectionName = "フォームフッタ部"
8   メソッド呼び出し @フォーム.オブジェクト検査( &sectionName, &isSection )
9  
10   if ( &isSection )
11    オブジェクト操作 @フォームフッタ部{ &visible = 画面表示 }
12    &visible = .not &visible
13    オブジェクト操作 @フォームフッタ部{ 画面表示 = &visible }
14   end
15  
16   * このプロシージャは、表示と非表示をトグル処理します。なおフォームを開いたときフッダの既存値は表示状態になります。
17  手続き定義終了
18  
19  手続き定義開始 変数書出( 文字列 &変数名 , 文字列 &変数値 , 文字列 &変数保存表 )
20   変数宣言 自動,整数 { &exportTblNum ,  &検索結果 }
21   変数宣言 自動, 整数 { &openTblNum = #表番号取得 ( &変数保存表 ) }
22  
23   if ( &openTblNum > 0 )
24    編集表 &openTblNum
25    * メソッド呼び出し ハンドル = &openTblNum,@フォーム.更新モード設定( 0 )   /* <編集対象表があるフォーム>ではハンドルと表番号は同値です。*/
26    多重化                                  /* フォームが編集モードの場合、多重化できません。 */
27    &exportTblNum = #IS表
28   else
29    表 &変数保存表
30    &exportTblNum = #IS表
31   end
32  
33   検索 [変数名] { &変数名 } , 終了状態 = &検索結果
34   if ( &検索結果 = 1 )
35    行訂正 [変数値] = &変数値
36   else
37    行追加 [変数名] = &変数名 , [変数値] = &変数値
38   end
39   終了 表 &exportTblNum    /* "変数保存表.tbx" を閉じる */
40  
41   編集表 &hwindow         /* 確実にもとの編集対象表に戻しておきます。 */
42  手続き定義終了
43  
44  手続き定義開始 変数値代入文字列( 文字列 &変数名 , 参照 文字列 &変数値 )
45   変数宣言 自動,文字列{ &WQ = #jis( #hex("22") ) }
46   変数宣言 自動,文字列{ &表現式 }                /* &表現式 をつかうことで、&変数名 の値を保持したままにできます */
47   変数宣言 自動,整数 { &検索結果 }
48  
49   &表現式 = "*" + &WQ + &変数名 + &WQ + "*"             /* 準備した &表現式に 式の値を代入しています */
50   検索 [変数名] _ &表現式 , 終了状態 = &検索結果
51   &変数値 = #u
52   if ( &検索結果 = 1 )
53    &変数値 = [変数値]
54   end
55  手続き定義終了
56  
57  手続き定義開始 変数値代入数値 ( 文字列 &変数名 , 参照 数値 &変数値 )      /* 整数と数値でもデータ型は異なります */
58   変数宣言 自動,文字列{ &WQ = #jis( #hex("22") ) }
59   変数宣言 自動,文字列{ &表現式 }                /* &表現式 をつかうことで、&変数名 の値を保持したままにできます */
60   変数宣言 自動,整数 { &検索結果 }
61  
62   &表現式 = "*" + &WQ + &変数名 + &WQ + "*"             /* 準備した &表現式に 式の値を代入しています */
63   検索 [変数名] _ &変数名 , 終了状態 = &検索結果
64   &変数値 = #u
65   if ( &検索結果 = 1 )
66    &変数値 = #数値( [変数値] )
67   end
68  手続き定義終了
69  
70  手続き定義開始 変数値代入整数 ( 文字列 &変数名 , 参照 整数 &変数値 )      /* 整数と数値でもデータ型は異なります */
71   変数宣言 自動,文字列{ &WQ = #jis( #hex("22") ) }
72   変数宣言 自動,文字列{ &表現式 }                       /* &表現式 をつかうことで、&変数名 の値を保持したままにできます */
73   変数宣言 自動,整数 { &検索結果 }
74  
75   &表現式 = "*" + &WQ + &変数名 + &WQ + "*"       /* &表現式という変数を準備して、&変数名 = "*" + &WQ + &変数名 + &WQ + "*" よりも分かり易く */
76   検索 [変数名] _ &表現式 , 終了状態 = &検索結果
77   &変数値 = #u
78   if ( &検索結果 = 1 )
79    &変数値 = #整数( [変数値] )
80   end
81  手続き定義終了

 

参考:郵便番号簿

1  名札    メイン
2  
3   変数宣言 局所,文字列 { &m編集対象表 = #一括パス名 + "郵便番号簿.tbx" }
4   オブジェクト操作 @フォーム.編集対象表 = &m編集対象表          /* 編集対象表は、メイン処理でのみ変更できます */
5  
6   変数宣言 局所,文字列 { &m変数保存表 = #一括パス名 + "変数保存表.tbx" }
7   変数宣言 局所,文字列 { &m読み込みファイル名 }
8  
9   ライブラリ #一括パス名 + "Yubinjyusho.cmx"
10  *
11  
12  手続き定義開始 cmdStartupClick( )
13   手続き実行 prc変数読込( &m変数保存表 )
14  手続き定義終了
15  
16  手続き定義開始 cmdMainMenuClick( )
17   手続き実行 prcClose()
18  手続き定義終了
19  
20  手続き定義開始 cmd住所録Click( )
21   手続き実行 prcClose()
22  手続き定義終了
23  
24  手続き定義開始 prcClose( )
25   * フォームを閉じる際の手続きを記載します。
26  手続き定義終了
27  
28  手続き定義開始 prc変数読込( 文字列 &変数保存表 )
29   変数宣言 自動,文字列 { &ファイル名 = #ファイル名( &m編集対象表 , 2 ) }     /* 2:ファイル名  */
30   変数宣言 自動,文字列 { &STRbak , &変数値 }
31   変数宣言 自動,整数  { &importTblNum ,  &openTblNum }
32   &STRbak = &STR          /* &STR の値を 自動変数 &STRbak に退避 */ 
33  
34   &openTblNum = #表番号取得 ( &変数保存表 )
35   if ( &openTblNum > 0 )
36    編集表 &openTblNum
37    多重化
38    &importTblNum = #IS表
39   else
40    表 &変数保存表        /* 変数保存表.tbx を開く */
41    &importTblNum = #IS表
42   end
43  
44   &STR = &ファイル名 + "," + "m読み込みファイル名"   /* 局所変数は使用するフォーム専用となるので編集対象表名も検索値の一部です。*/
45   手続き実行 変数値代入文字列( &STR , &m読み込みファイル名 )  /*  引数は 検索する値 , 値を代入する変数名 の順に並べてみました。 */
46   * 手続き実行 変数値代入数値( "固有変数の場合ファイル名を付加していない" , &g数値型の固有変数名 )
47  
48   終了 表 &importTblNum    /* 変数保存表.tbx を閉じる */
49   &STR = &STRbak          /* &STRbakの値を 組み込み変数 &STR に戻す */
50  
51   編集表 &hwindow         /* 確実にもとの編集対象表に戻しておきます。 */
52   メソッド呼び出し @フォーム.変数変更()
53  手続き定義終了
54  
55  手続き定義開始 txt読み込みファイル名::ソース値更新()
56   変数宣言 自動,文字列 { &ファイル名 = #ファイル名( &m編集対象表 , 2 ) }     /* 2:ファイル名  */
57   変数宣言 自動,文字列 { &STRbak , &変数値 }
58   &STRbak = &STR          /* &STR の値を 自動変数 &STRbak に退避 */ 
59  
60   &STR = &ファイル名 + "," + "m読み込みファイル名"   /* 保存変数名称:局所変数は使用するフォーム専用なので編集対象表名を付加。*/
61   * 固有変数の場合、編集対象表名を付加する必要はありません。付加するとトラブルの原因になると思います。
62   &変数値 = #ファイル名( &m読み込みファイル名 , 1 )    /* 1:パス名とファイル名と拡張子  */
63  
64   手続き実行 変数書出( &STR , &変数値 , &m変数保存表 )   /* 変数名称、変数の値、変数を保存する表、の順に並べてみました。*/
65   * 手続き実行 変数書出( &STR , #文字列( 文字列以外の変数値 ) , &m変数保存表 )
66   * 変数の値が文字列以外の場合には、#文字列( &文字列以外の変数値 )と文字列に変換して保存します。 \
67    そして値を変数に代入する際には #数値( &文字列以外の変数値 )といった具合に、本来のデータ型に変換します。
68  
69   &STR = &STRbak          /* &STRbakの値を 組み込み変数 &STR に戻す */
70  手続き定義終了
71  
72  手続き定義開始 cmdフッタ表示非表示Click()
73   手続き実行 フッタ部を表示( )
74  手続き定義終了
75  
76  手続き定義開始 cmd郵便番号簿更新Click( )
77   変数宣言 自動, 文字列 { &title, &msg }
78   変数宣言 自動, 数値 { &ans }
79   &title = "cmd郵便番号簿更新Click()"
80   &msg = &msg +   " << 郵便番号簿を更新します >>"
81   &msg = &msg + "\n"
82   &msg = &msg + "\n郵便番号ファイルから"
83   &msg = &msg + "\n郵便番号簿を更新します。"
84   &msg = &msg + "\n"
85   &msg = &msg + "\n郵便番号ファイルは"
86   &msg = &msg + "\n事前に郵便局のサイトからダウンロードして"
87   &msg = &msg + "\n解凍しておいてください。"
88   &msg = &msg + "\n"
89   &msg = &msg + "\n必ず所定のファイルを指定してから実行してください。"
90   メッセージボックス &title, &msg,ボタン指定 = 2,アイコン = !,制御文字展開 = する,&ans
91    * アイコン = i|?|!|E| 、ボタン指定 = 1:[OK]のみ|2:[OK]と[キャンセル]
92  
93   if ( &ans = 1 )
94    解除 *                    /* データーが絞り込まれていたりを想定して、解除しておきます */
95    行削除 * , 圧縮
96    読み込み CSV,&m読み込みファイル名 , *
97    確認 完了しました。
98   end
99  手続き定義終了

 

参考:住所録

1  名札    メイン
2  
3   変数宣言 局所,文字列 { &m編集対象表 = #一括パス名 + "住所録.tbx" }
4   オブジェクト操作 @フォーム.編集対象表 = &m編集対象表 /* 編集対象表は、メイン処理でのみ変更できます */
5  
6   変数宣言 局所,文字列 { &m変数保存表 = #一括パス名 + "変数保存表.tbx" }
7  
8   変数宣言 局所,文字列 { &m入力前値 , &m入力後値 }
9   変数宣言 局所,文字列 { &m郵便番号 }
10  
11   変数宣言 局所,整数 { &mフッタ表示 = 1 }
12  
13   ライブラリ #一括パス名 + "Yubinjyusho.cmx"
14  *
15  
16  手続き定義開始 cmdStartupClick( )
17   手続き実行 prc変数読込( &m変数保存表 )
18   手続き実行 prc起動時フッタ表示( )
19  手続き定義終了
20  
21  手続き定義開始 cmdMainMenuClick( )
22   手続き実行 prcClose()
23  手続き定義終了
24  
25  手続き定義開始 cmd郵便番号簿Click( )
26   手続き実行 prcClose()
27  手続き定義終了
28  
29  手続き定義開始 prcClose( )
30   * フォームを閉じる際の手続きを記載します。
31  手続き定義終了
32  
33  手続き定義開始 prc変数読込( 文字列 &変数保存表 )
34   変数宣言 自動,文字列 { &ファイル名 = #ファイル名( &m編集対象表 , 2 ) }     /* 2:ファイル名  */
35   変数宣言 自動,文字列 { &STRbak , &変数値 }
36   変数宣言 自動,整数  { &importTblNum ,  &openTblNum }
37   &STRbak = &STR          /* &STR の値を 自動変数 &STRbak に退避 */ 
38  
39   &openTblNum = #表番号取得 ( &変数保存表 )
40   if ( &openTblNum > 0 )
41    編集表 &openTblNum
42    多重化
43    &importTblNum = #IS表
44   else
45    表 &変数保存表        /* 変数保存表.tbx を開く */
46    &importTblNum = #IS表
47   end
48  
49   &STR = &ファイル名 + "," + "mフッタ表示"   /* 局所変数は使用するフォーム専用となるので編集対象表名も検索値の一部です。*/
50   手続き実行 変数値代入整数( &STR , &mフッタ表示 )
51  
52   終了 表 &importTblNum    /* 変数保存表.tbx を閉じる */
53   &STR = &STRbak          /* &STRbakの値を 組み込み変数 &STR に戻す */
54  
55   編集表 &hwindow         /* 確実にもとの編集対象表に戻しておきます。 */
56   メソッド呼び出し @フォーム.変数変更()
57  手続き定義終了
58  
59  手続き定義開始 prc起動時フッタ表示( )
60   if ( &mフッタ表示 = 1 )
61    * フォームを開いて変数を読み込んだ値が "1" の時は何もしません(フォーム起動時のデフォルトがフッタ表示状態です)。
62   else
63    手続き実行 フッタ部を表示( )
64   end
65  手続き定義終了
66  
67  手続き定義開始 chkフッタ表示::ソース値更新()
68   手続き実行 フッタ部を表示( )
69  
70   変数宣言 自動,文字列 { &ファイル名 = #ファイル名( &m編集対象表 , 2 ) }     /* 2:ファイル名  */
71   変数宣言 自動,文字列 { &STRbak , &変数値 }
72   &STRbak = &STR          /* &STR の値を 自動変数 &STRbak に退避 */ 
73  
74   &STR = &ファイル名 + "," + "mフッタ表示"   /* 保存変数名称:局所変数は使用するフォーム専用なので編集対象表名を付加。*/
75   手続き実行 変数書出( &STR , #文字列 ( &mフッタ表示 ) , &m変数保存表 )
76  
77   &STR = &STRbak          /* &STRbakの値を 組み込み変数 &STR に戻す */
78  手続き定義終了
79  
80  手続き定義開始 t郵便番号::入力前(参照 文字列 &編集文字列)
81   &m入力前値 = &編集文字列                /* 既存入力値を取得します。半角 です。 */
82  手続き定義終了
83  
84  手続き定義開始 t郵便番号::入力後(参照 文字列 &編集文字列,長整数 &モード,参照 長整数 &入力継続)
85   &編集文字列 = #半角 ( &編集文字列 )           /* 全角入力された場合には半角にします。 */
86   &編集文字列 = #TRIM( &編集文字列 , 4 )         /* 空白を取り除きます。 */
87   &m入力後値 = &編集文字列                 /* 半角にして空白を取り除いた値になります。 */
88   &m郵便番号 = #文字置換( &編集文字列 , "-" , "" )    /* "-" が入力されている場合は、削除して &m郵便番号 に代入します。 */
89  
90   if ( #文字数( &m郵便番号 ) = 7 )       /* 郵便番号は "-"がなければ7桁です */
91    &編集文字列 = #部分列( &m郵便番号 , 1 , 3 ) + "-" + #右側文字列( &m郵便番号 ,4 )
92    * 最初から3文字取り出した値と、4文字目から取り出した値を組み合わせ正しい位置に "-" を入力します。
93   else
94    if ( &m入力後値 = #未定義 )
95     * 未定義の場合何もしません。郵便番号を削除した場合に未定義になります。
96    else
97     &編集文字列 = &m入力前値
98     &入力継続 = 1
99     * 入力した値が "-" を除いて7桁でない場合には、元の値に戻して再入力状態にします。( &入力継続 = 1 についてはイベントリファレンスを参照してください)。
100    end
101   end
102  
103   * ここまでの処理で \
104    &m入力前値:元々入力されていた値。&m入力後値:半角、空白を取り除いた値。 \
105    &m郵便番号:"-" を除いた値。 &編集文字列(このイベント処理の引数):"-" を追加した値、*#文字数( &m郵便番号 ) = 7 の場合。 \
106    となります。
107  手続き定義終了
108  
109  手続き定義開始 t郵便番号::編集開始()
110   メソッド呼び出し &this.編集選択位置設定( 1 ,-1 )     /* &this は、イベントが発生したオブジェクトの名前が格納されている定数です。*/
111  手続き定義終了
112  
113  手続き定義開始 t郵便番号::ソース値更新()
114   if ( &m入力後値 = &m入力前値 .or &m入力後値 = #未定義 )
115    * 入力前と値が同じ場合、また入力値が削除された場合には何もしません。
116   else
117    手続き実行 prc住所検索()
118   end
119  
120   メソッド呼び出し @t住所2.フォーカス設定()
121  手続き定義終了
122  
123  手続き定義開始 prc住所検索()
124   変数宣言 自動,整数  { &currentTblNum , &lookupTblNum }
125   変数宣言 自動,文字列 { &住所1 , &住所2 }
126   &currentTblNum = &hwindow     /* &hwindowには現在のフォームの編集対象表番号が収納されています。 */
127  
128   表 "郵便番号簿.tbx"
129   &lookupTblNum = #IS表
130  
131   検索 [郵便番号]{ &m郵便番号 }
132   if ( .not #eof)        /* 終端行でなければ。つまり検索値が存在すれば。 */
133    &住所1 = [住所1] , &住所2 = [住所2] + [住所3]
134   end  
135  
136   終了 表 &lookupTblNum    /* 郵便番号簿を閉じる */
137  
138   編集表 &currentTblNum     /* 住所録の編集対象に戻る */
139  
140   変数宣言 自動,長整数{&更新モード}
141   メソッド呼び出し @フォーム.更新モード取得(&更新モード)
142   if ( &更新モード = 0 )
143    行訂正 [都道府県] = &住所1 , [住所1] = &住所2
144   else
145    項目値代入 [都道府県] = &住所1 , [住所1] = &住所2
146   end
147  手続き定義終了
148  
149  
150  手続き定義開始 cmd住所一括更新Click()
151   変数宣言 自動, 数値 { &ans }
152  
153   手続き実行 prc実行確認( "cmd住所一括更新Click()" , &ans )
154   if ( &ans = 1 )
155    手続き実行 prc住所一括更新実行()
156    確認 "完了しました"
157   end
158  手続き定義終了
159  
160  手続き定義開始 prc住所一括更新実行()
161   変数宣言 自動,整数  { &currentTblNum }
162   &currentTblNum = &hwindow     /* &hwindowには現在のフォームの編集対象表番号が収納されています。 */
163   手続き実行 prc住所一括更新処理( &currentTblNum )
164   ジャンプ 行番号 = 先頭
165  手続き定義終了
166  
167  手続き定義開始 cmd住所多重化更新Click()
168   変数宣言 自動, 数値 { &ans }
169  
170   手続き実行 prc実行確認( "cmd住所多重化更新Click()" , &ans )
171   if ( &ans = 1 )
172    手続き実行 prc住所多重化更新()
173    確認 "完了しました"
174   end
175  手続き定義終了
176  
177  手続き定義開始 prc住所多重化更新()
178   変数宣言 自動,整数  { &currentTblNum , &multiTblNum }
179   &currentTblNum = &hwindow     /* &hwindowには現在のフォームの編集対象表番号が収納されています。 */
180   多重化 
181   &multiTblNum = #is表       /* 多重化した住所録の表番号を取得 */
182   手続き実行 prc住所一括更新処理( &multiTblNum )
183   終了 表 &multiTblNum     /* 多重化した表を閉じる */
184   編集表 &hwindow         /* 確実にもとの編集対象表に戻しておきます。 */
185  手続き定義終了
186  
187  手続き定義開始 prc住所一括更新処理( 整数 &currentTblNum )
188   変数宣言 自動,整数  { &lookupTblNum }
189   変数宣言 自動,文字列 { &郵便番号 , &住所1 , &住所2 }
190  
191   表 "郵便番号簿.tbx"       /* 郵便番号簿を開く */
192   &lookupTblNum = #IS表       /* 郵便番号簿の表番号を取得 */
193  
194   編集表 &currentTblNum      /* 使用する表を 住所録 に切り替える */
195   解除 *
196   ジャンプ 行番号 = 先頭      /* 先頭行から順次処理していきます */
197  
198   繰り返し ( .not #eof)     /* 終端行でなければ。 */
199    &郵便番号 = [郵便番号]
200    &郵便番号 = #文字置換( &郵便番号 , "-" , "" )      /* 郵便番号簿検索のため "-" を削除します。 */
201  
202    手続き実行 prc郵便番号簿検索( &lookupTblNum , &郵便番号 , &住所1 , &住所2 )
203  
204    編集表 &currentTblNum     /* 住所録の編集対象に戻る */
205    &郵便番号 = #部分列( &郵便番号 , 1 , 3 ) + "-" + #右側文字列( &郵便番号 ,4 )  /* 郵便番号に "-" を挿入します。 */
206    変数宣言 自動,長整数{&更新モード}
207    メソッド呼び出し @フォーム.更新モード取得(&更新モード)
208    if ( &更新モード = 0 )
209     行訂正 [郵便番号] = &郵便番号 , [都道府県] = &住所1 , [住所1] = &住所2
210    else
211     項目値代入 [郵便番号] = &郵便番号 , [都道府県] = &住所1 , [住所1] = &住所2
212    end
213  
214    ジャンプ 行番号 = 次行
215   繰り返し終了  
216  
217   終了 表 &lookupTblNum    /* 郵便番号簿を閉じる */
218  手続き定義終了
219  
220  手続き定義開始 prc郵便番号簿検索( 整数 &TblNum , 文字列 &郵便番号 , 参照 文字列 &住所1 , 参照 文字列 &住所2 )
221   &住所1 = #u , &住所2 = #u              /* 初期化します。 */
222   編集表 &TblNum                     /* 郵便番号簿に切り替えます */
223   検索 [郵便番号]{ &郵便番号 }
224   * &住所1 = #u , &住所2 = #u               /* 検索する前に変数の値を初期化します。 */
225   if ( .not #eof)                   /* 終端行でなければ。つまり検索値が存在すれば。 */
226    &住所1 = [住所1] , &住所2 = [住所2] + [住所3]
227   * else
228   *  &住所1 = #u , &住所2 = #u              /* 検索値がない場合、変数の値を初期化します。 */
229   end  
230  手続き定義終了
231  
232  手続き定義開始 cmd住所併合更新Click()
233   変数宣言 自動, 数値 { &ans }
234  
235   手続き実行 prc実行確認( "cmd住所併合更新Click()" , &ans )
236   if ( &ans = 1 )
237    解除 *
238    置換 [郵便番号] = #文字置換( [郵便番号] , "-" , "" )
239    併合 "郵便番号簿.tbx" , 置換 , {[郵便番号]照合[郵便番号],[都道府県]複写[住所1],[住所1]複写[住所2],[住所1]連結[住所3]}
240    置換 [郵便番号] = #部分列( [郵便番号] , 1 , 3 ) + "-" + #右側文字列( [郵便番号] ,4 )
241    確認 "完了しました"
242   end
243  手続き定義終了
244  
245  手続き定義開始 prc実行確認( 文字列 &title , 参照 数値 &ans )
246   &ans = 0                        /* 参照値の初期化 */
247   変数宣言 自動,文字列{ &WQ = #jis( #hex("22") ) }
248   変数宣言 自動, 文字列 { &msg }
249   * 変数宣言 自動, 文字列 { &title, &msg }        /* &title は、引数ですでに宣言済みです */
250   * 変数宣言 自動, 数値 { &ans }             /* 引数ですでに宣言済みです */
251   * &title = ""                      /* &title の値は引数で受け取り済みです */
252   &msg = &msg +   "  << 住所を更新します >>"
253   &msg = &msg + "\n"
254   &msg = &msg + "\n郵便番号から"
255   &msg = &msg + "\n都道府県と住所1を更新します。"
256   &msg = &msg + "\n"
257   &msg = &msg + "\n郵便番号の " + &WQ + "-" + &WQ +" を一旦取り除いて"
258   &msg = &msg + "\n郵便番号簿の住所で更新します。"
259   &msg = &msg + "\nその後新たに " + &WQ + "-" + &WQ +" を付け直します。"
260   &msg = &msg + "\n"
261   &msg = &msg + "\n実行しますか?"
262   メッセージボックス &title, &msg,ボタン指定 = 2,アイコン = ?,制御文字展開 = する,&ans
263    * アイコン = i|?|!|E| 、ボタン指定 = 1:[OK]のみ|2:[OK]と[キャンセル]
264  手続き定義終了
265  
266  
267  手続き定義開始 cmdテストデータ読み込みClick()
268   変数宣言 自動,整数  { &currentTblNum , &importTblNum }
269   &currentTblNum = &hwindow     /* &hwindowには現在のフォームの編集対象表番号が収納されています。 */
270   解除 * 
271   行削除 * , 圧縮
272  
273   表 "郵便番号簿.tbx"
274   &importTblNum = #IS表
275   絞り込み [住所1]{*"東京都"*}
276   絞り込み [住所2]{*"千代田区"*}
277  
278   編集表 &currentTblNum     /* 住所録に戻る */
279   読み込み 表,"郵便番号簿.tbx",{[郵便番号][郵便番号]}
280  
281   終了 表 &importTblNum    /* 郵便番号簿を閉じる */
282   確認 "完了しました"     /* 終わりの目印ですね */
283  手続き定義終了