| 3 |
ライブラリ"Template.cmx"に変数書き出しと、読み込みのプロシージャ(手続き)をセットします。 |
|
3-1 |
"郵便番号簿.kex"のプログラムから、いくつかのプロシージャをライブラリ"Template.cmx"に移動します。 |
|
3-1-1 |
プロシージャ"変数書出"、"郵便番号簿.kex" 側です(行番号は参考です)。

※削除予定のプロシージャになりますが、一旦「 X 」 を付けておいて最終的に削除しましょう。
|
 |
"Template.cmx" へ接頭辞を外して複写しました(接頭辞を「なし」とすることでライブラリ側のプロシージャとわかります)
 |
|
|
|
|
3-1-2 |
プロシージャ"変数値代入文字列"、"郵便番号簿.kex" 側です(行番号は参考です)。 |
|
|

※削除予定のプロシージャになりますが、一旦「 X 」 を付けておいて最終的に削除しましょう。 |
|
|
|
|
|
"Template.cmx" へ接頭辞を外して複写しました(接頭辞を「なし」とすることでライブラリ側のプロシージャとわかります)
 |
|
|
|
|
3-1-3 |
プロシージャ"変数値代入数値"、"郵便番号簿.kex" 側です(行番号は参考です)。 |
|
|

※削除予定のプロシージャになりますが、一旦「 X 」 を付けておいて最終的に削除しましょう。 |
|
|
|
|
|
"Template.cmx" へ接頭辞を外して複写しました(接頭辞を「なし」とすることでライブラリ側のプロシージャとわかります)

|
|
|
|
|
3-1-4 |
整数用のプロシージは
"Template.cmx" で新規作成しました。
 |
 |
|
 |
【Template.CMX】 (ライブラリ) |
|
*****
バージョンとか日付やタイトル等を付けておくとよいかもしれません ***** |
| 3 |
手続き定義開始 フッタ部を表示( ) |
| 4 |
変数宣言 自動,文字列{ §ionName } |
| 5 |
変数宣言 自動,整数 { &isSection, &visible } |
| 6 |
|
| 7 |
§ionName = "フォームフッタ部" |
| 8 |
メソッド呼び出し @フォーム.オブジェクト検査( §ionName, &isSection ) |
| 9 |
|
| 10 |
if ( &isSection ) |
| 11 |
オブジェクト操作 @フォームフッタ部{ &visible = 画面表示 } |
| 12 |
&visible = .not &visible |
| 13 |
オブジェクト操作 @フォームフッタ部{ 画面表示 = &visible } |
| 14 |
end |
| 15 |
手続き定義終了 |
| 16 |
|
| 17 |
手続き定義開始 変数書出( 文字列 &変数名 , 文字列 &変数値 , 文字列 &変数保存表 ) |
| 18 |
変数宣言 自動,整数 { &exportTblNum ,
&検索結果 } |
| 19 |
|
| 20 |
表 &変数保存表 /* "変数保存表.tbx" を開く */ |
| 21 |
&exportTblNum = #IS表 |
| 22 |
検索 [変数名] { &変数名 } , 終了状態 = &検索結果 |
| 23 |
if ( &検索結果 = 1 ) |
| 24 |
行訂正 [変数値] = &変数値 |
| 25 |
else |
| 26 |
行追加 [変数名] = &変数名 , [変数値] = &変数値 |
| 27 |
end |
| 28 |
終了 表 &exportTblNum /* "変数保存表.tbx" を閉じる */ |
| 29 |
編集表 &hwindow /* 終了 表
とセットで使って 編集対象表を指定 */ |
| 30 |
手続き定義終了 |
| 31 |
|
| 32 |
手続き定義開始 変数値代入文字列( 文字列 &変数名 , 参照 文字列 &変数値 ) |
| 33 |
変数宣言 自動,文字列{ &WQ = #jis( #hex("22") ) } |
| 34 |
変数宣言 自動,文字列{ &表現式 } /* &表現式 をつかうことで、&変数名
の値を保持したままにできます */ |
| 35 |
変数宣言 自動,整数 { &検索結果 } |
| 36 |
|
| 37 |
&表現式 = "*" + &WQ + &変数名 + &WQ + "*" /* 準備した
&表現式に 式の値を代入しています */ |
| 38 |
検索 [変数名] _ &表現式 , 終了状態 = &検索結果 |
| 39 |
&変数値 = #u |
| 40 |
if ( &検索結果 = 1 ) |
| 41 |
&変数値 = [変数値] |
| 42 |
end |
| 43 |
手続き定義終了 |
| 44 |
|
| 45 |
手続き定義開始 変数値代入数値 ( 文字列 &変数名 , 参照 数値 &変数値 ) /*
整数と数値でもデータ型は異なります */ |
| 46 |
変数宣言 自動,文字列{ &WQ = #jis( #hex("22") ) } |
| 47 |
変数宣言 自動,文字列{ &表現式 } /* &表現式 をつかうことで、&変数名
の値を保持したままにできます */ |
| 48 |
変数宣言 自動,整数 { &検索結果 } |
| 49 |
|
| 50 |
&表現式 = "*" + &WQ + &変数名 + &WQ + "*" /* 準備した
&表現式に 式の値を代入しています */ |
| 51 |
検索 [変数名] _ &表現式 , 終了状態 = &検索結果 |
| 52 |
&変数値 = #u |
| 53 |
if ( &検索結果 = 1 ) |
| 54 |
&変数値 = #数値( [変数値] ) |
| 55 |
end |
| 56 |
手続き定義終了 |
| 57 |
|
| 58 |
手続き定義開始 変数値代入整数 ( 文字列 &変数名 , 参照 整数 &変数値 ) /*
整数と数値でもデータ型は異なります */ |
| 59 |
変数宣言 自動,文字列{ &WQ = #jis( #hex("22") ) } |
| 60 |
変数宣言 自動,文字列{ &表現式 } /* &表現式 をつかうことで、&変数名
の値を保持したままにできます */ |
| 61 |
変数宣言 自動,整数 { &検索結果 } |
| 62 |
|
| 63 |
&表現式 = "*" + &WQ + &変数名 + &WQ + "*" /* 準備した
&表現式に 式の値を代入しています */ |
| 64 |
検索 [変数名] _ &表現式 , 終了状態 = &検索結果 |
| 65 |
&変数値 = #u |
| 66 |
if ( &検索結果 = 1 ) |
| 67 |
&変数値 = #整数( [変数値] ) |
| 68 |
end |
| 69 |
手続き定義終了 |
 |
【郵便番号簿.kex】 |
| 1 |
名札 メイン |
| 2 |
|
| 3 |
変数宣言 局所,文字列 { &m編集対象表 = #一括パス名 + "郵便番号簿.tbx" } |
| 4 |
オブジェクト操作 @フォーム.編集対象表
= &m編集対象表 /* 編集対象表は、メイン処理でのみ変更できます */ |
| 5 |
|
| 6 |
変数宣言 局所,文字列 { &m変数保存表 = #一括パス名 + "変数保存表.tbx" } |
| 7 |
変数宣言 局所,文字列 { &m読み込みファイル名 } |
| 8 |
|
| 9 |
ライブラリ #一括パス名 + "Template.cmx" |
| 10 |
* |
| 11 |
|
| 12 |
手続き定義開始 cmdフッタ表示非表示Click() |
| 13 |
手続き実行 フッタ部を表示() |
| 14 |
手続き定義終了 |
| 15 |
|
| 16 |
手続き定義開始 cmd郵便番号簿更新Click() |
| 17 |
変数宣言 自動, 文字列 { &title, &msg } |
| 18 |
変数宣言 自動, 数値 { &ans } |
| 19 |
&title = "cmd郵便番号簿更新Click()" |
| 20 |
&msg = &msg + " << 郵便番号簿を更新します >>" |
| 21 |
&msg = &msg + "\n" |
| 22 |
&msg = &msg + "\n郵便番号ファイルから" |
| 23 |
&msg = &msg + "\n郵便番号簿を更新します。" |
| 24 |
&msg = &msg + "\n" |
| 25 |
&msg = &msg + "\n郵便番号ファイルは" |
| 26 |
&msg = &msg + "\n事前に郵便局のサイトからダウンロードして" |
| 27 |
&msg = &msg + "\n展開しておいてください。" |
| 28 |
&msg = &msg + "\n" |
| 29 |
&msg = &msg + "\n必ず所定のファイルを指定してから実行してください。" |
| 30 |
メッセージボックス &title, &msg,ボタン指定 = 2,アイコン = !,制御文字展開 = する,&ans |
| 31 |
* アイコン = i|?|!|E| 、ボタン指定 = 1:[OK]のみ|2:[OK]と[キャンセル] |
| 32 |
|
| 33 |
if ( &ans = 1 ) |
| 34 |
解除 * /* データーが絞り込まれていたりを想定して、解除しておきます */ |
| 35 |
行削除 * , 圧縮 |
| 36 |
読み込み CSV,&m読み込みファイル名 , * |
| 37 |
確認 完了しました。 |
| 38 |
end |
| 39 |
手続き定義終了 |
| 40 |
|
| 41 |
手続き定義開始 txt読み込みファイル名::ソース値更新() |
| 42 |
変数宣言 自動,文字列 { &ファイル名 = #ファイル名( &m編集対象表 , 2 ) } /* 2:ファイル名
*/ |
| 43 |
変数宣言 自動,文字列 { &STRbak , &変数値 } |
| 44 |
&STRbak = &STR /* &STR の値を 自動変数 &STRbak に退避 */ |
| 45 |
|
| 46 |
&STR = &ファイル名 + "," + "m読み込みファイル名" /*
保存変数名称:局所変数は使用するフォーム専用なので編集対象表名を付加。*/ |
| 47 |
* 固有変数の場合、編集対象表名を付加する必要はありません。付加するとトラブルの原因になると思います。 |
| 48 |
&変数値 = #ファイル名( &m読み込みファイル名 , 1 ) /* 1:パス名とファイル名と拡張子
*/ |
| 49 |
|
| 50 |
手続き実行 変数書出( &STR , &変数値 , &m変数保存表 ) /*
変数名称、変数の値、変数を保存する表、の順に並べてみました。*/ |
| 51 |
* 手続き実行 変数書出( &STR , #文字列( 文字列以外の変数値 ) , &m変数保存表 ) |
| 52 |
* 変数の値が文字列以外の場合には、#文字列( &文字列以外の変数値 )と文字列に変換して保存します。 \ |
| 53 |
そして値を変数に代入する際には #数値( &文字列以外の変数値 )といった具合に、本来のデータ型に変換します。 |
| 54 |
|
| 55 |
&STR = &STRbak /* &STRbakの値を 組み込み変数 &STR に戻す */ |
| 56 |
手続き定義終了 |
| 57 |
|
| 58 |
手続き定義開始 cmdStartupClick( ) |
| 59 |
手続き実行 prc変数読込( &m変数保存表 ) |
| 60 |
手続き定義終了 |
| 61 |
|
| 62 |
手続き定義開始 prc変数読込( 文字列 &変数保存表 ) |
| 63 |
変数宣言 自動,文字列 { &ファイル名 = #ファイル名( &m編集対象表 , 2 ) } /* 2:ファイル名
*/ |
| 64 |
変数宣言 自動,文字列 { &STRbak , &変数値 } |
| 65 |
変数宣言 自動,整数 { &importTblNum } |
| 66 |
&STRbak = &STR /* &STR の値を 自動変数 &STRbak に退避 */ |
| 67 |
|
| 68 |
表 &変数保存表 /* 変数保存表.tbx を開く */ |
| 69 |
&importTblNum = #IS表 |
| 70 |
|
| 71 |
&STR = &ファイル名 + "," + "m読み込みファイル名" /*
局所変数は使用するフォーム専用となるので編集対象表名も検索値の一部です。*/ |
| 72 |
手続き実行 変数値代入文字列( &STR , &m読み込みファイル名 ) /*
引数は 検索する値 , 値を代入する変数名 の順に並べてみました。 */ |
| 73 |
* 手続き実行 変数値代入数値( "固有変数の場合ファイル名を付加していない" , &g数値型の固有変数名 ) |
| 74 |
|
| 75 |
終了 表 &importTblNum /* 変数保存表.tbx を閉じる */ |
| 76 |
編集表 &hwindow /* 終了 表
とセットで使って 編集対象表を指定 */ |
| 77 |
&STR = &STRbak /* &STRbakの値を 組み込み変数 &STR に戻す */ |
| 78 |
メソッド呼び出し @フォーム.変数変更() |
| 79 |
手続き定義終了 |
| |
サンプルコードをコピペしてうまく動作しないときには、一旦削除して手入力してください。※プロシージャごとに処理すれば作業がしやすいでしょう。 |
| |
|
 |
【住所録.kex】 (以下のソースコードは、Capter8で修正・追加があった"名札 メイン" と
”手続き定義開始 chkフッタ表示::ソース値更新()” の部分だけです) |
| 1 |
名札 メイン |
| 2 |
|
| 3 |
変数宣言 局所,文字列 { &m編集対象表 = #一括パス名 + "住所録.tbx" } |
| 4 |
オブジェクト操作 @フォーム.編集対象表
= &m編集対象表 /* 編集対象表は、メイン処理でのみ変更できます */ |
| 5 |
|
| 6 |
変数宣言 局所,文字列 { &m変数保存表 = #一括パス名 + "変数保存表.tbx" } |
| 7 |
|
| 8 |
変数宣言 局所, 文字列 { &m入力前値 , &m入力後値 } |
| 9 |
変数宣言 局所, 文字列 { &m郵便番号 } |
| 10 |
変数宣言 局所, 整数 { &mフッタ表示 = 1 } /* 初期値を設定しています */ |
| 11 |
|
| 12 |
ライブラリ #一括パス名 + "Template.cmx" |
| 13 |
* |
| 14 |
|
| 15 |
手続き定義開始 chkフッタ表示::ソース値更新() |
| 16 |
手続き実行 フッタ部を表示( ) |
| 17 |
|
| 18 |
変数宣言 自動,文字列 { &ファイル名 = #ファイル名( &m編集対象表 , 2 ) } /* 2:ファイル名
*/ |
| 19 |
変数宣言 自動,文字列 { &STRbak , &変数値 } |
| 20 |
&STRbak = &STR /* &STR の値を 自動変数 &STRbak に退避 */ |
| 21 |
|
| 22 |
&STR = &ファイル名 + "," + "mフッタ表示" /*
保存変数名称:局所変数は使用するフォーム専用なので編集対象表名を付加。*/ |
| 23 |
手続き実行 変数書出( &STR , #文字列 ( &mフッタ表示 ) , &m変数保存表 ) |
| 24 |
|
| 25 |
&STR = &STRbak /* &STRbakの値を 組み込み変数 &STR に戻す */ |
| 26 |
手続き定義終了 |