リファレンス
Magic eDeveloper V9 Plus

Magic Software Japan K.K.

本マニュアルに記載の内容は、将来予告なしに変更することがあります。これらの情報について MSE（Magic Software Enterprises Ltd.）および MSJ（Magic Software Japan K.K.）は、いかなる責任も負いません。
本マニュアルの内容につきましては、万全を期して作成していますが、万一誤りや不正確な記述があったとしても、MSE および MSJ はいかなる責任、債務も負いません。
MSE および MSJ は、この製品の商業価値や特定の用途に対する適合性の保証を含め、この製品に関する明示的、あるいは黙示的な保証は一切していません。
本マニュアルに記載のソフトウェアは、製品の使用許諾契約書に記載の条件に同意をされたライセンス所有者に対してのみ供給されるものです。同ライセンスの許可する条件のもとでのみ、使用または複製することが許されます。当該ライセンスが特に許可している場合を除いては、いかなる媒体へも複製することはできません。
ライセンス所有者自身の個人使用目的で行う場合を除き、MSE または MSJ の書面による事前の許可なしでは、いかなる条件下でも、本マニュアルのいかなる部分も、電子的、機械的、撮影、録音、その他のいかなる手段によっても、コピー、検索システムへの記憶、電送を行うことはできません。
サードパーティ各社商標の引用は、MSE および MSJ の製品に対するコンパチビリティに関しての情報提供のみを目的としてなされるものです。
本マニュアルにおいて、説明のためにサンプルとして引用されている会社名、製品名、住所、人物は、特に断り書きのないかぎり、すべて架空のものであり、実在のものについて言及するものではありません。
Magic は Magic Software Enterprises Ltd. のイスラエルその他の国での商標または登録商標です。
Magic eDeveloper、Magic Client および Magic Application Server は Magic Software Japan K.K. の商標です。
Pervasive.SQL は Pervasive Software, Inc. の商標です。
Microsoft および FrontPage は、Microsoft Corporation の登録商標です。また、Windows, WindowsNT および
ActiveX は Microsoft Corporation の商標です。
Oracle は Oracle Corporation の登録商標です。
一般に、会社名、製品名は各社の商標または登録商標です。
MSE および MSJ は、本製品の使用またはその使用によってもたらされる結果に関する保証や告知は一切していません。この製品のもたらす結果およびパフォーマンスに関する危険性は、すべてユーザが責任を負う
ものとします。
この製品を使用した結果、または使用不可能な結果生じた間接的、偶発的、副次的な損害（営利損失、業務中断、業務情報の損失などの損害も含む）に関し、事前に損害の可能性が勧告されていた場合であっても、MSE および MSJ、その管理者、役員、従業員、代理人は、いかなる場合にも一切責任を負いません。

第一版 2003 年 11 月 28 日 Version 9.4SP1a
第二版 2004 年 3 月 31 日 Version 9.4SP1b
第三版 2004 年 7 月 30 日 Version 9.4SP3
第四版 2005 年 8 月 31 日 Version 9.4SP3c
第五版 2005 年 12 月 29 日 Version 9.4SP6

Copyright 2003 Magic Software Enterprises Ltd.and Magic Software Japan K.K. All rights reserved.

目次
1 導入とインタフェース
参考資料 ............................................................................................................................ 2オンラインドキュメント ................................................................................................ 2
インストール .................................................................................................................... 2
このマニュアルの使用方法 ............................................................................................ 2
表記規則 ............................................................................................................................... 2
キーの組み合わせ ............................................................................................................... 3
このマニュアルで使用するアイコン ............................................................................... 3

Magic の主な機能 ............................................................................................................. 3ブラウザ形式アプリケーション ....................................................................................... 4
Magic コンポーネント ........................................................................................................ 4
モデル ................................................................................................................................... 4
イベント駆動エンジン ....................................................................................................... 4
データ管理 ........................................................................................................................... 4
エラーハンドラ ................................................................................................................... 5
マルチスレッドエンジン ................................................................................................... 5
GUI の拡張 ........................................................................................................................... 5
メインプログラム ............................................................................................................... 5
フォーム ............................................................................................................................... 5
ユーティリティ ................................................................................................................... 6
処理コマンドと式 ............................................................................................................... 6
マルチユーザ環境 ............................................................................................................... 6

組み合わせキー ................................................................................................................ 6
Magic のワークスぺース ................................................................................................. 6［ナビゲータ］ペインと［ワークスペース］ペイン ................................................... 7
MDI クライアントの縁の表示........................................................................................... 8特性シート ........................................................................................................................... 8
コメント ............................................................................................................................... 8
チェック結果 ....................................................................................................................... 9
ペインの切り替え ............................................................................................................... 9ペインの統合 ....................................................................................................................... 9
Magic リポジトリ ................................................................................................................ 10

2 設定［設定］メニュー .............................................................................................................. 20
アプリケーションの新規作成 ........................................................................................ 21
設定／アプリケーション ................................................................................................ 22［アプリケーション］テーブルの設定欄 ......................................................................... 22
アプリケーション特性 ....................................................................................................... 24
CTL 特性............................................................................................................................... 25

設定／動作環境 ................................................................................................................ 30
リファレンス
Magic eDeveloper V9 Plusi［システム］タブ ..................................................................................................................31［マルチユーザ］タブ ..........................................................................................................39［動作設定］タブ ..................................................................................................................42［国別設定］タブ ..................................................................................................................51［外部参照］タブ ..................................................................................................................53［アプリケーションサーバ］タブ ......................................................................................60
Magic のデフォルト値 ......................................................................................................65

開発モードでの拡張設定 ................................................................................................ 65
JAVA の環境設定 ............................................................................................................. 66［MAGIC_JAVA］セクション .............................................................................................66

設定／基本色 .................................................................................................................... 66［基本色］テーブルの設定欄 ..............................................................................................66［基本色］テーブルで行った変更の保存 ..........................................................................68

設定／フォント ................................................................................................................ 69［フォント］テーブルの設定欄 ..........................................................................................69［フォント定義］ダイアログ ..............................................................................................70［フォント］テーブルで行った変更の保存 ......................................................................71

設定／キーボード割付 .................................................................................................... 71
アクション ............................................................................................................................71
アクションのステータス ....................................................................................................71
アクションの例 ....................................................................................................................72［キーボード割付］テーブル ..............................................................................................72［キーボード割付］テーブルの設定欄 ..............................................................................73

設定／サーバ .................................................................................................................... 74［サーバ］テーブルの設定欄 ..............................................................................................75
サーバ特性 ............................................................................................................................75

設定／サービス ................................................................................................................ 76［サービス］テーブルの設定欄 ..........................................................................................76
サービス特性 ........................................................................................................................77

設定／ビジュアル接続 .................................................................................................... 78
設定／通信ゲートウェイ ................................................................................................ 79［通信ゲートウェイ］テーブルの設定欄 ..........................................................................79

設定／ DBMS .................................................................................................................... 80［DBMS］テーブルの設定欄...............................................................................................80
DBMS 特性............................................................................................................................81

設定／データベース ........................................................................................................ 84［データベース］テーブルの設定欄 ..................................................................................85
データベース特性 ................................................................................................................87

設定／論理名 .................................................................................................................... 91
論理名テーブルの設定欄 ....................................................................................................91
論理名の使用方法 ................................................................................................................92

設定／言語 ........................................................................................................................ 93
多言語サポート（Multi Lingual Support ）.........................................................................93［言語］テーブルの設定欄 ..................................................................................................93

設定／プリンタ ................................................................................................................ 95［プリンタ］テーブルの設定欄 ..........................................................................................95

設定／ HTML スタイル ................................................................................................... 97ii［HTML スタイル］テーブルの設定欄..............................................................................97
リファレンス
Magic eDeveloper V9 Plus

設定／プリンタ属性 ........................................................................................................ 98
設定／チェックメッセージ ............................................................................................ 98
設定／シークレット名 ................................................................................................... 98
設定／ユーザグループ ................................................................................................... 98
設定／ユーザ ID ............................................................................................................... 99
設定／ログオン ................................................................................................................ 99［ログオン］ダイアログの設定欄 ..................................................................................... 99

MAGIC.INI ファイル ....................................................................................................... 100
MAGIC.INI ファイルのフォーマット .............................................................................. 101（例）MAGIC.INI ファイルへのサーバ情報の保存 ........................................................ 102

コマンドラインオプション ............................................................................................ 102
コマンドラインオプションの詳細 ................................................................................... 103
コマンドラインオプションの例 ....................................................................................... 103
コマンドラインによるアプリケーションの起動 ........................................................... 104
コマンドラインオプションと MAGIC.INI の値の関係 ................................................. 104［動作環境］ダイアログの設定欄とコマンドラインの値の対応一覧 ...................... 105

その他の重要なパラメータ ............................................................................................ 109［MAGIC_ENV］セクション.............................................................................................. 109［MAGIC_SPECIALS］セクション.................................................................................... 109［Interface_Builders］セクション........................................................................................ 113［dbMAGIC_ENV］セクション.......................................................................................... 114［WINDOWSJ_PRINTER］セクション ............................................................................. 117

3 モデル
モデルリポジトリ ............................................................................................................ 120
モデルリポジトリカラム ................................................................................................... 120
クラスタイプ ....................................................................................................................... 120
特性シート ........................................................................................................................... 121

データ項目 ....................................................................................................................... 122
データ項目の特性 ............................................................................................................... 123
型 ........................................................................................................................................... 123
記憶型式 ............................................................................................................................... 125

書式 .................................................................................................................................... 125
書式の使用方法 ................................................................................................................... 125
機能指示記号 ....................................................................................................................... 126
位置指示記号 ....................................................................................................................... 131
マスク文字 ........................................................................................................................... 134
書式作成時の構文規則 ....................................................................................................... 134

項目モデル特性 ................................................................................................................ 135
モデル ................................................................................................................................... 135
詳細 ....................................................................................................................................... 135
入力 ....................................................................................................................................... 136
表示 ....................................................................................................................................... 136
ActiveX、OLE ...................................................................................................................... 136
スタイル ............................................................................................................................... 137
デフォルト /NULL............................................................................................................... 137
格納形式 ............................................................................................................................... 137
リファレンス
Magic eDeveloper V9 Plusiii

SQL.........................................................................................................................................138

コントロールモデル特性 ................................................................................................ 138
詳細 ........................................................................................................................................138
入力 ........................................................................................................................................140
表示 ........................................................................................................................................141
位置とサイズ ........................................................................................................................144
OLE2 ......................................................................................................................................144

フォームモデル特性 ........................................................................................................ 144
モデル ....................................................................................................................................144
詳細 ........................................................................................................................................145
入力 ........................................................................................................................................145
表示 ........................................................................................................................................146
分割 ........................................................................................................................................146
位置とサイズ ........................................................................................................................147

ヘルプモデル特性 ............................................................................................................ 147
モデル：（デフォルト）........................................................................................................147
詳細 ........................................................................................................................................147
入力 ........................................................................................................................................147
表示 ........................................................................................................................................147
位置とサイズ ........................................................................................................................147

モデルの使用 .................................................................................................................... 148
モデルの作成 ........................................................................................................................148
モデルの削除 ........................................................................................................................148
継承関係の解除 ....................................................................................................................148
オブジェクトに別のモデルを選択 ....................................................................................148
オブジェクトからモデルを削除 ........................................................................................148
式 ............................................................................................................................................149
権利 ........................................................................................................................................149

モデル変換ユーティリティ ........................................................................................... 149

4 テーブル
テーブルリポジトリ ........................................................................................................ 152
テーブルリポジトリのカラム ............................................................................................153
テーブル特性 ........................................................................................................................155［高度な設定］タブ ..............................................................................................................155［SQL］タブ ..........................................................................................................................157
常駐テーブル ........................................................................................................................159
テーブル変換ユーティリティ ............................................................................................159

カラムテーブル ................................................................................................................ 159
カラムテーブルのカラム ....................................................................................................159
カラム特性 ............................................................................................................................161

インデックステーブル .................................................................................................... 165
インデックステーブルのカラム ........................................................................................165
インデックスセグメントテーブルのカラム ....................................................................166
インデックス特性 ................................................................................................................167［高度な設定］タブ ..............................................................................................................167［SQL］タブ ..........................................................................................................................168
外部キーテーブル ................................................................................................................169iv

リファレンス
Magic eDeveloper V9 Plus

5 Magic アプリケーションエンジン
タスク ................................................................................................................................ 172
エンジンレベル ................................................................................................................ 173
処理テーブル ....................................................................................................................... 173

イベントハンドリング .................................................................................................... 175
イベントタイプ ................................................................................................................... 176
対話型タスクのイベントハンドラ ................................................................................... 176
バッチタスクのイベントハンドラ ................................................................................... 178
ハンドラ ............................................................................................................................... 178

ユーザ定義イベント ........................................................................................................ 182# ............................................................................................................................................. 183
名前 ....................................................................................................................................... 183
タイプ ................................................................................................................................... 183
トリガ ................................................................................................................................... 183
強制終了 ............................................................................................................................... 183
公開イベント名 ................................................................................................................... 184
公開 ....................................................................................................................................... 184

エンジンについての情報 ................................................................................................ 185
Magic の 14 個の処理コマンド .......................................................................................... 185
タスクのデータビュー ....................................................................................................... 187
タスクフローでの処理モード ........................................................................................... 189
エンドユーザによる画面での操作 ................................................................................... 190

エンジンの実行規則 ........................................................................................................ 191
タスクサイクルのレベル ................................................................................................... 191
タスクサイクル ................................................................................................................... 192
レコードループ処理 ........................................................................................................... 193
コントロールレベル ........................................................................................................... 195
グループレベル ................................................................................................................... 196
グループレベルの実際の流れ ........................................................................................... 197
グループレベルの例 ........................................................................................................... 197

レコードループのフローチャート ................................................................................ 198
オンラインタスクでのレコードループ ........................................................................... 199
バッチタスクでのレコードループ ................................................................................... 200
レコードレベルでのエンジンの動作 ............................................................................... 200
処理実行の制御 ................................................................................................................... 203
エンドユーザによる画面での操作 ................................................................................... 206
ハンドラ内でのフロー制御 ............................................................................................... 207

6 プログラムプログラムテーブル ........................................................................................................ 210
プログラムテーブルの設定欄 ........................................................................................... 210

タスク ................................................................................................................................ 211
タスク環境のメニューオプション ................................................................................... 211［タスク特性］ダイアログ ................................................................................................. 211

埋め込み SQL.................................................................................................................... 221
埋め込み SQL の使用.......................................................................................................... 221
埋め込み SQL の構成要素.................................................................................................. 222
リファレンス
Magic eDeveloper V9 Plusv

SQL コマンドの APG ..........................................................................................................224
埋め込み SQL の SELECT 文の動作..................................................................................225
埋め込み SQL の使用における制約事項 ..........................................................................226
バインディング変数 ............................................................................................................226
遅延トランザクション内での埋め込み SQL ...................................................................227

タスク制御 ........................................................................................................................ 227
条件としてのタスク制御特性 ............................................................................................227［タスク制御］ダイアログ ..................................................................................................228

変数項目テーブル ............................................................................................................ 232
変数項目テーブルのカラム ................................................................................................232
変数項目特性 ........................................................................................................................233

式テーブル ........................................................................................................................ 234
式 ...........................................................................................................................................234

フォームテーブル ........................................................................................................... 235［フォーム］テーブルの設定欄 ..........................................................................................237
フォームの操作 ....................................................................................................................238

DB テーブル...................................................................................................................... 244
DB テーブルのカラム .........................................................................................................244

入出力ファイルテーブル ................................................................................................ 246
入出力ファイルテーブルのカラム ....................................................................................246
入出力特性 ............................................................................................................................250

ソートテーブル ................................................................................................................ 251
セグメントテーブルのカラム ............................................................................................251

イベントテーブル ............................................................................................................ 253
イベントテーブルのカラム ................................................................................................253

範囲と位置付ダイアログ ................................................................................................ 255［範囲／位置付］タブ ..........................................................................................................255［SQL Where］タブ...............................................................................................................257

タスク定義ウィンドウ .................................................................................................... 260
処理レベルテーブルの構造 ................................................................................................260
処理レベルテーブルのカラム ............................................................................................261

メインプログラム ............................................................................................................ 263
メインプログラムのアクセスと使用 ................................................................................264
実行モードでの特徴と動作 ................................................................................................264
開発モードでの特徴と動作 ................................................................................................265

7 処理コマンド
処理コマンドの索引 ........................................................................................................ 270
概要 .................................................................................................................................... 270
コメント ............................................................................................................................ 271
目的 ........................................................................................................................................271
用途 ........................................................................................................................................271［コメント］コマンドの設定欄 ..........................................................................................271

セレクト ............................................................................................................................ 271

vi

目的 ........................................................................................................................................271
用途 ........................................................................................................................................271
配置 ........................................................................................................................................272
リファレンス
Magic eDeveloper V9 Plus［セレクト］コマンドの設定欄 ......................................................................................... 272
セレクト特性 ....................................................................................................................... 278

エラー ................................................................................................................................ 278
目的 ....................................................................................................................................... 278
用途 ....................................................................................................................................... 279［エラー］コマンドの設定欄 ............................................................................................. 279

リンク ................................................................................................................................ 280
概要 ....................................................................................................................................... 280
用途 ....................................................................................................................................... 283
配置 ....................................................................................................................................... 284
5 つのリンク方式 ................................................................................................................ 284［リンク］コマンドの設定欄 ............................................................................................. 288［リンク特性］ダイアログ ................................................................................................. 290

リンク終了 ....................................................................................................................... 291
目的 ....................................................................................................................................... 291
用途 ....................................................................................................................................... 291
配置 ....................................................................................................................................... 291［リンク終了］コマンドの設定欄 ..................................................................................... 291
使用の際の注意 ................................................................................................................... 291

ブロック ........................................................................................................................... 292
目的 ....................................................................................................................................... 292
用途 ....................................................................................................................................... 292［ブロック］コマンドのパラメータ ................................................................................. 292

ブロック終了 .................................................................................................................... 294
目的 ....................................................................................................................................... 294
用途 ....................................................................................................................................... 294［ブロック終了］コマンドの設定欄 ................................................................................. 294
使用の際の注意 ................................................................................................................... 294

コール ................................................................................................................................ 294
目的 ....................................................................................................................................... 294
パラメータの受け渡し ....................................................................................................... 295［パラメータ］テーブル ..................................................................................................... 295
変数項目とパラメータ項目の違い ................................................................................... 296
Magic でのパラメータの受け渡し方法 ............................................................................ 297［コール］コマンドの設定欄 ........................................................................................... 297［コールタスク］コマンド ................................................................................................. 299［コールプログラム］コマンドと［コール式］コマンド ............................................. 302［コール公開プログラム］コマンド ................................................................................. 303［コールユーザ PRC］コマンド......................................................................................... 305［コール COM］コマンド ................................................................................................... 307［コールリモート］コマンド ............................................................................................. 307［コール Web サービス］コマンド.................................................................................... 308

アクション ........................................................................................................................ 311
目的 ....................................................................................................................................... 311
用途 ....................................................................................................................................... 311［アクション］コマンドの設定欄 ..................................................................................... 313

項目更新 ............................................................................................................................ 314
目的 ....................................................................................................................................... 314
用途 ....................................................................................................................................... 314
リファレンス
Magic eDeveloper V9 Plusvii

［項目更新］コマンドの設定欄 ..........................................................................................315
使用の際の注意事項 ............................................................................................................317

データ出力 ........................................................................................................................ 318
目的 ........................................................................................................................................318
用途 ........................................................................................................................................319［データ出力］コマンドの設定欄 ......................................................................................319
使用の際の注意事項 ............................................................................................................321

データ入力 ........................................................................................................................ 321
目的 ........................................................................................................................................321
用途 ........................................................................................................................................321［データ入力］コマンドの設定欄 ......................................................................................321
使用の際の注意事項 ............................................................................................................323

エディット ........................................................................................................................ 324
目的 ........................................................................................................................................324
用途 ........................................................................................................................................324［エディット］コマンドの設定欄 ......................................................................................324
使用の際の注意 ....................................................................................................................325

OS コマンド ...................................................................................................................... 325
目的 ........................................................................................................................................325
用途 ........................................................................................................................................326［OS コマンド］コマンドの設定欄....................................................................................326

イベント実行 .................................................................................................................... 327
目的 ........................................................................................................................................327
用途 ........................................................................................................................................327［イベント実行］コマンドの設定欄 ..................................................................................327
公開イベントの実行時の動作 ............................................................................................329［ビュー再表示］イベントのパラメータ指定 ..................................................................329

8 関数
リテラル ............................................................................................................................ 332
演算子 ................................................................................................................................ 335
算術演算子 ............................................................................................................................335
論理演算子 ............................................................................................................................335
文字列演算子 ........................................................................................................................335

項目のシンボル名 ............................................................................................................ 336
関数 .................................................................................................................................... 336
DDE（Dynamic Data Exchange）..........................................................................................336
バッファ管理 ........................................................................................................................337
ベクトルデータ ....................................................................................................................337
XML ネームスペース ..........................................................................................................337

関数一覧 ........................................................................................................................... 342
関数の説明（アルファベット順）.................................................................................. 355

9 表示フォーム
ブラウザフォーム ............................................................................................................ 510

viii

ブラウザサブフォーム ........................................................................................................510
ブラウザフォーム特性 ......................................................................................................512
リファレンス
Magic eDeveloper V9 Plus

HTML コントロールテーブル ........................................................................................ 512
ブラウザコントロール .................................................................................................. 513
ブラウザコントロール特性 ........................................................................................... 513
エディットコントロール特性 ........................................................................................... 513
ラジオボタンコントロール特性 .................................................................................... 515
ハイパーテキストコントロール特性 ............................................................................ 516
プッシュボタンコントロール特性 .................................................................................. 517
チェックボックスコントロール特性 .............................................................................. 518
リストボックスコントロール特性 .................................................................................. 519
コンボボックスコントロール特性 ................................................................................. 521
イメージコントロール特性 .............................................................................................. 522
テーブルコントロール特性 .............................................................................................. 523
IFRAME コントロール特性 ............................................................................................. 524
その他コントロール特性 .................................................................................................. 524

GUI 表示フォーム ........................................................................................................... 525
GUI 表示フォーム特性 ...................................................................................................... 525
GUI 表示コマンド ............................................................................................................... 529
GUI 表示基本色パレット .................................................................................................. 532

GUI 表示コントロール .................................................................................................... 532
スタティックコントロール ............................................................................................... 534
チョイスコントロール ....................................................................................................... 534
スライダコントロール ....................................................................................................... 535
エディットコントロール ................................................................................................... 535
プッシュボタンコントロール ........................................................................................... 536
チェックボックスコントロール ....................................................................................... 536
イメージコントロール ....................................................................................................... 537
ラインコントロール .......................................................................................................... 537
OLE コントロール............................................................................................................... 537
リッチテキストコントロール ........................................................................................... 537
リッチエディットコントロール ....................................................................................... 537
テーブルコントロール ....................................................................................................... 538
ツリーコントロール ........................................................................................................... 539

ドラッグ & ドロップ ....................................................................................................... 542
ドラッグ開始イベント ....................................................................................................... 542
ドロップイベント ............................................................................................................... 543
ツリーコントロールでのドラッグ & ドロップ .............................................................. 543
ドラッグ & ドロップの制限と環境設定 .......................................................................... 543

項目パレット .................................................................................................................... 544
GUI 表示コントロール特性 ............................................................................................ 544
ラジオボタンのコントロール特性 ................................................................................... 545
スタティック（四角形）コントロール特性 ................................................................... 548
テーブルコントロール特性 ............................................................................................... 550
エディットコントロール特性 ........................................................................................... 554
カラムコントロール特性 ................................................................................................... 557
タブコントロール特性 ....................................................................................................... 558
スタティック（楕円形）コントロール特性 ................................................................... 561
イメージコントロール特性 ............................................................................................... 563
テキストコントロール特性 ............................................................................................... 565
リストボックスコントロール特性 ................................................................................... 567
リファレンス
Magic eDeveloper V9 Plusix

ラインコントロール特性 ....................................................................................................571
OLE コントロール特性 .......................................................................................................572
プッシュボタンコントロール特性 ....................................................................................575
コンボボックスコントロ−ル特性 ....................................................................................577
スライダコントロール特性 ................................................................................................580
リッチテキストコントロール特性 ....................................................................................582
チェックボックスコントロール特性 ................................................................................584
グループコントロール特性 ................................................................................................586
リッチエディットコントロール特性 ................................................................................588
ツリーコントロール特性 ....................................................................................................590
ActiveX コントロール特性 .................................................................................................593
サポートするイメージフォーマット ................................................................................594

10 出力フォーム
HTML フォーム ................................................................................................................ 598
HTML フォームの表示........................................................................................................598
HTML コントロールの配置................................................................................................598
HTML フォーム特性............................................................................................................598
HTML スタイルテーブル....................................................................................................600
ハイパーリンクの設定 ........................................................................................................601
コンテキスト変数 ................................................................................................................602
HTML コマンドパレット....................................................................................................604
HTML スタティックテーブルコマンドパレット............................................................606
HTML コントロールパレット............................................................................................607
フォントと HTML コントロール.......................................................................................608
HTML コントロール特性....................................................................................................609
スタティックテーブルコントロール特性 ........................................................................613

フレームセットフォーム ................................................................................................ 614
フレームセットフォーム特性 ............................................................................................615
フレームセットのコマンドパレット ................................................................................616
フレームセットコントロール特性 ....................................................................................617

HTML マージフォーム .................................................................................................... 618
HTML マージフォーム特性................................................................................................618
マージイベントハンドラ ....................................................................................................620
マージコマンドテーブル ....................................................................................................621
マージコマンド一覧 ..........................................................................................................622
HTML テンプレートファイルのタグ................................................................................622
HTML マージのタグ............................................................................................................623
HTML マージの構文規則....................................................................................................624
HTML マージの実行時の動作............................................................................................624
HTML ファイルマージの例................................................................................................625

Web Online ページ............................................................................................................ 625
Web Online 応答フォーム................................................................................................ 626
Web Online 応答フォーム特性............................................................................................626

リクエスタのアップロード機能 .................................................................................... 626
入出力フォーム ................................................................................................................ 628

x

GUI テーブルコントロールの機能....................................................................................628
複数行編集の印刷 ................................................................................................................629
プリンタ属性サポート ........................................................................................................629
リファレンス
Magic eDeveloper V9 Plus

プリンタの設定 ................................................................................................................... 629
論理印刷スタイル ............................................................................................................... 630

11 データ管理
トランザクション処理 .................................................................................................... 634
トランザクションと実行レベル .................................................................................... 634
タスクレベルの物理トランザクション ........................................................................... 635
グループレベルの物理トランザクション ....................................................................... 635
レコードレベルの物理トランザクション ....................................................................... 636

遅延トランザクション .................................................................................................... 637
トランザクション開始 ....................................................................................................... 637
ロック方式 ........................................................................................................................... 637
DB SQL Where 句................................................................................................................. 638
埋込み SQL........................................................................................................................... 638
数値型項目の更新 ............................................................................................................... 638

更新／削除ステートメント ............................................................................................ 638
コール前のレコード未更新への対応 ............................................................................... 639

ネストトランザクション ................................................................................................ 639
トランザクションツリー ................................................................................................ 640
オープントランザクション ............................................................................................... 640
クローズトランザクション ............................................................................................... 640
実行時のツリーの例 ........................................................................................................... 641

トランザクション処理リカバリ .................................................................................... 642
Magic の内部トランザクション ..................................................................................... 642
データベースにトランザクションをマップする ........................................................... 642

デッドロックとトランザクション処理 ........................................................................ 643
ロールバック .................................................................................................................... 643
ブラウザベースプログラムでのロールバックの動作 ................................................... 643

同期 .................................................................................................................................... 644
Magic キャッシュ ............................................................................................................. 644
キャッシュできるもの ....................................................................................................... 644
キャッシュを使用するタイミング ................................................................................... 644
キャッシュの有効化 ........................................................................................................... 645
プログラム動作の変更 ....................................................................................................... 645
キャッシュと常駐タスク ................................................................................................... 645
キャッシュとロールバック処理コマンド ....................................................................... 645
キャッシュとクライアント／サーバ ............................................................................... 645
Magic キャッシュの内部実行 ............................................................................................ 646

エラー処理 ........................................................................................................................ 646
エラー処理の仕組み ........................................................................................................... 646
エラー発生時の処理方式 ................................................................................................... 646
アボート ............................................................................................................................... 647
復旧 ....................................................................................................................................... 647
処理方式とエラー発生時の動作 ....................................................................................... 647
エラーハンドラ ................................................................................................................... 648
エラー情報 ........................................................................................................................... 653
実行時のエラー処理 ........................................................................................................... 654
リファレンス
Magic eDeveloper V9 Plusxi

エラーレコードの位置に基づくタスクの範囲／位置付 ................................................654
Magic Ver8.2 からのアプリケーション移行.....................................................................654

12 エンドユーザメニュー & ヘルプ
メニューの種類 ................................................................................................................ 658
プルダウンメニュー ............................................................................................................658
コンテキストメニュー ........................................................................................................658

メニューリポジトリ ........................................................................................................ 658
メニュー名 ............................................................................................................................659
メニュータイプ ....................................................................................................................659
メニューフォームの作成 ....................................................................................................659

メニュー定義テーブルの設定欄 .................................................................................... 660
タイプ ....................................................................................................................................660
ユーザメニュー名 ................................................................................................................661
論理メニュー名 ....................................................................................................................661
パラメータ ............................................................................................................................661
ショートキー .......................................................................................................................661

権利設定 ............................................................................................................................ 662
メニュー特性による権利設定 ............................................................................................662

メニュー特性 .................................................................................................................... 663［特性］タブ ..........................................................................................................................663［イメージ］タブ ..................................................................................................................664［初期設定］タブ ..................................................................................................................665

メニューのリポジトリ入力 ............................................................................................ 665
ヘルプリポジトリ ............................................................................................................ 665
ヘルプのタイプ ................................................................................................................ 666
内部ヘルプ ............................................................................................................................667
自動ヘルプ ............................................................................................................................668
Windows 形式ヘルプ............................................................................................................668
ツールチップ ........................................................................................................................670
URL ........................................................................................................................................670

13 使用権利
使用権利システムの用途 ................................................................................................ 672
Magic のセキュリティとユーザの役割 ......................................................................... 672
スーパーバイザ ................................................................................................................ 672
権利リポジトリ ................................................................................................................ 673
権利リポジトリの設定欄 ....................................................................................................673

権利設定ダイアログ ........................................................................................................ 675
モデルリポジトリの［権利設定］ダイアログ ................................................................676
テーブルリポジトリの［権利設定］ダイアログ ............................................................677
プログラムリポジトリの［権利設定］ダイアログ ........................................................677
ヘルプリポジトリの［権利設定］ダイアログ ................................................................679
メニューリポジトリの［権利設定］ダイアログ ............................................................679
コンポーネントリポジトリの［権利設定］ダイアログ ................................................680［CTL 特性］ダイアログの［権利設定］ダイアログ.................................................. 681

xii

リファレンス
Magic eDeveloper V9 Plus

セキュリティキー ............................................................................................................ 682
CTL アクセスキー............................................................................................................... 682
公開権利アクセスキー ....................................................................................................... 682
スーパー権利キー ............................................................................................................... 682
強制 MVCS 設定キー .......................................................................................................... 683
リモートフローモニタ権利 ............................................................................................... 683
リポジトリ入出力の制限 ................................................................................................... 683

動作環境の使用権利 ........................................................................................................ 683
ユーザ ID テーブル .......................................................................................................... 684［ユーザ ID］テーブルの設定欄 ........................................................................................ 684

ユーザグループテーブル ................................................................................................ 685［ユーザグループ］テーブルの設定欄 ............................................................................. 685

シークレット名テーブル ................................................................................................ 686
データのセキュリティ .................................................................................................... 687
アプリケーションデータテーブルへのアクセスの制限 ............................................... 687
CTL ファイル自体へのアクセスの制限........................................................................... 687

HTTP 認証 ......................................................................................................................... 688
Active ディレクトリによる認証方法............................................................................. 688
Active ディレクトリサーバ側のアカウント設定............................................................ 688
Magic の動作環境の設定 .................................................................................................... 688

LDAP サーバによる認証方法 ......................................................................................... 689
LDAP サーバ側のアカウント設定.................................................................................... 689
ユーザグループの登録 ....................................................................................................... 690
Magic の動作環境の設定 .................................................................................................... 690

14 コンポーネント
コンポーネントの概要 .................................................................................................... 692
コンポーネントリポジトリ ............................................................................................ 693
Magic コンポーネントの読み込み .................................................................................... 694
Magic コンポーネントの削除 ........................................................................................... 694
コンポーネント特性 ........................................................................................................... 694
コンポーネント項目 ........................................................................................................... 696

動作環境のコンポーネント ............................................................................................ 696
INIPut 関数の動作 ............................................................................................................... 697

Magic コンポーネントとメインプログラム ................................................................. 697
Magic インタフェースビルダ ......................................................................................... 698
Magic インタフェースビルダテーブル .......................................................................... 698
MIB の特性........................................................................................................................... 699
オブジェクトテーブル ....................................................................................................... 699［環境設定］テーブル ......................................................................................................... 699
オブジェクトの追加 .......................................................................................................... 700
インタフェースファイルの作成 ....................................................................................... 700
MCI ファイルのサンプル................................................................................................... 700

Web サービスインタフェースビルダ............................................................................ 701
Web サービスプログラムテーブル................................................................................... 701
WSDL ファイルの設定 ....................................................................................................... 703
WSDL ファイルの作成 ....................................................................................................... 703
リファレンス
Magic eDeveloper V9 Plusxiii

作成された WSDL ファイル...............................................................................................703

EJB インタフェースビルダ............................................................................................. 703
Java コンポーネントジェネレータ ................................................................................ 704
XML コンポーネントジェネレータ .............................................................................. 704

15 COM オブジェクトサポート
OLE と ActiveX ................................................................................................................. 706
COM オブジェクト項目の定義 ...................................................................................... 706
型 ............................................................................................................................................706
オブジェクト名とタイプライブラリの設定 ....................................................................706
フォームへの ActiveX コントロールの配置 ....................................................................706
OLE 項目と OLE と定義された BLOB 項目.....................................................................707

COM オブジェクトの呼び出し ...................................................................................... 707
ActiveX イベントの処理.................................................................................................. 710
実行時の動作 .................................................................................................................... 711
パラメータとしてオブジェクトを渡す ............................................................................712
オブジェクトを手動でインスタンス化する ....................................................................712
作成されたオブジェクトの参照 ........................................................................................712
COM のエラーの取得 ..........................................................................................................712

フォームへの ActiveX コントロールの配置................................................................. 712
OLE 項目と OLE コントロールとしての BLOB 項目 ................................................. 713
COM オブジェクトを使用した Magic エンジンの呼び出し ...................................... 713
COM インタフェースビルダ..............................................................................................713
CIB の起動 ............................................................................................................................713
COM インタフェースビルダテーブル..............................................................................714
オブジェクトの設定 ............................................................................................................716
COM オブジェクトの作成..................................................................................................718
オブジェクトの登録 ............................................................................................................718
ローカル COM オブジェクトの実行時の動作.................................................................718
リモート COM オブジェクトの実行時の動作.................................................................719
COM オブジェクトエラーとトラブルシューティング..................................................720

16 Java との連携
Java の用語 ........................................................................................................................ 724
Java と EJB 用の関数 ....................................................................................................... 724
コードページ .................................................................................................................... 725
タイプシグニチャ ............................................................................................................ 727
実行エンジンの動作 ........................................................................................................ 728

xiv

ライフサイクル ....................................................................................................................728
マルチスレッド ....................................................................................................................728
ブラウザベースのプログラム ............................................................................................728
変換テーブル ........................................................................................................................728
疑似参照の戻り値 ................................................................................................................729
エラーと例外処理 ................................................................................................................729
ガーベッジコレクション機能 ............................................................................................729
環境 ........................................................................................................................................730
リファレンス
Magic eDeveloper V9 Plus

Java コンポーネントジェネレータ ................................................................................ 730
Java クラスや EJB タイプの指定....................................................................................... 731
Java オブジェクトブラウザ ............................................................................................... 732
Java クラス構造 ................................................................................................................... 733
作成された Java コンポーネント ...................................................................................... 734
作成されるファイル ........................................................................................................... 734

17 XML コンポーネントジェネレータXCG ウイザード ............................................................................................................... 738
XCG メインオプション...................................................................................................... 739
コンポーネントの修正 ....................................................................................................... 739
XML スキーマの詳細 ......................................................................................................... 740
XSD の表示 .......................................................................................................................... 741
XML スキーマインタフェースの詳細 ............................................................................. 742

データタイプ .................................................................................................................... 743
コンポーネントの詳細 ....................................................................................................... 743

XCG プログラム ............................................................................................................... 744
Count プログラム................................................................................................................. 744
DbDel プログラム................................................................................................................ 744
Get プログラム..................................................................................................................... 744
Put プログラム ..................................................................................................................... 745
Read プログラム .................................................................................................................. 745
Search プログラム ............................................................................................................... 745
Write プログラム ................................................................................................................. 745

コンポーネントの作成 .................................................................................................... 746
出力ファイル ....................................................................................................................... 746
XCG ディレクトリの変更.................................................................................................. 747

ネームスペースのサポート ............................................................................................ 747

18 外部アプリケーションへの接続
DDE .................................................................................................................................... 750
Magic と OLE オートメーション ................................................................................... 751
OLE オートメーションの実装........................................................................................... 751
引数型文字列とパラメータ型文字列 ............................................................................... 751
OLE オートメーション関数............................................................................................... 752［戻り値］パラメータの値 ................................................................................................. 757

Call 関数 ............................................................................................................................ 757
第 3 世代言語のコール .................................................................................................... 758
コールユーザ PRC............................................................................................................... 758
UDF 関数 .............................................................................................................................. 758
UDF/UDP/CallDLL のマルチスレッド対応について...................................................... 758

19 ユーティリティ
アプリケーションウィザード ........................................................................................ 762
APG（自動プログラムジェネレータ）.......................................................................... 762
テーブルリポジトリからの［APG］ダイアログ ........................................................... 762
xv
リファレンス
Magic eDeveloper V9 Plus

［プログラム］リポジトリまたはタスクツリーでの APG の実行................................766

プログラムチェックユーティリティ ............................................................................ 768
チェックメッセージの区分 ................................................................................................769
チェック結果表示 ................................................................................................................769
構文チェック処理 ................................................................................................................770
未使用オブジェクト ............................................................................................................770［チェックメッセージ］テーブル ......................................................................................770

定義取得ユーティリティ ................................................................................................ 771
テーブルをロードする ........................................................................................................771

クロスリファレンスユーティリティ ............................................................................ 773
オブジェクトの検索を実行する場所 ................................................................................774
クロスリファレンス結果の削除 ........................................................................................776
クロスリファレンス対象の選択 ........................................................................................776
クロスリファレンス結果の保存 ........................................................................................777
クロスリファレンス結果の印刷 ........................................................................................777
クロスリファレンス結果の最大保存数の変更 ................................................................777

検索と置換 ........................................................................................................................ 777
起動 ........................................................................................................................................777
置換 ........................................................................................................................................778

テキストの検索と置換 .................................................................................................... 779
起動 ........................................................................................................................................779
置換 ........................................................................................................................................780

リポジトリ入出力ユーティリティ ................................................................................ 781［リポジトリ入出力］ダイアログボックス ..................................................................782

フローモニタ／デバッガ ................................................................................................ 785
フローモニタのツールバー ................................................................................................786
フローモニタのメッセージグループフィルタ ................................................................786
フローモニタの特徴 ............................................................................................................787
サーバ上でのフローモニタ ................................................................................................787
ブラウザクライアントでのフローモニタ ........................................................................788

リモートフローモニタ .................................................................................................. 788
フローモニタクライアント ................................................................................................789
モニタするリモートアプリケーションの定義 ................................................................790
リモートフローモニタの開始 ............................................................................................791
アクセスの制限 ....................................................................................................................791
モニタデータの保存 ............................................................................................................792
パフォーマンス統計 ............................................................................................................792
フローの開始と終了を合わせる ........................................................................................792
実行フィルタ ........................................................................................................................793
色の指定 ................................................................................................................................793
コンテキストマネージャ ....................................................................................................794
キャッシュサイズの設定 ....................................................................................................794
モニタの停止 ........................................................................................................................794
リモートフローモニタの設定の保存 ................................................................................795

Magic プロファイラ ......................................................................................................... 795
プロファイラの操作 ............................................................................................................795
プロファイラの出力 ............................................................................................................796
プログラム実行トレースファイル ....................................................................................796
オープンファイルトレースファイル ................................................................................797

xvi

リファレンス
Magic eDeveloper V9 PlusODBC チェックドライバ ユーティリティ ................................................................... 797
テーブル変換ユーティリティ ........................................................................................ 798
Magic フラットファイル ................................................................................................. 798
データ出力ウィザード .................................................................................................... 799
実行時の処理 ....................................................................................................................... 799
実行時の動作 ....................................................................................................................... 801
XML テンプレートの構造 ................................................................................................. 802
XSD データタイプ .............................................................................................................. 802
HTML テンプレート構造 ................................................................................................... 804

ユーザ定義開発メニュー ................................................................................................ 806
メニューの登録 ................................................................................................................... 806
開発メニュー指定の例 ....................................................................................................... 807
処理コマンド ....................................................................................................................... 808
自動処理 ............................................................................................................................... 813
グローバルパラメータ情報 ............................................................................................... 814

モニタユーティリティ .................................................................................................... 815
アプリケーションサーバ ................................................................................................... 815
コンテキスト ....................................................................................................................... 816
リクエスト ........................................................................................................................... 816
統計 ....................................................................................................................................... 817
利用可能アプリケーション ............................................................................................... 817
ウィンドウ表示 ................................................................................................................... 817
サーバのモニタ ................................................................................................................... 817

ドキュメントテンプレート機能 .................................................................................... 817
テンプレートドキュメントの作成 ................................................................................... 818
ドキュメントテンプレートファイルの書式 ................................................................... 818
ドキュメントレポートセクション ................................................................................... 821
キーワード ........................................................................................................................... 822

20 分散アプリケーション
アーキテクチャ
アプリケーションサーバの環境構成 ............................................................................ 864
分散アプリケーションアーキテクチャの使用 ............................................................ 865
アプリケーションパーティショニング ........................................................................... 865
インターネット／イントラネットアプリケーション ................................................... 865

アプリケーションサーバのセットアップ .................................................................... 865
Magic 実行エンジンの動作 ................................................................................................ 865
ミドルウェアゲートウェイのロード ............................................................................... 866

サポートされるミドルウェア ........................................................................................ 866
Magic Request Broker （MRB）........................................................................................... 866
MRB の動作 ......................................................................................................................... 872

Magic のリクエスタ ......................................................................................................... 876
リクエスタの設定 ............................................................................................................... 876
ログオンユーザの指定 ....................................................................................................... 881

インターネットリクエスタ ............................................................................................ 881
インターネットアプリケーション開発のコンセプト ................................................... 882
インターネットリクエスタのセットアップ ................................................................... 882
リファレンス
Magic eDeveloper V9 Plusxvii

インターネットアプリケーションのパラダイム ............................................................883

SOAP サーバリクエスト ................................................................................................. 884
ブラウザ形式のインターネットアプリケーション .................................................... 884
ブラウザクライアントタスクの作成 ................................................................................884
インタフェースの作成 ........................................................................................................887
再計算 ....................................................................................................................................893
バッチ形式の HTML プログラム.......................................................................................894
ブラウザクライアント・モジュール ................................................................................895
ブラウザクライアントのエラーメッセージウィンドウ ................................................896

アプリケーションパーティショニング ........................................................................ 896［コールリモート］コマンド ..............................................................................................897
同期実行と非同期実行 ........................................................................................................897
パーティショニングの割当て ............................................................................................898

コマンドラインリクエスタ ............................................................................................ 903
マルチスレッド ................................................................................................................ 906
常駐テーブルの共有 ............................................................................................................906
環境設定 ................................................................................................................................906

アプリケーションパーティショニングの関数 ............................................................ 908
MRB モニタ ...................................................................................................................... 909

21 SNMP サポート
SNMP 機能の組み込み .................................................................................................... 912
OS 側の設定 ..........................................................................................................................912
Magic の SNMP モジュールのインストール....................................................................912
Magic リクエスタの設定.....................................................................................................913
MRB の設定 ..........................................................................................................................914
環境設定 ................................................................................................................................914

トラップ ............................................................................................................................ 914
自動的に通知するもの ........................................................................................................915
アプリケーションによって通知するものの ....................................................................915

NMS からアプリケーションサーバ情報を参照する................................................... 915
アップリケーションサーバの情報を取得 ........................................................................916
リクエストキュー情報を取得 ............................................................................................916
統計情報の取得 ....................................................................................................................916

NMS からアプリケーションを制御する....................................................................... 917

22 J2EE との連携
J2EE の用語 ...................................................................................................................... 921
EJB インタフェースビルダ............................................................................................. 921
Proxy EJB の定義..................................................................................................................922
作成手順 ................................................................................................................................923

Proxt EJB の動作環境 ....................................................................................................... 930
Proxy EJB の動作環境の設定..............................................................................................931
リソース ................................................................................................................................931

Magic の環境設定と実行 ................................................................................................. 931
動作環境 ...............................................................................................................................932

xviii

リファレンス
Magic eDeveloper V9 Plus

実行 ...................................................................................................................................... 932
汎用メッセージレイヤ (mgrqgnrc.dll).............................................................................. 932
アプリケーションサーバレイヤ ....................................................................................... 932
Java オブジェクトを渡すための設定 ............................................................................... 933

MRB の動作環境と実行 .................................................................................................. 934
問い合わせ（アプリケーションサーバのみ）................................................................. 934
終了 ....................................................................................................................................... 934
アプリケーションサーバのロード ................................................................................... 934
Java オブジェクトを渡すための設定 ............................................................................... 934

コマンドラインリクエスタ ............................................................................................ 934
終了 ....................................................................................................................................... 934
問い合わせ ........................................................................................................................... 934（非 EJB の）他のリクエスタからのリモートコール..................................................... 935

J2EE と Magic のインストール....................................................................................... 935
接続障害 ............................................................................................................................... 935

EJB リクエスト証明書へのアクセス............................................................................. 936

23 マルチユーザ環境
定義事項 ............................................................................................................................ 938
分離レベル ........................................................................................................................... 938
ロック ................................................................................................................................... 939
プロセス ............................................................................................................................... 939
トランザクション ............................................................................................................... 939

並行性 ............................................................................................................................... 939
ロック ................................................................................................................................... 940
更新レコードの識別 ........................................................................................................... 940
トランザクション ............................................................................................................... 941
ロック方式 ......................................................................................................................... 942
タスクのネストとロック ................................................................................................... 943
分離レベル .......................................................................................................................... 944
差分更新 ............................................................................................................................. 944

テーブルモード ................................................................................................................ 945
アクセスモード ................................................................................................................... 945
共有モード ........................................................................................................................... 945
マルチユーザ環境でのテーブルモードの設定 ............................................................... 946
テーブルモードの定義方法 ............................................................................................... 947
テーブル共有の仕組み ....................................................................................................... 947
自動レコードロック ........................................................................................................... 949
レコードロック（O= 入力時）........................................................................................... 949
実行モードでのロックの効果 ........................................................................................... 949

マルチユーザ環境の設定 ................................................................................................ 949［動作環境］ダイアログのマルチユーザ環境関連の設定欄 ......................................... 950

コンテキスト .................................................................................................................... 951

24 ワークグループ開発
ワークグループ開発のオプション ................................................................................ 954
オブジェクト .................................................................................................................... 954
リファレンス
Magic eDeveloper V9 Plusxix

チェックアウト／チェックインメカニズム ................................................................ 954［MVCS］メニュー ........................................................................................................... 956
チーム開発 ........................................................................................................................ 956
チーム開発の必須事項 ........................................................................................................956
チーム開発の有効化 ............................................................................................................957
スナップショットファイル ................................................................................................957
排他処理 ................................................................................................................................957
プログラムリポジトリの修正 ...........................................................................................958
ロックファイル ....................................................................................................................958
同期処理 ................................................................................................................................959
アプリケーションのアクセスモードと共有モード ........................................................960
ステーションロックファイル ............................................................................................960

25 SQL に関する考慮事項
Magic 動作環境の構成と定義 ......................................................................................... 962
Windows オペレーティングシステム................................................................................962
UNIX 系オペレーティングシステム .................................................................................962

Magic ゲートウェイの命名規則 ..................................................................................... 962
ゲートウェイ名の構成 ........................................................................................................962
Magic の API の実装とバージョン ....................................................................................963
データ定義規則 ....................................................................................................................964

構成とパフォーマンス .................................................................................................... 964
トランザクション ................................................................................................................964
ロック ....................................................................................................................................965
NULL 値 ................................................................................................................................969
インデックスの定義と使用 ................................................................................................970
範囲の定義 ............................................................................................................................971
ソート ....................................................................................................................................972
ストアドプロシージャ ........................................................................................................972
ネットワークトラフィックを軽減する ...........................................................................972
照会モード位置付け ............................................................................................................973
SQL コマンド .......................................................................................................................973

SQL ゲートウェイでサポートされるパラメータ........................................................ 974
Oracle データベースゲートウェイ................................................................................. 976
Magic のデータタイプ.........................................................................................................976
Oracle のデータタイプ ........................................................................................................978
LONG および LONG RAW データタイプ ........................................................................978
ヒント ....................................................................................................................................978データベース情報 ................................................................................................................979
テーブルのロック ................................................................................................................979
物理ロック ............................................................................................................................979
ビュー ....................................................................................................................................980
一意の識別子 ........................................................................................................................980
ストアドプロシージャ ........................................................................................................980

MS-SQL Server データベースゲートウェイ ................................................................. 981
Magic のデータタイプ.........................................................................................................981
MS-SQL Server のデータタイプ.........................................................................................983
TEXT データタイプ.............................................................................................................983

xx

リファレンス
Magic eDeveloper V9 Plus

物理ロック ........................................................................................................................... 983
ヒント ................................................................................................................................... 984
IDENTITY カラム................................................................................................................ 984
ビュー ................................................................................................................................... 985
一時テーブル ....................................................................................................................... 985
カーソルと DB コマンド.................................................................................................... 986
データベース情報 ............................................................................................................... 987

DB2 UDB データベースゲートウェイ .......................................................................... 989
Magic のデータタイプ ........................................................................................................ 989
DB2 UDB のデータタイプ ................................................................................................. 990
ビュー .................................................................................................................................. 990
物理ロック ........................................................................................................................... 991

ODBC データベースゲートウェイ ................................................................................ 991
Magic のデータタイプ ........................................................................................................ 991
ODBC のデータタイプ ....................................................................................................... 992
ロック ................................................................................................................................... 993
トラブルシューティング ................................................................................................... 993
ビュー ................................................................................................................................... 993
データベースデフォルト値 ............................................................................................... 994
ソート／一時データベース ............................................................................................... 994
SQL コマンド....................................................................................................................... 994

ODBC チェックドライバユーティリティ .................................................................... 994
データソース情報 ............................................................................................................... 995

改訂履歴
第２版
第３版
第４版
第5版

................................................................ ａ................................................................ ａ................................................................ ｃ................................................................ ｄ

索引

リファレンス
Magic eDeveloper V9 Plus

xxi

xxii

リファレンス
Magic eDeveloper V9 Plus

導入とインタフェース

1

このたびは、アプリケーション開発システム、Magic を購入いただき、誠にありがとうございます。Magic は、インストールした後、マニュアルを読みながらインタフェースに実際に触れてみるのが習得の早道です。
本章では、次の内容について説明します。
• 参考資料• インストール• このマニュアルの使用方法• Magic の主な機能• Magic リポジトリ• カラムとインデックスの内部番号（ISN）

リファレンス
Magic eDeveloper V9 Plus1

第 1 章 - 導入とインタフェース

参考資料
Magic V9 Plus に関するマニュアルとしては、次のようなものがご利用いただけます。
• 『インストールガイド』……Magic のインストールとライセンス許諾手続きについての手引き• 『新機能ガイド』……Magic V9 Plus の新機能についての解説書• 『リファレンスマニュアル』……本ドキュメントです。Magic V9 Plus の機能について説明しています。
• 『開発者ガイド』……Magic を使用してプログラムを開発するヒント集です。

オンラインドキュメント
Magic には、以下のようなオンラインドキュメントが含まれています。
• オンラインドキュメント (PDF)……PDF 形式のドキュメントです。参照するには、
Acrobat Reader が必要です。MSJ のサイトからダウンロードすることもできます。
• Magic ヘルプ ……Magic の各オブジェクトに対応した情報を提供するヘルプです。
このヘルプは開発ガイドにもリンクされています。
• 技術情報ドキュメント (PDF) ……ブラウザクライアントやイベントなど各トピックの詳細を記述したドキュメントです。CD-ROM の Online フォルダにあります。

インストール
Magic Ver.9 Plus を初めてご使用になる前に、まずインストールする必要があります。
Magic のインストール方法については、同梱されている『インストールガイド』を参照
してください。

このマニュアルの使用方法『リファレンス ガイド』は、Windows 98、2000 または同等のオペレーティングシステ
ムなど、ご使用のコンピュータとオペレーティングシステムに慣れたユーザを対象としています。
このマニュアルで特定項目についての説明をご参照ください。Magic の旧バージョンをご存知の方は、『新機能ガイド』をお読みください。次に、必要に応じてその他の出版物を参照してください。
Magic の旧バージョンからアプリケーションを変換する場合は、第 19 章「ユーティリティ」の「リポジトリ入出力ユーティリティ」の項を参照してください。

表記規則
このマニュアル全体で使用する表記規則を以下の表に示します。
表記スタイル

用途［］（角括弧）

メニューやオプションの名前。たとえば、「［編集］メニューから［キャンセル］オプションを選択します。」または、「［編集］→［キャンセル］を選択します。」などです。

2

リファレンス
Magic eDeveloper V9 Plus

Magic の主な機能「」（カギ括弧）初出の用語は、「」を付けて示すことがあります。たとえば、「イベント駆動エンジン」は、Magic Ver.9 の新出語です。

『』（二重カギ括弧）

マニュアル名は、『Magic リファレンス』のように、『』を付けて表します。

クーリエ体

フィールドに入力する値、構文、警告メッセージ、エラー
メッセージ、または環境設定などを示します。たとえば、「Appl=applic 1」または「メッセージサーバが見つかりません」など。

ボールド体

コマンドを示します。たとえば、「OK」、「Delete」、または「Save」など。
ボールド体は、フィールド内の「Yes」、「No」オプションの表記にも使用されます。

大文字だけで表記した
文字列

ファイル名を表します。たとえば、次のようになります。
MAGIC.INI ファイル、MAGIC.MCF、または SYS.RPR など。

大文字と小文字を組み合わせて表記した文字
列

キーボードのキー名やキーの組み合わせを示します。たとえば、「Enter 」、「Ctrl+P」など。

キーの組み合わせ書式

意味

キー 1+ キー 2

キー名の間のプラス記号（+）は、最初のキーを押したまま
2 番目のキーを押すことを示します。そのあと、両方のキーを放します。たとえば、「Alt+F4 を押して Magic を終了し、オペレーティングシステムに戻ります」など。

キー 1、キー 2

キー名の間の句点（、）は、これらのキーを順次押してから放すことを示します。

このマニュアルで使用するアイコン
各章の主要な項
その他の参照資料
重要な情報

Magic の主な機能
Magic V9 Plus は、専門性の高いシングルプラットフォームおよびマルチプラットフォー
ムのビジネスアプリケーション開発を目的として設計されており、業界の主要なインターネット Web ブラウザ、Web サーバ、アプリケーションサーバ、言語、およびデータ
ベースをオープンに幅広くサポートします。

リファレンス
Magic eDeveloper V9 Plus3

第 1 章 - 導入とインタフェース

ブラウザ形式アプリケーション
Magic V9 Plus では、クライアントとしてブラウザを使用するブラウザ形式のアプリケー
ションを作成することができ、グラフィック環境の機能性が拡張されます。
ブラウザ形式実行のパラダイムの詳細については、第 20 章「分散アプリケーション
アーキテクチャ」を参照してください。

Magic コンポーネント
Magic V9 Plus では、アプリケーションオブジェクトを、ほかの Magic のアプリケーショ
ンへエクスポート可能なコンポーネントとして定義することができます。コンポーネン
トをエクスポートすることにより、Magic アプリケーション間でリソースを共有することができます。また、修正内容を配布することもできます。
コンポーネントについての説明は、第 14 章「コンポーネント」を参照してください。

モデル
モデルとは、オブジェクトに引き継がれた属性の集まりです。
さまざまなオブジェクトタイプのモデルの作成と適用の詳細については、第 3 章「モデル」を参照してください。

イベント駆動エンジン
Magic V9 Plus には、さまざまなイベントを実行するイベントハンドラがあります。各ハ
ンドラは特定のタイプのイベントに割当てられ、アプリケーションからのアクションを要求したり、開始させたりします。
イベント駆動エンジンについての説明は、第 5 章「Magic アプリケーションエンジ
ン」を参照してください。

データ管理
データ管理では、物理データベースに保存されるデータを整理することができます。
Magic V9 Plus では、以下のデータ管理機能を利用することができます。
• トランザクション処理• 差分更新• キャッシュおよびデータ管理
データ管理についての説明は、第 11 章「データ管理」を参照してください。

4

リファレンス
Magic eDeveloper V9 Plus

Magic の主な機能

エラーハンドラ
エラーハンドラでは、アプリケーション実行中のエラー処理における Magic のデフォル
ト動作を変更することができます。ハンドラを作成することで、実行モード中に発生するさまざまなエラーに対する処理内容を指定できます。Magic では、処理対象となる既知の起こり得るエラーが一覧表示されます。また、使用しているデータベース管理シス
テムに特有のエラーも処理することができます。
エラーハンドラについての説明は、第 11 章「データ管理」の「エラー処理」を参照
してください。

マルチスレッドエンジン
Magic V9 Plus では、Magic のバックグラウンドアプリケーションサーバによって、複数のリクエストが同時に処理されます。各スレッドは異なる実行モードのコンテキストで実行されるので、ほかのスレッドに影響することはありません。
バックグラウンドモードで動作していない場合は、デフォルトではシングルスレッドです。
マルチスレッドエンジンの詳細については、第 20 章「分散アプリケーション アーキ
テクチャ」を参照してください。

GUI の拡張
複数のセクションで構成されるナビゲータペインやフォルダ、ブックマーク、クロスリ
ファレンスなど、使いやすい GUI インタフェースになりました。

メインプログラムメインプログラムでは、アプリケーション全体のハンドラやグローバル変数を定義できます。
メインプログラムの詳細については、第 6 章「プログラム」を参照してください。

フォーム
Magic V9 Plus では、以下のフォームを利用できます。
• インターネット用フォーム• オンライン画面用フォーム• 帳票用フォーム
フォームについての説明は、第 6 章「プログラム」の「フォームテーブル」、第 9 章「表示フォーム」、第 10 章「出力フォーム」を参照してください。

リファレンス
Magic eDeveloper V9 Plus5

第 1 章 - 導入とインタフェース

ユーティリティ
Magic には、Magic アプリケーションの開発、修正、管理、および実行に便利なさまざまなユーティリティがあります。
詳細については、第 19 章「ユーティリティ」を参照してください。

処理コマンドと式
処理コマンドは、タスク内に組み込まれます。Magic の 14 の処理コマンドについては、
第 7 章「処理コマンド」で説明します。処理コマンドのほとんどは、式に基づいて、条件付きで実行されます。式には、Magic のリテラルと関数を含めることができます。
詳細については、第 8 章「関数」を参照してください。

マルチユーザ環境
Magic は、さまざまなプラットフォームやデータベース上でシングルまたはマルチユー
ザ環境で実行し、クライアント / サーバ機能を提供します。Magic の環境設定は、［動作環境］ダイアログボックスで設定します。
詳細については、第 2 章「設定」を参照してください。アプリケーションサーバのセットアップとアプリケーションパーティショニングの詳細については、第 20 章
「分散アプリケーション アーキテクチャ」を参照してください。

組み合わせキー
Magic は、全てのファンクションキー（F1 〜 F12）に対する組み合わせキーをサポートしています。サポートされる組み合わせは。
Ctrl + Fn、Alt + Fn、Shift + Fn です。
組み合わせキーは、以下で使用できます。
• ［キーボード割付］テーブル• システムハンドラ• ユーザイベントのトリガ• KBD リテラル
• ショートカット

Magic のワークスぺース
Magic Ver.9 には、ダイナミックに表示される開発用リポジトリと、以下のような［ナビゲータ］、［特性シート］、［コメント］、［ワークスペース］の各ペインがあります。

6

リファレンス
Magic eDeveloper V9 Plus

Magic のワークスぺース
Magic は、Microsoft Windows 98/2000/Xp と互換性のあるグラフィカルユーザインタ
フェースを使用しています。

図 1-1 ［ナビゲータ］ペインと［ワークスペース］ペイン［ナビゲータ］ペインと［ワークスペース］ペイン［ナビゲータ］ペイン［ナビゲータ］ペインは MDI（Multiple Document Interface）画面で、これを使用してアプ
リケーションを操作することができます。
［ワークスペース / ナビゲータ］をクリックし、［ナビゲータ］ペインを開閉できます。開発モードから実行モードに切り替えた場合やプログラムを起動した場合は、［ナビゲー
タ］ペインは自動的に閉じます。
［ワークスペース / ペインの切替］をクリックして、［ナ
ビゲータ］ペインからカーソルを移動します。
［ナビゲータ］ペインには、以下の 4 つのセクションが表示されます。
• リポジトリ……アプリケーションのメインリポジトリを表示します。
• タスク……選択したプログラムのタスクを表示します。
• クロスリファレンス……現行クロスリファレンス検索の結果のリストを表示します。
• ブックマーク……アプリケーション内にブックマークがあるオブジェクトを表示します。
• MVCS……チーム開発が有効な、アプリケーションのみ表示されます。ログインユー
ザがチェックアウトしたオブジェクトを表示します。

［ワークスペース］ペイン［ワークスペース］ペインは MDI 画面で、これを使用すると、Magic アプリケーションのリポジトリ、特性シートおよびフォームのデータと設定を表示することができます。
Ctrl + Tab であるウィンドウから別のウィンドウへフォーカスを変更することができます。

リファレンス
Magic eDeveloper V9 Plus7

第 1 章 - 導入とインタフェース

MDI クライアントの縁の表示
MDI（Multiple Document Interface）クライアントは、ウィンドウの境界を立体表示させたり、平面表示されたりすることができます。Magic のフォームが MDI に合わせて表示されており、立体表示のコントロールがフォームの境界に密着して配置されているようなフォームを作成した場合、クライアントの縁のスタイルによっては、境界線が過剰に表示されているように見えることがあります。このような時は、動作環境の設定内容によって、クライアントの縁の表示内容を切り替えることができます。
この設定は、Magic.ini ファイルにある［MAGIC_ENV］セクションの 「MDIClientEdge」
パラメータで行ないます。
詳細は、第 2 章「設定」の「［MAGIC_ENV］セクション」の説明を参照してくださ
い。

特性シート
［ワークスペース / 特性シート］をクリックすると、選択したオブジェクト（テーブルカ
ラム、プログラム内のローカルデータ項目、フォーム、ヘルプ画面など）の特定の特性を表示することができます。
［特性シート］のタブは、ショートカットキーで切り換えることができます。
特性シートで値を設定する場合、複数の行をマルチマーキングすることで、同じ特性の値を同時に変更することができます。
特性シートには格子線が表示されます。また、文字列を入力する特性で 広域表示 (F6) を行うことができます。

コメント［編集／コメント］（F10）をクリックすることで、アプリケーションのオブジェクトにコ
メントボックスを割り当てることができます。以下のオブジェクトにコメントを割り当てることができます。
カラム

ヘルプ

［範囲］セクション

コンポーネント

インデックス

権利

SQL コマンド

入出力ファイル

テーブル

イベント

変数項目

タスク

外部キー

モデル

ハンドラ

プログラム

コメントは、［ワークスペース／コメント］（Alt+F10）を クリックすることで、［コメン
ト］ペイントとして表示することもできます。
コメントには、以下のような特徴があります。
• ［コメント］テキストボックスのサイズには、最大 1,000 桁の文字を入力することができます。
• オブジェクトのコメントは、MCF に保存されます。コメントテキストは、MFF には
出力されません。

8

リファレンス
Magic eDeveloper V9 Plus

Magic のワークスぺース

チェック結果
現在のチェッカー結果を表示するためのペインは、［ワークスペース］メニューの［チェック結果］をクリックすると表示されます。
［動作環境］ダイアログの［動作設定］タブにある［開発時の最小チェックレベル］や［メッセージのグループ化］を設定することで、エラーレベルを指定したり、メッセージをどのようにグループ化するかを設定できます。
チェッカー 結果ウィンドウは、Magic の MDI 画面とドッキングしたり、フローティング
表示させたり、特性シートに結合することができます。
詳細は、第 19 章「ユーティリティ」の「プログラムチェックユーティリティ」の説
明を参照してください。

ペインの切り替え
Ctrl + Tab キーを押すことで、［ワークスペース］ペインや［ナビゲータ］ペインなどを切り替えることができます。切り替わる順序は、［ナビゲータ］、［特性シート］、［コメン
ト］、［ワークスペース］ペインです。
ペインが統合されて表示している場合は、前面に表示されている内容によって決まります。

ペインの統合［ナビゲータ］、［特性シート］、［コメント］の各ペインは、［ワークスペース］ペインに統合されたり、分離して表示させるようなことができます。
［ナビゲータ］、［特性シート］および［コメント］の各ペインが統合され、［ワークスペース］ペイント分離して表示している場合、各ペインのタブが表示されます。このタブをクリックすることでペインを指定できます。

図 1-2 統合されたペイン

リファレンス
Magic eDeveloper V9 Plus9

第 1 章 - 導入とインタフェース
また、以下の操作でペインを切り替えることができます。
• Alt+F1 で［ナビゲータ］ペイン• Alt+F2 で［特性シート］ペイン• Alt+F10 で［コメント］ペイン
２つの表示を１つのウィンドウ内にまとめたい場合は、どちらかをドラッグして他方にドロップしてください。２つのオプションタブはウィンドウの下に表示されます。この
タブで、ナビゲータと特性シートを切り替えられます。
これらを分けたい場合は、タイトルをドラッグしてから Ctrl キーを押しながらクリック
してください。
統合されたウィンドウは、Magic のウィンドウの端にくっついて表示されるか、フローティングウィンドウで表示されます。

Magic リポジトリ
リポジトリとは、Magic の基本的な画面のことです。それぞれの Magic リポジトリには識別子があり、スプレッドシートのようなグリッドに分割されています。Magic リポジ
トリの各カラムには名前が付いており、それぞれの行には番号が割当てられています。
リポジトリ内の特定セルでは、リストまたは詳細ウィンドウにズームし、セル内に配置するデータを選択することができます。選択したセル上に挿入点を配置すると、「ズー
ム」という文字がメッセージラインに表示されます。ウィンドウ内に表示できる量を超える情報がリポジトリやリストに含まれている場合は、スクロールバーが提供されるので、マウスを使用してスクロールできます。図 1-3 は、一般的な Magic リポジトリとそれに関連する一覧を示しています。

図 1-3 リポジトリと特性シート

一覧を使用して、リポジトリのセルに入力するデータを選択することができます。一覧のオプション（データ）は、事前に用意されているものもありますが、ユーザがリポジトリのセルにデータを入力した場合は、そのデータがオプションとして一覧に表示されます。この場合のオプションは、さらに別のリポジトリに進みたいときに使います。一覧は、リポジトリのセルをダブルクリックすると表示されます。

10

リファレンス
Magic eDeveloper V9 Plus

Magic のワークスぺース

カーソルの移動
以下にリポジトリ上でカーソルを移動させる場合の操作キーを示します。
移動先

キー

カラムの最初Home

カラムの最後End前のページ

Page Up

次のページ

Page Down

リポジトリまたはダイアログのトップ

Ctrl+Home

リポジトリまたはダイアログの最後

Ctrl+End

行の最後

Alt+ →

行の最初

Alt+ ←

削除キー

カーソルの左にあるテキスト

Backspace

カーソルにあるテキスト

Delete前の値の編集と復元（取り消し）

Alt+Backspace

コマンドオプション
Magic では、カラム編集に加えて行編集も行って、リポジトリの作成や修正ができます。
編集できる行にカーソルを置いた場合には常に、［編集］メニューにアクセスするか Alt+E
キーを押すことによって、使用できる行編集項目を確認することができます。
編集オプション

キー

意味

キャンセル

F2

前の編集をキャンセルします。キャンセルの範囲は、コンテキストによって決まります。キャンセルすると、リポジトリは終了します。

Esc
変更取消

Alt+Backspace

カラムエディタ内にいる間の編集をキャンセルします。

ズーム

F5

カラムに関連するリスト、リポジト
リ、ダイアログを表示して、エントリをコピーするか、サブテーブルかダイアログを編集します。

広域表示

F6

カラム全体を表示します。

先頭画面

Ctrl+F9

開発領域のトップに移動します。開発領域とは、プログラムテーブルか
テーブルリポジトリのことで、これについては後の章で説明します。

行ジャンプ

Ctrl+J

行ジャンプのダイアログボックスに
行番号を指定することでリポジトリ
テーブルの指定した行にカーソルを移動します。
テーブルの行数が多い場合に有効です。

リファレンス
Magic eDeveloper V9 Plus11

第 1 章 - 導入とインタフェース

12

編集オプション

キー

意味

行作成

F4

この行の後に行を追加します。リポ
ジトリの第 1 行の上にカーソルを配置した場合は、最初の行が作成されます。作成された行の下の行には、番号が再度割当てられます。
開発モードでは、テーブル内で最終行の後ろにも行が追加されます。

行削除

F3

この行を削除ます（確認が要求される）。編集された行の下の行には、番号が再度割当てられます。

特性

Ctrl+P

カーソル上のリポジトリ／コント
ロール／フォームに対応する特性
シートを表示します。

コメント

F10

指定したオブジェクトに対するコメントを入力するテキストボックスが表示されます。Alt+F10 を押すこと
で、入力されたコメントを表示する
ペインがオープンします。

テキスト検索リポジトリ内のテキスト検査を実行します。

テキスト置換リポジトリ内のテキスト検査／置換
を実行し。

複写登録

Ctrl+R

対象行のすぐ上にカーソルを配置した状態で、指定した行のエントリを複写ます。その行の下に、番号が再度割当てられます。

移動登録

Ctrl+M

対象行のすぐ上にカーソルを配置した状態で、あるエントリ行から別のエントリ行に行を移動できます。行には番号が再度割当てられます。

上書登録

Ctrl+W

表示される［上書登録］ダイアログ
ボックスに指定した番号の行のコピーで現行エントリを置き換えます。元の行は変更されません。

テーブル位置付

Ctrl+L

Magic が提供するテンプレート行内に指定した検索マスクと一致するエ
ントリがある、最初の行を検索します。ワイルドカードとして * を使用
すると、任意の数の文字を表すことができ、$ か ? をワイルドカードとして使用すると 1 文字を表すことが
できます。

次に位置付

Ctrl+N［次に位置付］内に設定した元のテンプレートを使用して、リポジトリの検索を続けます。検索は、リポジ
トリの最後まで実行されると、最初から実行されます。

次のチェックメッセー
ジ

Ctrl+Y

次のチェックメッセージにジャンプします。チェック結果ウィンドウのメッセージをハイライト表示し、該
当エラーのあるオブジェクトにカーソルが位置付けられます。

切り取り

Ctrl+Del

選択したテキストを切り取ります。

コピー

Ctrl+Ins

選択したテキストがコピーされます。
リファレンス
Magic eDeveloper V9 Plus

Magic のワークスぺース
編集オプション

キー

意味

貼り付け

Shift+Ins

選択したテキストが現在のカーソルの位置に貼り付けられます。

全て選択

Ctrl+A

全てのオブジェクトを選択します。

フォルダ指定Ctrl+F

現在のリポジトリ上のフォルダ一覧
を表示します。ここからフォルダを選択することで指定したフォルダに移動できます。

カラムとインデックスの内部番号（ISN）
テーブルリポジトリ上でテーブルの上書き操作を行う際、拡張上書き機能を使用することで、上書きされるテーブルのカラムとインデックスの ISN（内部番号）をどのように扱うかを指定することができます。
上書き確認ダイアログで［>>］ボタンをクリックすると以下のような設定欄が表示されます。

図 1-4 ［拡張上書き確認］ダイアログ

ISN を保持するテーブル
上書きされるテーブルか上書きするテーブルかを選択できます。
• R= 上書きされるテーブル……上書きされるテーブルの ISN を保持します。この場
合、このテーブルのカラムやインデックスを定義しているプログラムにおいて定義内容が変更されることはありません。
ただし、上書きするテーブルとカラム数やインデックス数が異なる場合、後述する［カラムとインデックスの照合方法］欄を正しく指定する必要があります。
• W= 上書きするテーブル……カラムとインデックスの ISN は、上書きするテーブルの値で再設定されます。
同じアプリケーションの中で、このテーブルを使用しているプログラムがなく、上書するテーブルのカラムやインデックスを使用しているプログラムをリポジトリ入力す
る場合はこちらを選択してください。

カラムとインデックスの照合方法
このオプションは、［ISN を保持するテーブル］欄が「R= 上書きされるテーブル」に指定されている場合のみ有効です。
• S= 並び順……上書きされるテーブルのカラム番号やインデックス番号に対応した
ISN を保持します。
このオプションは、カラム（及びインデックス）の構成が同じか、上書きするテーブ
ルのカラム（及びインデックス）が最後に追加されている場合に指定してください。
リファレンス
Magic eDeveloper V9 Plus13

第 1 章 - 導入とインタフェース

図 1-5 ［並び順］指定の時の動作• D= カラム名とインデックス名 ……上書きされるテーブルのカラム名（及びインデッ
クス名）に対応する ISN が保持されます。
このオプションは、上書きするテーブルの新しいカラムが途中行に追加されている場合に指定してください。

図 1-6 ［カラム名とインデックス名］指定の時の動作• DB 名……上書きされるテーブルの DB カラム名（及び DB インデックス名）に対応する ISN が保持されます。SQL 系のデータベースのテーブルでのみ有効です。
このオプションは、上書きするテーブルの新しいカラムが途中行に追加されている場合に指定してください。

14

リファレンス
Magic eDeveloper V9 Plus

Magic のワークスぺース

図 1-7 ［DB 名］指定の時の動作

フォルダ
フォルダは、［ナビゲータ］ペインの［リポジトリ］セクションに、リポジトリの下に表示されます。それぞれのフォルダは、関連リポジトリオブジェクトのグループを表します。また、Ctrl+F キーを押すことによりフォルダ一覧よりフォルダを選択することもできます。

図 1-8 プログラムリポジトリのフォルダツリー

フォルダツリーでは次のことを実行することができます。
• フォルダツリーの展開や縮小• フォルダ名の表示• フォルダ内のオブジェクト数の表示• フォルダから保存されたオブジェクトへのズーム
フォルダは、リポジトリ内のエントリを編成できるようにするオブジェクトです。前バー
ジョンでは、リポジトリエントリは、入力された順序で表示されていました。フォルダを使用し、リポジトリ内のエントリを範囲ごとにまとめることができます。たとえば、あるフォルダにはテーブル 10 から 13、別のフォルダにはテーブル 14 から 27 を格納することができます。
それぞれのリポジトリには多数のフォルダを含めることができます。それぞれのフォル
ダは、リポジトリ内のエントリは一定範囲において連続している必要があります。ユー
ザがあるフォルダから別のフォルダにエントリをドラッグアンドドロップすると、Magic
はそのエントリに自動的に番号を割当て直し、一覧表示されるエントリを分断なく連続したものにします。
エントリをフォルダに保存する必要はありません。それぞれのエントリはエントリ一覧の最上位に表示され、リポジトリ全体を展開すると表示されます。
リファレンス
Magic eDeveloper V9 Plus15

第 1 章 - 導入とインタフェース

図 1-9 プログラムリポジトリのフォルダカテゴリ別に表示されるプログラム

アプリケーションのリポジトリは、［ナビゲータ］ペインの［リポジトリ］セクションに表示されます。次のリポジトリにユーザ定義フォルダを作成することができます。
• テーブル• プログラム
• ヘルプ
• 権利
• モデル
• コンポーネント
上に示した各リポジトリでは、［フォルダ］カラムを使用して、オブジェクトを配置する
フォルダを指定することができます。
フォルダには次のような特徴があります。
• ［ナビゲータ］ペイン内でフォルダ上にカーソルを置くと、フォルダの作成（F4）、削除（F3）、または名前変更ができます。Magic では、重複するフォルダ名を使用できません。
• ［フォルダ］カラム内に表示されるフォルダ名をクリックすると、あるフォルダから別のフォルダにオブジェクト項目を移動できます。必要なフォルダをリストボックスか
ら選択してください。
• ユーザ定義フォルダ内で ［位置付］ダイアログを開くと、プログラムの名前、フォルダ、公開プログラム名などを入力するよう求めるメッセージが表示されます。
• 別のフォルダのエントリにアクセスしても、Magic は現行フォルダに残ります。
• テーブルリポジトリからプログラムを生成する場合は、フォルダ特性を使用すると、プログラムが配置されたフォルダを指定できます。
• リポジトリの中で、オプション・メニューのフォルダオプションをクリックするか、
Ctrl+F を押下し、ジャンプしたいフォルダを選択することによって、簡単に異なるフォ
ルダへジャンプすることができます。
• 開発時にリポジトリに戻るとき、最後にリポジトリがオープンしていた時のカーソルがあるフォルダに、自動的にパークします。

ブックマーク［ナビゲータ］ペインの［ブックマーク］セクションには、ブックマークを含むオブジェ
クトが表示されます。図 1-10 にその様子を示します。
［オプション］メニューの［ブックマークオブジェクト］をクリックすると、オブジェク
トにブックマークを定義することができます。

16

リファレンス
Magic eDeveloper V9 Plus

Magic のワークスぺース

図 1-10 アプリケーションのブックマーク

ブックマークには次のような特徴があります。
• ブックマークエントリは作成した順序で表示されます。
• ブックマークのあるオブジェクトを選択すると、リストの最上位にエントリが移動します。
• ブックマークは ［ブックマーク］ペインで削除できます。
• ［動作環境］ダイアログの ［動作設定］タブにある［ブックマークの最大登録数］環境
特性で、保存するブックマーク数を制限できます。

タスク
タスク処理レベルテーブル内にいる場合、［ナビゲータ］ペインの［タスク］セクションには、選択したプログラムのタスク一覧が表示されます。

ワークグループ開発（MVCS）［CTL 特性］で［チーム開発を有効にします］のオプションを「On」にすると、［ナビゲータ］ペインに、［MVCS］セクションが表示されます。ここには、ログインユーザがチェックアウトしたオブジェクトの一覧が表示されます。
チェックアウトされたオブジェクトの一覧は以下のような特徴があります。
• 表示されているオブジェクト名をクリックすることで、そのオブジェクトにジャンプすることができます。
• ［MVCS］セクション上でオブジェクトをチェックインすることができます。

クロスリファレンス
［ナビゲータ］ペインには［クロスリファレンス］セクションがあり、これを使用すると、クロスリファレンス結果の複数のセットを表示することができます。各一覧には、
クロスリファレンス検索中に見つかったすべてのオブジェクトが表示されます。図 1-10にその様子を示します。

図 1-11 クロスリファレンス検索の結果

クロスリファレンス結果には、［クロスリファレンス検索］ボックス内で選択したオブジェクト（テーブル、プログラム、ヘルプ画面など）が表示されます。
リファレンス
Magic eDeveloper V9 Plus17

第 1 章 - 導入とインタフェース
結果エントリをクリックすると、対応するリポジトリを［ワークスペース］ペイン内に表示し、選択したエントリ上に留まることができます。
クロスリファレンスには次のような特徴があります。
• クロスリファレンスは、［ナビゲータ］ペインの ［クロスリファレンス］セクションで削除できます。
• ［クロスリファレンス］セクションには、複数の結果セットを保存できます。
クロスリファレンスについては、第 19 章「ユーティリティ」の「クロスリファレンス
ユーティリティ」の説明を参照してください。

検索と置換
開発モードでは、指定したオブジェクトを使用しているオブジェクトを検索し、同じタイプの別のオブジェクトに置き換えることができます。
オブジェクトにカーソルを置き、［オプション／検索と置換］をクリックすることで、［検索と置換］ダイアログがオープンされます。

図 1-12 ［検索と置換］ダイアログ

18

リファレンス
Magic eDeveloper V9 Plus

2

設定

Magic で使われる特性パラメータには、あらかじめデフォルト値が設定されていますが、この値は変更することができます。この変更により、開発環境や実行環境の動作仕様が変化します。デフォルト値は、通常［設定］メニューから各設定リポジトリを開いて変更しますが、コンフィギュレーションファイルを直接編集して変更することもできます。
またコンフィギュレーションファイルの名前自体も、［動作環境］ダイアログの設定欄を使用して変更できます。
Magic では、コンフィギュレーションファイルがいくつか使われており、これらのファ
イルによって Magic のインタフェース仕様や動作仕様が定義されます。コンフィギュ
レーションファイルに格納されている値には、固定の定数と、ユーザが変更可能なものがあります。コンフィギュレーションファイルの代表的なものとしては、MAGIC.INI があります。この MAGIC.INI ファイルには、他のコンフィギュレーションファイルを指す
ポインタが保存されています。MAGIC.INI ファイルを初めとするコンフィギュレーショ
ンファイルの説明は、本章の「MAGIC.INI ファイル」の節以降にあります。
Magic のインタフェースや動作は、上記のようにコンフィギュレーションファイルの内容で基本的に決まりますが、それ以外の方法として、起動時にコマンドラインで特に指定することで動的に変更することもできます。つまり、コマンドラインで指定した値は、MAGIC.INI ファイルの対応パラメータを上書きするように機能することになります。
MAGIC.INI ファイルのパラメータとコマンドラインによるパラメータの関係は、本章の「コマンドラインオプション」の節で詳しく解説しています。
本章では、次の内容について説明します。
• ［設定］メニュー• アプリケーションの新規作成• 設定／アプリケーション• 設定／動作環境• 設定／基本色• 設定／フォント• 設定／キーボード割付• 設定／サーバ• 設定／サービス• 設定／ビジュアル接続• 設定／通信ゲートウェイ• 設定／ DBMS
• 設定／データベース• 設定／論理名• 設定／言語• 設定／プリンタ• 設定／ HTML スタイル
• 設定／プリンタ属性• 設定／チェックメッセージ• 設定／シークレット名• 設定／ユーザグループ• 設定／ユーザ ID• 設定／ログオン• MAGIC.INI ファイル
• コマンドラインオプション• その他の重要なパラメータ
リファレンス
Magic eDeveloper V9 Plus19

第 2 章 - 設定

［設定］メニュー［設定］メニューから、以下のようなテーブルにアクセスできます。
テーブル

関連する内容アプリケーション［アプリケーション］テーブルの編集

動作環境［動作環境］ダイアログの設定

基本色［基本色定義］テーブルの編集

フォント［フォント定義］テーブルの編集

キーボード割付［キーボード割付］テーブルの編集

サーバ［サーバ］テーブルの編集（C/S 構築時）

サービス

［サービス］テーブルの編集

ビジュアル接続サービスとサーバとの接続状態の表示／変更

通信ゲートウェイ［通信ゲートウェイ］テーブルの編集

DBMS［DBMS ］テーブルの編集

データベース［データベース］テーブルの編集

論理名［論理名］テーブルの編集

言語［言語］テーブルの編集

プリンタ［プリンタ］テーブルの編集

HTML スタイル［HTML スタイル］テーブルの編集

プリンタ属性［プリンタ属性］テーブルの編集

チェックメッセージ［チェックメッセージ］テーブルの編集

シークレット名［シークレット名］テーブルの編集

ユーザグループ［ユーザグループ］テーブルの編集

ユーザ ID［ユーザ ID ］テーブルの編集

ログオン（ダイアログ）

ユーザ ID 、パスワード、日付の入力をするダイアログの表示

上記のテーブルの中には、アプリケーションが閉じているときにのみ有効なものがあります。また、ユーザがスーパーバイザとしてログオンしているときにだけ操作できるものとして、シークレット名とユーザグループ，ユーザ ID があります。

20

リファレンス
Magic eDeveloper V9 Plus

アプリケーションの新規作成

アプリケーションの新規作成［ファイル］メニューから、［新規作成］をクリックすることで、新規に Magic アプリケー
ションを作成することができます。図 2-1 のような［新規アプリケーション］ダイアロ
グを開きます。

図 2-1 新規アプリケーション］ダイアログ［新規アプリケーション］ダイアログの設定項目は以下の通りです。
• アプリケーションタイプ……作成したいアプリケーションのタイプを選択します。
•

E= 空のアプリケーション……新規アプリケーションをアプリケーションテーブ
ルに登録します。

•

X=XML コンポーネント……新規アプリケーションを作成し、自動的に XCG（XML コンポーネントジェネレータ）を実行します。

•

J=JAVA コンポーネント……新規アプリケーションを作成し、自動的に JCG（Javaコンポーネントジェネレータ）を実行します。

• アプリケーション名……アプリケーション名を 30 桁以内で指定します。
• アプリケーションデータベース……現在の［データベース］一覧からデータベースを選択することができます。デフォルトは、［Default Database］です。Memory データ
ベースは一覧には表示されません。［Default database］が Memory Table の場合、この欄にパークできません。
• テーブル名……アプリケーションが保存されるテーブル名（ファイル名）を指定します。デフォルトは、アプリケーションデータベースが ISAM 系の場合「アプリケー
ション名 _CTL.MCF」、SQL 系の場合、「アプリケーション名 _CTL」です。ISAM 系の場合、参照ボタンをクリックすることで「フォルダの参照」ダイアログボックスを開き、保存するフォルダを指定できます。
• 起動時に初期ヘルプを表示……チェックボックスが選択されている場合、そのアプリ
ケーションの作成後に、ヘルプが表示されます。
［OK］をクリックするとアプリケーションがアプリケーションテーブルに追加されたり、XCG から XML コンポーネントをオープンすることができるようになります。
作成されたアプリケーションは、［設定］メニューの［アプリケーション］をクリックすることでオープンすることができます。これを元に具体的なロジックを定義していきます。

リファレンス
Magic eDeveloper V9 Plus21

第 2 章 - 設定

設定／アプリケーション［アプリケーション］テーブルには、アプリケーションの一覧が表示されます。このテーブルにより、開発モードおよび実行モードで使用するアプリケーションを管理します。
新しいアプリケーションを開発するときは、まず最初に、［アプリケーション］テーブルに必要事項を定義します。

図 2-2［アプリケーション］テーブル

したがって、［アプリケーション］テーブルには、既存のアプリケーションの定義内容と、新規に定義するアプリケーションの内容が表示されます。
アプリケーションの定義情報は、MAGIC.INI ファイルの［MAGIC_SYSTEMS］セクショ
ンに記録されます。

［アプリケーション］テーブルの設定欄#
この欄には自動的に連番が入ります。この連番を変更することはできません。

名前
アプリケーションの名前を入力します。この名前は、アプリケーションの開発または実行の際、ステータス行に表示されます。
アプリケーションの名前は、重複がないように注意してください。同じ名前を入力することはできますが、開発や保守、実行の際に混乱が生じることになります。
コンマは、MAGIC.INI ファイルの区切り文字として予約されています。このため、アプリケーションの名前にはコンマは使えません。

識別子
アプリケーションの識別子として使う 2 文字の半角英数字を指定します。。アプリケー
ションに関連するファイルの名前は、ここで指定した識別子をもとに作成されます。この識別子が使われるファイルとしては、Magic アプリケーションファイル（CTL.MCF ）やデータファイル（nnn.DAT ）があります。たとえば、次のようになります。
識別子

22

作成されるファイル名

ファイルの内容

リファレンス
Magic eDeveloper V9 Plus

設定／アプリケーション
pp

ppCTL.MCF

すべてのアプリケーション定義を載せる Magic
アプリケーションファイル

pp

ppFIL001.DAT［テーブル］リポジトリに置かれる最初のデー
タファイル［識別子］の欄には、すべてのアプリケーションファイルが置かれるデフォルトの場所（たとえば、（サーバ）パスの形式）を指定することもできます。この場所を指定しなかったときには、アプリケーションファイルはすべて、カレントフォルダに置かれていると判断され、ここからファイルが開かれることになります。
デフォルトの場所の指定方法は、たとえば次のようになります。
識別子の記述デフォルトの場所

pp

カレントディレクトリC:¥APPL¥pp

Windows マシンのドライブ C のディレクトリ APPL

アプリケーションに関するすべてのファイルの格納場所は、上記のように［識別子］の欄で指定できますが、Magic アプリケーションファイル（ppCTL.MCF ）の格納場所を特に指定することもできます。この指定は、［CTL ファイル］の欄で行ないます（下記を参照）。また、［テーブル］リポジトリのデータファイルのデフォルト名についても、個々のファイルについて個別に指定することもできます。

CTL ファイル（アプリケーションファイル）
この欄には、アプリケーションの実際のファイル名と格納場所を指定します。ここにファイル名と場所を指定した場合、アプリケーションのデフォルト名（ppCTL.MCF ）ではな
く、指定した名前と場所が使われます。このアプリケーションファイルには、リポジト
リを含め、そのアプリケーションに関連する要素のすべてが格納されます。それぞれのアプリケーションには固有のアプリケーションファイルが存在します。この欄を空白にしたときは、アプリケーションファイルの名前は ppCTL.MCF （デフォルト名）となります。ここで、pp は、［識別子］の欄で入力した 2 文字のコードを示しています。［CTLファイル］に、名前のほか場所を指定する場合、以下のような書式を使います。
パス名 ¥CTL ファイル名• パス名……ディレクトリで、ここにアプリケーションファイルが置かれます。
この［CTL ファイル］の欄でズームすると Windows の「ファイルを開く」ダイアログが表示されます。

データベース
この欄には、アプリケーションのテーブルを格納する物理データベースへのアクセスに必要となる情報を定義します。この欄では［動作環境］ダイアログの［デフォルトデー
タベース］欄で指定されているデータベース名をデフォルトとして使います。データベー
スを特に指定したい場合、データベース欄からズームすると［データベース一覧］が開き、ここにアプリケーションで使用できる DBMS のデータベースがすべて表示されます
ので、その中からデータベースを選択します。この欄に［Unknown ］と表示されているときには、所定のデータベースゲートウェイモジュールが読み込まれていないことを示しています。この状態でアプリケーションを開こうとした場合、処理に失敗します。
データベースについては、本章後述の「設定／データベース」を参照してください。

Magic では、物理データベースのほか DBMS 特性も指定しなければなりません。この DBMS の指定により、対応するデータベースゲートウェイに対して接続が行われるようになります。データベースゲートウェイを介して、テーブル定義に必要な情報がすべて対象となる DBMS に渡されます。データベース特性の指定では、実行時の物理データベースに対するアクセス情報を認識します。
リファレンス
Magic eDeveloper V9 Plus23

第 2 章 - 設定

アプリケーション特性［アプリケーション特性］ダイアログでは、フラットファイルで実行、圧縮、MVCS 無効、およびアクセスキーの４つの特性を定義します。
［アプリケーション特性］ダイアログを表示するには、アプリケーション名を選択した
後、コンテキストメニューで［特性］を選択します。コンテキストメニューを表示する
ためには、マウスの右ボタンをクリックします。
以下のパラメータの説明で、チェックボックスによる指定を行なう場合があります。その場合、チェックされた状態が、「Yes」を意味します。

フラットファイルで実行［フラットファイルで実行］特性のチェックボックスを選択状態にすることで、データベースに依存しないバイナリファイルとしてアプリケーションファイルを保存し、実行できるようになります。このフラットアプリケーションファイルは開発モードではオー
プンできないため、実行モードでのみ使用します。また、このときには MAGIC.INI ファ
イルの内容が修正され、実行時にそのアプリケーション情報はすべて MFF（Magic Flat
File）ファイルから読み込まれるようになります。

圧縮
CTL ファイルの圧縮を行うかどうかを指定します。チェックボックスを選択状態にしておくと、CTL ファイルのサイズが大幅に小さくなります。このため、ハードディスクの容量が節約できます。この圧縮は、アプリケーションの開発を始める段階で指定しておかなければなりません（圧縮指定は、新規に CTL ファイルを作成するときのみ有効で、
既存の CTL ファイルを後から圧縮することはできません）。なお、圧縮すると、解凍処理のためにアプリケーションの性能が低下する場合があります。したがって、この機能は、特にディスクスペースを節約する必要がある場合に限って使用するようにしてくだ
さい。

MVCS 無効MVCS コマンドの有効、無効を切り替えることができます。アプリケーションのチーム
開発に関するパラメータです。MVCS 機能に障害が発生して CTL ファイルがオープンできなくなった場合に指定します。
チェックボックスを選択状態にすると Magic アプリケーションのチーム開発はできなくなります。

アクセスキー
このアクセスキーは、いわばアプリケーションのパスワードで、Magic のアプリケーショ
ンファイル（CTL ファイル）にアクセスが実行される度に使われます。アクセスの際には、アクセスキーの内容が使用するデータベースシステムのセキュリティメカニズムに渡され、ファイルのセキュリティが管理されます。アプリケーションファイルにアクセ
スキーを指定した場合、そのファイルに対して外部プログラムや他の Magic から更新ア
クセスを実行しようとするときには、そのプログラムや Magic が、同じアクセスキーを提示することが必要になります。ファイルへのアクセス時、外部プログラムから同一ア
クセスキーが提示されない場合、アプリケーションファイルに対するアクセスは拒否されます。アクセスキーは、アプリケーションファイルを暗号化するときの暗号化キーとしても使われます。
アプリケーションファイルの編集を終了するとき、Magic はアクセスキーが変更されていないかどうかのチェックを行います。アクセスキーの変更が検出されたときには、その変更の確認が求められます。ユーザがアクセスキーの変更を確認すると、新しいアクセスキーの値を使用して、すぐにアプリケーションファイルの暗号化が実行されます。

24

なお、データベースでアクセスキー機能がサポートされていない場合、アクセスキーは使用できません。
リファレンス
Magic eDeveloper V9 Plus

設定／アプリケーション［アプリケーション］テーブルの設定内容は MAGIC.INI ファイルに格納されますが、このファイルはセキュリティ機能がありません。このため、アクセスキーにはシークレッ
ト名を使用してください。シークレット名を使うことで、アクセスキーの漏洩を防ぐことができます。
シークレット名については、第 13 章「使用権利」の「シークレット名テーブル」を参照してください。

ブラウザクライアントのタスクキャッシュ
ブラウザクライアントのタスクキャッシュは、サーバとクライアントの間のデータ転送量を最小限にし、クライアント側の XML ページの論理的なセグメントをキャッシュすることでブラウザクライアントアプリケーションのパフォーマンスを向上させます。
全てのブラウザクライアントタスクは、エンジンがタスクのロジックを記述する XML
ファイルを作成します。タスクの結果ページはタスクロジック XML ファイルへのリンクを含んでいます。
アプリケーションが修正されない限り、各タスクの XML ファイルは同じ名前で残ります。このように最初に実行された時の各タスクのロジックが、エンドユーザのブラウザにキャッシュされます。ブラウザクライアントアプリケーションが連続して実行する場
合、各タスクの論理セグメントは、ブラウザのローカルキャッシュから取得されます。

キャッシュされるファイルのレビジョン
コンポーネントを含む、配置されたアプリケーションのどのような変更も、タスクの論
理セグメントの変更になります。各タスクの論理セグメントの XML 名は、エンドユーザのブラウザが、修正されたアプリケーションの新しい論理セグメントをロードすることができるように、すでにキャッシュされたファイルと区別できるように変更しなければなりません。
各XMLファイルの名前を構成する要素の１つとしてアプリケーションのレビジョンがあります。アプリケーションのレビジョンは、アプリケーションの環境設定の一部で、［ア
プリケーション特性］ダイアログで指定することができます。
配置されたアプリケーションの一部やコンポーネントが変更された場合、レビジョンの設定を変更する必要があります。レビジョンを変更しない場合、論理セグメントの不整合が発生する場合があります。
開発時は、修正のたびにレビジョンを変更する必要はありません。開発時は、実行のたびに新しい名前でファイルを作成します。

ブラウザクライアントのキャッシュパスとエイリアス
各タスクの論理セグメントを保持している XML ファイルは、［動作環境］ダイアログの［アプリケーションサーバ］タブの［ブラウザクライアントのキャッシュパス］で指定されたパスに作成されます。
このパスに対応するエイリアスを使用する HTTP サーバ上に設定し、Magic の［動作環境］ダイアログにも指定してください。この指定のデフォルト値は、Magic のインストー
ラで自動的に設定されます。

CTL 特性CTL 特性の設定は、アプリケーションを開き、［ファイル／ CTL 特性］を選択して［CTL
特性］ダイアログから指定します。
これらの特性は、Magic のアプリケーションファイルに保存され、［動作環境］ダイアロ
グで指定された内容より優先されます。
リファレンス
Magic eDeveloper V9 Plus25

第 2 章 - 設定

図 2-3 ［CTL 特性］ダイアログ［スタートアップ］タブ
開始モード
アプリケーションの開始モードを指定します。この設定は、［動作環境］ダイアログのデ
フォルトの開始モードより優先されます。
［動作環境］ダイアログの［開始モード］欄では、アプリケーションの起動時のデフォルトの開始モードを指定できますが、［CTL 特性］ダイアログの［開始モード］欄を使うことで、デフォルトの開始モードとは異なる
開始モードをアプリケーションに設定できます。
この欄をクリックするとコンボボックスが開きますので、ここで「N ＝なし」、「R ＝実行」、「T ＝開発」のいずれかを指定します。デフォルト値は「N ＝なし」です。
［開始モード］欄が「R= 実行モード」に設定されている場合、メインプログラムのタスク前処理において無限ループするようなプログラムをコールする設定をしてしまうと、開発版において CTL を開こうとしても開けなくなることがあります。
このような現象を防ぐため、CTL 特性の開始モード欄は「N= なし」に設定して、［Magic の設定／動作環境／システムのアプリケーション起動モード］欄を「R= 実行
モード」に設定することをお勧めします。

NULL 計算
Magic は NULL 値をサポートしていますが、この欄は NULL 値の扱いに関するものです。
SQL など、データベースによってはパラメータに NULL 値を渡すことができます。この
設定では、NULL 値が含む式がどのように計算するかを指定できます。
• N=Null にする……この設定にしておくと、計算結果も NULL になります。
• D= デフォルト……結果は、カラム特性の［NULL 計算値］の値を元に計算されます。
［NULL 計算値］は、モデルリポジトリの各項目モデルでも指定できます。
アプリケーションのデフォルトは、［モデル］および［カラム］レベルで上書きできます。

基準通貨 :（Euro）［基準通貨］テーブルをダブルクリックして［通貨一覧］を表示します。この一覧には、［通貨］テーブルに入力されているすべての通貨が表示されます。
［基準通貨］のデフォ
ルトは「EURO」です。

26

リファレンス
Magic eDeveloper V9 Plus

設定／アプリケーション

図 2-4 通貨一覧

［ワークグループ開発］タブ
チーム開発を有効にします
このチェックボックスをオンにすると、［チーム開発］特性が有効になり、同じアプリ
ケーションで複数の開発者が同時に作業できるようになります。

MVCS スナップショットファイル
オブジェクト（アプリケーション操作に使う基本コンポーネント）に加えた変更を保存する一時ファイルを指定します。オブジェクトは、変更が終わった場合チェックインすることで、CTL ファイルに反映されます。この一時ファイルは、チーム開発を行う場合に有効です。この欄でズームすることでファイルを選択できます。指定しない場合は、
デフォルト値として、” アプリケーション識別子 ”+”SNP.MCF” というファイル名になります。

MVCS ロックファイルパス
この欄に MVCS ロックファイルパスを選択します。なお、ロックは、［チーム開発を有効にします］欄が「チエック」に設定されているときにだけ有効です。
詳細については、第 24 章「ワークグループ開発」を参照してください。

［外部参照ファイル］タブ
プリンタ属性ファイル［動作環境］ダイアログで定義されたものとは別のプリンタ属性ファイルを定義する場合に指定します。この欄は、マルチアプリケーション環境で、アプリケーションごとに論
理プリンタ属性ファイルを作成したいときに使います。
プリンタ属性ファイルについては、第 10 章「出力フォーム」の［プリンタ属性ファイル］も参照してください。
リファレンス
Magic eDeveloper V9 Plus27

第 2 章 - 設定

HTML スタイルファイル［動作環境］ダイアログで定義されたものとは別の HTML スタイルファイルを定義する
場合に指定します。変更後の HTML スタイルタグを別のファイルに保存することもできます。この欄は、マルチアプリケーション環境で、アプリケーションごとに HTML スタ
イルファイルを作成したいときに使います。
HTML スタイルファイルについては、［設定／ HTML スタイル］も参照してください。

基本色定義ファイル［動作環境］ダイアログで定義されたものとは別の基本色定義ファイルを定義する場合に指定します。変更後の基本色設定を別のファイルに保存することもできます。この欄は、マルチアプリケーション環境で、アプリケーションごとに基本色定義ファイルを作成したいときに使います。
基本色定義ファイルの詳細については、［設定／基本色］を参照してください。

フォント定義ファイル［動作環境］ダイアログで定義されたものとは別のフォント定義ファイルを定義する場合に指定します。変更後のフォント設定を別のファイルに保存することもできます。この欄は、マルチアプリケーション環境で、アプリケーションごとにフォント定義ファイルを作成したいときに使います。
フォント定義ファイルの詳細については、［設定／フォント］を参照してください。

キーボード割付ファイル
アプリケーションで使用するキーボード割付ファイルを指定できます。ここで指定したキーボード割付ファイルは、［動作環境］ダイアログで指定されているキーボード割付
ファイルより優先されます。なお、新規のキーボード割付ファイルは、キーボード割付
ユーティリティを使って作成できます。キーボード割付ユーティリティでは、既存のキー
ボード割付ファイルの内容を変更し、変更後のキーボード割付ファイルを別の名前で保存できます。
キーボード割付ファイルの詳細については、［設定／キーボード割付］を参照してください。

インターネット開発ファイルルート
インターネット開発用ファイル（HTML ファイルやイメージファイルなど）の場所を指定します。

通貨変換ファイル
通貨変換ファイルは、特定の通貨を基準にした変換レートを管理する外部ファイルです。
この欄でズームすると、ファイルを開くダイアログが表示されますのでファイルを選択
してください。添付されているファイル（Curency.jpn）は、EURO を基準にしています。

［セキュリティ］タブ

28

リファレンス
Magic eDeveloper V9 Plus

設定／アプリケーション

CTL アクセスキー
この［CTL アクセスキー］欄には、CTL アクセスキーが表示されます。なお、［CTL アクセスキー］欄は、このキーのオーナーのみ表示されます。CTL アクセスキーとは、開発アプリケーションにアクセスするためのキーをのことをいい、このキーを定義しておくことで、アプリケーションにアクセスできるユーザが、キーのオーナーに限定されるようになります。そのほかのユーザや開発者は、アプリケーションを開くことができな
くなります。
詳細については、第 13 章「使用権利」を参照してください。

公開権利アクセスキー
この欄には、公開権利アクセスキーが表示されます。この欄は、このキーのオーナのみ表示されます。公開権利アクセスキーは、開発者向けのアクセスキーで、このキーを定義しておくことでアプリケーションのセキュリティを確保できます。通常、「Supervisor」
が、このキーのオーナーになります。この公開権利アクセスキーを用意することで、第三者による不法操作を防止できます。
たとえば、セキュリティファイル（user std.jpn ）にはユーザのパスワードが記録されていますが、このファイルを操作してシステムのパスワード保護メカニズムを破壊し、Supervisor としてログオンするという不法操作を回避できます。この公開権利アクセス
キーがない場合、アプリケーションにどういったキーが割当てられているか知ることはできません。つまり、［ユーザ ID ］テーブルの［権利］欄をズームしても、［権利名］欄の内容を見ることができません。また、［キー］欄をズームして［公開権利一覧］を表示することもできません。
詳細については、第 13 章「使用権利」を参照してください。

スーパー権利キー
この欄には、スーパー権利キーの名前が表示されます。この欄は、このキーのオーナのみ表示されます。
スーパー権利キーの所有者は、開発、実行のいずれでも、アプリケーションのすべての処理に対してすべての権利を持つことになります。したがって、このキーの所有者は、
アプリケーションの各処理について個別の権利を持っている必要はありません。
詳細については、第 13 章「使用権利」を参照してください。

強制 MVCS 設定キー
この欄には、強制 MVCS 設定キーの名前が表示されます。この欄は、このキーのオーナ
のみ表示されます。
強制 MVCS 設定キーの所有者は、ユーザを指定し、そのユーザだけが開発ができるようにするといった操作が可能です。
［強制 MVCS 設定］キーを持っていないユーザは、［ア
プリケーション特性］の［MVCS 無効］欄が［チエック ］に設定されているアプリケー
ションをオープンすることができません。

リモートフローモニタ権利
この欄には、権利リポジトリに登録されている権利を指定します。リモートフローモニ
タからのアクセスを制限することができます。ここからズームしてキーを設定すると、キーの名前が表示されます。
リファレンス
Magic eDeveloper V9 Plus29

第 2 章 - 設定

PPD （Programmable Protection Device）
この機能は、日本語版ではサポートされていません。

設定／動作環境［動作環境］ダイアログでは、グローバルな特性パラメータを設定します。このダイアロ
グの各設定欄は、MAGIC.INI ファイルの［MAGIC_ENV ］セクションに対応しています。
これらの設定欄を使用して、Magic の動作環境をカスタマイズすることができます。
［動作環境］ダイアログで設定欄の値を変更すると、MAGIC.INI ファイルにその内容が登録されます。設定欄の中には、変更がすぐに有効になるものと次回の Magic セッションから有効になるものがあります。
［動作環境］ダイアログの設定欄は、オペレーティングシステムの環境変数とはまっ
たく別のものです。

図 2-5 ［動作環境］ダイアログ

Magic の動作環境は、［動作環境］ダイアログのほか、起動時にコマンドラインを使用して設定することもできます。その場合、バッチファイルを使用して Magic を起動します。
たとえば、コマンドラインを使用して端末環境変数を渡す場合、以下のようなバッチファ
イルを作成します。
mggenw /terminal=%terminal%
Magic の実行可能ファイルから起動するのではなく、このバッチファイルにより Magic を起動します。上記のコマンドラインを使用して Magic を起動した場合、［動作環境］ダイ
アログには、そのコマンドラインで指定した値が設定欄の値として表示されます。これは、コマンドラインの値が、MAGIC.INI ファイルの値より優先されるためです。ただし開発モード時、［動作環境］ダイアログで、コマンドラインで指定した設定欄の値を変更した場合には、その値によって自動的に MAGIC.INI ファイルが更新され、コマンドライ
ンの値より優先されるようになります。
以下、［動作環境］ダイアログの各設定欄について詳しく説明します。
コマンドラインの詳細については、本章の「コマンドラインオプション」の節を参照
してください。
本章の最後に［動作環境］ダイアログの設定欄とそれに対応するコマンドラインで使用する名前の一覧表がありますので、そちらも参考にしてください。

30

リファレンス
Magic eDeveloper V9 Plus

設定／動作環境［動作環境］ダイアログには、以下の 6 つのタブが用意されています。
• システム• マルチユーザ• 動作設定• 国別設定• 外部参照• アプリケーションサーバ
［動作環境］ダイアログでの設定とは別に、デフォルト値や NULL 表示文字列を指定することができます。この設定は、Magic.ini ファイルの［MAGIC_DEFAULT］セクションでのみ設定できます。詳細は、65 ページを参照してください。
以下の表記で、各パラメータ名の右のカッコ内はデフォルトの設定値です。

［システム］タブ
オーナ名：（Magic Software Japan K.K.）
Magic アプリケーションのオーナの名前として 30 バイト 以内で指定します。この名前は、Owner 関数を使用して取得し、フォームやレポートに出力できます。
変更の反映 : 即時有効
MAGIC.INI とコマンドラインでの名前： Owner

システムログオン：（N= なし）
この設定は、Magic のユーザアカウントを OS に合わせるかどうかを指定します。
この設定の選択肢は以下の通りです。
• N= なし……ユーザ名としてのデフォルト値を使用しないで、［パスワード入力］の設定に従って、自動的／明示的にログオンダイアログをオープンします。
• U= ユーザ名……OS にログオンしたユーザ名をもとに、［パスワード入力］の設定に従って、自動的／明示的にログオンダイアログをオープンします。Magic は、ユーザ定義ファイル（usr_std.jpn）を元にユーザの認証を行います。ユーザ名とパスワード
は、30 桁まで指定できます。
• D=Active ディレクトリ……Windows にログオンした時の Active ディレクトリに定義されたユーザ情報をもとに、Magic はユーザ認証を行います。この指定にすることで、Magic のシステム管理者がユーザ管理を行う必要がなくなります。
この設定を行うとログオンダイアログをオープンすることはできません。
• L=LDAP ……ログインダイアログで入力されたユーザ ID とパスワードを元に LDAP
サーバに対して認証処理を行います。
この認証方法を指定した場合、［外部参照］タブの「LDAP アドレス : ポート番号」、「LDAP 接続文字列」、「LDAP ドメインコンテキスト」の指定も必要になります。
Active ディレクトリ による認証設定については、第 13 章「使用権利」の「Active
ディレクトリによる認証方法」の説明を参照してください。
LDAP による認証設定については、第 13 章「使用権利」の「LDAP サーバによる認証方法」を参照してください。
Magic のユーザ定義ファイルのパスワードと OS のパスワードに整合性が取られることはありません。
パスワードはユーザ毎にユニークに指定するようにしてください。
リファレンス
Magic eDeveloper V9 Plus31

第 2 章 - 設定
変更の反映 : 次のセッションから
MAGIC.INI とコマンドラインでの名前：SystemLogin

Magic 日付：（システム日付）
Magic は、2 種類の日付が使用できます。１つはオペレーティングシステムの日付で、「シ
ステム日付」と呼びます。もう１つはユーザが設定した日付です。この日付は Magic に保存され、「Magic 日付」と呼びます。デフォルトでは、Magic 日付とシステム日付は同じです。Magic 日付は、MDate 関数を使用して取得できます。この欄の値は、［ログオン］
ダイアログで入力することができます。
場合によってはプログラムで過去または未来の日付を使いたいこともありますが、そういったときに Magic 日付を使います。Magic 日付を設定した場合、その値は MAGIC.INI
ファイルに記録されます。
変更の反映 : 即時有効
MAGIC.INI とコマンドラインでの名前：DATE

ユーザ ID ：（指定なし）［ユーザ ID］の設定では、現在の Magic オペレータのユーザ ID が保持されます。この IDは、オペレータのパスワードとともにオペレータのアクセスの権利とアプリケーション
内の権限を確認するために使用されます。［ユーザ ID］の設定値は、User 関数を使用してアプリケーション内で照会することができます。通常はログオン時、［ログオン］ダイ
アログから入力します。個別のユーザ ID を登録するためには、デフォルトで存在する
スーパバイザ ID（supervisor）によるログオンを行い、［ユーザ ID］テーブルに登録することで行います。インストール直後、supervisor のパスワードは設定されていません。ユー
ザ ID に対応する MAGIC.INI の情報はありません。

パスワード入力：（No）
有効な値 : Yes, No• Yes……ログオン時に［ログオン］ダイアログボックスでユーザ ID とパスワードの入力が要求されます。
• No……ログオン時に［ログオン］ダイアログボックスでユーザ ID とパスワードの入力を要求するメッセージは表示されません。
変更の反映 : 次のセッション
MAGIC.INI とコマンドラインでの名前 : InputPassword

日付入力：（No）
有効な値 : Yes, No• Yes……ログオン時に［ログオン］ダイアログボックスで日付の入力が要求されます。
この日付は、前述の Magic 日付です。
• No……ログオン時に［ログオン］ダイアログボックスに日付は表示されません。
変更内容の反映：即時有効
MAGIC.INI およびコマンドライン名：InputDate

デフォルトアプリケーション：（０）［アプリケーション一覧］でアプリケーションを識別する番号を指定します。Magic を起動したときに自動的に実行されるアプリケーションを指定します。Magic の起動時に有効なアプリケーション番号が見つかると、［スタートアップ］画面は表示されず、アプリ
ケーションが開きます。

32

リファレンス
Magic eDeveloper V9 Plus

設定／動作環境変更の反映 : 次のセッション
MAGIC.INI およびコマンドライン名 : StartApplication

アプリケーション起動モード：（T= 開発モード）
有効な値 : T= 開発モード、R= 実行モード、B= バックグラウンド
この設定では、アプリケーションを開いたときに Magic が使用するモードを定義することができます。有効なモードは次のとおりです。
• T= 開発モード……アプリケーションが開発モードで開かれ、アプリケーションの開発作業が可能になります。Magic が実行システムの場合は、この設定は無視されます。
• R= 実行モード……アプリケーションが実行モードで開かれます。この場合、エンド
ユーザアプリケーションとして使用できます。
• B= バックグランド……ユーザによる操作なしでバッチプログラムを実行させる場合、この値にします。実行されるバッチプログラムは、［デフォルトアプリケーション］欄で指定したアプリケーションのメインプログラムになります。このモードでは、ウィンドウは表示されませんが、実際にはプログラムは実行されています。プログラムが終了すると、オペレーティングシステムに戻ります。
変更の反映 :

次回セッションMAGIC.INI およびコマンドライン名 :ApplicationStartup

スクリーンモードプロンプト：（：）
スクリーンモードのフォームでの、項目のプロンプトのデフォルトを設定します。設定
するパラメータ文字列の構文を以下の例に示します。
たとえば、書式が数値型 5 桁である［顧客番号］という変数の場合、このパラメータの設定と、APG などで作成したスクリーンモード画面で表示されるプロンプトは、以下のようになります（ここでは、スペース文字は「^」で示しています）。
パラメータ文字列の先頭がスペース文字の場合は、2 番目の例のように、円記号（¥）を使用して明示的に示す必要があります。
パラメータ文字列

フォームの表示：

顧客番号：#####¥ ＾＝顧客番号＾＝ #####

実際の画面では、##### の部分はエディットコントロールになります。

変更の反映 : 即時有効
MAGIC.INI およびコマンドライン名 : ScreenModePrompt

西暦基準年：（1920）
西暦年を４桁（通常 19XX）で指定します。この西暦年を基準に、日付項目の書式中の 2桁（YY/MM/DD などの YY）で示される年が、20 世紀なのか 21 世紀なのかを判定します。
つまり、入力された日付項目中の年 2 桁の値が、この欄で指定した西暦年の下 2 桁未満の場合は 21 世紀の年であると判定し、それよりも大きい場合は 20 世紀の年であると判定します。
例［西暦基準年］欄に 1960 を指定した場合
59/01/01 は、2059/01/01 と判定されます。
リファレンス
Magic eDeveloper V9 Plus33

第 2 章 - 設定
60/01/01 は、1960/01/01 と判定されます。
70/01/01 は、1970/01/01 と判定されます。
［西暦基準年］欄に 1980 を指定した場合
02/01/01 は、2002/01/01 と判定されます。
70/01/01 は、2070/01/01 と判定されます。
99/01/01 は、1999/01/01 と判定されます。
変更の反映 : 即時有効
MAGIC.INI およびコマンドライン名 : Century

バッチイベント間隔（ミリ秒）： （1000［1 秒］）
バッチタスクの実行中に、Magic エンジンがイベントキューをチェックし、保留イベン
トの有無を確認する時間間隔で、保留イベントがあったときはそれを処理します。この設定は、ミリ秒数で指定します。なお、タスク制御特性でレコードイベント間隔が設定されている場合は、Magic エンジンは所定のレコード処理間隔ごとにも保留イベントの有無を調べます。
変更の反映 : 即時有効
MAGIC.INI およびコマンドライン名 : BatchPaintTime

タスクキャッシュサイズ（KByte）：（0）
タスクキャッシュは、読み込んだタスクをメモリ上に保存するための仕組みです。よく使用するタスクの処理をスピードアップするには、タスクキャッシュを使用することをお勧めします。
動作環境の設定では、キャッシュサイズを KB 単位で指定します。値が「0」（デフォルト値）の場合は、タスクキャッシュが無効であることを示します。
変更の反映 : 即時有効
MAGIC.INI およびコマンドライン名 :TaskCacheSize

修正モードでの登録許可：（Yes）
有効な値 : Yes, No• Yes……カーソルがレコード行の空行に来ると、自動的に修正モードから登録モードに変わります。
• No……修正モードのとき、新しいレコードを作成できません。
変更の反映 : 即時有効
MAGIC.INI およびコマンドライン名 : AllowCreateInModify

照会モードでの修正許可：（NO）
有効な値 : Yes, No• Yes……照会モードのときに、既存レコードを更新できます。
• No……既存レコードを更新できません。
変更の反映 :

即時有効

MAGIC.INI およびコマンドライン名 : AllowUpDateInQuery

照会モード位置付けで確認表示：（Yes）
有効な値 : Yes, No

34

リファレンス
Magic eDeveloper V9 Plus

設定／動作環境• Yes……ISAM および SQL データベースにおいて、実行モードで［インデックス無し
照会位置付け］を実行すると、「インデックスでないカラムに対して位置付けが行われました」というメッセージが表示されます。ISAM データベースでは、レコード数
が 5000 を超える場合に表示されます。
• No……メッセージは表示されません。
変更の反映 :

即時有効

MAGIC.INI およびコマンドライン名：

LocateModeQueryWarning

アプリケーションテーブル表示：（Yes）
有効な値 : Yes, No
アプリケーションテーブルへのアクセスを許可するかどうかを設定します。
変更の反映 : 即時有効
MAGIC.INI およびコマンドライン名 : AccessApplications

動作環境テーブル表示：（Yes）
有効な値 : Yes, No
動作環境テーブルへのアクセスを許可するかどうかを設定します。
変更の反映 : 即時有効
MAGIC.INI およびコマンドライン名 : AccessEnvironment

基本色テーブル表示：（Yes）
有効な値 : Yes, No
基本色テーブルへのアクセスを許可するかどうかを設定します。
変更の反映 : 即時有効
MAGIC.INI およびコマンドライン名 : AccessColors

フォントテーブル表示：（Yes）
有効な値 : Yes, No
フォントテーブルへのアクセスを許可するかどうかを設定します。
変更の反映 : 即時有効
MAGIC.INI およびコマンドライン名 : AccessFonts

キーボード割付テーブル表示：（Yes）
有効な値 :「Yes」または「No」
キーボード割付テーブルへのアクセスを許可するかどうかを設定します。
変更の反映 : 即時有効
MAGIC.INI およびコマンドライン名 : AccessKeyboardMapping

サーバテーブル表示：（Yes）
有効な値 : Yes, No
サーバテーブルへのアクセスを許可するかどうかを設定します。
変更の反映 : 即時有効
MAGIC.INI およびコマンドライン名 : AccessServers
リファレンス
Magic eDeveloper V9 Plus35

第 2 章 - 設定

サービステーブル表示：（Yes）
有効な値 : Yes, No
サービステーブルへのアクセスを許可するかどうかを設定します。
変更の反映 : 即時有効
MAGIC.INI およびコマンドライン名 : AccessServices

ビジュアル接続表示：（Yes）
有効な値 : Yes, No
ビジュアル接続テーブルへのアクセスを許可するかどうかを設定します。
変更の反映 : 即時有効
MAGIC.INI およびコマンドライン名 : AccessVisualConnection

通信ゲートウェイテーブル表示：（Yes）
有効な値 : Yes, No
通信ゲートウェイテーブルへのアクセスを許可するかどうかを設定します。
変更の反映 : 即時有効
MAGIC.INI およびコマンドライン名 : AccessCommunications

DBMS テーブル表示：（Yes）
有効な値 : Yes, No
DBMS テーブルへのアクセスを許可するかどうかを設定します。
変更の反映 : 即時有効
MAGIC.INI およびコマンドライン名 : AccessDBMS

データベーステーブル表示：（Yes）
有効な値 : Yes, No
データベーステーブルへのアクセスを許可するかどうかを設定します。
変更の反映 : 即時有効
MAGIC.INI およびコマンドライン名 : AccessDatabases

論理名テーブル表示：（Yes）
有効な値 : Yes, No
論理名テーブルへのアクセスを許可するかどうかを設定します。
変更の反映 : 即時有効
MAGIC.INI およびコマンドライン名 : AccessLogicalNames

言語テーブル表示：（Yes）
有効な値 : Yes, No
言語テーブルへのアクセスを許可するかどうかを設定します。
変更の反映 : 即時有効
MAGIC.INI およびコマンドライン名 : AccessLanguages

36

リファレンス
Magic eDeveloper V9 Plus

設定／動作環境

プリンタテーブル表示：（Yes）
有効な値 : Yes, No
プリンタテーブルへのアクセスを許可するかどうかを設定します。
変更の反映 : 即時有効
MAGIC.INI およびコマンドライン名 : AccessPrinters

HTML スタイルテーブル表示：（Yes）
有効な値 : Yes, No
HTML スタイルテーブルへのアクセスを許可するかどうかを設定します。
変更の反映 : 即時有効
MAGIC.INI およびコマンドライン名 : AccessHTMLStyles

プリンタ属性テーブル表示：（Yes）
有効な値 : Yes, No
プリンタ属性テーブルへのアクセスを許可するかどうかを設定します。
変更の反映 : 即時有効
MAGIC.INI およびコマンドライン名 : AccessPrintAttributes

ログオン許可：（Yes）
有効な値 : Yes, No
ログオンダイアログへのアクセスを許可するかどうかを設定します。
変更の反映 : 即時有効
MAGIC.INI およびコマンドライン名 : AccessLogon

開発モード許可：（Yes）
有効な値 : Yes, No• Yes……開発モードを使用することができます。
• No……開発モードを使用できません。
［アプリケーション起動モード］欄の設定が開発モードであっても、常に実行モードで起動します。
変更の反映 : 即時有効
MAGIC.INI およびコマンドライン名 : AccessToolkit

外部テストツール使用：（No）
有効な値 : Yes, No• Yes……外部テストツール（WinRunner）を使用したテスト環境が有効になり、各コントロールに関する情報が外部テストツールで認識できるようになります（ただし、本仕様については日本語版では現在サポート対象外です）。
この設定を「Yes」にすると Magic をマルチインスタンスで実行することができなくなります。
• No……外部テストツールを使用したテスト環境は無効になります。
変更の反映 : 次のセッションから有効
MAGIC.INI およびコマンドライン名 : AllowTesting

リファレンス
Magic eDeveloper V9 Plus37

第 2 章 - 設定

チェックメッセージ表示：（Yes）
有効な値 : Yes, No［チェックメッセージ］テーブルの表示の有無を指定します。
変更の反映 : 即時有効
MAGIC.INI およびコマンドライン名 : AccessCheckerMessages

一時ファイルパス：（指定なし）
Magic は、処理中に一時ファイルを使用して中間情報を格納し、その後自動的に消去します。一時ファイルのサイズは、まれに数百 K バイトに達することがあり、そのような場合、標準ディスクへの入出力処理の速度が遅くなることがあります。この設定を使用し、たとえば RAM ドライブをパスとして指定すれば、パフォーマンスを改善することができます。
値を指定していない場合には、一時ファイルはカレントディレクトリに書き込まれます。
なお、このパスには区切り文字まで含めてください。
変更の反映 : 次のセッションから有効
MAGIC.INI およびコマンドライン名 : TempPath

最大ファイル数：（0）1 以上の値を指定すると、オペレーティングシステムでオープンできる最大ファイル処理数が変更されます。
変更の反映 : 次のセッションから有効
MAGIC.INI およびコマンドライン名 : FileHandles

ライセンス：（MGDEMO）
この設定により、ライセンスサーバまたはライセンスファイル内の使用可能ライセンスに基づいて Magic エンジンの動作仕様が決定されます。ライセンスファイル内に該当するライセンス情報が見つからない場合、エラーメッセージが表示され、Magic はアボー
ト終了します。
デフォルトはインストールプログラムによって設定されます。
変更の反映 : 次のセッションから有効
MAGIC.INI およびコマンドライン名 : LicenseName

ライセンスファイル：（インストーラに依存）
Magic Application Server と Magic Client では、ホストとポートおよび IP アドレスの組み合わせによってライセンスサーバの場所を指定します。Magic eDeveloper では、ライセン
スファイルの場所をパスで指定します。ライセンスサーバやライセンスファイルが見つからない場合は、エラーメッセージが表示され、Magic はアボートします。
デフォルトはインストールプログラムによって設定されます。
変更の反映 : 次のセッションから有効
MAGIC.INI およびコマンドライン名 : LicenseFile38

リファレンス
Magic eDeveloper V9 Plus

設定／動作環境

モニタ起動：（No）
有効な値 : Yes, No「Yes」に設定すると、Magic アプリケーションを開いたときにフローモニタが起動されます。この設定を使用することで、バックグラウンドモードで Magic を動作させるときにもフローモニタを利用することができます。
変更の反映 : 次のセッションから有効
MAGIC.INI およびコマンドライン名 : LoadMonitor

モニタの出力ファイル
バックグランドモードで動作するMagicからフローモニタが起動されたとき、アプリケー
ションの動作に関するログはファイルに出力されます。ここでは、モニタ出力ファイルのパスと名前を指定することができます。
変更の反映 : 次のセッションから有効
MAGIC.INI およびコマンドライン名 : Monitor2File

リモートフローモニタ
リモートフローモニタとのアクセスを有効にするかどうかを指定します。
変更内容の反映：次のセッションから有効
MAGIC.INI およびコマンドライン名：RemoteFlowMonitor

リモートフローモニタの使用ポート
リモートフローモニタとアクセスための TCP/IP のポート番号を指定します。
他のアプリケーションが使用していないポート番号を指定してください。

変更内容の反映：次のセッションから有効
MAGIC.INI およびコマンドライン名：RemoteFlowPortNumber［マルチユーザ］タブ
端末番号：（0）マルチユーザ環境の場合、各エンドユーザの端末に一意の数値識別子を割当てるために使用します。この設定値は、Term 関数を使用してプログラムから照会することができます。ユーザごとにリソース（例えばディスクファイル）を作成する必要がある場合、ユーザに特有のリソース名を生成するためにこの値を利用します。
端末番号は、ユーザ毎にファイルなど個別のリソースをアクセスする必要がある場合にプログラムで利用することができます。
デフォルト値は「0」ですが、この場合、Magic は各端末に自動的に一意の数値を割当てます。ただし、Term 関数による識別ができなくなります。
変更の反映 : 即時有効
MAGIC.INI およびコマンドライン名 : Terminal

マルチユーザアクセス：（Yes）
有効な値 : Yes, No
リファレンス
Magic eDeveloper V9 Plus39

第 2 章 - 設定
• Yes……すべてのデータベーステーブルアクセスに並行処理制御が行われ、テーブルを共有すると同時に、データベースの一貫性を維持します。
• No……すべてのテーブルが排他モードで開かれます。このとき、テーブルにアクセスするセッションは 1 つだけと想定するため、データベースロックは発行されません。
マルチユーザ設定によって、SQL ゲートウェイは基になっているデータベースのメカニ
ズムでロックを実行することができます。Magic ロックを使用しない場合、または Magic
以外の他のアプリケーションから同じデータベースにアクセスする場合は特に、マルチユーザ設定を「Yes」に設定することをお勧めします。
詳細については、第 24 章「ワークグループ開発」をご覧ください。

変更の反映 : 即時有効
MAGIC.INI およびコマンドライン名 : MultiUser

ISAM トランザクション：（No）
有効な値 : Yes, No• Yes……ISAM データファイルに対してトランザクション処理が実行されるようになります。トランザクションを実行した場合、データの整合性が高くなります。トランザク
ションの実行範囲は、プログラムの定義によります。
• No……ISAM データファイルに対するトランザクション処理は実行されません。
Magic は通常、使用するデータベースシステムの機能を利用してトランザクション処理を必ず行います。しかし、Btrieve などの ISAM ファイルが使用される場合は、トランザ
クションの使用はオプションによる指定となります。プログラムの中でトランザクショ
ンが定義されているとき、Magic はプログラムで使用しているテーブルのデータベースが何であるかをチェックします。テーブルが ISAM データベースの場合、この設定に基づいて、トランザクション処理を実行するか否かを決定します。
「Yes」を設定することを推奨します。
変更の反映 : 即時有効
MAGIC.INI およびコマンドライン名 : ISAMTransaction

デッドロック防止：（No）
有効な値 : Yes, No
Magic には、デッドロックの検出や予防機能がない ISAM タイプのデータベース用にデッドロック予防のためのメカニズムが組み込まれています。デッドロック状況は、2 人のユーザが所有するリソースをそれぞれのユーザが待っている場合に発生します。たとえば、次のようになります。
ステーション A

ステーション B

テーブル x をロック

テーブル y をロック

y の読み取りを試行

x の読み取りを試行

ステーション A はトランザクション内にテーブル x を所有しており、ステーション B が所有しているテーブル y を読み取ろうとしています。ステーション B はテーブル y を所有しており、ステーション A が所有しているテーブル x を読み取ろうとしています。
• Yes……デッドロックを予防することができます。
• No……デッドロックを予防するための特別なアクションは行われません。
デッドロックの検出や予防の機能が組み込まれていないデータベースでは、［デッドロッ
ク防止］を「Yes」に設定することをお勧めします。

40

リファレンス
Magic eDeveloper V9 Plus

設定／動作環境システムで使用されるデータベースに関連する個別の情報については、対応するゲー
トウェイのドキュメントも参照してください。
デッドロック防止を有効にすると、システムのパフォーマンスが劣化することがあります。
変更の反映 : 即時有効
MAGIC.INI およびコマンドライン名 : DeadlockPrevent

サーバ通信間隔： （0）
このパラメータでは、クライアント／サーバ構成のとき、Magic が接続しているすべての Magic サーバとの通信チェックを実行する時間間隔を指定します。
MRB の場合は秒単位、データサーバの場合は分単位です。
Magic サーバは、クライアントからの通信が一定時間以上途絶えると、クライアントに対してサービスを行っているプロセスを停止します。
このパラメータの値は、サーバ側に設定されているタイムアウト値を調べ、Magic サー
バのタイムアウトが発生するよりも前に通信チェックが発生するような値を設定します。
パラメータの値を「0」にすると、通信チェックは実行されません。
変更の反映 : 即時有効
MAGIC.INI およびコマンドライン名 : ServerTimeout

ロックファイル：（mglock.dat）
この設定では、ロック機能を実現するのに使用するファイルの名前を指定します。ロックファイルのファイル名には、パス名を指定しないでください。パス名は自動的に指定されます。
変更の反映 : 次のセッションから有効
MAGIC.INI およびコマンドライン名 : LockFile

リソースロックファイル：（mgres.loc）
リソースロック関数で使用するリソースロックファイルのパス及びファイル名を指定します。
リソースロックは、Magic 独自のロック機能で、各データベースのロックファイル機能を使用していません。
変更の反映 : 次のセッションから有効
MAGIC.INI およびコマンドライン名 : ResourceLockFilePath

ロック前にトランザクション開始（ISAM）：（Yes）
有効な値 : Yes, No
この設定は、ISAM ファイルを開発モードでオープンした場合のみ関係します。
「Yes」に設定すると以下のように動作します。
リポジトリ入力時、タスク内で発行されたロックがトランザクション内でない場合、［ト
ランザクション開始］特性は、オープンしたトランザクション内でロックされるように変更されます。
リファレンス
Magic eDeveloper V9 Plus

41

第 2 章 - 設定
ISAM ファイルを使用したタスクのトランザクションのデフォルト設定は、以下のように変更されます。
設定

バッチタスクオンラインタスクYes

タスク前処理レコードロック時

Noなし

レコード更新前

この表は、物理トランザクションでのみ有効です。タスクのトランザクションモード
が「遅延」から「物理」に変更された場合、［トランザクション開始］特性の値は、
このテーブルに基づいて変更されます。
この設定が「Yes」の場合、［トランザクション開始］特性と、［ロック方式］特性の値
は、以下のようになります。
レコード
前処理の
前

レコード
後処理の
前

レコード
更新前

なし

レコード
ロック時

即時

×

×

入力時

×

×

更新時

×

×

×

なし

×

×

×

×
×

×

変更の反映 : 即時有効
MAGIC.INI およびコマンドライン名 : LockWithinTran［動作設定］ タブ
デフォルトデータベース：（Default Database）
システムデフォルトとして Magic によって使用されるデータベースの名前です。このデフォルトはアプリケーション、およびデータベースファイルで使用され、これらのレベ
ルで上書きすることができます。この名前は、データベーステーブルであらかじめ定義
されているものから選択します。データベース一覧を参照するには、［編集／ズーム］（F5）を選択してください。
変更の反映 : 即時有効
MAGIC.INI およびコマンドライン名 : DefaultDatabase

ソート／一時用データベース：（Memory）
ソートテーブル、または一時ストレージとして必要なその他の一時データベーステーブ
ル（埋め込み SQL の結果テーブルなど）を作成するために Magic によって使用される
データベースの名前です。たとえば、メモリを使用する高速な ISAM データベース（メモリテーブルなど）を指定することでソートのパフォーマンスを向上させることができます。この名前は、［データベース］テーブルであらかじめ定義されているものから選択します。
［データベース一覧］を参照するには、［編集／ズーム］（F5）を選択してください。ただし DB2 UDB と ODBC はソートデータベースとして使用することはできません。
［ソート／一時用データベース］の設定で指定したパスを使用することができるのは、［データベース］テーブルの［位置］の設定が空白の場合だけです。
変更の反映 : 即時有効
MAGIC.INI およびコマンドライン名 : TempDatabase42

リファレンス
Magic eDeveloper V9 Plus

設定／動作環境

範囲／位置付ポップアップ秒数：（10）［範囲］または［位置付］のポップアップウィンドウを最初に表示し、その後更新するまでの時間（秒数）。［範囲］または［位置付］ポップアップウィンドウは、データベース
テーブルで逐次検索処理を実行すると必ず表示され、すでに検索されているレコードの数を表示します。ウィンドウを表示しない場合は、このフラグを「0」に設定します。
変更の反映 : 即時有効
MAGIC.INI およびコマンドライン名 : RangePopTime

ソート／一時用ポップアップ秒数：（10）［ソート / 一時用］ポップアップウィンドウを最初に表示し、その後更新するまでの表示
時間（秒数）。
［ソート / 一時用］ポップアップウィンドウは、ソート処理コマンドがデー
タベースファイルで実行されると必ず表示されます。 ［ソート / 一時用］ポップアップ
ウィンドウは、すでにソートされているレコードの数を表示します。ウィンドウを表示
しない場合は、このフラグを「0」に設定します。
変更の反映 : 即時有効
MAGIC.INI およびコマンドライン名 : TempPopTime

キーボード休止秒数：（1）
キーボード操作がないときの休止信号間の時間（秒数）。対話型のセッション中、Magic
はユーザ入力を待ちます。ユーザ入力がないと、休止信号が出され、他の処理が実行できるようになります。
［キーボード休止秒数］の値は、休止信号が出されるまでの非活動時間です。
この設定は、Idle 関数の戻り値に影響します。
変更の反映 : 即時有効
MAGIC.INI およびコマンドライン名 : IdleTime

プルダウンメニュータイムアウト（秒）：（0）［プルダウンメニュータイムアウト］の設定により、オープンしているプルダウンメ
ニューを、ユーザが処理（選択またはクローズ）を実行するまでオープンしておくか、
一定時間経過後に自動的にクローズするかを設定します。このパラメータで、プルダウ
ンメニューを表示する時間（秒数）を指定します。
「0」を設定すると、プルダウンメ
ニューはユーザが次の処理を実行するまで表示されます。
「0」以外の値を設定すると、ユーザが処理を実行しなければ、プルタウンメニューは指定された秒数の経過後に自動的にクローズします。
プルダウンメニューがオープンすると、システム内の他のプロセス（イベントなど）の実行が停止します。他のプロセスを停止させない場合は、［プルダウンメニュータイムア
ウト］欄に「0」以外の値を設定してください。
変更の反映 : 即時有効
MAGIC.INI およびコマンドライン名 : MenuCloseTimeout

自動終了時確認：（No）
有効な値 : Yes, No
Magic のダイアログボックスまたはテーブルの項目を修正し、Magic に対し、ダイアログ
またはテーブルの終了（Esc）を指示すると、［変更保存しますか ?］確認ダイアログが表示されます。終了動作が暗黙である場合もあります。

リファレンス
Magic eDeveloper V9 Plus43

第 2 章 - 設定
たとえば、あるタスクの処理テーブルの編集時に、［ワークスペース／テーブルリポジト
リ］（Shift+F2）を選択して、［テーブルリポジトリ］に切り替えることができます。この場合、Magic は、タスクの［処理テーブル］から内部的な［終了］要求を受け取ります。すでに［処理テーブル］を修正してあれば、［テーブルリポジトリ］に制御が渡される前に［変更保存しますか ?］確認ダイアログが表示されます。このような内部的「終了」動作のことを「自動終了」と呼びます。
• Yes……ユーザ要求による自動終了時に［変更保存しますか ?］確認ダイアログが表示されます。このため、現在の内容（修正されたテーブルまたはダイアログ）と要求された内容との間の変更について、修正されたダイアログまたはテーブルごとにユーザに明示的な確認を要求します。たとえば、現在の内容が、処理テーブルの編集中にオブジェクトとして呼び出されたタスクの［イベント］テーブルであり、［イベント］と［処理］テーブルの両方が修正されたとします。
このときに、［ワークスペース／テーブル］（Shift + F2）を選択して［テーブルリポ
ジトリ］（要求した内容）を編集する場合、最初に［イベント］テーブルに対する［変更保存しますか ?］確認ダイアログが表示され、次に［処理］テーブルに対して［変更保存しますか ?］確認ダイアログが表示されます。両方の確認を受け取ったときのみ、Magic は［テーブルリポジトリ］に進みます。
• No……ユーザ要求による自動終了時に［変更保存しますか ?］確認ダイアログは表示されません。このような場合、変更は割り込みなしで自動的に受け付けられます。
変更の反映 : 即時有効
MAGIC.INI およびコマンドライン名 : ConfirmAutoExit

タスクフロー変更：（F= 変更可）
有効な値 : F= 変更可，S= 変更不可
この設定は、タスク処理テーブル編集時の動作を定義します。
• F ＝変更可……ユーザは処理行を自由に修正できます。このモードでは、処理コマン
ドが誤って上書きされてしまった場合、その処理のパラメータはリセットされて空白になります。この設定のとき、処理テーブルの編集に制約がないため、すばやく行うことができます。
• S ＝変更不可……１度受け付けられた処理コマンドは変更できません。
［S ＝変更不可］
モードのときに処理コマンドを変更するには、新たに処理コマンドを入力しなおし、古い処理コマンド行については削除する方法しかありません。修正に時間はかかりま
すが、安全性は高いといえます。
変更の反映 : 即時有効
MAGIC.INI およびコマンドライン名 : FlowModify

コピーライトメッセージ表示：（Yes）
有効な値 : Yes, No
Magic のコピーライトメッセージの表示を制御し、実行するアプリケーションをカスタマイズするために使用します。この指定は、実行エンジン（Mgrntw.exe）でのみ有効です。
• Yes……コピーライトメッセージが表示されます。
• No……ステータス行などで表示される Magic メッセージを表示しなくなります。また、［実行時のカスタムコピーライト］は無視されます。
［Magic 情報］ダイアログのメッセージは、［実行時のカスタムコピーライト］欄に文字列を入力しない場合、デフォルトのメッセージになります。
Magic eDeveloper では、この設定の如何に関わらず、常に標準のコピーライトが表示されます。
変更の反映 : 次のセッションから有効
MAGIC.INI およびコマンドライン名 : CopyrightMessages

44

リファレンス
Magic eDeveloper V9 Plus

設定／動作環境

実行時のカスタムコピーライト：（なし）［実行時のカスタムコピーライト］設定には、アプリケーションを実行したときに Magicの実行モジュールのユーザに対して表示されるテキストデータを設定します。このパラメータのテキストは、次の位置に表示されます。
• Magic ウィンドウのタイトルバー• ［Magic 情報］ダイアログ内の Magic バージョン情報の表示位置［Magic 情報］のダイアログのメッセージは複数行にまたがる場合があります。このような場合は、メッセージテキスト内で改行位置に「¥」記号を記述してください。
ただし、現在の仕様ではタイトル行にも「¥」が表示されるため、必要なときのみ使用されることをお勧めします。
変更の反映 : 次のセッションから有効
MAGIC.INI およびコマンドライン名 : RTUserCopyright

MAGIC.INI 常駐：（No）
有効な値 : Yes, No
MAGIC.INI ファイルの内容をメモリに常駐させるかどうかを指定します。
• Yes……MAGIC.INI ファイルの内容がメモリ内に常駐します。常駐させることにより、MAGIC.INI 変数への読み取りアクセスが速くなるためシステムのパフォーマンスが向上します。MAGIC.INI の内容が更新されたときは、Magic が終了するときに値がディスクに書き込まれます。
• No……MAGIC.INI ファイルに対する照会または更新のたびに、ディスクへの読み取りと書き込みが行われます。
変更の反映 : 次のセッションから有効
MAGIC.INI およびコマンドライン名 : ResidentINI

GUI 実行時ツールバー：（Yes）
有効な値 : Yes, No
GUI ツールバー表示の有無を決定します。
• Yes……ツールバーが表示されます。
• No……ツールバーは表示されません。
変更の反映 : 次のセッションから有効
MAGIC.INI およびコマンドライン名 : RtToolBarGUI

常駐テーブル読込：（No）
有効な値 : Yes, No
常駐テーブル読込の有効無効をグローバルに設定します。
• Yes……常駐テーブル読込は有効になりますが、各テーブルを常駐テーブルにするためには、各々のテーブルに対して設定をする必要があります。
• No……常駐テーブル読込は無効となります。
変更の反映 : 次のセッションから有効
MAGIC.INI およびコマンドライン名 : LoadResidentFiles

メッセージの詳細表示：（Yes）
有効な値 : Yes, No
リファレンス
Magic eDeveloper V9 Plus45

第 2 章 - 設定
SQL データベースを使用するアプリケーションを実行中に、制約違反などが発生すると、
RDBMS がエラーを返します。Magic は RDBMS から受け取った最後のエラーをバッファに保持します。
• Yes……実行時のエラーがすべて表示され、バッファはクリアされます。
• No……実行時のエラーは表示されません。プログラムで DbERR 関数などを使用してバッファから内容を文字列として変数に取得し、処理することができます。
［メッセージの詳細表示」を「Yes」に設定しているときは、DbERR 関数はエラー
メッセージを取得できません。アプリケーションの要求仕様によって、どちらの設定にすべきかを判断してください。
変更の反映 : 即時有効
MAGIC.INI およびコマンドライン名 : DisplayFullMsgs

カーソルの画面中央位置付け：（No）
有効な値 : Yes, No
この欄の設定は、テーブルコントロールを使用してデータベーステーブルにアクセスを行う場合、オンラインタスクの性能に影響します。
この欄は、インデックスを使用するかどうかにかかわらず、双方向でメインテーブルの照会を行うときに有効です。
• Yes……画面の再描画に先立って、まず画面の中央に現在のレコードを位置付けし、画面の残りの部分を埋めるために、現在のレコードの前後のレコードを読み込みます。
その結果、２つのカーソルをオープンします。１ つは、現在のレコード位置から前方を読むため、もう１ つは、後方を読むために使用されます。
• No……現在のレコードを画面の最上部に位置付けるように設定します。再描画された
画面には表示されないため、現在のレコード位置から前のレコードを参照するためのカーソルをオープンする必要性がなくなります。
この欄は以下の状況で有効です。
•

タスクのモードを「修正」、「照会」、「位置付」、「インデックス変更」、「ソート」
から「修正」または「照会」に変更した後。

•

次に位置付の操作後。

•

照会モードでの位置付けが成功した後。

この欄は以下の状況においては無効になります。
•

新規の範囲を指定するかどうかにかかわらず、「範囲」モードから別のモードに移り、範囲の最初のレコードに移動した場合。

•

新規のソートを行い、「ソート」モードから別のモードに移り、範囲の最初のレコードに移動した場合。

• 「登録」モードから別のモードに移り、範囲の最初のレコードに移動した場合。
なお、この欄は Magic のエンジン自体によって制御されるため、ゲートウェイが異なっても機能は有効です。
変更の反映 : 即時有効
MAGIC.INI およびコマンドライン名 : CenterScreenInOnline

修正後の再位置付け：（No）
有効な値 : Yes, No
テーブルコントロールを使用してデータベーステーブルにアクセスを行うようなオンラ
インタスクの性能に影響します。

46• Yes……タスクのメインテーブルのインデックスセグメントの値に変更があった場
合、または修正モードで新規のレコードが挿入された場合、既存のレコードに対して以下の処理が実行されます。
リファレンス
Magic eDeveloper V9 Plus

設定／動作環境•

現在のレコードをデータベースに書き込みます。

•

現在のテーブルの一画面分のレコードを上から下まで再読込されます。この後、変更されたレコードが、そのレコードの表示順に応じた位置に表示されます。もし、レコードが表示順の関係でテーブルの外に表示されるような場合、レコー
ドはユーザからは見えなくなります。

•

変更されたレコードから移動するために使用されたアクション（
「次行」、
「次画
面」など）にしたがって、新しいレコードに位置付けます。

• No ……上記の 2 番目の処理（再読込）が実行されなくなります。このため、スクロー
ルによりテーブルの外に出るまでレコードは以前の位置に表示されます。この場合、位置が変わらないため表示順序は規則からはずれることになります。
なお、この欄の値より、タスク制御の［ウィンドウ再表示］欄の値が優先されます。つまり、［ウィンドウ再表示］欄を「Yes」とした場合、［修正後の再位置付］の設定にかかわらず、レコードが更新されるごとにデータベースからレコードが再読込されます。こ
の処理は、メインテーブルのインデックスセグメントの値の変更とは関係なく実行されます。
この欄を「Yes」とした場合、表示の更新が行われなくなるため、場合によっては同じレコードがテーブルに 2 つ表示されることがあります。
変更の反映 : 即時有効
MAGIC.INI およびコマンドライン名 : RepositionAfterModify

インデント文字：（0）HTML ページと RTF コントロールで使用するインデント間隔の文字数を指定します。
変更の反映 : 即時有効
MAGIC.INI およびコマンドライン名 : IndentCharacters

デフォルト色：（1）基本色テーブルに新しい行を作成したときの初期値となる色番号を指定します。この欄
は、実行アプリケーション内での色指定がない場合に初期値として使用されます。新しい行を基本色テーブルに追加すると、Magic はこのデフォルト色を初期値として使用します。デフォルト色が指定されていない場合、Magic のシステムデフォルト値として以下の色が使用されます。
• 前景色……システム色［ウィンドウ内の文字］• 背景色……システム色［ボタンの表面］
アプリケ−ション実行しているとき、そのプログラム内部で色指定が行われない場合は、
Magic は、ここで指定された色番号を使用します。この欄の値が指定されていない場合
は、上記システムデフォルト値を使用します。
変更の反映 : 即時有効
MAGIC.INI およびコマンドライン名 : DefaultColor

デフォルトフォント：（1）
フォントテーブルに新しい行を作成したときの初期値となるフォント番号を指定します。この欄は、実行アプリケーションでフォントの指定がない場合、デフォルトフォン
トとして使用されます。開発者が新しい行をフォントテーブルに追加すると、Magic は、
このデフォルトフォントを初期値として使用します。デフォルトフォントが指定されていない場合は、Magic のシステムデフォルト値として「MS P ゴシック 8pt 」が指定されます。アプリケーションを実行しているとき、プログラム内部でフォント指定が行われていない場合は、Magic は、ここで指定されたフォント番号を使用します。また、この欄の値が指定されていない場合には、Windows のデフォルトフォントを使用します。
リファレンス
Magic eDeveloper V9 Plus47

第 2 章 - 設定
変更の反映 : 即時有効
MAGIC.INI およびコマンドライン名 : DefaulFont

ツールチップ表示タイムアウト（秒）：（5）［ツールチップ表示タイムアウト］設定は、アプリケーションの開発時の式や、実行時のコントロール上に表示されるツールチップの表示時間を秒数で指定します。最大値は 31秒です。
ツールチップを非表示にするには、［ツールチップ表示タイムアウト］を「0」に設定します。
変更の反映 : 即時有効
MAGIC.INI およびコマンドライン名 : TooltipTImeout

ブックマークの最大登録数：（10）
保存するブックマークの最大登録数を定義します。
変更の反映 : 次回のセッション
MAGIC.INI およびコマンドライン名 : Bookmarksnumber

クロスリファレンスの結果の最大登録数：（5）
保存するクロスリファレンス結果の最大数を定義します。
変更の反映 : 次のセッションから有効
MAGIC.INI およびコマンドライン名 : MaxCrfResults

コマンド処理のリトライ間隔：（600）
この設定は、定義した操作が再試行されるまでの時間を秒で指定します。
テーブルロック時にリトライする時間もこの設定で制御されます。アプリケーション
サーバの実行時など、ユーザーが強制終了できないプログラムでテーブルロックが発生した場合、常にこの値までリトライします。
デフォルトのリトライ間隔は、600 秒（10 分）です。
変更の反映 : 即時有効
MAGIC.INI およびコマンドライン名 : RetryOperationTime

入出力デバイスのオープンタイミング：（I= 即時）
入出力デバイスのオープンタイミングは以下の２つの方法で制御できます。
• I= 即時……入出力を定義したタスクがオープンされた時点で実行されます。
• O= 利用時……データ出力／入力コマンドを実行したり、入出力デバイスを制御する関数（EOF,EOP,Line,Page など）が実行された時点で実行されます。
変更の反映 : 即時有効
MAGIC.INI およびコマンドライン名 : IOTiming

フロートパレットを常に全面表示：（Yes）
有効な値：Yes, No［ナビゲータ］、［特性シート］、［コメント］の各ペインがフローティング表示している場合の動作を設定します。

48

リファレンス
Magic eDeveloper V9 Plus

設定／動作環境• Yes……［Esc］または［Enter］キーを押しても フローティングパレットは閉じません。カーソルは［ワークスペース］ペインに移動します。
• No……［Esc］または［Enter］キーで Magic のフローティングパレット（ナビゲー
タ、特性シート、コメント）は閉じます。カーソルは［ワークスペース］ペインに移動します。
複数のパレットが同じフローティングウィンドウズ上にある場合も、［Esc］または［Enter］キーでそのウィンドウが閉じます。
変更の反映 : 即時有効
MAGIC.INI およびコマンドライン名 : PalettesAlwaysOnTop

パレット結合可：（Yes）
有効な値：Yes,No• Yes……フローティング状態のペインを［ワークスペース］ペインの境界にドラッグ＆ドロップすることで結合させることができます。
• No……フローティング状態のペインをワークスペース］ペインに結合させることはできません。
このオプションは、すでに結合されているペインには影響しません。ただし、一旦フローティング状態にすると元に戻せなくなります。
変更の反映 : 即時有効
MAGIC.INI およびコマンドライン名 : DockablePalettes

単一拡張パレット：（No）
有効な値：Yes,No［特性シート］のツリー表示を全て展開して表示するか否かを指定します。
• Yes……指定したセクションのみ展開して表示します。別のセクションを展開表示させると、今までのセクション表示が閉じます。
• No……［特性シート］のツリー表示を全て展開して表示します。
変更の反映 : 即時有効
MAGIC.INI およびコマンドライン名 :SingleExpandPalettes

特性シートの自動操作：（C= 閉じる）
有効な値：N= 無効、C= 閉じる、O= 開く、F= 全て
リポジトリを開いたときに関連する［特性シート］を自動的に開くかどうかを指定します。
• N= 無効……［特性シート］のオープン／クローズの自動制御を行いません。
• C= 閉じる ……現在のリポジトリを閉じると［特性シート］は自動的に閉じます。
• O= 開く……リポジトリを開くと関連する［特性シート］が自動的に開きます。
• F= 全て ……リポジトリのオープン／クローズに連動して、関連する［特性シート］も自動的にオープン／クローズします。
変更の反映 : 即時有効
MAGIC.INI およびコマンドライン名 :AutomaticPropertySeet

画像キャッシュサイズ :（0 Kbyte）
有効な値：数値
この設定は、アプリケーションが画像を表示する際のキャッシュメモリサイズの最大値を指定します。
リファレンス
Magic eDeveloper V9 Plus49

第 2 章 - 設定
• 正数値……画像キャッシュサイズを KByte 単位で指定します。
• 0……サイズの制限がなくなります。
• -1……キャッシュしません。
キャッシュの制限を越えた場合、使用頻度のもっと低い画像データから削除され、空きを作ります。
このパラメータは、開発版エンジン（MGGENW.EXE）では無効です。

変更の反映 : 次のセッションから有効
MAGIC.INI およびコマンドライン名 :ImageCacheSize

画像キャッシュ：（No）
有効な値：Yes,No
この設定は、画像のキャッシュ方法を指定するものです。
• Yes ……キャッシュされた画像は、各画像ファイル毎のタイムスタンプを作成することで、変更されたことを認識します。画像が表示される前に、Magic は、タイムスタ
ンプをチェックします。もし、タイムスタンプが更新されている場合は、再読込を行います。
• No ……タイムスタンプによる比較処理は実行されません。このため、キャッシュされた画像の表示時間が早くなります。
このパラメータは、開発版エンジン（MGGENW.EXE）では無効です。

変更の反映 : 次のセッションから有効
MAGIC.INI およびコマンドライン名 :ImageCacheCheckTime

最小チェックレベル：（R= 推薦）
有効な値：E= エラー、W= 警告、R= 推薦
構文チェックユーティリティがチェックする最小レベルを指定します。
• E= エラー……エラーメッセージのみ表示する• W= 警告……エラー及び、警告メッセージを表示する• R= 推薦……エラー、及び、警告メッセージ、推薦を表示します。
変更内容：即時有効
Magic INI と コマンドライン名 : CheckerLevel

メッセージのグループ化：（O= オブジェクト）
有効な値：T= タイプ、O= オブジェクト
構文チェックの結果のメッセージを結果ウィンドウ上にどのようなグループ化で表示するかを定義します。
• O= オブジェクト……Magic のオブジェクト（例 : モデル、テーブル、及び、プログラ
ム）ごとにグループ化します。そのグループ内でエラーが発見される順に並んで表示されます。
• T= タイプ……メッセージのタイプ（エラー、警告、推奨）ごとにグループ化します。
そのグループ内でエラーが発見される順に並んで表示されます。

50• B= オブジェクトとタイプ……メッセージのタイプと Magic のオブジェクトの組み合
わせでグループ化されます。
リファレンス
Magic eDeveloper V9 Plus

設定／動作環境
変更内容：即時有効
Magic INI と コマンドライン名 : CheckerGroups

チェック項目の自動位置付：（Yes）
有効な値：Yes,No
自動的に、最初のチェックメッセージをハイライト表示しエラー箇所にカーソルを移動させるかどうかを指定します。
変更内容：即時有効
Magic INI と コマンドライン名 : CheckerJumpAuto

テキスト形式互換：（No）
有効な値：Yes, No
この欄は、過去のバージョンとの互換性のために用意されています。
• Yes……V5.x でのエディットコントロールの複数行テキストは、拡張ウィンドウ内で［Enter］キーを押したとき、［CR］，［LF］コードの挿入により改行を実現するのではなく、行末まで空白を埋めることで、見かけ上の複数行編集表示を実現していました。
つまり、項目内のデータは、実際のテキストと、編集ウィンドウのサイズに整形する
ための空白とから成っていました。このような編集方法を互換性維持のために使用する必要があるときに、このパラメータを［Yes］に設定します。
• No……複数行を許可したエディットコントロールの拡張ウィンドウ内で［Enter］キー
を押すと、
［CR］，
［LF］のコードがテキストに挿入され、次行へ移動します。Ver6 以
降では、これが標準の方法です。
変更の反映：

即時有効

MAGIC.INI およびコマンド行：

MLETextbaseCompatible

プリントキューの区切り文字：（/）
有効な値：任意の文字
MAGIC.INI のプリンターキュー定義中の区切り文字を指定します。
変更の反映：

即時有効

MAGIC.INI およびコマンド行：

PrintQueueDelimit

印刷中断許可：（Yes）
有効な値：

Yes、NoYes に設定すると、印刷のキャンセルができるようになります。
変更の反映：

即時有効

MAGIC.INI およびコマンド行：PrintCancel［国別設定］タブ
日付タイプ：（J= 日本）
有効な値 : A= アメリカ、E= ヨーロッパ、J= 日本
この設定では、システム全体で使用される日付の表示形式を指定します。たとえば、2001
年 6 月 25 日は次のように表示されます。
設定
リファレンス
Magic eDeveloper V9 Plus

書式

表示

51

第 2 章 - 設定
A= アメリカ

MM/DD/YY

06/25/01

E= ヨーロッパ

DD/MM/YY

25/06/01

J= 日本

YY/MM/DD

01/06/25

変更の反映 : 即時有効
MAGIC.INI およびコマンドライン名 : DateMode

3 桁区切り文字：（,）
数値型の項目に使用される区切文字を指定します。ここで指定した文字は、実行モード時に使用されます。
開発モードでは、この欄の設定にかかわらず、3 桁区切文字としてはカンマが使用されます。
変更の反映：即時有効
MAGIC.INI およびコマンドライン名 : ThousandSeparator

小数点：（.）
数値型の項目の整数部と小数部を分ける区切文字を指定します。ここで指定した文字は、
実行モード時に使用されます。開発モードでは、この欄の設定にかかわらず、小数点としてはピリオドが使用されます。
変更の反映 : 即時有効
MAGIC.INI およびコマンドライン名 : DecimalSeparator

日付区切り文字：（/）
日付型の項目の月、日、年を分ける区切文字を指定します。ここで指定した文字は、実行モード時に使用されます。日付の表示順は、前述の［日付モード］欄で指定できます。
開発モードでは、この欄の設定にかかわらず、日付区切文字としては、スラッシュ（/）
が使用されます。
変更の反映 : 即時有効
MAGIC.INI およびコマンドライン名 : DateSeparator

時刻区切り文字：（:）
時刻型の項目の時間、分、秒を分ける区切文字を指定します。ここで指定した文字は、
実行モード時に使用されます。開発モードでは、この欄の設定にかかわらず、時刻区切
文字としてはコロンが使用されます。
変更の反映 : 即時有効
MAGIC.INI およびコマンドライン名 : TimeSeparator

IME の初期入力状態：（N= 無効）
有効な値：

N= 無効、Y= 有効、R= ローマ字、K= カナ

IME を起動する場合の初期入力方式を指定します。
• N= 無効……IME の初期入力方式の設定を無視します。
• Y= 有効……現在 IME で設定されている初期入力方式をそのまま使用します。
• R= ローマ字……IME の初期入力方式をローマ字として起動します。
• K= カナ……IME の初期入力方式をかなとして起動します。
変更の反映 : 即時有効

52

リファレンス
Magic eDeveloper V9 Plus

設定／動作環境
MAGIC.INI およびコマンドライン名 : NewIMECtrl

IME を自動的にオフ：（No）
有効な値：

Yes、No

任意に起動した IME の状態を、項目間移動時に引き継ぐか否かを決定します。
• Yes……状態を引き継ぎます。
• No……状態を引き継ぎません。
変更の反映 :

即時有効

MAGIC.INI およびコマンドライン名 :IMEAutoOff［外部参照］タブ
アプリケーションで使用する外部参照ファイルは、［外部参照］タブの設定欄にそのパスとファイル名を記述することで、サーバなどに配置することもできます。

ロゴファイル：（なし）：省略可オープニング画面に表示されるシステムロゴファイルが保存される場所です。指定する
場合、そのファイルは BMP（ビットマップ）形式のものを使用します。
変更の反映 : 次のセッションから有効
MAGIC.INI およびコマンドライン名 : LogoFile

CONST ファイル：（SUPPORT¥mgconstw.jpn）：必須
Magic のユーザインタフェースと言語に関する情報が格納されているファイルの場所と名前を指定します。
変更の反映 : 次回のセッション
MAGIC.INI およびコマンドライン名 : ConstFile

ヘルプファイル：（SUPPORT¥mghelpw.hlp）：省略可
Magic システム用のヘルプファイルを指定します。アプリケーションの定義するヘルプ
ではありません。
変更の反映 : 次のセッションから有効
MAGIC.INI およびコマンドライン名 : HelpFile

基本色定義ファイル：（SUPPORT¥clr_std.jpn）：必須
Magic の色定義が保存されるファイルの場所とファイル名を指定します。この項目からズームすると、基本色定義テーブルが開き、基本色定義ファイルに格納されている内容が表示されます。
詳細については、本章の「設定／基本色」の節を参照してください。

変更の反映 : 次のセッションから有効
MAGIC.INI およびコマンドライン名 : ColorDefinitionFile

リファレンス
Magic eDeveloper V9 Plus

53

第 2 章 - 設定

フォント定義ファイル：（SUPPORT¥fnt_std.jpn）：必須
Magic のフォント定義が格納されているファイルの場所と名前を指定します。この項目からズームするとフォント定義テーブルが開き、指定のフォント定義ファイルに格納されている内容が表示されます。
詳細については、本章の「設定／フォント」の節を参照してください。

変更の反映 : 即時有効
MAGIC.INI およびコマンドライン名 : FontDefinitionFile

キーボード割付ファイル：（SUPPORT¥act_std.jpn）：必須［キーボード割付ファイル］では、Magic のキーボード割付定義が保存されるファイルの場所とファイル名を指定します。
この項目からズームすると、キーボード割付テーブルを表示できます。
詳細については、本章の「設定／キーボード割付」の節を参照してください。

変更の反映 : 即時有効
MAGIC.INI およびコマンドライン名 : KeyboardMappingFile

ドキュメントテンプレートファイル：（SUPPORT¥doc_std.jpn）：（必須）
リポジトリ入出力ユーティリティで使用されるドキュメントテンプレートファイルが格納されている場所と名前を指定します。このファイルの設定はリポジトリ入出力で仕様書出力を行なう場合に必須で、このテンプレートファイルで出力の形式と内容を制御します。
Magic には、2 つのテンプレートが付属します。標準テンプレート（doc_std.jpn）は、Magic
アプリケーションオブジェクトに関する基本情報を簡略化された形式で出力します。拡張テンプレート（doc_ext.jpn）は、オブジェクトに関する詳細な情報を出力します。
第 19 章「ユーティリティ」の「ドキュメントテンプレート機能」を参照してください。
変更の反映 : 即時有効
MAGIC.INI およびコマンドライン名 : DocumentTemplateFile

HTML スタイルファイル：（SUPPORT¥html_std.jpn）：省略可HTML ドキュメントユーティリティの HTML スタイルテンプレートが保存されているファイルの場所と名前です。
変更の反映 : 即時有効
MAGIC.INI およびコマンドライン名 : HTMLStyles

54

リファレンス
Magic eDeveloper V9 Plus

設定／動作環境

プリンタ属性ファイル：（SUPPORT¥prn_std.jpn）：省略可
論理的なプリンタ属性が格納されているファイルの場所と名前を指定します。プリンタ
属性は論理オブジェクトであり、Magic の出力フォームに関連する処理で使われます。
フォームの出力時、このオブジェクトにより必要な情報がプリンタ制御コードに変換されます。プリンタ属性ファイルには、プリンタコマンドファイル中の実際のエスケープ
コードと論理属性との関係を定義します。この欄からズームすると、［プリンタ属性］
テーブルが開き、プリンタ属性ファイルが表示されます。
この欄からズームすると、［プリンタ属性］テーブルが開き、プリンタ属性ファイルが表示されます。
プリンタ属性ファイルについては、「設定／プリンタ属性」を参照してください。

変更の反映 : 即時有効
MAGIC.INI およびコマンドライン名 : PrintAttr

セキュリティファイル：（SUPPORT¥usr_std.jpn）：必須
ファイルが指定されていない場合、または存在しない場合、Magic によりデフォルトのファイルが作成されます。
以下の情報が格納されているファイルの場所を名前を指定します。
• 各ユーザのユーザ ID 、パスワードおよび権利• ユーザグループおよび権利• シークレット名
セキュリティファイルの内容は暗号化され、不法な第三者によるシステムへの進入を防止できます。
Magic のセキュリティシステムについては、第 13 章「使用権利」を参照してください。
マルチユーザ環境の場合、セキュリティファイルは共有ディレクトリに置き、各ユー
ザに同じ情報が提供されるようにしてください。
変更の反映 : 次のセッションから有効
MAGIC.INI およびコマンドライン名 : UsersFile

開始時セキュリティファイル：（なし）：（省略可）
Magic の初期化時に読み込まれるセキュリティファイルの場所と名前を指定します。
Magic の初期化が終了すると、開始時セキュリティファイルはメモリ上で［セキュリティ
ファイル］欄に指定されているファイルに置き換えられます。これはクライアント / サーバ環境において、各ユーザが同じセキュリティファイルを使用できるようにセキュリ
ティファイルをサーバに常駐させておくために必要となります。
セキュリティファイルには、シークレット名が格納されています。このシークレット名には、［サーバ特性］ダイアログで設定するユーザ ID とパスワードのシークレット名も含まれます。このようなセキュリティファイルを開始時セキュリティファイルとして使用することで、サーバへのアクセスが可能になります。つまり、サーバへのログオンにはユーザ ID とパスワードが必要ですが、サーバ上のセキュリティファイルは、ログオン
前にアクセスできません。この場合、開始時セキュリティファイルを使用することで、ログオンに必要なユーザ ID とパスワードを取得できます。

リファレンス
Magic eDeveloper V9 Plus55

第 2 章 - 設定
なお、Magic の実行環境がクライアント / サーバ環境でないとき、または、［サーバ特性］
ダイアログにおいてユーザ ID とパスワードを指定しないときには、このファイル設定は省略できます。
変更の反映 : 次のセッションから有効
MAGIC.INI およびコマンドライン名 : StartupUsersFile

OEM から ANSI への変換ファイル：（なし）：不要
日本語版では、この設定欄は使用しません。英語版との互換性のために残してありますが、日本語版では使用するコード体系はシフト JIS のみです。

エンコード：（Shift_JIS/Shift_JIS）
この設定を使用することで、ブラウザタスクの HTML ページによって使用されるエン
コードテーブルの名前を指定できます。
ここに値を設定すると、ブラウザタスクによって作成される各 HTML ページは、META
タグを埋め込むことにより定義された文字セットを使用するページになります。
<META HTTP-EQUIV="Content-Type" content="text/html; charset=XXX">XXX は、動作環境で設定した文字列
この情報は、ブラウザクライアントモジュールが、定義したエンコードテーブルを使用
して入力されたデータを Magic サーバエンジンに渡すために使用されます。
すでに HTML ページに META タグがある場合は、その内容を変更しませんが、ブラ
ウザクライアントモジュールは動作環境の設定によって定義されたエンコードテーブ
ルを使用するようにします。
日本語環境では常に "Shift_JIS/Shift_JIS" をセットしてください。
変更の反映 : 直後から有効
MAGIC.INI およびコマンドライン名：Unicode2Ansi

照合順序ファイル：（なし）：省略可
ソート（ABC 順など）に必要な照合順序を定義した情報が格納されているファイルの場
所と名前を指定します。
この欄を指定した場合、指定されたファイルがデータベースのデフォルトの照合順序
ファイルの代わりに使用されます。ただし、データベースによっては、代替照合順序ファイルが使用できないこともあります。照合順序ファイルがサポートされているかどうか
は、データベースまたはゲートウェイのマニュアルを参照してください。
代替照合機能をサポートしている特定の DBMS や個々のデータベースに対し、ACS （照合順序）ファイルを個別に定義することができます。DBMS やデータベースに対応する
ACS ファイルは、DBMS テーブルやデータベーステーブルの DBMS やデータベース特性
ダイアログの［照合順序ファイル］欄で設定します。データベースが複数ある場合、各データベースにそれぞれ異なる照合順序ファイル（ACS ファイル）を定義できます。
［データベース特性］ダイアログで照合順序ファイルを指定しなかった場合や指定されたファイルが存在しない場合、［設定／動作環境］の照合順序ファイルが使用されます。
なお、1 つの DBMS に複数の ACS ファイルを指定することはできません。
変更の反映 : 次のセッションから有効
MAGIC.INI およびコマンドライン名 : CollatingFile

56

リファレンス
Magic eDeveloper V9 Plus

設定／動作環境

デフォルト言語：（なし）：省略可
有効な値 : 空白または［言語］テーブルに登録されている言語
多言語表示サポート環境で、立ち上げ時に使用する言語を設定します。
変更の反映 : 即時有効
MAGIC.INI およびコマンドライン名 : StartingLanguage

チェッカー用メッセージテーブルファイル：（SUPPORT¥chk_std.jpn）：必須
構文チェックユーティリティ用のメッセージファイル（Chk_std.dat）のファイル名とパス名を指定します。
メッセージ内容は、Mgconstw ファイルで管理されており、メッセージ区分のみをこのファイルで管理します。
変更内容：即時有効
Magic INI と コマンドライン名 : CheckerMessageTable

通貨変換ファイル：（なし）：省略可
通貨変換ファイルは、特定の通貨を基準とした変換レートを管理する外部ファイルです。
［通貨変換ファイル］設定からズームして、［ファイルを開く］ダイアログを表示します。
そこでユーロ通貨変換ファイルを指定します。
このファイルでは、ユーロを基準とする通貨値を記述します。
変更の反映 : 即時有効
MAGIC.INI およびコマンドライン名 : EuropeanCurrencyConversionFile

ドロップデータサポート・ユーザフォーマット：（なし）：省略可ドラッグ & ドロップ関数でユーザ定義フォーマットのデータを扱う場合、ここにフォー
マット名を指定する必要があります。この設定は、コンマ区切りで複数指定できます。
例えば、ユーザー定義フォーマットが ABC と EFG の場合、「ABC,EFG」と入力します。
変更内容：即時有効
Magic INI と コマンドライン名 : DropUserFormats

コマンドプロセッサ：（OS に依存）OS が使用するコマンドプロセッサの場所と名前を絶対パスを使用して指定します。これは［OS コマンド］の実行時に使用されます。
変更の反映 : 即時有効
MAGIC.INI およびコマンドライン名 : CommandProcessor

HTTP Proxy : （なし）HTTPGet/HTTPPost 関数または、WSDL アシストや［コール Web サービス］処理コマン
ドを Proxy サーバを通して実行する場合は、この設定が必要です。
Proxy サーバの IP アドレスとポート番号を Adress:Port の形式で指定してください。
変更内容：即時有効
MAGIC.INI とコマンドラインでの名前：HTTPProxyAddress.

HTTP タイムアウト
HTTPGet/HTTPPost 関数を実行する場合のタイムアウトを指定します。
リファレンス
Magic eDeveloper V9 Plus57

第 2 章 - 設定
変更内容：即時有効
MAGIC.INI とコマンドラインでの名前：HTTPTimeout

データ出力 HTML テンプレート：（なし） ：省略可
データ出力ウィザードで HTML ファイルを作成する場合に使用する HTML テンプレー
ト ファイルを指定します。
変更内容：即時有効
Magic INI と コマンドライン名 : PrintDataHtmlTemplate

データ出力 XML テンプレート：（なし） ：省略可
データ出力ウィザードで XML ファイルを作成する場合に使用する XML テンプレート
ファイル（XSL ファイル ) を指定します。
変更内容：即時有効
Magic INI と コマンドライン名 : PrintDataXmlTemplate

WSDL ファイルのパス：（インストーラに依存）
この設定は、Web サービスインタフェースビルダ（WIB）が WSDL ファイルを保存する
際のデフォルトのフォルダとして使用されます。WSDL ファイルは、提供される Web
サービスの記述を提供します。WIB は、Magic のアプリケーションをもとにして WSDL
ファイルを作成します。WIB で変更しない場合は、このパス名をデフォルト値とします。
変更内容：即時有効
MAGIC.INI とコマンドラインでの名前： WSDLFilesPath

メール接続タイムアウト（秒）：（0）
有効な値：秒数
MailConnect 関数でメールサーバに接続する場合のタイムアウトを秒で指定します。もし指定した秒数以内に接続できない場合は、MailConnect 関数は、エラーコードを返します。
「0」の場合は、5 秒です。
変更内容：即時有効
MAGIC.INI とコマンドラインでの名前： MailConnectionTimeout

メール処理タイムアウト（秒）：（0）
有効な値：秒数
メール関数が処理する場合のタイムアウトを秒で指定します。もし指定した秒数以内に処理が完了しない場合、メール関数はエラーコードを返します。
変更内容：即時有効
MAGIC.INI とコマンドラインでの名前： MailOperationTimeout

SNMP データベース接続しきい値：（0）
有効な値：数値
Magicがトラップメッセージを送信する前に、DBMSの最大接続数の設定のように、DBMSに対して許可された接続数を超過する割合をパーセントで指定します。
変更内容：即時有効
Magic INI と コマンドライン名 : DatabaseConnectionsUtilizationThreshold

58

リファレンス
Magic eDeveloper V9 Plus

設定／動作環境

LDAP アドレス : ポート番号：（なし）：省略可
LDAP サーバの IP アドレスとポート番号を指定します。
例：127.1.1.0:389
変更内容：即時有効
Magic INI と コマンドライン名 : LdapAddress

LDAP 接続文字列：（なし） ：省略可LDAPサーバへの接続文字列を指定します。LDAPサーバによってこの設定は異なります。
LDAP サーバに対してユーザ認証を行う際のユーザ情報を検索するための User DN を指定します。接続文字列にはユーザー名が必要となります。この場合、ユーザー名を直接指定するか、$USER$ という特殊な論理名を指定することができます。Magic は、この名前をログイン時のユーザ ID に変換します。
例えば、iPlanet のディレクトリサーバのに接続する場合、以下のように指定します。
uid=$USER$,ou=people,dc=mydomain
変更内容：即時有効
Magic INI と コマンドライン名 : LdapConnectionString

LDAP ドメインコンテキスト：（なし） ：省略可LDAP サーバに登録されているグループ情報を検索する場合に必要な BaseDN を指定します。
例 :ou=groups, dc=mydomain
変更内容：即時有効
Magic INI と コマンドライン名 : LdapDomainContext

LDAP タイムアウト（秒）：（120［2 分］） ：省略可LDAP サーバにアクセスする際のタイムアウト値を 秒数で指定します。指定時間内に、LDAP サーバからの応答を受信できない場合、エラーメッセージが表示されます。
変更内容：即時有効
Magic INI と コマンドライン名 : LdapTimeout

SSL CA 証明書ファイル
CertSrv（Certificates Service of Microsoft）のような、すべての HTTP アクセスに使用される証明機関（CA）の証明書ファイルを指定します。CA 証明書ファイルはセミコロン (；) によって区切ることで複数指定できます。
以下の書式のファイルを指定できます。
• DER（.cer）• PEM（.pem）• PKCS7（.p7b）
クライアントが証明時に指定された CA が存在しない場合、以下のメッセージが表示されます。
The SSL CA Certificate doesn’t exist: [Name of the SSL CA Certificate]
変更内容：次のセッションから有効
Magic INI と コマンドライン名 : SSLCACertificates

リファレンス
Magic eDeveloper V9 Plus59

第 2 章 - 設定

SSL クライアント証明書ファイル
PKCS12 形式のクライアント証明書ファイル（*.pfx）を指定します。選択されたクライ
アント証明書は、コール Web サービスや HTTP の呼び出しの際に使用します。
アプリケーションのオープン時に、以下のクライアント証明書エラーがステータスバーに表示される場合があります。
• クライアント証明ファイルが存在しません .
• クライアント証明ファイルが PKCS12 形式ではありません .
• クライアント証明ファイルを使用できません - パスワードが正しくありません .
• クライアント証明ファイルに、CA 証明がありません .
• クライアント証明ファイルはすでに存在しています .
ClientCertificateDiscard 関数は、実行時に証明書を破棄します。
実行モードから開発モードに切り換えると、アプリケーションは Web サービスや HTTPSの呼び出しの際に、証明書を再登録します。
変更内容：次のセッションから有効
Magic INI と コマンドライン名 : SSLClientCertificateFile

SSL クライアント証明書パスワード
クライアント証明書の Export 用パスワードを入力します。
変更内容：次のセッションから有効
Magic INI と コマンドライン名 : SSLClientCertificatePassword［アプリケーションサーバ］タブ
アプリケーションサーバとして動作：（インストーラに依存）
有効な値 : Yes、No
Magic から MRB に対して接続が実行される際、Magic がアプリケーションサーバとして動作するかどうかを指定します。
• Yes……Magic がアプリケーションサーバとして MRB との通信処理を行います。したがって、プログラムを実行するためのリクエストを受け取ることができます。MRB が起動されていない場合、定期的にワーニングダイアログが表示されます。
• No……Magic は、MRB との通信処理を行いません。このため、クライアントからのリクエストを受け取ることができません。
変更の反映 : 次回のセッション
MAGIC.INI およびコマンドライン名 : ActivateRequestsServer

メッセージサーバ：（Default Broker）
有効な値：空白または［サーバ］テーブルに登録されているサーバ［アプリケーションサーバとして動作］欄を「Yes」とした場合、この欄に MRB の動作するサーバを指定します。ここで指定したサーバの MRB に Magic が接続され、Magic がアプリケーションサーバとして使用されることになります。
汎用メッセージレイヤと呼ばれる拡張されたクライアント／サーバインタフェースにより、各種の異なるネットワークに接続しアプリケーションを呼び出すなど、大変柔軟な構成が可能です。呼び出し側のクライアントは、汎用メッセージレイヤを利用すること
で、MRB などのメッセージサーバを介して、アプリケーションサーバを呼び出すことが
できます。

60

リファレンス
Magic eDeveloper V9 Plus

設定／動作環境変更の反映 : 次回のセッション
MAGIC.INI およびコマンドライン名 : MessagingServer

アプリケーションサーバはアプリケーションを変更可：（Yes）
有効な値 : Yes、No• Yes……アプリケーションサーバとして複数のアプリケーションファイルに対するリクエストを処理できます。リクエストの対象となるアプリケーションがオープンしていない場合、そのときオープンされているアプリケーションは閉じられ、リクエストされたアプリケーションがオープンされます。
• No……オープンしているアプリケーションに対するリクエストだけが処理され、それ以外のリクエストは拒否されます。
変更の反映 : 次のセッションから有効
MAGIC.INI およびコマンドライン名 : RequestsServerCanReplaceCtl

HTTP リクエスタ：（インストーラで設定）有効な値：空白または URL と Magic インターネットリクエスタモジュールの名前
URL と Magic インターネットリクエスタモジュールの名前を指定します。この URL を使用して、Magic インターネットリクエスタモジュールの名前と場所がプログラムに伝えられます。
デフォルトの HTTP リクエスタは、インストール時に設定されます。
変更の反映 : 即時有効
MAGIC.INI およびコマンドライン名 : InternetDispatcherPath

Web ドキュメントパスの別名：（インストーラで設定）有効な値：エイリアス（ドキュメントパスの別名）
エイリアスを指定します。このエイリアスを使用して、インターネットサーバ上に一時ファイルが作成されます。エイリアスは、Web のすべての一時ファイルに対して追加され、Web サーバでは、このエイリアスを使用してアクセスが実行されます。
デフォルトのドキュメントパスの別名は、インストール時に設定されます。
変更の反映 : 即時有効
MAGIC.INI およびコマンドライン名 : WebDocumentAlias

Web ドキュメントパス：（インストーラで設定）有効な値：HTML で使用するイメージ、Java 、ActiveX のデータが置かれているパス
HTML で使用するイメージ、Java 、ActiveX のデータが置かれているパスを指定します。
パスは、実行時の Web サーバのルートをもとに指定します。このパスは、HTML フォー
ムの［ブラウザで表示］コマンドを使用して HTML ファイルを作成するときにも使用されます。
デフォルトのドキュメントパスは、インストール時に設定されます。
変更の反映 : 即時有効
MAGIC.INI およびコマンドライン名 : WebDocumentPath

リファレンス
Magic eDeveloper V9 Plus61

第 2 章 - 設定

リクエスタのタイムアウト（秒）：（0）
有効な値：MRB からリクエスタに対して信号が返るまでの時間（秒単位）
MRB からリクエスタに対して信号が返るまでの時間を秒単位で指定します。信号が返るまでの時間が、この長さを超えると、エラーメッセージが表示されます。
デフォルト設定の「0」の場合、タイムアウトは発生しません。
変更の反映 : 次のセッションから有効
MAGIC.INI およびコマンドライン名 : RequesterTimeout

最大並行リクエスト数：（0）
有効な値：ライセンスで決まるユーザ数以下の値
アプリケーションサーバが作成することができるスレッドの最大数を制限することができます。スレッドの上限数は、ライセンスおよびマシンの容量によって制限されます。
デフォルトの「0」の意味は、ライセンスサーバによって管理される、ライセンスの上限値までスレッドが立ち上がることを意味します。
「0」以外の数値を設定すると、その数値とライセンスの上限値を比較し、小さいほうの値が有効になります。
変更の反映 : 即時有効
MAGIC.INI およびコマンドライン名 : MaxConcurrentRequests

ロードバランシングの優先度：（3）有効な値：1 から 5 までの数値
アプリケーションサーバとしての Magic エンジンの優先順位を定義します。
1 から 5 までの数値を設定できます。「5」がもっとも優先度が高く、「1」が最も低くな
ります。リクエストは、優先度の高いアイドル状態のエンジンに送られます。
変更の反映 : 次のセッションから有効
MAGIC.INI およびコマンドライン名 : LoadBalancingPriority

Web オーサリングツール：（インストーラで設定）［Web オーサリングツール］の設定によって、HTML マージフォームの編集に使用する外部の Web オーサリングツールを指定することができます。
フォームテーブルで HTML マージフォームのエントリにズームすると、［フォーム特性］ダイアログで指定した HTML ファイルが Web オーサリングツールで呼び出され、データ項目パレットが表示されます。Web オーサリングツールで OLE のド
ラッグアンドドロップがサポートされている場合、Magic から HTML テンプレートにデー
タ項目を直接ドラッグアンドドロップしたり、コピー / 貼り付けしたりすることができます。
変更の反映 : 即時有効
MAGIC.INI およびコマンドライン名 : AuthoringToolPath

コンテキスト非稼動タイムアウト（1/10 秒）：（12000［20 分］）
この設定では、ブラウザベースのプログラムを実行しているユーザを、実際はアクティ
ブでない Magic アプリケーションに接続したままにする時間を 1/10 秒単位で指定することができます。値が「0」の場合、タイムアウトは発生しません。
この設定は、バックグラウンドモードでのみ有効です。

62

リファレンス
Magic eDeveloper V9 Plus

設定／動作環境変更の反映 : 即時有効
MAGIC.INI およびコマンドライン名 : ContextInactivityTimeout

コンテキストのアンロードタイムアウト（1/10 秒）：（200［20 秒］）
この設定では、ブラウザ（［戻る］、［進む］、別の URL など）を使用してタスクページが別のページに切り替えられたときのコンテキストのタイムアウト値を指定することができます。タイムアウト値を超えていない場合、前のページに戻ると、最後に配置された
コンテキストが再度読み込まれます。タイムアウト値を超えると、前のタスクページのコンテキストは終了します。
タイムアウト値は 1/10 秒単位で定義されます。0 に設定された場合、タイムアウトの時間は設定されず、コンテキストは即終了します。
変更の反映 : 即時有効
MAGIC.INI およびコマンドライン名 : ContextUnloadTimeout

ブラウザクライアントモジュールのクライアント配置：（Yes）
有効な値 : 「Yes」または「No」
ブラウザベースのプログラムにおいて使用するモジュール（JavaApplet）をクライアントに配置するかどうかを指定します。
クライアントに配置することにより、モジュールのロード時間を短縮できます。
• Yes …… モ ジ ュ ー ル を ク ラ イ ア ン ト に 配 置 し ま す。使 用 さ れ る モ ジ ュ ー ル は
Launcher.CAB および MGBC9##_##S.CAB になります。##_## の部分にはバージョンとサブバージョンを表す数値が入ります。
• No …… モ ジ ュ ー ル を ク ラ イ ア ン ト に 配 置 し ま せ ん。使 用 さ れ る モ ジ ュ ー ル は
MGBC9##_##.CAB になります。##_## の部分にはバージョンとサブバージョンを表す
数値が入ります。
変更の反映 : 即時有効
MAGIC.INI およびコマンドライン名 : UseSignedBrowserClient

ブラウザクライアントのサブバージョン：
ブラウザベースのプログラムにおいて使用する JavaApplet および JavaScript の Magic が管理するサブバージョンを指定します。
この設定は文字列で［03］のように指定します。
［03］と指定した場合、Magic Ver.9.X において使用されるファイルは以下のようになります。
• JavaApplet ……MGBC9X0_03.CAB または MGBC9X0_03S.CAB• JavaScript ……MGBC9X0_03.JS
この指定がない場合、Magic に標準添付されているファイルが使用されます。
変更の反映 : 即時有効
MAGIC.INI およびコマンドライン名 : BrowserClientSubVersion

ブラウザクライアント方式：（J=Java）
アプリケーションサーバでブラウザクライアントアプリケーションを実行する際、次のどちらの機能を利用するかを指定します。
• Microsoft .NET
• Microsoft JVM
以下のオプションを選ぶことで一方または両方の機能を利用することができます。
• J=Java……Microsoft JVM のみを利用します。
リファレンス
Magic eDeveloper V9 Plus

63

第 2 章 - 設定
• N=.NET……Microsoft .NET フレームワークのみを利用します。
• A=Java か .NET……両方の機能が利用できます。アプリケーションは、最初に JVM
で実行しようとします。
• E=.NET か JAVA……両方の機能が利用できます。アプリケーションは、最初に .NET
フレームワークで実行しようとします。
クライアントに実行環境がインストールされていない場合、アプリケーションは実行されず、エラーが表示されます。
変更の反映 : 次のセッションから有効
MAGIC.INI およびコマンドライン名 : BrowserClientTechnology

ブラウザクライアント環境エラー URL：（/Browser_Client_Tech_err.htm）
ブラウザクライアントを実行する環境（JVM または .NET フレームワーク）がクライア
ントにインストールされていない場合に表示するエラーメッセージ用のページの URL を指定することができます。
変更の反映 : 即時有効
MAGIC.INI およびコマンドライン名 :BrowserClientTechnologyErr

ブラウザクライアントネットワーク復旧タイムアウト：（0 秒）
ブラウザクライアントアプリケーションをナローバンドで実行する場合に有効です。このタイムアウト値を指定すると、クライアントは、指定された時間で処理されなかった
リクエストの復旧処理を試みます。復旧処理を無効にする場合は、「0」（デフォルト値）
を指定してください。
変更の反映 : 次のセッションから有効
MAGIC.INI およびコマンドライン名 : BrowserClientRecovery

ブラウザクライアントのキャッシュパス：（インストーラで設定）
ブラウザクライアントのキャッシュ機能によって、サーバからクライアントまでのデー
タ送信最小限にし、クライアント側のページの XML のロジックのセグメントをキャッシュすることで、ブラウザクライアントアプリケーションのパフォーマンスを改善します。
この設定には、エンジンがキャッシュファイルを作成する物理パスを指定します。
変更の反映 : 即時有効
MAGIC.INI およびコマンドライン名 : CTLCacheFilesPath

ブラウザクライアントのキャッシュエイリアス：（インストーラで設定）
ブラウザクライアントの結果ページは、ブラウザクライアントがキャッシュしたファイルに対する URL 参照が要求です。
ここで、キャッシュパスのエイリアスを指定できます。
変更の反映 : 即時有効
MAGIC.INI およびコマンドライン名 : CTLCacheFilesAlias

フォアグラウンドでのコンテキスト管理：（S= 単一共通コンテキスト）
この設定で、フォアグラウンドエンジンをバックグラウンドエンジンのように動作させたり、単一共通コンテキストで動作させたりすることができます。
• S= 単一共通コンテキスト……エンジンは、同じコンテキスト内で全ての処理を実行します。以前のバージョンと同じ動作です。（デフォルト）64• B= バックグラウンドエンジンと同じ……エンジンは以下のような動作になります。
リファレンス
Magic eDeveloper V9 Plus

開発モードでの拡張設定•

実行モードに切り替えてもメインプログラムのタスク前処理は実行されません。

•

メニューリポジトリに登録されたメニューは表示されません。メニューは、ア
プリケーションを閉じるたり開発モードに切り替えるオプションなど限定された機能のみ表示されます。

•

メインプログラムのイベントはアイドル時に実行されません。

•

リクエストを受けた場合は以下のように動作します。

••

メインプログラムのタスク前処理が実行されます。

•

新しいコンテキストが作成されます。

•

リクエストの処理が終了したり、上位のブラウザタスクが終了した場合、メインプログラムのタスク後処理が実行され、コンテキストが消滅します。

リクエスト毎に新しいコンテキストを作成すると以下のようになります。
•

全てのメインプログラムの変数が初期化されます。

•

全てのメモリテーブルが初期化されます。

•

全てのグローバル変数が初期化されます。

•

全ての動作環境の設定が初期化されます。

変更の反映 : 次のセッションから
MAGIC.INI およびコマンドライン名 : ForegroundContextManagement

Magic のデフォルト値
アプリケーションのデフォルト値とデフォルトの NULL 表示文字列を設定するには、
Magic.ini の ［MAGIC_DEFAULTS］セクションで定義してください。これらの設定は、Magic.ini ファイルの変更のみで行います。動作環境ダイアログではできません。この設
定がない場合は、Magic 内のデフォルト値を使用します。
Magic.ini 内で指定できるキーワードは以下の通りです。
［MAGIC_DEFAULTS］
DefaultDate= ［Date value］
NullAlphaDisplay = ［string value］
NullNumericDisplay = ［string value］
NullLogicalDisplay = ［string value］
NullDateDisplay = ［string value］
NullTimeDisplay = ［string value］
NullMemoDisplay = ［string value］
NullBlobDisplay = ［string value］
DefaultDate の書式は、日付モードに依存します。

開発モードでの拡張設定
Magic.ini に［Tool_Menu］セクションが追加され、Magic 開発者に任意のユーティリティ
アプリケーションを実行させるように指定させることができます。
詳細は、第 19 章「ユーティリティ」の「ユーザ定義開発メニュー」を参照してください。
リファレンス
Magic eDeveloper V9 Plus

65

第 2 章 - 設定

JAVA の環境設定
Magic 開発者は、OS の環境変数を設定しないで Java のクラスをロードして有効化することができます。Java クラスの設定は、Magic の動作環境設に組み込まれました。

［MAGIC_JAVA］セクション
MAGIC.INI に［ MAGIC_JAVA］セクションを追加することで、以下のように Java 設定を指定することができます。
• JAVA_HOME……この設定は、クライアントにインストールされた JVM のパスを定義します。これにより、OS 上の JAVA_HOME を Magic の動作環境で設定された内容で上書きします。
• CLASSPATH ……この設定は、JVM 用の追加クラスのパスを定義します。これにより、Magic の識別子が、OS の CLASSPATH の設定に追加されます。

設定／基本色［設定／基本色］テーブルでは、初期値として 100 の項目について前景と背景の色が設定されています。項目の中には、システムに予約されている色や処理コマンド定義色があります。これらは固定ではなく、変更することができます。また、ユーザが自由に用途を定義できるユーザ定義色は、101 番以降に追加することができます。.

図 2-6 基本色テーブル［基本色］テーブルの設定欄#
自動的に連番が振られます。番号は Magic により識別子として使用され、ユーザが変更
することはできません。

名前66

リファレンス
Magic eDeveloper V9 Plus

設定／基本色
色を割当てる場所や機能を説明するテキストを指定します。この名前は、保守しやすくするため、できるだけ分かりやすい表現にしてください。

前景、背景各項目の前景と背景の色を設定します。1 番から 100 番までは Magic によって用途が固定されていますので、色の変更をするときは慎重に行う必要があります。ユーザが追加
登録した場合、［設定／動作環境］の［デフォルト色］欄で設定されている番号の色を複写します。
［デフォルト色］欄が「0 」の場合、システム予約色が用いられ、前景は［ウィンドウ内の文字］、背景は「ウィンドウの背景」となります（1 番の設定内容と同じになります）。

基本色定義ダイアログ

図 2-7 基本色定義ダイアログ

色を変更する場合、変更する［前景］欄または［背景］欄にカーソルを置きズームを実行し、［基本色定義］ダイアログをオープンします。ダイアログの左上部には基本色が一覧表示されていますので、ここから基本となる色をクリックして選択します。選択すると、その色が太い境界線で囲まれます。
選択した色に対して、
［赤］、
［緑］、
［青］、
［色合］、
［濃さ］、
［輝度］の各数値を変更して色の調整を行えます。
［基本色定義］ダイアログのタイトルバーには、［基本色］テーブルのカレント行の［名前］と［前景］または［背景］が表示されます。
また、［基本色定義］ダイアログには［システムカラー］コンボボックスがあり、Windowsのシステムで使用している色を設定できます。
背景色は、［システム色］の指定が空白の時のみ［透過指定］のチェックボックスが有効になります。
• 「OK 」ボタンをクリックすると、色の設定が確認され［基本色定義］ダイアログがク
ローズします。
• 「キャンセル」ボタンをクリックすると、色の設定がすべて取り消され、［基本色定義］
ダイアログがクローズします。
なお、背景と前景の色を同じ色にすると、文字が見分けられなくなりますので注意して
ください。

サンプル
［基本色定義］ダイアログで指定した背景と前景の色を使用したサンプルが表示されます。
リファレンス
Magic eDeveloper V9 Plus

67

第 2 章 - 設定［基本色］テーブルで行った変更の保存［基本色］テーブルで［OK］ボタンをクリックすると色の変更が確定されます。変更後の設定は、基本色ファイルに保存されます。Magic が使用する基本色ファイルは、［動作
環境］／［外部参照ファイル］タブ／［基本色定義ファイル］欄で指定します。このファ
イルのデフォルト名は、CLR_STD.JPN ですが名前を変更することで複数作成し使用する［ファイこともできます。なお、Enter キーを押下して基本の色編集作業を終了すると、
ル保存］ダイアログが表示され、保存の確認が求められます（図 2-5 ）。

図 2-8 基本色テーブルの保存［ファイル保存］ダイアログには［保存ファイル］欄があります。現在使用している基本
色ファイル以外のファイルに設定を保存したい場合、そのファイルの名前を入力します。
［基本色］テーブルで行った変更は、次に Magic を起動したときに有効になります。ただし、［ファイル保存］ダイアログの［即時有効］欄を「Yes」にした場合には変更が直ちに有効になります。
変更の即時有効を実行した場合、変更が加えられた［基本色］テーブルが読み込まれます。また、その後に開かれたウィンドウはすべて、この［基本色］テーブルが使用されます。ただし、現在、すでに表示されているウィンドウは、再表示されるまでは変更されません。
アプリケーションによっては、［動作環境］で指定されているデフォルトの基本色ファイ
ルの代わりに、そのアプリケーション独自の基本色ファイルを使用することもできます。
OS のシステムカラーやカラースキームを変更しても、Magic には即時に反映されません。
その変更が有効になるのは、次に Magic が起動したときです。
以下の基本色定義は、開発、実行環境で異なります。

68

実行環境

開発環境

(1) 基本色(18) 開発基本色(2) 基本項目色（平面）(19) 開発基本項目色（平面）(5) 基本項目色（立体）(20) 開発基本項目色（立体）リファレンス
Magic eDeveloper V9 Plus

設定／フォント

設定／フォント［フォント］テーブルでは、Magic およびアプリケーションで使用するフォントを設定します。100 番までが Magic で予約されており、101 番以降ユーザが項目を追加することができます。項目の中には、基本ダイアログ項目、基本ダイアログタイトル、標準プッシュ
ボタン、ステータスラインなど、あらかじめフォントが定義されているものもありますが、大多数はユーザによる定義が可能です。
［フォント］テーブルの登録数に制限はありません。

図 2-9 フォントテーブル［フォント］テーブルの内容は、フォント定義ファイルに保存されます。使用するフォント
定義ファイルは、［動作環境］／［外部参照ファイル」タブの［フォント定義ファイル］欄で指定できます。

［フォント］テーブルの設定欄#
自動的に連番が振られます。番号は Magic により識別子として使用され、ユーザが変更
することはできません。

名前フォントを割当てる場所や機能を説明する名前を入力します。この名前は、保守しやすくするため、できるだけ分かりやすい表現にしてください。

フォント
MS 明朝、MS ゴシックなどのフォント名です。フォントを変更したい場合、この欄から実行し、［フォント定義］ダイアログをオープンします。このダイアログで［フォント名］、［スタイル］（ボールド、イタリックなど）、［文字飾り］（取消線、下線など）、［サイズ］および［傾き］を選択します。
ユーザが追加登録した場合、［動作環境］／［動作設定］タブの「デフォルトフォント」
欄で設定されている番号のフォントを複写します。この欄が「0」の場合、フォント名「MSP ゴシック」でサイズ「8 」となります。

スタイル
リファレンス
Magic eDeveloper V9 Plus69

第 2 章 - 設定
フォントの［スタイル］や［文字飾り］の選択状態を記号で表示します。

サイズ
フォントのサイズを表示します。フォントサイズは 1-999 までの 1 ポイント単位で指定します。（小数点での指定はできません。）

傾き
フォントの傾きを表示します。
フォントの傾きは、そのフォントを使用するコントロールがタブコントロールまたはテ
キストコントロールのときにだけ有効です。この 2 つのコントロール以外のコントロー
ルでフォントの傾きを指定すると、フォントが正常に表示されないことがあります。また、テキストコントロールにフォントを指定すると、フォームエディタでは直接テキス
トを編集することができなくなります。その場合、テキストコントロールの［コントロー
ル特性］ダイアログでテキストを編集しなければなりません。

サンプル［フォント定義］ダイアログで指定したスタイルを使用したサンプルが表示されます。

［フォント定義］ダイアログ［フォント定義］ダイアログのタイトルバーには、［フォント］テーブルで現在選択している行の［名前］が表示されます。

図 2-10 フォント定義ダイアログ［フォント定義］ダイアログでフォントの設定を行った後、［OK ］ボタンをクリックす
ると、［フォント定義］ダイアログがクローズし［フォント］テーブルに戻ります。
［フォント定義］ダイアログで［キャンセル］ボタンをクリックすると、それまで行った
変更がすべて取り消され、［フォント］テーブルに戻ります。
以下のフォントは、開発、実行環境で異なります。

70

実行環境

開発環境

(1) 基本テーブル項目(23) 開発基本テーブル項目
リファレンス
Magic eDeveloper V9 Plus

設定／キーボード割付(9) 基本プッシュボタンフォント(27) 開発基本プッシュボタンフォント［フォント］テーブルで行った変更の保存［フォント］テーブルで［OK］ボタンをクリックするとフォントの変更が確定されます。
変更後の設定は、フォントファイルに保存されます。
Magic で使用するフォントファイルは、［動作環境］／［外部参照ファイル］の［フォント定義ファイル］欄で指定します。このファイルのデフォルト名は fnt_std.jpn ですが、名前を変更することで複数作成し使用することもできます。

図 2-11 フォント定義ファイルへの保存

設定／キーボード割付
アクション
Magic には内部コマンドが用意されており、このようなコマンドを「Magic アクション」
または単に「アクション」と呼びます。Magic アクションは低レベルのコマンドで、Magic
でのみ解釈が可能です。アクションにはそれぞれ独自の機能が用意されており、ユーザ
が何らかの操作を行った場合、その操作は Magic により所定の処理を実行するアクショ
ンに変換されます。たとえば、終了アクションでは、現在の処理が終了します。また、バージョン情報アクションでは、［バージョン情報］ダイアログが開きます。ショート
カットキーを使用して操作するユーザのため、アクションにキーを割当てておくと便利です。このアクションのキーボードへの割当には、［キーボード割付］テーブルを使用します。
Magic には多くのアクションが組み込まれており、それぞれ、独自の機能が割当てられています。いくつかのアクションはグローバルであり、Magic のすべての環境で動作します。また、いくつかのアクションは特定の条件でのみ有効です。特定の条件でのみ有効なアクションは、その条件でのみ機能することから、異なるアクションに同じキーを割当てることができます。キーが同じでも、条件が異なれば、実行されるアクションも異なるからです。

アクションのステータス
アクションには、そのアクションが実行される条件を設定することができます。この条
件をステータスといい、全てのステータスが満たされた場合にのみアクションが実行されます。ステータスは、最高で 4 つまで指定できます。４つのステータスは、AND 条件
で動作します。ステータスに関連する状況としては、「表」と「編」の 2 種類があります。
• 表……フォームやレコードレベルアクションに関係するステータスを意味します。
• 編……コントロールレベルのアクションに関係するステータスを意味します。
たとえば、以下は２つの異なったステータスの例を示します。
• 表 : 非画面先頭……カーソルが、画面やテーブルの先頭にない場合のみアクションが有効です。
リファレンス
Magic eDeveloper V9 Plus71

第 2 章 - 設定
• 編 : 非フォーム先頭……カーソルが、チョイスコントロールの最初の値や複数行編集
用コントロールの最初の行にない場合のみアクションが有効です。
「表」では、テーブルに関連する各種ステータスが有効になります。また、「編」では、
項目エディタに関連する各種ステータスが有効になります。テーブル編集、項目編集のどちらも、ステータスは複数あり、現在、どのようなステータスにあるかはユーザの操作状況によって決まります。また、この複数のステータスの組み合わせによって、キーと状況が同じであっても、異なるアクションとして判断させることができます。

アクションの例
テーブル編集では、 Ctrl+PageDown キーは［テーブル末尾］アクションが割当てられています。このアクションの実行後、テーブルデータの最後の行にカーソルが移動します。また、Ctrl+PageDown キーは、［画面末尾］アクションも割当てられていて、このアクションでは、現在画面に表示されているテーブルの最後の行にカーソルが移動します。ここではどちらの場合も、キーは同じ Ctrl+PageDown であり、状況も同じくテーブル編集です。キーと状況が同じでも違うアクションとして識別されるのは、ステータ
スが異なるためです。つまり、［テーブル末尾］アクションに定義されているステータス
は［表：画面末尾］であり、この場合、画面に表示されているテーブルの最後の行にカーソルがあり、その状態で Ctrl+PageDown キーが押されたときにアクションが実行されます。一方、［画面末尾］アクションに定義されているステータスは［表：非画面末尾］です。この場合、画面に表示されているテーブルの最後の行以外の行にカーソルがあり、その状態で Ctrl+PageDown キーが押ます。この 2 種類のステータスは排他的なのでキーと状況が同じであっても、それぞれのステータスに対応されたときにアクションが実行されしたアクションが実行されます。

［キーボード割付］テーブル［キーボード割付］テーブルは、メインテーブルと、［ステータス］ウィンドウで構成されています。メインテーブルの上部のタイトルバーには、現在使用されているキーボー
ド割付ファイルの名前が表示されます。テーブルの各行には、キーと、そのキーに関連付けられているアクションが表示されます。
［ステータス］ウィンドウには、テーブルで現在選択されている行のステータスが表示されます。
［キーボード割付］テーブルでは、キーとアクションの変更、削除、追加が可能です。ただし、そのキーがあるアクションの最後のキーの場合、削除はできません。テーブルに新規の行を追加すると、１つ前のアクションがが複写されます。なお、キーはコピーされません。

図 2-12 キーボード割付テーブル

72

リファレンス
Magic eDeveloper V9 Plus

設定／キーボード割付［キーボード割付］テーブルの設定欄#
自動的に連番が振られます。番号は、ユーザが編集することはできません。

アクション
Magic により決められているアクションの名前が表示されます。この名前は、ユーザは編集できません。
［キーボード割付］テーブルでは同じアクション名が複数の行に表示されることもありますが、これは、同じアクションに複数のキーが割当てられていることを示しています。その場合、複数のキーを使用して、そのアクションを実行できます。
アクションに割当てられたキーのいずれかを押すと、アクションが呼び出されます。

キーアクションに割当てられているキーが表示されます。キーを指定する場合、この欄からズームを実行し、［キー設定］ダイアログをオープンします。このダイアログでアクションに設定したいキーを実際にキーボードで押下します。最後に［OK ］ボタンをクリッ
クすると、そのキーが有効だった場合、そのキーが登録されます。
［キャンセル］ボタン
をクリックすると設定を取り消します。
［キー設定］ダイアログではスペースバーを使用
して、キーをクリアできます。
この欄に「内部」という文字が表示されている場合、そのアクションに対する操作が許されず、再定義もできないことを示しています。

ステータス
アクションに設定されているステータスの数が表示されます。この数の条件がすべて満たされた場合にそのアクションが実行されます。この欄からズームを実行すると、［ス
テータス］ウィンドウにカーソルが移動します。このウィンドウを使用して、アクションとの条件を設定できます。

図 2-13 キーボードステータス一覧

リファレンス
Magic eDeveloper V9 Plus73

第 2 章 - 設定

ステータス 1 〜ステータス 4
ステータスを設定する場合、ステータスのいずれかの欄にカーソルを置き、ズームを実行し、表示されたステータス一覧から設定したステータスを選択します。ステータスは、
１ つのアクションにつき、最高で 4 つまで設定できます。ここで指定したステータスがすべて満たされた場合にそのアクションが実行されます。

［キーボード割付］テーブルで行った変更の保存
キーボード割付の設定は、キーボード割付ファイに保存されます。Magic が使用するキー
ボード割付ファイルは、［動作環境］の［キーボード割付ファイル］欄で指定します。このファイルのデフォルト名は、ACT_STD.JPN ですが、名前を変更することで複数作成し使用することもできます。
［キーボード割付］テーブルで編集作業を終了すると、［ファ
イル保存］ダイアログが表示され、保存の確認が求められます。
［ファイル保存］ダイアログには［保存ファイル］欄があります。現在使用しているキー
ボード割付ファイル以外のファイルに設定を保存したい場合、そのファイルの名前を入力します。
［キーボード割付］テーブルで行った変更は、次に Magic を起動したときに有効になります。ただし、［ファイル保存］ダイアログの［即時有効］欄を「Yes」とした
場合は、変更が直ちに有効になります。変更の即時有効を実行した場合、変更が加えられた［キーボード割付］テーブルが読み込まれ、その設定が使用されます。

設定／サーバ
Magic サーバは、Magic に組み込まれているクライアント / サーバ機能を実現するための基本構成要素です。Magic サーバは、リモートの Magic アプリケーションから、データ
ベース処理や入出力ファイル処理ができるファイル管理とサーバタイプ（バッチ）プロ
グラムを実行するエンジンです。クライアントに Magic をインストールすることにより、
各種プラットフォームやオペレーティングシステムで稼働する Magic サーバに対して、種々の通信プロトコルを介してアクセスできます。
［サーバ］テーブルでは、リモート Magic サーバを定義し、データベースおよびファイル
入出力サービスを使用できるようにします。
［サーバ］テーブルでは、ローカルの Magicが Magic サーバと通信する方法も定義します。
詳細は、第 20 章「分散アプリケーション アーキテクチャ」を参照してください。

図 2-14 ［サーバ」テーブル74

リファレンス
Magic eDeveloper V9 Plus

設定／サーバ［サーバ］テーブルの設定欄
名前
アクセスしたい Magic サーバ名を定義します。

サーバタイプ［サーバタイプ］では、ホストサーバとのデータ送受信が可能なサーバタイプを指定します。この欄からズーム（F5）し、使用できるサーバタイプの一覧から選択することで設定します。有効な通信ドライバが認識できなかった場合、この欄は「Unknown」と表示され、この状態でサーバと通信しようとしても失敗します。
使用できるサーバタイプは次のとおりです。
• Magic Request Broker……MRB（Magic Requester Broker）との接続が可能です。MRB
が［サーバタイプ］一覧に表示されるのは、MRB が適切な MAGIC.INI セクションで定義されていて、通信サポートがインストールされている場合のみです。
• SOAP……Web サービスのリクエストを Web サービスプロバイダに送ることができます。

サーバアドレス［サーバアドレス］欄には、ローカルの Magic が接続しているネットワーク上のサーバア
ドレスを指定します。このアドレスを使用して、サーバとローカルの Magic との接続が行われます。サーバアドレスは、「/」で区切られた 2 つの部分から構成されます。たと
えば、サーバが Windows サーバ上に置かれており、通信プロトコルが TCP/IP の場合、書式は次のようになります。
XXXXX/YYYYY
ここで、
XXXXX は、サーバのコンピュータ名（または、IP アドレス）です。コンピュータ名を指定する場合は、クライアント側の hosts ファイルにサーバのコンピュータ名と IP アド
レスの情報を設定しておく必要があります（例：MGSRV1）。
YYYYY は、サーバ PC 上の MRB のソケット番号です（例：3001 など）。
上記の例では、MGSRV1/3001 が、Magic サーバの TCP/IP アドレスになります。
［サーバ］テーブルには、デフォルトで［DEFAULT］という名前のサーバが登録されており、このサーバだけは削除することができません。DEFAULT サーバは、ローカルに
インストールされている Magic の「ローカルサーバ」であり、通信ドライバやアドレスは必要ありません。
［サーバ］テーブルの設定情報は、MAGIC.INI の［MAGIC_SERVERS］セクションにあり
ます。

サーバ特性
［サーバ］テーブルの各サーバには対応する［サーバ特性］ダイアログがあります。サー
バを選択し、［編集／特性］を選択するか、 Ctrl+P キーを押すか、マウス右ボタンをクリックしてコンテキストメニューを開き、特性を選択すると開きます。
［サーバ特性］ダイアログでは、次の項目について設定します。

ユーザ名
データサーバの場合のみ有効です。サーバへ Logon するためのユーザ ID を指定します。
リファレンス
Magic eDeveloper V9 Plus75

第 2 章 - 設定

パスワード
アプリケーションサーバの場合、MRB の PasswordSupervisor の内容と同じ設定をします。

タイムアウト
タイムアウト時間を指定します。
MRB の場合は秒単位です。
サーバからの応答がないまま、この時間が経過すると、ドライバから Magic に対してエラーが報告されます。

代替サーバ
代替サーバの名前を指定します（省略可）。
［サーバ］テーブルのサーバが使用できない場合、この代替サーバが使われます。ズーム
すると同じサーバタイプのサーバ一覧が表示されます。

通信ゲートウェイ
ホストサーバとの間でデータの送受信を行う場合に使用する通信プロトコルを設定します。
通信プロトコルを設定する場合、この欄からズームを実行し、表示された通信ドライバの一覧から使用するプロトコルを選択します。なお、この一覧に表示される通信ドライ
バは、Magic を起動する際にロードされていたものに限られます。ローカルの Magic で使用する通信プロトコルとサーバの通信プロトコルは同じでなければなりません。
ここはデータサーバのみ有効です。

設定／サービス

図 2-15 ［サービス］テーブル［サービス］テーブルの設定欄#

76

リファレンス
Magic eDeveloper V9 Plus

設定／サービス
自動的に連番が振られます。番号は Magic により行の識別子として使われ、ユーザが変更することはできません。

名前サービスの名前です。同じ名前を複数指定することはできません。

サーバ
サーバを指定します。この欄からズームを実行し、表示されたサーバの一覧から使用するサーバを選択します。

リモートアプリケーション
Magic アプリケーションの名前です。この欄からズームを実行すると、同一システム上で登録されているアプリケーションの一覧が表示され、選択できます。他の PC 上に設定されたアプリケーションは、アプリケーション名を入力してください。
Web サービスリクエスト用に SOAP サーバを選択した場合は、Web サービスプロバイダから提供される WSDL(Web Service Description Language) ファイルをもとに定義されます。

サービス特性［サービス］テーブルには、［サービス特性］ダイアログがあります。このダイアログは、［編集／特性］あるいは、コンテキストメニューの［特性］を選択すると表示されます。

図 2-16［サービス特性］ダイアログ［サービス特性］ダイアログには、以下の設定欄が用意されています。

ユーザ名
サーバに対してリクエストを送信した場合、ログオンが実行されますが、このユーザ名
がログオン時に使用されます。

パスワード
特定の Magic アプリケーションに対してリクエストを送信する際、ユーザ名とともに使用されます。

フィルタ
リファレンス
Magic eDeveloper V9 Plus77

第 2 章 - 設定
この特性は、アプリケーションサーバからのリモートの呼び出しの場合にのみ有効です。
このため、サーバタイプが「MRB」のサーバを定義している場合のみ表示されます。
全スレッドのうちどの位の割合がアプリケーションサーバー用に使用されるかを明示的に指定する場合に指定します。
フィルタ機能の詳細は、第 20 章「分散アプリケーション アーキテクチャ」の「リク
エストのフィルタ機能」を参照してください。

設定／ビジュアル接続［ビジュアル接続］ダイアログでは、特定の Magic サービスと使用可能なサーバの一覧との関係を見ることができます。また、接続を示す線を動かして、接続先のサーバを変更することもできます。

図 2-17 ビジュアル接続の画面例

78

リファレンス
Magic eDeveloper V9 Plus

設定／通信ゲートウェイ

設定／通信ゲートウェイ

図 2-18 通信ゲートウェイテーブル［通信ゲートウェイ］テーブルは、Magic の初期化時に自動的に生成されます。このテーブルには、Magic の起動前にロードされている通信ドライバがすべて表示されます。な
お、通信ドライバは、［通信一覧選択］ウィンドウにも表示されます。ローカルの Magicとホストの Magic サーバとは、通信ドライバを使用して接続されます。

［通信ゲートウェイ］テーブルの設定欄#
自動的に連番が振られます。番号はユーザが変更することはできません。

名前
通信ドライバの名前です。ここには、Magic でサポートされている通信ドライバの名前を指定します。

タイムアウト
タイムアウト時間を秒単位で指定します。接続先から応答がないまま、この時間が経過すると、ドライバから Magic に対して通信エラーが報告されます。

パラメータ
カスタマイズ情報を入力します。この情報は、通信の実行時、通信ドライバに送られます。

ID
この［ID ］欄の値はユーザが変更してはいけません。この ID は内部 ID であり、このコードをもとに Magic により通信プロトコルが識別されるからです。
［通信ゲートウェイ］テーブルの設定内容は、MAGIC.INI の［MAGIC_COMMS］セクショ
ンに保存されます。

リファレンス
Magic eDeveloper V9 Plus79

第 2 章 - 設定

設定／ DBMS［設定／ DBMS ］テーブルには、Magic でサポートされる DBMS （データベース管理システム）が表示されます。この［DBMS］テーブルには、後述の［データベース］テー
ブルとは異なり、DBMS の特性についての一般的な情報は含まれていますが、個々のデー
タベースの固有設定情報は含みません。
DBMS によって構成された各データベースに対し、物理的アクセスができるようにする
ためには、Magic のロードに先立って、該当 DBMS に対応するデータベースゲートウェ
イをロードしておかなければなりません。データベースゲートウェイは、Magic と DBMSとの間のインタフェースとして機能します。たとえば、Microsoft SQL Server や Oracle デー
タベースにアクセスするためには、Magic をロードする前に、Microsoft 用または Oracle
用の Magic データベースゲートウェイをロードする必要があります。

図 2-19 ［DBMS］テーブル

Magic は、以下の DBMS との接続をサポートしています。
• Pervasive.SQL ISAM Engine• DB2 UDB
• Microsoft SQL Server（MSDE を含む）
• Oracle• ODBC（Open Database Connectivity）［DBMS］テーブルの設定欄#
この欄には、自動的に連番が入ります。この連番は、Magic により DBMS の識別子として使われます。この欄の番号は、ユーザが編集することはできません。

名前
この欄には、DBMS の名前が表示されます。

2 相コミット
無効です。このオプションは使用できません。

80

リファレンス
Magic eDeveloper V9 Plus

設定／ DBMS

NULL• Yes……DBMS で NULL 値がサポートされており、Magic アプリケーションでテーブルの値として NULL を使いたい場合、「Yes」に設定します。
• No……DBMS で NULL 値がサポートされていないとき、またはアプリケーションで必要ないときには、この欄は「No 」にします。
この欄は、Magic の開発モードで新規のカラムや項目モデルを作成するときのデフォル
ト設定に影響します。この欄の値を「Yes」にしておくと、作成されるカラムや項目モデ
ルの NULL 属性は、［NULL 値許可］が「Yes」になります。反対に、この欄を「No」にしておくと、カラムや項目モデルの NULL 属性は、
［NULL 値許可］が「No」になります。
この欄は通常「No」に設定しておき、NULL が本当に必要なカラムがあるときのみ、そのカラム特性の、［NULL 値許可］を「Yes」に修正することを推奨します。

排他 TRN
無効です。このオプションは使用できません。

パラメータ
この欄には、データベースゲートウェイをカスタマイズしたい場合、そのカスタマイズ
に関する情報を指定します。実行時には、この情報がデータベースゲートウェイに送られます。データベースゲートウェイのカスタマイズについては、第 25 章「SQL に関する考慮事項」を参照してください。

浮動小数点
定義取得ユーティリティを使用してテーブル定義情報を DBMS のリポジトリから取得す
るとき、ほとんどの設定パラメータは、そのまま所定の書式を使用して Magic に取り込まれます。ただし、浮動小数点形式の書式設定については、Magic 内で使用される書式が自動的に選択されることはありません。
この［浮動小数点］欄には、浮動小数点用のデフォルトの書式を指定します。ここで指定した書式が定義取得時に使われるようになり、Magic のテーブル定義情報に取り込まれるようになります。デフォルトの設定は、「10.3」です。

ID
この値は Magic が DBMS の識別のために使う内部コードです。この［ID ］欄の値は、変更してはいけません。
［DBMS ］テーブルの設定は、MAGIC.INI の［MAGIC_DBMS］セクションに保存されます。

DBMS 特性

リファレンス
Magic eDeveloper V9 Plus81

第 2 章 - 設定
［DBMS 特性］ダイアログではデータベースによって必要となる追加設定を行います。

図 2-20 DBMS 特性

ログの設定／ログレベル［ログレベル］では、各 DBMS に関して Magic データベースゲートウェイによって生成されるログ出力の詳細度合いを指定します。
• N= なし……ログファイルは生成されません。
• D= 開発者向け……より詳しいログが出力されます。
• S= サポート向け……Magic サポートセンタ向けの解析用ログが出力されます。
• C= ユーザ向け……SQL コマンド（DBMS の API およびファイルのオープン／クローズ）により生成される開発者向けのログが出力されます。
ログレベル特性は実行時のパフォーマンスに影響します。このため、デバッギング中
でのみ使用するようにしてください。実運用環境では、無効ににしてください。

ログの設定／ログ名
ログファイルの名前をパスを含めて指定します。作成されるファイル名には、ユーザ名とプロセス ID が付加されます。パスを指定しない場合は、ログファイルは Magic ディレ
クトリに作成されます。

ログの設定／同期設定
ログ採取とアプリケーションの実行との間での同期制御を指定します。
• オン……アプリケーション実行と同期を取ります。
• オフ……アプリケーション実行とログの採取のタイミングに遅延が発生します。もしMagic が正常に終了しなかった場合、ログファイルには最後の処理内容が残っていない可能性があります。
同期設定がオフに設定された場合、ログはバッファに保存され複数レコード毎に書き込まれます。

82

リファレンス
Magic eDeveloper V9 Plus

設定／ DBMS

ログの設定／プランの表示
MS-SQL Server などの一部の DBMS では、照会の処理プランを出力することができます。
この欄をチェックしておくと、処理プランがログファイルに書き込まれます。

DBMS の設定／照合順序ファイル［照合順序ファイル］欄でズームすると、「ファイルを開く」ダイアログが表示されます。
このダイアログで ACS ファイルを指定します。
詳細は、第 25 章「SQL に関する考慮事項」を参照してください。

DBMS の設定／最大接続数
MS SQL Server などの RDBMS では、内部実装でさまざまな接続数を使用します。
デフォルトの接続数を使用するには、「0」を指定します。データベースへの接続数を制限するには、その値を指定します。

DBMS の設定／分離レベル［分離レベル］では、並行トランザクションの分離レベルを数値で指定します。指定できる値は使用するゲートウェイによって異なります。

MS-SQL Server• 0……READ UNCOMMITTED（共有ロックは実行されず、排他ロックも使用されません。このオプションが設定されている場合には、コミットされていないデータ、つまりダーティ データを読み取ることができます。トランザクションが終了する前にデー
タ内の値を変更でき、行がデータ セットに現れたり消えたりします。）• 1……READ COMMITTED（データが読み取られている間、ダーティ リードを回避するために共有ロックが保持されるように指定します。しかし、トランザクションが終了する前にデータを変更することができるので、反復不能読み取りやファントム デー
タが発生する可能性があります。）

DB2 UDB• 0……非コミット読み取り（UR：アプリケーションが他のトランザクションの非コミッ
ト変更にアクセスするのを可能にします。他のアプリケーションが表を消去または変更しようとしない限り、アプリケーションは自分が読み取っている行以外のアプリ
ケーションをロックしません。）• 1……カーソル固定（CS：カーソルが任意の行上に置かれているときに、アプリケー
ションのトランザクションがアクセスするその行をロックします。次の行が取り出されるか、またはトランザクションが終了するまで、そのロックは有効のままになります。行内のいずれかのデータが変更された場合、データベースに対してその変更内容
がコミットされるまでロックは保持されます。）• 2……読み取り固定（RS：アプリケーションがトランザクション中に検索する行のみをロックします。行の読み取りの修飾がトランザクションが完了するまで他のアプリ
ケーション・プロセスによって変更されないようにします。また、他のアプリケー
ション・プロセスによって変更された行の読み取りは、変更がプロセスによってコミットされるまで行われません。）• 3……反復可能読み取り（RR：トランザクション中に参照される、アプリケーション
内の行すべてをロックします。プログラムが反復可能読み取り保護を使用する場合、プログラムによって参照される行は、そのプログラムが現行のトランザクションを終了しない限り他のプログラムによって変更できません。）
リファレンス
Magic eDeveloper V9 Plus83

第 2 章 - 設定

Oracle指定は無効です。

以下の表は分離レベルとトランザクション処理を同時実行させた場合に起こる問題の相関関係を示しています。
分離レベル／現象

ダーティリード

反復不可読み取り

ファントム

READUNCOMMITTED
非コミット読み取り○○○

READCOMMITTED
カーソル固定×○○

読み取り固定×

×○

反復可能読み取り×××• ダーティリード……別のトランザクションによって作成された未確定レコードまたは変更レコードが SQL 処理で読み込まれると、1 つのトランザクション内で異なる結果が返されます。ダーティリードでは並行性は向上しますが、一貫性は低下します。
• 反復不可読み取り……SQL 処理でテーブルの同じ行が 2 回読み込まれると、1 つのト
ランザクション内で異なる結果が返されます。反復不可読み取りは、トランザクショ
ンの読み込みの間に別のトランザクションが行への変更を更新して確定すると発生します。反復不可読み取りは一貫性は向上しますが、並行性は低下します。
• ファントム……SQL 処理で一連のデータ値が 2 回読み出されたときに、1 つのトラン
ザクション内のさまざまな結果を返します。ファントムは、一連の読み出しの実行の間に、別のトランザクションが新しいレコードを挿入して挿入を確定すると発生します。各分離レベルは、許容する現象によって異なります。
分離レベルの詳細については、使用する RDBMS のマニュアルをご覧ください。

DBMS の設定／テーブルの存在チェック
アクセス先のテーブルが存在するかどうかをファイルオープン時に確認するかどうかを指定します。
この欄をチェックすると、テーブルが存在するかどうかを確認し、テーブルが見つからなかったときには Magic はデータベースにテーブルを新規作成します。実行時にアクセスするテーブルすべてについて存在するかどうかを確認するため負荷がかかり、処理速
度は低下します。
チェックを外した場合には、処理速度が向上しますが、テーブルが存在しない場合には、処理中に RDBMS エラーとなります。
詳細は、第 25 章「SQL に関する考慮事項」をご覧ください。

設定／データベース［データベース］テーブルでは、Magic からアクセスする物理データベースの詳細設定を行います。Magic が使用する DBMS によっては、同一のコンピュータ上の異なる場所にデータを置くことができるものもあり、また、異なるコンピュータ上にデータを分散配置できるものもあります。さらに、DBMS の中には、複数の物理データベースを単一の論理エンティティに格納し、管理が可能というものもあります。Magic では、データベー
ステーブルを使用して、これらの異なる物理データベースへのアクセス管理を行います。

84

リファレンス
Magic eDeveloper V9 Plus

設定／データベース［データベース］テーブルには、Magic のデータベースオブジェクトに必要な基本情報を設定します。
［データベース特性］ダイアログでは、オブジェクトに関する追加情報を設定します。
［データベース特性］ダイアログは、［データベース ］のコンテキストメニューから［特性］を選択すると開きます。
同一の DBMS を使用して複数の Magic データベースを作成することができ、各データベースにそれぞれ個別に特性を定義することができます。
データベーステーブルにあるデータベースの定義は論理的な定義で、実際の SQL データ
ベースには影響しませんが、Magic アプリケーションの表示や動作仕様を定義します。
データベーステーブルでは、複数の Magic データベースのエントリが同一の SQL データ
ベースを指示するように定義できます。
たとえば、データベースの一連のテーブルに対してあるユーザがアクセスし、別の一連のテーブルに対して別のユーザがアクセスする場合、2 つの同一の定義をそれぞれのユー
ザ名で行うことができます。
データベースへの接続が確立したら、その切断は明示的に行うか、Magic を終了させることによって行います（アプリケーションを終了させても接続は維持されます）。データベース特性で行った変更が有効になるのは、次にデータベースに接続したときです。Magic ゲートウェイの動作に影響するデータベースの特性を変更した場合は、必ずいったん Magic を終了し、Magic を再起動してください。

図 2-21 ［データベース］テーブル［データベース］テーブルの設定欄#
自動的に連番が振られます。番号はユーザが変更することはできません。

名前
物理データベースの名前、または簡単な説明です。データベースを示す文字列で、［テーブル］リポジトリや［アプリケーション］テーブルなどの処理でデータベースの参照が必要になった場合、この名前をもとにデータベースが識別されます。データベースの識
別にはインデックスも使えますが、このように文字列を使うことで、同じ名前が別の開発者に使われる可能性も少なくなり、そのためアプリケーションの移植性が高くなります。
この名前の入力は必須で、大文字と小文字が区別されます。

リファレンス
Magic eDeveloper V9 Plus85

第 2 章 - 設定

DBMS
この［DBMS ］欄には、［名前］欄で指定したデータベースの元となる DBMS を指定します。この欄からズームすると［DBMS ］テーブルに定義されている DBMS の一覧が表示されます。なお、［DBMS ］テーブルで新規の行を作成すると、その行にデフォルトのDBMS が入りますが、同じ DBMS が、この欄のデフォルトとしても使われます。
［DBMS ］欄の値は必ず指定しなければなりません。［DBMS］欄によって、この項目で指定した物理データベースのデータベース管理システムのタイプが識別されます。

DB 名
この［DB 名］欄には、サブデータベースの名前を指定します。サブデータベースとは、DBMS のサーバによって操作されるデータベースすべてからアクセスが実行されるようなデータベース（下位データベース）をいいます。このパラメータは、単一の論理エン
ティティ（通常は、データベースサーバ）内で複数のデータベースが管理されるようなDBMS の場合に使用します。
DB 名は、DBMS で定義されたデータベースの名前です。ODBC では、DB 名は ODBC ア
ドミニストレータで定義されたデータソースの名前です。
この欄には、論理名を指定することもできます。
この欄の設定はオプションです。

Magic サーバ
［Magic サーバ］欄には、リモートデータの取得に使う Magic サーバを指定します。Magic
では、リモートデータへのアクセス方法として、Magic クライアント／サーバモデルを使う方法と、DBMS のクライアント / サーバモデルを使う方法の 2 種類がサポートされています。

Magic クライアント / サーバモデル
この方法を使用するには、Magic クライアント / サーバをセットアップする必要があります。Magic は、ホストマシン上の Magic サーバ（データサーバ）を介してリモートデー
タにアクセスします。このアクセスには、Magic 定義ゲートウェイが必要です。
日本語版では、現在この機能はサポートしていません。

DBMS のクライアント / サーバモデル
DBMS にクライアント / サーバサービスがある場合、Magic はこの機能を利用できます。
この場合、データベースは Magic のローカルデータベースのように見え、Magic データ
ベースゲートウェイを通じてアクセスします。
データベースが同一マシン上にある場合や、DBMS のクライアント / サーバモデルを利用する場合は、この欄には何も設定しないでください。
［Magic サーバ］欄は、データがリモートマシン上にあり、Magic クライアント / サーバ
モデルを介してアクセスする場合にのみ設定するためのものです。
この欄の値としては、論理名を指定できます。

位置
この欄には、物理データベースが置かれている場所を指定します。この情報をもとに、DBMS データベースサーバからデータに対するアクセスが実行されます。
この欄の値には論理名を指定できます。この欄の設定はオプションです。

86

リファレンス
Magic eDeveloper V9 Plus

設定／データベース

データベース特性［データベース特性］ダイアログは、詳しい設定が必要なデータベースのとき、使います。このダイアログでの設定は、通常は頻繁に変更することはありません。

図 2-22 ［データベース特性］ダイアログ［ログオン］タブ（データベースログオン）
データベースサーバ
この［データべースサーバ］欄には、データのアクセスに使うサーバの名前を指定します。DBMS サーバを使った場合、リモートのデータへのアクセスは DBMS サーバによって実行され、このためデータは Magic からはローカルデータのように見えます。
同一のデータベースについて、この欄と［データベース］テーブルの［Magic サーバ］欄の両方を設定することはできません。
SQL 系サーバの場合、［データベースサーバ］欄には、SQL サーバ名が表示されます。
Oracle では、これはエイリアス（別名）になります。
この欄の設定はオプションです。

ユーザ名
データベースによっては、アクセスにユーザ名とパスワードが必要になります。これは、Magic サーバや DBMS のデータベースサーバのアクセス対象となるデータベースについても同様です。また、Magic クライアント / サーバモデルを使用してリモートのホストマ
シンにアクセスする場合、ユーザ名とパスワードは必須になります。データベースでユー
ザ名が必要な場合、この［ユーザ名］欄を空白にしておくと、データベースのテーブルに最初にアクセスを実行したときに Magic によりダイアログが表示され、ユーザ名とパスワードが必要なことを通知します。
この欄にユーザ名を指定した場合、データベースのテーブルが置かれているホストのセ
キュリティシステムによって、そのユーザ名が認識されます。なお、MAGIC.INI ファイ
ルは保護されていないため、ユーザ名はシークレット名で指定してください。
この欄はオプションです。

リファレンス
Magic eDeveloper V9 Plus87

第 2 章 - 設定

ユーザパスワード
この欄には、ユーザのパスワードを指定します。指定したパスワードは、アクセス先のデータベースのテーブルが置かれているホストのセキュリティシステムによって認識されます。なお、MAGIC.INI ファイルの［パスワード］欄は保護されていないため、パス
ワードはシークレット名で指定しなければなりません。
この欄はオプションです。

接続文字列
接続文字列は、Oracle にのみ関連します。この欄に文字列を作成する場合、データベー
スサーバ、ユーザ名、ユーザパスワードが上書きされます。

［オプション］タブ（データベースオプション）
開発モードでのテーブル変換
この設定欄を「有効」とすることによって、開発モードの Magic アプリケーションで、基礎となるデータベーステーブルのテーブル構造を変更できるようになります。
この設定のデフォルトは、［動作環境］の［Default Database］設定で選択されているデー
タベースのタイプによって異なります。
［Default Database］が ISAM データベースの場合、
この欄のデフォルト値は「有効 」になります。一方 SQL データベースの場合には、この欄のデフォルト値は「無効 」になりますが、テーブル構造を作成中のとき、データがまだ入力されていない状態のとき、アプリケーションが運用に入る前などには「有効」にして変更ができるようにします。
データ入力が１度でも行われており、この設定が「有効」の場合は、Magic は元になるテーブルをデータベースからドロップし、新しい修正内容を反映したテーブルを新しく作ります。このため、アプリケーションを使用しはじめたら、この設定は「無効」にしてください。ISAM データベースと異なり、SQL 系のデータベースでは、元になっているテーブル構造の規則に影響を与えるためです。

定義チェック
Magic には独自のテーブルリポジトリが用意されていますが、アクセス先の DBMS にも独自のテーブルリポジトリが用意されていることもあります。テーブルリポジトリのテーブル構造は、Magic で変更することもできますし（Magic を使用して変更した場合、DBMS のテーブルリポジトリも自動的に変更されます）、外部 DBMS のユーティリティを使用して変更することも可能です（ただし、こういったユーティリティでの変更によっては Magic のテーブルリポジトリの変更はできません）。Magic のテーブルリポジトリを変更した場合、テーブルリポジトリと Magic プログラムによって使用されるテーブルの構造が異なることもあります。これは、Magic プログラムの動作に異常が発生する原因になります。
［定義チェック］を「無効」にした場合、テーブルオープン時にテーブル構造のチェックを行いません。
［定義チェック］を「有効」にした場合、データテーブルが開かれる際、物理ファイルのテーブルの構造と Magic のテーブルリポジトリの定義がチェックされるようになります。このチェックで、物理ファイルの構造と Magic のテーブルリポジトリの定義が異なったときには、エラーメッセージが表示されるとともに、Magic の処理がアボートされます。なお、この欄は、テーブル構造に関する情報が提供される DBMS でのみ意味があります。テーブル構造に関する情報がどの程度詳しいかは、DBMS によります。

88

リファレンス
Magic eDeveloper V9 Plus

設定／データベース［定義チェック］欄は必須です。デフォルト値は、データベース項目の DBMS タイプによって異なります。
この機能は Magic の旧バージョンでは、［データベース情報］欄で「CHKDEF=YES」を指定することで行っていました。この方法は現バージョンでも使用できますが、今後はこの設定欄を使用することを推奨します。

インデックスチェック
Magic にはインデックスチェック機能があり、この機能を使うことでデータの整合性を維持できます。この［インデックスチェック］欄を「有効」にしておくと、ユーザがレ
コードにデータを入力しようとした際、データテーブルが検索され、そのデータと同じ
インデックスがないかどうかチェックされます。ユーザが入力しようとしたデータが、Magic のテーブルリポジトリで［重複不可］として定義されているインデックスと重複する場合、重複インデックスエラーのメッセージが出力されます。また、その時点で処理は停止し、ユーザは別のデータを入力しなければならなくなります。この機能は Magicの機能であり、プログラミングは不要です。ただし、DBMS によっては、このチェックには時間がかかることもあります。このような場合、この機能を「無効 」にしたほうが効果的です。この場合、重複データ入力による結果は、DBMS 側の重複データ処理の仕様に依存することになります。
デフォルト設定は、データベース項目の DBMS タイプによって異なります。

Magic ロック（SQL 系：N= なし，ISAM 系：T= テーブル）• N= なし……Magic によるロック制御は行われず、データベースによる同時アクセス制
御機能のみが働きます。
• R=レコード……１つのレコードに対して同時にアクセスできるユーザの制御にMagic
によるロックを使用します。
• T=テーブル……１つのテーブルに対して同時にアクセスできるユーザの制御にMagic
によるロックを使用します。
• B= 両方……「R= レコード」と「T= テーブル」の両方の機能が働きます。
（ただし、
これらの設定を行った場合にも、データベースによる同時アクセス制御機能は働きます）。
Magic のロック機能は、トランザクションなしで、MGLOCK ファイルによって、レコー
ドレベルおよびテーブルレベルで管理されます。このロック機能は Magic ロックと呼ばれ、Magic ロック特性を［レコード］や［テーブル］に設定すると有効になります。SQLRDBMS ロックは常に起動されているので、物理トランザクションモードタスクで SQL
データベースへアクセスする場合、通常はロック機能を追加する必要ありません。
この設定を［N= なし］に設定すると、使用するデータベースの並行制御のみが有効にな
ります。

ロックパス
データにアクセスするためにデータベースサーバを使用するとき、Magic はデータの物
理位置を認識していません。データがリモートのホストマシンにあっても、ローカルデー
タとして処理されます。この場合には、Magic のロック機能は働きません。この機能では、同じデータにアクセスするすべてのユーザが同一のロックファイルを共有している必要があるためです。
以前のバージョンでは、テーブルロックは、プログラムのアクセスモードと共有モードの設定（プログラムリポジトリの DB テーブル）によって決まりました。このため、マルチユーザによりアクセスが実行されるオンライン環境では、アクセスモードと共有
モードの設定によっては、タスクの実行中はテーブルがロックされてしまうということが発生しました。この問題は、データベースが SQL の場合、改善されています。つまり、DBMS のテーブルロック機能を使うことで、ロック時間を縮小することができるようになりました。
リファレンス
Magic eDeveloper V9 Plus89

第 2 章 - 設定
Magic ロックを「N= なし」または「R= レコード」にしておくと、Magic によるテーブル
レベルのロックは実行されません。この場合、DBMS によって実行されるトランザクショ
ンの種類によって、テーブルの共有モードが決まります。したがって、DBMS の保護書
込トランザクションを使いたいときには、Magic ロックを「N= なし」または「R= レコード」にしておきます。
この欄を「R= レコード」または「B= 両方」に設定しておくと、レコードロックについても、データベースのロックメカニズムに加えて、Magic の内部ロックメカニズムも使われるようになります。この場合、データベースにアクセスするすべてのユーザによって共同で使用されるディレクトリを指定しなければなりません。このディレクトリは、
この［ロックパス］欄で指定します。
この［ロックパス］欄は、ほかの関連パラメータすべてに優先されます。
この欄でロックパスを指定した場合、データベースのロックは、そのパス上にあるロックファイルにしたがって行われるようになります。また、ロックパスを指定する場合、そのパスは、テーブルにアクセスを実行するユーザすべてが使用できなければなりません。さもなければ、データの競合が発生する危険が生じます。
この欄の値には論理名を指定できます。この欄の設定はオプションです。

共通データ辞書
Magic でサポートされているプラットフォームの中には、中央データベース情報リポジ
トリ（共通データ辞書）が使われる場合もあります。こういった共通データ辞書を使う
ことで、複数のアプリケーションから同一のデータにアクセスすることができるようになり、同時に、データ構造の統一も達成できます。
共通データ辞書がある場合、この［共通データ辞書］欄に、その共通データ辞書の名前を指定します。この辞書が、Magic により参照されることになります。
この欄の値としては、論理名を指定できます。
この欄はオプションです。

［SQL］タブ
データベース情報
この欄には、データベース独自の情報を指定します。指定した情報は、RDBMS に渡さ
れます。

ヒント
Oracle、MS-SQL Server などの RDBMS では、照会処理にオプティマイザを指定することができます。このフィールドに、SELECT 文と連結する文字列を開発者が入力します。
詳細は、第 25 章「SQL に関する考慮事項」を参照してください。

照合順序ファイル（ACS ファイル）［照合順序ファイル］欄でズームすると、「ファイルを開く」ダイアログが表示されます。
このダイアログで ACS ファイルを指定します。ファイルが指定されたいない場合は、［データベース情報］欄の ACS 文字列を参照します。そこにも指定されていない場合は、動作環境ダイアログの［照合順序ファイル］欄の定義内容を参照します。ここで指定されたファイルは、DBMS の照合順序ファイルの設定に反映されます。
新しい DBMS が選択された場合は、照合順序ファイルも指定し直してください。

90

リファレンス
Magic eDeveloper V9 Plus

設定／論理名

配列サイズ
SQL に対する Magic ゲートウェイは、配列処理をサポートしています。データベースからレコードを取得する場合、ゲートウェイは 1 度に 1 レコードずつ取得するのではなく、まとめて取得することによってネットワークのトラフィックを減らします。
Magic はレコードに関して独自の配列サイズを使用していますが、変更することもできます。大きなテーブルを照会する場合、配列サイズを増やすと処理能力が向上しますが、Magic のデフォルト値を使用することをお勧めします。デフォルト値は、特別な場合にのみ変更してください。
配列サイズは、新しいテーブルを作成したときにだけ、テーブル特性にコピーされます。

テーブルの存在チェック
実行時、アクセス先の SQL テーブルが存在するかどうかのチェックを行うか否かを指定します。
この設定が「有効」なとき、チェックを実行し、テーブルがない場合には、そのテーブ
ルを Magic が作成します。なお、この機能を使うと、チェックのために処理速度が低下する場合があるので、注意が必要です。
この設定が「無効」なときは存在チェックをしないため、もしテーブルがない場合には
RDBMS からエラーが出力されます。

XA トランザクション
無効です。このオプションは使用できません。

設定／論理名図 2-23 論理名テーブル

Magic には論理名機能が用意されています。この機能は、アプリケーションを移植するときに有効です。この機能を使うことで、物理記憶媒体やオペレーティングシステムのネーミング規則から離れて、アプリケーションを開発できます。つまり、アプリケーショ
ンの移植の際、［論理名］テーブルが変換テーブルとして使われ、その設定にしたがってアプリケーションが変換されるようになります。論理名は、ファイル名またはパスに使用できます。

論理名テーブルの設定欄
リファレンス
Magic eDeveloper V9 Plus91

第 2 章 - 設定#
自動的に連番が振られます。番号はユーザが変更することはできません。

名前
アプリケーションで使う論理名を指定します。この論理名は、実行時、［実行名］欄に指定した値に置き換えられます。論理名は、同じアプリケーションであれば、プラッ
トフォームやオペレーティングシステムが変わっても同じです。

実行名
この欄には、実際の名前を指定します。ファイルへのアクセスの際には、論理名に代わって、この名前が使われます。この名前は、オペレーティングシステムが変わるときなど、必要に応じて変更します。

論理名の使用方法
実行時、入出力処理を行うためにファイル名を確定させるときなどに、［論理名］テーブ
ルの論理名が参照されます。ファイル名は左から右にスキャンされ、［論理名］記述が検出されると、［論理名］テーブルから［実行名］欄の値を持ってきて、置き換えます。論
理名は、1 つのファイル名の中に複数個使うこともできます（たとえば、ディスクドライブ、ディレクトリ、ファイル名にそれぞれ論理名を使う）。
論理名の定義方法配下の通りです。

論理名の構文
論理名の構文は、次のようになります。
%logicalname%
ここで、最初の%は、論理名が始まることを示します。

logicalname は、論理名自体です。
最後の%は、論理名が終わることを示します。

また、論理名の扱いは、次のとおりです。
1. % は、論理名の区切文字としてだけ使用でき、ファイル名には使用できません。
2. アプリケーション内の論理名と区切文字は、［論理名］テーブルの指定にしたがって変換されます。アプリケーション内の論理名に対応する論理名が［論理名］テーブ
ルになかったときには、空白が実行名となります。
3. 終了区切り記号がないときには、論理名として処理されません。
論理名には以下の文字が使用できません。
•
•
•
•
•

92

0x1F 以下の制御コード（エスケープシーケンス）?
*<>

リファレンス
Magic eDeveloper V9 Plus

設定／言語

設定／言語［言語］テーブルにて、言語表示を切り替えるための変換ファイルを指定します。この変
換ファイルは、Magic の実行時に使われます。

図 2-24 言語テーブル

多言語サポート（Multi Lingual Support ）Magic には多言語サポート機能が用意されています。
この機能を利用して、いずれかの言語向けに作成したアプリケーションを別の言語向けのアプリケーションとして提供することができます。
ただし、Magic の多言語サポートには、次のような制限があります。
• Magic の Windows バージョンのみでサポートします。
• テキストが左から右に入力される言語でのみ有効です。

［言語］テーブルの設定欄#
自動的に連番が振られます。番号はユーザが変更することはできません。

名前
変換後に表示される言語が分かりやすく識別できるような名前を入力します。テキスト
は 128 バイトまで入力できます。

変換ファイル
言語変換ファイルをフルパスで指定します。このファイルが、実行時の言語表示の変換に使われます。この欄をズームすると、Windows 標準の「ファイルを開く」ダイアログが表示され、ファイルを参照できます。

リファレンス
Magic eDeveloper V9 Plus93

第 2 章 - 設定
なお、アプリケーションの開始時に使う最初の言語は、［設定／動作環境］テーブルの［外部参照ファイル／デフォルト言語］欄で指定します。
アプリケーションでは、関数を利用して必要に応じて言語（言語変換ファイル）を変更
し、実行中に表示を切り替えることができます。

言語変換ファイルの作成
言語変換ファイルは、コマンドラインユーティリティの MLS_ BLD を使用して作成します。なお、このユーティリティでは、出力先のファイルが存在するかどうかのチェックを行いません。同じ名前のファイルがあったときには、そのファイルが上書きされます。
言語変換ファイルを作成するには、以下の手順に従ってください。
1. 変換元ファイル（テキストファイル）を次の形式で作成します。
•

１ 項目につき２ 行•

各行は（CR/LF）が終端•

２ 行目は、１ 行目の変換テキスト•

１ 行の最大長は 32000 文字例）
英語（CR/LF）

基準言語での表記１

English（CR/LF）

変換後の表記１

日本語（CR/LF）

基準言語での表記２Japanese（CR/LF） 変換後の表記２
上例の変換元ファイルは、開発時は日本語で文字列を入力し、実行時には英語での表示を行わせる場合を想定しています。
2. 言語変換ファイル作成ユーティリティを使用して、最終的な言語変換ファイルを作成します。
MLS_BLD ＜入力ファイル名＞＜出力ファイル名＞•＜入力ファイル名＞は、1 で作成した変換元ファイルの名前です。

•＜出力ファイル名＞は、作成する言語変換ファイルの名前です。このファイルを［言語］テーブルの「変換ファイル」として選択します。

多言語システムの使い方
アプリケーションで多言語サポートを実行するためには、［設定／動作環境／外部参照
ファイル／デフォルト言語］欄に、使用する言語を言語テーブルから選択します（次セッ
ションから有効）。または、直接 MAGIC.INI ファイルの［MAGIC_ LANGUAGE］セク
ションにエントリを登録し、その言語変換ファイルが使われるように指定します。
上記のようにして言語を指定しておくと、アプリケーションの実行時には、次の個所のテキストが言語変換ファイルを用いて自動的に変換表示されます。
テキストコントロール

メニュー項目テキスト

自動ヘルプテキスト

エラーコマンドテキスト

ウインドウタイトルテキスト

セレクト項目名テキスト

インデックス名テキスト

インデックスセグメント名テキスト

入出力ファイル名テキスト

グループコントロールのタイトル

チェックボックスのタイトル

プッシュボタンのタイトル

NULL 表示文字列

94

リファレンス
Magic eDeveloper V9 Plus

設定／プリンタ
チョイスコントロール（ラジオボタン、コンボボックス、リストボックス、
タブコントロール）の選択肢のテキスト（［ソーステーブル］が指定されている場合、［表示項目］は反映されません。）
注）選択肢がアクティブになったときに実際に設定される値は、表示された変換テキストにかかわらず、アプリケーション内で定義された値が使用されます。
各コントロールのフォント属性は式の形で定義できます。実行時には、この式が評価され、言語変換ファイルをもとに変換が行われます。
開発時に、テキストのサイズのチェックが実行されるような処理（サイズ調整や APG など）を使用してコントロールを作成した場合、そのコントロールは、開発時に使用する言語（基準言語）のテキストのサイズを使用して作成されます。したがって、実行時に別の言語に変換したときの表示サイズまでは考慮されていませんので、ご注意ください。
選択コントロールのテキストを変換する場合、そのコントロールの選択肢の数が、変換前と変換後で同じになるようにします。数が合わない場合の動作は保証されません。
言語関連の関数としては、GetLang と SetLang があります。これらの関数については、第8 章「関数」に解説があります。

設定／プリンタ［プリンタ］テーブルには、アプリケーションの実行時に利用可能な印刷デバイスと属性を設定します。このテーブルの印刷デバイスはいずれも、Magic 論理プリンタです。この論理プリンタに対しては、Magic アプリケーション内でのみ参照が可能です。
［プリンタ］テーブルでは、入出力ファイル（オペレーティングシステムのテキストファイル）を印刷デバイスに出力するための設定も行います。アプリケーションの実行時、プリン
タメディアに対する出力処理が実行されると、この［プリンタ］テーブルの設定内容を参照して物理プリンタの属性を取得します。
［プリンタ］テーブルで、出力をローカルまたはリモートのプリンタに割当てることができます。

図 2-25 プリンタテーブル［プリンタ］テーブルの設定欄
リファレンス
Magic eDeveloper V9 Plus95

第 2 章 - 設定
［プリンタ］テーブルの設定は、MAGIC.INI ファイルの［MAGIC_PRINTERS］セクショ
ンに保存されます。

#
自動的に連番が振られます。番号はユーザが変更することはできません。

名前
論理プリンタの名前です。この名前は、［プリンタ一覧］ウィンドウに表示されます。このプリンタ名は、データ文字列として Magic アプリケーション内 に登録され、プリンタ識別子として使われます。Magic アプリケーションの実行時には、このプリンタ名によって［プリンタ］テーブルが検索され、実際の物理プリンタデータと関連付けられます。

キュー
この［キュー］欄には、物理プリンタを指定します。カレントの論理プリンタに対する出力データはすべて、この物理プリンタに送られます。ここには OS に登録されているプリンタ名を指定します。該当するプリンタが見つからない場合は、OS のデフォルトプ
リンタ（例えば Windows では LPT1 など）に割当てられます。
GUI 形式印刷の場合、プリンタテーブルの「キュー」欄に印刷マージンのパラメータを設定することで用紙の周りの余白を設定することができます。この設定により、用紙の左上隅から指定した左上マージン値を移動した位置を原点として、設定した余白でフォームのレイアウトを印字するようになります。本指定がない場合には、プリンタモ
デルの印字可能領域の左上を原点として、フォームレイアウトを印字します。パラメー
タはスタイル設定ユーティリティ（Setstyle.exe）または、プリンタ設定ユーティリティ（Mgprn.exe）で設定ができます。設定方法の詳細に関しましては、ユーティリティの使用
方法 (UTIL.HLP）を参照してください。

コマンドファイル
この欄は、テキスト形式印刷を行う場合のみ関係します。
［コマンドファイル］欄には、プリンタ制御コードが格納されているファイルの場所と名前（オペレーティングシステムでの名前）を指定します。このファイルを使用して、Magic
印刷属性が解析されます。コマンドファイルはラベルとプリンタ制御コードで構成され、Magic 印刷属性はラベルを使用して指定します。Magic のフォーム印刷に際しては、コマンドファイルの情報にしたがってMagicの論理的印刷属性が変換されることになります。
ラベルは、同じものを複数のコマンドファイルで使うことがあります。したがって、異なるコマンドファイルを用意することで、同じアプリケーションでも異なる印刷結果が得られることになります。

変換ファイル
この欄は、テキスト形式印刷を行う場合のみ関係します。
［変換ファイル］欄には、印刷に必要な変換ファイルの場所と名前（オペレーティングシ
ステムでの名前）を指定します。この変換ファイルには、Magic の内部キャラクタコー
ドと物理プリンタのコードの対応表を置きます。変換ファイルには 256 までの文字列を定義することができ、それぞれ、ASCII キャラクタコード（Magic の内部キャラクタセッ
ト）を対応させます。このファイルで指定した文字列がプリンタに送られます。プリン
タに送られる文字列には、シングルバイトコードのほか、マルチバイトコードを定義することもできます。また、この文字列に制御コードを含めることもできます。

行

96

リファレンス
Magic eDeveloper V9 Plus

設定／ HTML スタイル
印刷の際のページサイズを指定します。このページサイズは、物理プリンタのページサ
イズと同じである必要はありません。ページサイズは行数を使用して指定し、通常は物
理プリンタのページサイズ（行数）より小さい値にしておきます。この欄に指定した値
は、プリンタ出力が実行されるとき、Magic による内部的にカウント処理に使われます。
この欄に指定されている行数のデータが送られた後、Magic からプリンタにフォーム
フィード信号が送信されます。この欄の値は、カレントのプリンタのデフォルトの行数として使われますが、上書きすることもできます。上書きには、フォーム出力処理で使われる入出力ファイル（フォーム出力処理）の［行］欄を使います。

設定／ HTML スタイル
［HTML スタイル］テーブルでは、HTML スタイルタグの設定が可能です。ここで設定したタグは、HTML フォームエディタで HTML フォームを作成するときに使用できます。

［HTML スタイル］テーブルの設定欄
名前
HTML スタイルを示す名前です。テーブル内で同じ名前は使えません。

HTML タグHTML スタイルを定義するタグ（複数可）で、ここで指定したタグは、Magic によって作成されるタグと組み合わされます。

例：
BORDER=0 では、ハイパーリンクオブジェクトの境界が表示されなくなります。

図 2-26HTML スタイルテーブル

リファレンス
Magic eDeveloper V9 Plus97

第 2 章 - 設定

設定／プリンタ属性［プリンタ属性］テーブルについては、第 10 章「出力フォーム」に解説があります。

設定／チェックメッセージ
プログラムチェックを実行した場合、各エラー内容をどのようなエラーレベルにするかを設定します。エラーレベルには以下の設定値があります。
• E= エラー• W= 警告• R= 推奨• I= 無視
エラーメッセージは、Mgconstw に組み込まれているので変更できません。

図 2-27 チェックメッセージテーブル

設定／シークレット名
シークレット名は、非認証ユーザに対し権利認証システムの実装情報を隠す必要がある場合に使用します。たとえば、CTL アクセスキーやユーザパスワード、サーバパスワー
ド、DB 特性、データテーブルに対するアクセスキーなどに使用することができます。
［シークレット名］テーブルの構成や機能は［論理名］テーブルとほぼ同じですが、次の点が異なります。
• ［シークレット名］テーブルへのアクセスは、SUPERVISOR ユーザと、SUPERVISOR
グループに登録されたユーザだけに限られます。
• シークレット名は、［動作環境］欄で指定されたセキュリティファイルに保存されます。このセキュリティファイルは、暗号化されます。
シークレット名は、論理名と同じように使えます。構文も同じです。論理名については、本章前述の［設定／論理名］テーブルの説明を参照してください。なお、シークレット
名と論理名の両方が使われている場合、まず、［シークレット名］テーブルでシークレッ
ト名が解析され、その後、［論理名］テーブルで検索が行われます。

設定／ユーザグループ［ユーザグループ］テーブルはスーパーバイザ向けで、スーパーバイザは、ここでユーザ
グループの定義と権利の付与を行います。

98

リファレンス
Magic eDeveloper V9 Plus

設定／ユーザ ID
スーパバイザのユーザ ID は「SUPERVISOR」で、インストール直後にはパスワードは設定されていません。

設定／ユーザ ID［ユーザ ID ］テーブルでは、ユーザに関して、そのユーザ ID 、名前、パスワード、権利、グループの設定が可能です。また、［ユーザ ID 特性］ダイアログを使用して、詳細な情報を指定することもできます。ユーザ ID については、第 13 章「使用権利」に詳しい説明があります。

設定／ログオン

図 2-28 ログオンダイアログ［ログオン］ダイアログでは、Magic ユーザが自分のユーザ ID とパスワードを入力します。入力された値は、［ユーザ ID ］テーブルに登録されている値と照合され、ユーザの権利が判別されます。
このダイアログで入力されたユーザ ID とパスワードが［ユーザ ID ］テーブルのユーザ
ID とパスワードと一致しなかった場合、エラーメッセージが表示され、ダイアログは開いたままになります。
一方、ユーザ ID とパスワードが［ユーザ ID ］テーブルのユーザ ID とパスワードと一致したときには、そのユーザ ID とパスワードを使用して、アプリケーション内でユーザの権利の変更が可能になります。ユーザ ID とパスワードはどちらも、開発モードと実行
モードの両方で有効です。
［ログオン］ダイアログでは、また、Magic 日付も表示されます。この日付はユーザが変更でき、入力された日付がそのセッションで使われます。
［ログオン］ダイアログの入力項目は、［設定 / 動作環境 / システム］の次のオプションを使用して変更できます。
• パスワード入力• 日付入力• ログオン許可
上記のオプションについては、詳しくは、本章前述の「設定／動作環境」の説明を参照してください。

［ログオン］ダイアログの設定欄
ユーザ ID
リファレンス
Magic eDeveloper V9 Plus99

第 2 章 - 設定
ユーザの名前で、半角英数字で入力します。入力するユーザ ID は、［ユーザ ID ］テーブ
ルに登録されているものでなければなりません。
［ログオン］ダイアログのユーザ ID プロンプトは、［動作環境］ダイアログの［パスワード入力］欄の値が「Yes」のときに表示されます。
ユーザ ID は、30 桁までしか指定できません。

パスワード
ユーザのパスワードで、ユーザ ID と対になるものです。半角英数字で入力します。このパスワードは、［ユーザ ID ］テーブルに登録されているものでなければなりません。
［ログオン］ダイアログのパスワードプロンプトは、［動作環境］ダイアログの［パスワード入力］欄の値が「Yes」のときに表示されます。
ユーザ ID とパスワードは、どちらも大文字と小文字が区別されます。また、ユーザ IDとパスワードのプロンプトが表示されている場合、ユーザがユーザ ID とパスワードを正しく入力しない限り閉じません。
パスワードは、20 桁までしか指定できません。

指定日付［ログオン］ダイアログには日付が表示されますが、この日付は Magic 日付で、システム
日付ではなく、ここで変更できます。この日付は、アプリケーションプログラムから、
MDate 関数を使用して取得できます。
MDate 関数については、第 8 章「関数」の該当セクションを参照してください。
Magic 日付については、本章前述の［設定／動作環境］を参照してください。
［ログオン］ダイアログの日付プロンプトは、［動作環境］ダイアログの［日付入力］欄の値が「Yes」のときに表示されます。

MAGIC.INI ファイル
MAGIC.INI ファイルには、Magic の動作環境情報がすべて保存されています。MAGIC.INI
ファイルのパラメータは、本章で解説している［設定］メニューの各テーブルを使用して編集します。MAGIC.INI ファイルはテキストファイルで、一般のテキストエディタを使用して編集することもできます。また、Magic の INIPut 関数と INIGet 関数を使用して、アプリケーションから MAGIC.INI ファイルの内容を操作することもできます。INIPut 関
数と INIGet 関数については、詳しくは、第 8 章「関数」を参照してください。
MAGIC.INI ファイルは、複数のセクションに分かれており、それぞれ関連したパラメー
タがまとめられています。このセクションは、Magic によって使われるものと、ユーザ情報が格納されているものに大別されます。Magic により使われるセクションは次のと
おりです。

100

動作環境

［MAGIC_ENV ］

グローバル環境パラメータシステム［MAGIC_SYSTEMS ］

使用できる Magic アプリケー
ション

サーバ

［MAGIC_SERVERS ］

使用できるリモートサーバ

リファレンス
Magic eDeveloper V9 Plus

MAGIC.INI ファイルサービス

［MAGIC_SERVICES ］

サーバ別の使用できる Magic
アプリケーション

通信ゲートウェイ ［MAGIC_COMMS ］

使用できる通信ドライバ

DBMS［MAGIC_DBMS ］

サポートされる DBMS

データベース［MAGIC_DATABASES ］

サポートされるデータベース

論理名［MAGIC_ LOGICAL_NAMES ］ 論理名テーブル設定内容

プリンタ［MAGIC_ PRINTERS ］

プリンタ情報ゲートウェイ［MAGIC_GATEWAYS ］

使用できるゲートウェイ

言語［MAGIC_ LANGUAGE ］

言語テーブル設定内容

Web オンライン［MAGIC_WEBONLINE］

特殊［MAGIC_SPECIALS］

日本語版環境［dbMAGIC_ ENV］

日本語版特有の設定

日本語印刷環境［WINDOWSJ_PRINTER］

日本語版印刷環境パラメータMAGIC.INI ファイルのユーザ用のセクションには、アプリケーションで必要な情報を格納します。たとえば、次のような情報を保存しておきます。
• ファイルやプログラムでの直前の処理（たとえば、直前に処理が行われた顧客）など、
アプリケーションで生成される暫定値の記録。この場合、データベーステーブルが使われないため、処理負荷が少なくてすみます。
• グローバル変数。アプリケーション内で複数のプログラムにより使われる値を保存できます。
• エンドユーザアプリケーションで使うための任意のセクション。
上記のように、MAGIC.INI ファイルには、Magic アプリケーションに関する情報とユー
ザに関する情報の両方が格納できます。このため、Magic をマルチユーザ環境で使う場
合、通常各ユーザ毎にそれぞれ MAGIC.INI ファイルを用意し、保存するディレクトリも別個にします。
MAGIC.INI ファイルにアクセスするときには、並行処理の制御はありません。マルチユー
ザ環境で MAGIC.INI ファイルを複数のユーザが共有する場合は、読み取り専用で使用しなければなりません。複数のユーザが同時に MAGIC.INI ファイルに書き込もうとすると、一方のユーザが他方のユーザの更新を上書きすることになります。

MAGIC.INI ファイルのフォーマットMAGIC.INI ファイルは、自由形式のテキストファイルです。パラメータはそれぞれ、別々の行に記述します。パラメータは、パラメータの名前や値が長い場合、複数行にわたって記述することもできます。パラメータはいずれも、変更不可能な識別子（名前）と変
更可能な部分（値）で構成されます。途中に空白行やコメント行を入れることもできます。文字はすべて半角英数字とします。
MAGIC.INI ファイルのフォーマットは、次のようになります。
［セ ク シ ョ ン名］
パラ メ ー タ 名 = パラ メ ー タ 値：
パラ メ ー タ 名 = パラ メ ー タ 値; こ れは コ メ ン ト です。

セクション名セクションヘッダとしてセクションの先頭行にその名称を記述します。

リファレンス
Magic eDeveloper V9 Plus101

第 2 章 - 設定セクション名は、大カッコで囲みます。セクション名としては、ユニークで意味のある
名前を使うべきです。セクションヘッダ名にはブランクを入れられません。セクション
内のパラメータは、このセクションヘッダを使用してアクセスされます。異なるアプリ
ケーションによって書き込まれたセクションの衝突をなくすため、長い名前を使用することを推奨します。セクションは、次のセクションヘッダまたはファイルの終わりで終了します。

パラメータ名
特定のセクションに属するパラメータはすべて、そのセクションのセクションヘッダ以降の行に記述します。パラメータの名前や値が長い場合、複数行にわたってパラメータを記述することもできます。パラメータ名は決まっており、ユーザが変更することはできません。このパラメータ名を使用して、パラメータの値が識別されます。パラメータの値は、ユーザが指定できます。同一のセクションに、同じ名前のパラメータを置くことはできません。ただし、セクションが異なれば、同じ名前のパラメータを記述できます。パラメータ名の中には空白を入れることはできません。

=
半角等号（’=’）は、パラメータ区切り文字です。パラメータ名とパラメータの値は、この等号で区切ります。等号の前の文字はすべて、パラメータ名の一部として解釈されます（ただし、前後の空白は無視されます）。また、等号の後ろの文字はすべて、パラメー
タの値の一部として判断されます（ただし、前後の空白は無視されます）。

パラメータ値
Magic が使用するセクションのパラメータの値は、Magic の設定操作により決まります
が、ユーザが使用するセクションのパラメータの値は開発者が指定できます。パラメー
タの値が長く、次の行にわたるときには、最初の行の末尾にプラス記号（+）を付けます。これで、その行と次の行がつながっていると解釈されます。なお、プラス記号をパラメータの名前の一部として使いたいときには、エスケープ記号の ‘¥’ を前につけて「¥+」とします。

;
半角セミコロン ’;’ が行先頭にあると、コメント行になります。

（例）MAGIC.INI ファイルへのサーバ情報の保存
サーバ情報は、次のフォーマットで MAGIC.INI ファイルに保存します。
<server name>=<communication type number>, <server address>,<username>, <password>, <timeout>, <alternate server name>,<server type number>
サーバタイプ番号は、サーバタイプを示すユニークな番号です。サーバタイプ番号とサーバタイプは、Magic 内であらかじめ決められています。
Magic アプリケーションサーバの場合、サーバタイプ番号は 1 です。MRB も、サーバタイプ番号は 1 です。データサーバとして使う場合、サーバタイプ番号は 0 です。

コマンドラインオプション
コ マンドラインオプションを使うことで、特定のセッションで固有の Magic の動作設定
を 行 う こ と が で き ま す。コ マ ン ド ラ イ ン オ プ シ ョ ン で 使 用 で き る パ ラ メ ー タ は、MAGIC.INI ファイルで使用できるパラメータと同じです。コマンドラインオプションで指定した値は、MAGIC.INI ファイルの値より優先されます。

102

リファレンス
Magic eDeveloper V9 Plus

コマンドラインオプション

コマンドラインオプションの詳細
コマンドラインオプションの構文は、次のとおりです。
MGxxx/Parameter1=Value1/Parameter2=Value2 ...

ここで、
xxx

Magic 実行可能ファイルの拡張子です。
（例）GENW ：eDeveloper（開発版），RNTW ：Client（実行版）/

新規のパラメータが始まることを示します。

Parameter

パラメータ名を示します。MAGIC.INI ファイルで使われるものと同じです。このパラメータ名には、セクション名を入れることもできます。
セクション名を指定した場合、パラメータは、そのセクションに属することになります。セクション名を指定しない場合、デフォルトのセクションとして［MAGIC_ENV］が使われます。

=

パラメータ名と値の区切文字です。パラメータ名、区切文字、値との間には空白を入れることはできません。

Value

そのパラメータの値で、有効値が指定できます。

なお、オペレーティングシステムのコマンドラインは一般に短く、コマンドラインオプ
ションの記述が全部収まらないことがあります。そのような場合は、コマンドラインオ
プションをファイルに記述し、そのファイルを指定して読み込むことができます。
コマンドラインオプションをファイルで読み込む場合の構文は、次のようになります。
MGxxx @filename
ここで、
xxx

Magic 実行可能ファイルの拡張子です。

@

この記号の後ろの部分が、コマンドラインファイルであることを示します。

filename

コマンドラインオプションファイルの場所と名前（オペレーティング
システム上の名前）です。このファイルの内容は、コマンドラインオ
プションの規則にしたがって記述しなければなりません。ファイルでは、オプションは別々の行に記述します。

コマンドラインで、コンマ（,）、円記号（￥）、プラス記号（+）、等号（=）を記号ではなく文字として使いたいときには、前に円記号（¥）を置きます。たとえば、次項の「コマンドラインオプションの例」では、円記号を使用してコンマを文字として記述するときの例を示しています。
また、値の前後を一重引用符（ ）で囲むと、その値が文字として解釈されます。たとえば、次のようになります。
/CommandProcessor = '%comspec%'

コマンドラインオプションの例
MGGENW /StartApplication=1 /ApplicationStartup=R
上記のオプションでは、Magic が実行モードで起動した後、アプリケーションテーブルの最初のアプリケーションが自動的に起動します。
また、上記の例では、パラメータ名にセクションを指定していないため、パラメータはいずれも［MAGIC_ENV］セクションに属するものと解釈されます。

リファレンス
Magic eDeveloper V9 Plus103

第 2 章 - 設定

MGGENW /［MAGIC_LOGICAL_NAMES］Drive=C:
上記のコマンドラインオプションでは、論理名「Drive 」が実行名「C:」に設定されます。
MAGIC.INI ファイルの［MAGIC_LOGICAL_NAMES］セクションに論理名「Drive」が見つからなかったときには、Magic のセッション中に暫定的に論理名が作成されます。

MGGENW @mycmdl
上記の例では、カレントディレクトリの mycmdl という名前のファイルが検索されます。
このファイルには、コマンドラインオプションが記述されています。以下にコマンドラ
インファイルの内容記述例を示します。
/StartApplication=1/ApplicationStartup=R/ ［MAGIC_LOGICAL_NAMES］ Drive=C:
このファイルの記述例は、上記の 2 つの例を組み合わせたものです。

MGGENW/［MAGIC_PRINTERS］Printer1=LaserP¥,lpt1:¥,lp.atr¥,
lp.eng¥,66
このオプションでは、［プリンタ］テーブルの最初のプリンタの設定が、コマンドライン
で指定された設定に置き換えられます。

コマンドラインによるアプリケーションの起動
アプリケーションの物理ファイル名、またはアプリケーション識別子をコマンドライン
パラメータとして使用することにより、アプリケーションを、指定して Magic を起動することができます。この機能を利用するには、OS のコマンドラインに /MCF= というパラメータ、またはアプリケーションコントロールファイル（MCF ）のフルパス名を指定します。
Magic に渡されたパラメータが 2 文字だった場合、まず、［識別子］欄が検索されます。
なお、検索では大文字と小文字が区別されません。
一方、Magic に渡されたパラメータが 2 文字より長かったときには、［アプリケーション］
テーブルの［CTL ファイル］欄が最初に検索されます。
パラメータに一致するアプリケーションが見つからなかった場合、デフォルトデータ
ベースをもとにアプリケーションが作成されます。
以上のように、アプリケーションが見つかった後、もしくは作成された後、そのアプリ
ケーションが Magic アプリケーションとして起動します。

コマンドラインオプションと MAGIC.INI の値の関係
Magic のパラメータのうち、設定可能なパラメータはいずれも、コマンドラインオプショ
ンを使用して上書きできます。こういったコマンドラインのパラメータの値は、基本的には一時的なもので、特定のセッションでのみ有効です。コマンドラインを使用して開始したセッションのパラメータの値は、後続のセッションでは使われません。後続のセッ
ションのパラメータの値は、MAGIC.INI ファイルの値に戻ります。
コマンドラインの値はメモリに置かれ、そのままでは MAGIC.INI ファイルに書き込まれることはありません。
［設定］メニューを開いたときに表示される内容は、MAGIC.INI の値とコマンドラインの値の組み合わせたものとなります。つまり、［設定］メニューのテーブルのパラメータの値は、通常MAGIC.INI ファイルのパラメータの値と同じですが、コマンドラインを使用してパラメータを指定したときには、そのパラメータの値が［設定］メニューのテーブルの値になります。その場合、そのパラメータについては［設定］メニューのテーブル表示と実際の MAGIC.INI ファイルで値は異なることになります。

104

リファレンス
Magic eDeveloper V9 Plus

コマンドラインオプション［動作環境］ダイアログの設定欄とコマンドラインの値の対応一覧＃

動作環境の設定欄

コマンドラインの名前

値［システム］タブ
1

オーナ名

Owner

文字列

2

システムログオン

SystemLogin

N,U,D,L

3

Magic 日付

DATE

システム日付4

ユーザ ID

（なし）

文字列

5

パスワード入力

InputPassword

Yes, No

6

日付入力

InputDate

Yes, No7

デフォルトアプリケーション

StartApplication

数値

8

アプリケーション起動モード

ApplicationStartup

T,R,B

9

スクリーンモードプロンプト

ScreenModePrompt

文字列

10

西暦基準年

Century

数値

バッチイベント間隔

BatchPollingInterval

数値

11

（ミリ秒）
12

タスクキャッシュサイズ（KByte）

TaskCacheSize

数値

13

修正モードでの登録許可

AllowCreateInModify

Yes, No14

照会モードでの修正許可

AllowUpDateInQuery

Yes, No15

照会モード位置付けで確認表示

LocateModeQueryWarning

Yes, No

16

アプリケーションテーブル
表示AccessApplications

Yes, No17

動作環境テーブル表示

AccessEnvironment

Yes, No18

基本色テーブル表示

AccessColors

Yes, No

19

フォントテーブル表示

AccessFonts

Yes, No

20

キーボード割付テーブル表示

AccessKeyboardMapping

Yes, No21

サーバテーブル表示

AccessServers

Yes, No22

サービステーブル表示

AccessServices

Yes, No

23

ビジュアル接続表示

AccessVisualConnection

Yes, No

24

通信ゲートウェイテーブル
表示AccessCommunications

Yes, No

25

DBMS テーブル表示

AccessDBMS

Yes, No26

データベーステーブル表示

AccessDatabases

Yes, No

27

論理名テーブル表示

AccessLogicalNames

Yes, No28

言語テーブル表示

AccessLanguages

Yes, No

29

プリンタテーブル表示

AccessPrinters

Yes, No30

HTML スタイルテーブル表示

AccessHTMLStyles

Yes, No31

プリンタ属性テーブル表示

AccessPrintAttributes

Yes, No32

ログオン許可AccessLogon

Yes, No33

開発モード許可

AccessToolkit

Yes, No34

外部テストツール使用

AllowTesting

Yes, No35

チェックメッセージ表示

AccessCheckerMessages

Yes, No36

一時ファイルパス

TempPath

文字列37

最大ファイル数

FileHandles

数値

リファレンス
Magic eDeveloper V9 Plus105

第 2 章 - 設定＃

動作環境の設定欄

コマンドラインの名前

値

38

ライセンス

LicenseName

文字列

39

ライセンスファイルライセンスファイル

文字列

40

モニタ起動

モニタ起動

Yes, No41

モニタの出力ファイル

Monitor2File

文字列

42

リモートフローモニタ

RemoteFlowMonitor

文字列

43

リモートフローモニタの使用
ポート

RemoteFlowPortNumber

数値［マルチユーザ］タブ
1

端末番号

Terminal

数値2

マルチユーザアクセス

MultiUser

Yes, No

3

ISAM トランザクション

ISAMTransanctions

Yes, No4

デッドロック防止

DeadlockPrevent

Yes, No

5

サーバ通信間隔

ServerTimeout

数値6

ロックファイル

LockFile

文字列7

リソースロックファイル

ResourceLockFilePath

文字列

8

ロック前にトランザクション
開始（ISAM ）LockWithinTranYes, No［動作設定］タブ1061

デフォルトデータベース

DefaultDatabase

文字列2

ソート／一時用データベース

TempDatabase

文字列3

範囲 / 位置付ポップアップ
秒数

RangePopTime

数値

4

ソート / 一時用ポップアップ
秒数

TempPopTime

数値

5

キーボード休止秒数

IdleTime

数値

6

プルダウンメニュータイムア
ウト

MenuCloseTimeout

数値7

自動終了時確認

ConfirmAutoExit

Yes, No8

タスクフロー変更

FlowModify

F,S

9

コピーライトメッセージ表示

CopyrightMessages

Yes, No

10

実行時のカスタムコピー
ライト

RTUserCopyright

文字列

11

MAGIC.INI 常駐

ResidentINI

Yes, No

12

GUI 実行時ツールバー

RtToolBarGUIYes, No

13

常駐テーブル読込

LoadResidentTabls

Yes, No

14

メッセージの詳細表示

DisplayFullMsgs

Yes, No15

カーソルの画面中央位置付

CenterScreenInOnline

Yes, No

16

修正後の再位置付

RepositionAfterModify

Yes, No

17

インデント文字IndentCharacters

数値

18

デフォルト色DefaultColor

数値

19

デフォルトフォント

DefaulFont

数値20

ツールチップ表示タイムアウト

TooltipTImeout

数値21

ブックマークの最大登録数

Bookmarksnumber

数値

リファレンス
Magic eDeveloper V9 Plus

コマンドラインオプション＃

動作環境の設定欄

コマンドラインの名前値22

クロスリファレンスの結果の最大登録数

MaxCrfResults

数値

23

コマンド処理のリトライ間隔

RetryOperationTime

数値

24

入出力デバイスのオープンタ
イミング

IOTiming

I,O

25

フロートパレットを常に全面表示

PalettesAlwaysOnTop

Yes,No26

パレット統合可DockablePalettes

Yes, No27

単一拡張パレット

SingleExpandPalettes

Yes, No28

特性シートの自動操作

AutomaticPropertySee

N,C,O,F
数値

29

画像キャッシュサイズ

ImageCacheSize

30

画像キャッシュ

ImageCacheCheckTime

Yes, No31

最小チェックレベル

CheckerLevel

E,W,R

32

メッセージのグループ化

CheckerGroups

O,T,B

33

チェック項目の自動位置付け

CheckerJumpAuto

Yes, No34

テキスト形式互換

MLETextbaseCompatible

Yes, No35

プリントキューの区切り文字

PrintQueueDelimit

１文字

36

印刷中断許可PrintCancel

Yes, No

日付タイプ

DateMode

A,E,J

3 桁区切文字ThousandSeparator

１文字
１文字

［国別設定］タブ
1
2
3

小数点

DecimalSeparator

4

日付区切文字

DateSeparator

１文字

5

時刻区切文字TimeSeparator

１文字

6

IME の初期入力状態

NewIMECtrl

N,Y,R,K7

IME を自動的にオフ

IMEAutoOff

Yes,No

ロゴファイル

LogoFile

文字列

CONST ファイル

ConstFile

文字列
文字列［外部参照］タブ1
2
3

ヘルプファイル

HelpFile4

基本色定義ファイル

ColorDefinitionFile

文字列

5

フォント定義ファイル

FontDefinitionFile

文字列

6

キーボード割付ファイル

KeyboardMappingFile

文字列

7

ドキュメントテンプレート
ファイル

DocumentTemplateFile

文字列8

HTML スタイルファイル

HTMLStyles

文字列プリンタ属性ファイル

PrintAttr

文字列
文字列

9

セキュリティファイル

UsersPath

11

開始時セキュリティファイル

StartupUsersFile

文字列

12

OEM から ANSI への変換
ファイル

OEM2ANSIFile

文字列

13

ブラウザタスクで使用するエンコード

Unicode2Ansi

文字列

14

照合順序ファイル

CollatingFile

文字列

10

リファレンス
Magic eDeveloper V9 Plus107

第 2 章 - 設定＃

動作環境の設定欄

コマンドラインの名前値15

デフォルト言語

StartingLanguage

文字列

16

通貨変換ファイル

EuropeanCurrencyConversio
nFile

文字列

17

ドロップデータサポート・
ユーザフォーマット

DropUserFormats

文字列

18

コマンドプロセッサ

CommandProcessor

文字列

19

HTTP ProxyHTTPPRoxyAddress

文字列
数値

20

HTTP タイムアウト

HTTPTimeout

21

データ出力用 HTML テンプ
レートファイル

PrintDataHtmlTemplate

文字列

22

データ出力用 XML テンプレー
トファイル

PrintDataXmlTemplate

文字列

23

WSDL ファイルのパス

WsdlFilesPath

文字列

24

メール接続タイムアウト

MailConnectionTimeout

数値25

メール処理タイムアウト

MailOperationTimeout

数値

26

SNMP データベース接続しき
い値

SNMPDatabaseUtilizationTh
reshold

数値

27

LDAP アドレス

LdapAddress

IP アドレス : ポート
番号28

LDAP 接続文字列

LdapConnectionString

文字列

LDAP ドメインコンテキスト

LdapDomainContext

文字列

LDAP タイムアウト

LdapTimeout

数値
文字列

29
30
31

SSL CA 証明ファイル

SSLCACertificateFile

32

SSL クライアント証明ファイル

SSLClientCertificateFile

文字列

33

SSL クライアント証明書パス
ワード

SSLClientCertificatePassword

文字列［アプリケーションサーバ］タブ

108

1

アプリケーションサーバとして動作

ActivateRequestsServer

Yes, No

2

メッセージサーバ

MessagingServer

文字列

3

アプリケーションサーバはア
プリケーションを変更可

RequestsServerCanReplaceC
TL

Yes, No

4

HTTP リクエスタ

InternetDispatcherPath

文字列

5

Web ドキュメントパスの別名

WebDocumentAlias

文字列6

Web ドキュメントパス

WebDocumentPath

文字列7

リクエスタのタイムアウト

RequesterTimeout

数値8

最大平行リクエスト数

MaxConcurrentRequests

数値

9

ロードバランシングの優先度

LoadBalancingPriority

数値

10

Web オーサリングツール

AuthoringToolPath

文字列

11

コンテキスト非稼動タイム
アウト

ContextInactivityTimeout

数値

12

コンテキストのアンロードタ
イムアウト

ContextUnloadTimeout

数値13

ブラウザクライアントモ
ジュールのクライアント配置

UseSignedBrowserClient

Yes, No

リファレンス
Magic eDeveloper V9 Plus

その他の重要なパラメータ＃

動作環境の設定欄

コマンドラインの名前値14

ブラウザクライアントのサブバージョン

BrowserClientSubVersion

数値15

ブラウザクライアント方式

BrowserClientTechnology

J,N,A,E

16

ブラウザクライアント環境エ
ラー URLBrowserClientTechnologErr

文字列

17

ブラウザクライアントネット
ワーク復旧タイムアウト

BrowserClientRecovery17

数値

18

ブラウザクライアントキャッ
シュパス

CTLCacheFilesPath

文字列

19

ブラウザクライアントキャッ
シュエイリアス

CTLCacheFilesAlias

文字列

20

フォアグラウンドでのコンテ
キスト管理

ForegroundContextManagem
ent

A,S

その他の重要なパラメータ［動作環境］のダイアログには含まれませんが、MAGIC.INI に記述するか、またはコマン
ドラインオプションで指定することで有効になるパラメータがあります。

［MAGIC_ENV］セクション
MDIClientEdge=Y（デフォルト）
通常は、MDI ウィンドウのエッジ（MDI のメインウィンドウの内側の境界）は立体表示されており、MDI 表示に合わせるように表示されたり、フォームの境界に接した状態で立体表示のコントロールが配置された場合、特殊な立体効果で表示されます。このような表示を無効にする必要が合う場合に指定します。
• Y……表示効果を有効にします。
• N……表示効果を無効にします。

GeneralErrorLog = ログファイル名
Magic の実行中に発生したエラー内容を記録するログファイル名を指定します。
例：GeneralErrorLog=C:¥MyLogs¥MGError.log
このファイル名を指定しない場合、エラーログファイルは作成されません

Filters= フィルタ用キーワード : 割合
リクエストに付加されたキーワードをもとに処理を按分する割合を指定します。
例：Filters = HTTP:10% | SOAP:30% | RMC:20%
フィルタ機能の詳細は、第 20 章「分散アプリケーション アーキテクチャ」の「リク
エストのフィルタ機能」を参照してください。

［MAGIC_SPECIALS］セクション

リファレンス
Magic eDeveloper V9 Plus109

第 2 章 - 設定

ClosePrintedTablesInSubtasks=Y（デフォルト）
親タスク上の入出力テーブルを使用して子タスクでテーブル印刷をする場合、子タスクを終了した時点で、そのテーブルをクローズするか否かを指定します。
• Y……テーブルをクローズします。次回子タスクが呼ばれたとき、別テーブルとして印刷出力されます。
• N……テーブルをクローズしません。全て同じテーブルに出力されます。

CompressBrowserXML=A（デフォルト）
ブラウザクライアントによって処理される HTML の中の XML フォーマット部分を圧縮することが可能になります。ただし、クライアント（ブラウザ）でデータを展開する必要があるため、タスクをブラウザでロードした後に実行される初期化処理が長くなることがあります。
• Y……ブラウザクライアントによって処理される HTML の中の XML フォーマット部
分を常に圧縮することが可能になります。
• N……ブラウザクライアントによって処理される HTML の中の XML フォーマット部
分を常に圧縮しません。
• A……接続が遅いか否かを判断して自動的に決定します。接続が遅くかつ、HTML のサイズが 3KB 以上の場合、XML は圧縮されます。接続の速度は各エンドユーザの最初のリクエストで評価されます。
この機能を有効にするには、XML 暗号化の設定を行う必要があります。

ExceptionMessageBoxDisplay=N （デフォルト：バックグラウンドモード
時）• Y……エラーのメッセージボックスが表示されます。
• N……OS の例外処理が発生して Magic が終了する過程において、エラーのメッセージ
ボックスを表示させないようになります。この場合、エラー情報は mgexcep.log に出力されます。
FormUnit，Force2DText などの旧バージョンで使用していたパラメータは、サポー
トされなくなりました。

ImportCreateErrHandler=N （デフォルト）
ISAM（Pervasive.SQL）データベースを使用した、dbMAGIC Ver8 のアプリケーションの移行を容易にできるように拡張されました。MAGIC.INI に以下のオプションを指定してリポジトリ入力することによりエラーハンドラ−を自動的に追加させることができます。
• Y……レコードアクセス失敗時の設定を優先します。
• TRANS……トランザクションの設定を優先します。
• N……Ver9 のデフォルト設定を行います。
設定内容の詳細は、第 11 章「データ管理」の「Magic Ver8.2 からのアプリケーショ
ン移行」を参照してください。

MergeFlushSize = 数値（デフォルト：51200）
このフラグは、マージ出力時のメモリバッファサイズ（バイト）を定義できます。

110

リファレンス
Magic eDeveloper V9 Plus

その他の重要なパラメータ
利用可能なメモリリソースの範囲内で最も最適なパフォーマンスになるように定義してください。

MergeTrim=Y（デフォルト）• Y……マージ出力時に文字列の右側の空白が削除されます。
• N……空白の削除は行われません。

Special3Dstyle=N（デフォルト）
スタイル特性が、「立体」に指定されているコントロールの背景色を［色］特性で指定することができます。
• Y……背景色が有効になります。
• N……背景色は無効になります。
この設定は、以下のコントロールの表示に反映されます。
• スタティック（テキスト、四角形、丸、グループ）• チェックボックス• ラジオボタン• タブ
これ以外にも以下の表示の色が有効になります。
• テーブルコントロールのカラムヘッダ、区切り線、コントロールの背景……「#50」の色が表示されます。
• メニューバーの前景／背景色……「#51」の色が表示されます。
• ツールバーの前景／背景色……「#52」の色が表示されます。
• ステータスバーの前景／背景色……「#53」の色が表示されます。

SpecialAccessPhantomByHandler=Y （デフォルト）
V9Plus SP3 よりファントムタスクの動作が変更されました。この動作をそれ以前のバージョンと同じにさせるための互換フラグです。
V9PlusSP1b 以前で開発されたアプリケーションを移行する場合は、このフラグを使用してください。
• Y……この機能が有効になります。
• N……この機能は無効になります。（V9Plus SP1b 以前と互換性があります。）

SecureBrowserClient = N（デフォルト）• Y……ブラウザクライアントの XML のソース部分は、暗号化されるようになります。
これにより、タスクロジックと最初のデータは、ブラウザのソース表示等で閲覧することができなくなります。
• N……暗号化処理は行われません。

SpecialCenteredFloatingWindow=N （デフォルト）「フローティングウィンドウ」が「Yes」の GUI 形式フォームの表示位置を制御します。
• Y……フローティングウィンドウは中央に表示されます。
• N……フローティングウィンドウはフォーム特性において設定された位置に表示されます。

リファレンス
Magic eDeveloper V9 Plus111

第 2 章 - 設定

SpecialConvAddSlash=Y（デフォルト）
インターネットプログラムにおける HTML ドキュメント、HTML フォーム等のフォーム
特性、およびこれらのフォーム上のコントロール特性において「Web サーバ上のリソース（イメージファイル、サウンドファイル等）を定義した場合、ファイル名の先頭に「/」がなくても、実行時に「/」が付加されます。
これにより、コントロールタイプがイメージの文字項目および式において指定されたリソースを参照する場合にも「/」が付加されるようになりましたので、プログラム上においてパス名の変更が必要となる場合があります。
• Y……この機能が有効になります。
• N……この機能は無効になります。

SpecialDefaultTransactionMode = D（デフォルト）オンラインタスクのデフォルトのトランザクションモードを指定します。
• D …… 「遅延」がデフォルトになります。
• P …… 「物理」がデフォルトになります。
オンラインモードのルートタスクでのみ有効です。バッチタスクやブラウザクライアン
トタスク、サブタスクには反映されません。

SpecialDynamicContextMenu=N（デフォルト）
タスク特性のショートカットメニューを式で動的に指定する指定を有効にするかどうかを指定します。この機能を利用すると、ショートカットメニュー（コンテキストメニュー）
をアプリケーション実行時に動的に切り替えることができます。
• Y……この機能が有効になります。
［タスク特性］ダイアログの［ショートカットメニュー］欄の右側に［式］欄が表示されます。
• N……この機能は無効になります。

SpecialFlat2DCombo=N（デフォルト）
開発用ダイアログのコンボボックスを平面表示させるかどうかを指定します。アプリ
ケーションの表示には影響しません。
• Y……この機能が有効になります。
• N……この機能は無効になります。

SpecialLockVersion=5（デフォルト）
Magic アプリケーションをロックできるユーザ数を決めます。この指定を行う場合、全ての端末において同一の設定をしてください。
• 5……256 ユーザがアプリケーションをロックできます。
• 8……拡張として 1024 ユーザがアプリケーションをロックできます。

SpecialNoCheckIndexInDeferred=N（デフォルト）
遅延トランザクションモードでインデックスチェック機能を無効にする必要がある場合に指定します。遅延トランザクションモードで重複レコードのエラーを出したくない場
合に使用してください。
• Y……遅延トランザクションモードでインデックスチェック機能が無効になります。
• N……インデックスチェック機能は有効です。

112

リファレンス
Magic eDeveloper V9 Plus

その他の重要なパラメータ

SpecialPaintFormInCreate = N（デフォルト）「登録」モードのタスクが終了した後もウィンドウを開いたまま残しておきたい場合には、各項目の値をデフォルト値あるいは「代入」式で指定した式により評価することができます。
• Y……全ての変数項目の代入式とデフォルト値は計算され、また、コントロールの値として式が指定されている場合には、その式が計算されます。
• N……全ての変数項目の代入式とデフォルト値は評価されません。

SpecialSingleItemRadio=N（デフォルト）
ラジオボタンにソーステーブルが定義されていて、実行時に選択されたレコードが１件しかなかった場合に、単一オプションとして表示するかどうかを指定します。
• Y……単一オプションとして表示します。
• N……ボタンが表示されません。

SpecialSoapXmlHeader=N （デフォルト）
コール Web サービス処理コマンドでドキュメント形式のサービスを呼び出した場合に、XML の文字コ ードに基づいて、戻り値の内容に XML ヘッダ（<?xml version="1.0"
encoding="・・・"?>）を追加するようにします。
• Y……この機能を有効にします。
• N……無効です。

SpecialTrimTrailingNulls = N（デフォルト）
文字型データの後尾に NULL 文字がある場合、Trim 関数で削除するかどうかを定義します。Ver9.30JSP5 以前は NULL 文字も削除していましたが、Ver9.40JSP1 以降は削除しな
いようになりました。
• Y……Trim 関数で NULL 文字を削除します。（Ver9.30JSP5 以前と同じ）• N……NULL の削除を行いません。

XXLNumericSize = N（デフォルト）• Y……19 桁〜 38 桁までの数値項目を扱う場合、に「Yes」設定します。ただし、この設定を行うとパフォーマンスに影響がでる場合があります。
• N……数値項目は 18 桁までです。

［Interface_Builders］セクション
各インタフェースビルダユーティリティが管理するコンポーネント情報が保存される場所を指定します。インタフェースビルダが起動されるとこのフォルダ上のファイルをメ
モリテーブルに展開します。
• COM_DATA= (COM インタフェースビルダ用 )• WS_DATA= (Web サービスインタフェースビルダ用 )• JCG_DATA= (Java コンポーネントジェネレータ用 )• XCG_DATA= (XML コンポーネントジェネレータ用 )• MCI_DATA= (Magic インタフェースビルダ )• EJB_DATA= (EJB インタフェースビルダ )リファレンス
Magic eDeveloper V9 Plus113

第 2 章 - 設定
指定されない場合は、Magic のインストール先の Components サブフォルダの各対応する
サブフォルダ上をデフォルトとします。この指定を変更する場合は、インタフェースビ
ルダ起動前にファイルを変更先にコピーしておいてください。作成されるファイルは、全て同じ名前ですのでフォルダ名を同じにしないでください。

XCG_RECURSION_LIMIT=n
再帰状態の XML スキーマを XCG でロードした場合、指定した数値のレベルで再帰処理を止めるように指定します。このパラメータが指定されない場合、5 階層で再起処理を止めます。

［dbMAGIC_ENV］セクション
As400Set = Y（デフォルト）
AS/400（iSeries）の DBCS 対応のために、Magic の文字型書式の「位置指示記号」をス
イッチを指定することにより機能拡張します。
DDS フィールド

位置指示記号

制限事項

DBCS 専用フィールド（J）

J

全角のみ入力可DBCS 混用フィールド（O）

X

全角、半角の混在入力可

DBCS 択一フィールド（E）

T

全て全角か、全て半角で入力可

DBCS 図形フィールド（G）

G

全角のみ入力可。シフトコード無し

SBCS （A）

S

半角のみ入力可• これらの書式は、AS/400（DB2/400) 以外でも使用することが可能です。この場
合、G は J と同一の動作になります。
• Magic 位置指示記号の（J、T、G）は、必ず２文字単位で記述します。
• 追加された位置指示記号と、Magic 位置指示記号文字（J, X, T, G, S) は混在して記述することができません。例．JJJJXXXX など• 追加された位置指示記号（J、T、G、S）は、U、L、# を使用できません。
• このフラグが N の場合、この機能は無効化されます。

CheckPicInherit = N（デフォルト）
Ver.8.2 からのリポジトリ入力時に、タイプの書式と実際の書式がずれているものがある
場合、チェックするかどうかを指定します。
• Y……タイプの書式と実際の書式のずれをチェックします。ずれが見つかった場合、リポジトリ入力のログにワーニングを記録します。
• N……チェックしません。これは既存の Ver.9.x バージョンと互換性があります。
Ver.8.2 におけるタイプと書式のずれは、テーブルやプログラムをリポジトリ出力した後、タイプリポジトリでタイプを追加し、そのテーブル / プログラムのリポジトリ出力ファ
イルを入力したりすると起こります。
このフラグによりタイプと実際の書式とのずれが見つかった場合には、Ver.9 にリポジトリ入力した後に修正するよりも、ログに記録されたワーニングをもとに、Ver.8.2 でタイプと項目の対応を正しく直し、再度リポジトリ出力して Ver.9 にリポジトリ入力することをお勧めします。

EnableRefreshAction = N（デフォルト）
登録モード時における「画面再表示」または 「ビュー再表示」アクションの動作をVer.8.2K4 より前のバージョンと互換性を維持する場合に使用します。

114

リファレンス
Magic eDeveloper V9 Plus

その他の重要なパラメータ• Y……登録モード時に「画面再表示」または 「ビュー再表示」アクションが有効になります。（Ver.8.2K4 以前と同じ動作です。）• N……登録モード時に「画面再表示」または 「ビュー再表示」アクションが無効になります。

GetDefPrintMode = N（デフォルト）
バックグランドモードで GUI 形式印刷した場合、Windows のプリンタドライバのプロパ
ティで設定している値（デフォルト値）が反映されない場合があります。この場合には、このフラグを「Y」に設定することでデフォル値を保持することができます。
• Y……Windows のプリンタドライバのデフォルト値を取得します。
• N……デフォルト値の取得処理は行われません。

LocateProgramList =N （デフォルト）
プログラム一覧（コールプログラムでズームしたとき等）の操作性を向上させるため、コンボボックス（全て、同一 CTL、コンポーネント）を切り替えたときに、カーソルを常に 先頭行にするのではなく、直前までカーソルのあったプログラムに位置付します。
• Y……この機能を有効にします。
• N……無効です。

ModalIsFloating = Y （デフォルト）
フォーム特性で「モーダルウィンドウ」=「Ｙes」にした場合の、「フローティングウィ
ンドウ」特性の動作を指定します。
Ver9.30SP3a と互換を保たせるには、このフラグを「Y」に設定してください。
• Y……［フローティングウィンドウ］が「Yes」と同じ動作になります。
• N……［フローティングウィンドウ］特性の指定に依存します。
Ver9.30 SP3a 以前のバージョンでは、フォーム特性で「モーダルウィンドウ」=「Ｙes」にすると、「フローティングウィンドウ」の設定内容にかかわらず「Yes」の時と同じ動作になってしまいました。
Ver 9.30 SP5 では、「モーダルウィンドウ」=「Yes」であっても、フローティング
ウィンドウにはならず、「モーダルウィンドウ」=「No」と同じ表示なっていました。

NoDocumentName = N （デフォルト）
GUI 形式印刷を行った場合、印刷キューに追加されるドキュメント名は、通常入出力ファ
イルの「名前」欄の名称の前に「Magic - 」が付加されます。これを付加するかどうかを指定します。
• Y……ドキュメント名に「Magic - 」が付加されません。
• N……「Magic - 」が付加されます。

PrecedeProgramList =N （デフォルト）
プログラム一覧の操作性を向上させるため、「コンポーネント名 . 辞書名」の順ではなく、「辞書名 @ コンポーネント名」の順で表示します。
• Y……この機能を有効にします。
• N……無効です。

リファレンス
Magic eDeveloper V9 Plus115

第 2 章 - 設定

PreviewFactorRoundDown = N（デフォルト）「縮小印刷（B4->A4）80%」のプレビュー結果（画面表示）を旧バージョン（9.4JSP1b）と同じになるように座標計算を行う必要がある場合に指定します。
• Y……この機能を有効にします。
• N……無効です。

PrintLine = S （デフォルト）「ページ当たりのレコード件数」が指定されている場合、レコードが終了した時点で各コントロールの印字を終了させます。印字を終了させない場合、レコードが終了しても、レコード件数分コントロールを印字します。
• Y……ラインコントロールとスタティックコントロール両者を終了させます。
• N……ラインコントロールとスタティックコントロール両者とも終了させません。
• L……ラインコントロールのみ終了させます。
• S……スタティックコントロールのみ終了させます。

ShowComponentError =N （デフォルト）• Y……コンポーネントの読込に失敗した場合にエラーメッセージを表示します。
• N……コンポーネントの読込に失敗してもエラーメッセージを表示しません。

ShowItemSymbolSelect = N（デフォルト）
レコードメインで、項目名と一緒にシンボル名 (A、B、...) を表示させます。
• Y……この機能を有効にします。
• N……無効です。

TripletNonAsciiUrl =N（デフォルト）• Y……URL を表す文字列に ASCII コード以外の文字が設定されている場合、そのコードを %##（## は 16 進コード）という形式に変換します。このコードはシフト JIS となります。
• N……URL を表す文字列にの変換は行いません。

WriteCheckerLog = N（デフォルト）
チェックユーティリティ（F8 キー）の結果をファイルに出力します。ファイルは Magicの作業フォールダ上に「mgchecker.log」という名前で作成されます。
• Y……この機能を有効にします。
• N……無効です。

ZoomFix = N（デフォルト）
これは、Ver7.1 での動作変更に対する互換性維持のためのフラグです。
タスクが以下のような設定の場合に関係します。
• 「タスク終了」に終了フラグ ( 変数 ) を設定• 「チェック時期」に「I= 即時」を選択• レコードメイン：「項目更新」コマンド（終了フラグに 'TRUE'LOG 設定）を、フロー
モード「A: 後置き」又は「B: 前置き」にて設定。(「中止」は、Y でも N でも同じ結果。)
ZoomFix の指定により以下のように動作します。

116• N ……レコード後処理を通過し、レコードに対する修正も書き込まれます。
リファレンス
Magic eDeveloper V9 Plus

その他の重要なパラメータ• Y ……レコード後処理も通過せず、レコード書き込みも行われず、すぐに終了するよ
うになります。
V9Plus ではタスクを終了するためには、上記のようなロジックにはせず、イベント
ハンドラや「クローズ」アクションを利用することを推奨します。こ のフラグはVer7 や Ver8 などで作成されたアプリケーションからの移行を行った場合に互換性を保持するためだけに利用してください。

［WINDOWSJ_PRINTER］セクション［WINDOWSJ_PRINTER］セクションについては、テキスト印刷ユーティリティの説明を参照してください。

リファレンス
Magic eDeveloper V9 Plus117

第 2 章 - 設定

［このページは意図的に空白にしています。］

118

リファレンス
Magic eDeveloper V9 Plus

3

モデル

モデルは、オブジェクトによって継承することのできる特性情報をもった集合です。オ
ブジェクトがモデルと継承関連にある場合、そのモデルの特性情報を引き継ぎます。オ
ブジェクトの特性値が各オブジェクトで設定されるとその継承関係が「解消」されます。
各オブジェクトで設定し直した値は、モデルによって継承された値より優先されます。
モデルの特性値が変更されると継承されているオブジェクトの特性値に反映されます。
モデルの使用は任意ですが、これを使用することでアプリケーションの開発や保守がしやすくなります。モデルを使用するとアプリケーションの開発や保守、異なるテーブル
間のデータ整合性の工数が低減されます。
本章では、次の内容について説明します。
• モデルリポジトリ• データ項目• 書式• 項目モデル特性• コントロールモデル特性• フォームモデル特性• ヘルプモデル特性• モデルの使用• モデル変換ユーティリティ

リファレンス
Magic eDeveloper V9 Plus

119

第 3 章 - モデル

モデルリポジトリ
モデルリポジトリには、アプリケーション開発者が定義したモデルが表示されます。以前の Magic のバージョンには「タイプリポジトリ」がありましたが、「タイプ」はより一般化された形で、「項目モデル」として、モデルリポジトリに定義されるようになりました。
モデルリポジトリでは、取消（キャンセル）アクション（F2）が無効です。入力内
容を取り消すことができませんので注意してください。

モデルリポジトリカラム• 名前……モデルの名前を定義します。モデル名の長さは、最大 30 桁です。
dbMAGIC Ver8.2 以前との互換のために 31 桁まで入力できますが、31 桁目は今後対応されなくなる場合があります。できるだけ 30 桁までに収めてください。
• クラス……モデルが割当てられたオブジェクトの種類• 型……クラスの中の小分類• フォルダ……リポジトリ内のオブジェクトを整理するためのフォルダの名前• 公開モデル名……モデルの公開名を記述します。そのモデル定義をコンポーネントとして外部から利用する場合に必須です。公開名はアプリケーションファイル内でユ
ニークでなければなりません。

クラスタイプ
Magic V9 Plus で定義できるモデルのクラスと型には次のようなものがあります。

項目
Magic Ver8 以前は、データ項目属性はタイプリポジトリに表示されていましたが、Ver.9
から「項目モデル」として定義されるようになりました。項目モデルには次の「型」があります。
• A= 文字……文字列• N= 数値……整数または小数• L= 論理……「False」または「True」を表す論理値• D= 日付……内部的には日数を表す数値を持つ日付• T= 時刻……内部的には秒数を表す数値を持つ時間• M= メモ……可変長の文字列• B=BLOB……Magic 以外のアプリケーションで作成された、任意のバイナリデータ• O=OLE …… OLE COM オブジェクトのインスタンスを作成するために使用される
BLOB 項目。OLE 項目の特性については、136 ページを参照してください。
• X=ActiveX …… ActiveX COM オブジェクトのインスタンスを作成するために使用される BLOB 項目。ActiveX 項目の特性については、136 ページを参照してください。
• V= ベクトル …… 任意の型のデータを配列として扱うことのできる型
データの型についての詳細は、「データ項目」を参照してください。

120

リファレンス
Magic eDeveloper V9 Plus

モデルリポジトリ

コントロール
フォームに貼り付けるコントロールをモデルとして定義することもできます。コント
ロールモデルを定義するには、「クラス」に以下に示すようなフォームの種類を指定してから、「型」から適当なコントロールのタイプ（プッシュボタンなど）を選びます。
クラスと型の組み合わせには、コントロールの性質に応じた制限があります。特定の「クラス」で選択可能な「型」は、「型」欄で表示されるコンボボックスから選ぶことができます。
• B= ブラウザ形式……ブラウザ形式のオンラインデータ• M=HTML 形式……HTML 形式の出力データ• D=GUI 表示……GUI 形式のオンランデータ• O=GUI 出力……GUI 形式の出力データ• X= テキスト形式……テキスト形式の入出力データ

フォーム
フォームのプロトタイプをモデルとして定義することもできます。フォームモデルを定義するには次のような「クラス」の中から１つ選んだ後、「型」として「フォーム」
を選びます。
• B= ブラウザ形式……ブラウザフォーム• M=HTML 形式……HTML フォーム
• D=GUI 表示……GUI 形式のオンラインフォーム• O=GUI 出力……GUI 形式の出力フォーム• X= テキスト形式……テキスト形式の出力フォーム• S= フレームセット形式……HTML フレームセットフォーム• G=HTML マージ形式……HTML マージフォーム

ヘルプ
ヘルプモデルには、次の型があります。
• I= 内部……Magic アプリケーション内で定義されるヘルプ• W=Windows 形式……Windows ヘルプ形式の外部ファイルに定義されるヘルプ

特性シート
各モデルには、初期値としてデフォルトの特性が定義されます。デフォルトの特性値
は黒色で表示されます。次に示すように、左側に表示される［継承解除］ボタンをクリックしてオブジェクトモデルへの特性の継承を切ることができます。継承されなくなった特性値は、青色で表示されます（この色は変更できます）。

リファレンス
Magic eDeveloper V9 Plus121

第 3 章 - モデル

図 3-1 オブジェクトのデフォルト特性へのリンクの解除［継承設定］、［継承の解除］、［システムモデル］ボタンを次に示します。

［継承設定］ボタン［継承解除］ボタン［ダイアログ表示］ボタン［システムモデル］ボタン［式］ボタン［継承設定］ボタンをクリックすると、継承関係が切断されていた特性の再継承を行えます。確認ダイアログで「はい（Y）」をクリックすると、継承関係の切れていた特性内容が継承され、特性の名前が黒色で表示されるようになります。
またコントロールモデルの場合、［継承／データ／解除］がプルダウンメニューで表示される場合があります。
［データ］を選択すると、このモデルを使用するコントロールに関連するデータ項目の項目特性の内容を継承することになります。

図 3-2 モデル特性の継承確認

データ項目
データ項目には、以下のものがあります。

122

リファレンス
Magic eDeveloper V9 Plus

データ項目• 実データ……実際のデータ値が入ったデータテーブルの構成要素。アプリケーションの実データは、［テーブル］リポジトリで定義します。同じ特性を持つカラムが複数ある場合、それらの項目モデルを［モデル］リポジトリで定義できます。カラムと項目モデルの定義の詳細については、第 4 章「テーブル」を参照してください。
• 変数……タスク内で使用する計算および一時保存のローカル変数。タスクを定義する
ときは、必要な変数項目を定義します。
［モデル］リポジトリで事前に定義した項目モデルを使用することもできます。
• パラメータ……呼び出したタスクまたはプログラムから値を受け取るように指定されたローカル変数。詳細については、第 7 章「処理コマンド」を参照してください。

データ項目の特性
データ項目は、型（必須）や書式（必須）についてだけでなく、範囲や記憶型式などのほかの特性についても定義できます。

型
データ項目の型は、［モデル］リポジトリまたは［カラム］テーブルのいずれかの［型］
欄を使用して指定します。Magic で使用できる型を、以下に示します。
データ項目
型

内容

文字

任意の文字列。変数項目の最大長は 32K ですが、基礎となるデータ
ベースにより制限を受けることもあります。たとえば、Pervasive
ゲートウェイを使う時、DBMS パラメータで「/P:4096」と指定す
ると、Pervasive データベースの内部のページサイズが 4096 バイトとなりますが、このときには、最大レコード長も 4096 バイトとなるので、その中に定義されている文字型の最大長も 4096 バイトということになります。

数値

整数または小数。Magic では 18 桁までサポートされます。全体の桁数および小数部の桁数は、それぞれ最も近い偶数に切り上げられます。

論理

0 または 1 の値を持ち、通常、内部的に 1 バイトとして格納されます。「True/False」、「黒 / 白」、「はい / いいえ」などの値の組み合わせを格納する場合、論理型を使用します。論理型は通常、同等の数
値型よりもアクセスが速くなります。0 は「False」を、1 は「True」
を表します。

日付

日付を表すデータで、年、月、日からなります。内部的には数値型として格納されていて、西暦 1 年 1 月 1 日を基点 (1) として数えた日数が格納されています。日付型データは、画面に表示される場合
のみ日付の形式に変換され、Magic 内部での計算は、すべて数字データとして行われます。

時刻

内部的に秒数のカウンタとして格納されます。時刻型を使用して、時間の長さ、または任意の時刻を表します。日付型と同様、時刻型
は数値であるため、加減算できます。時刻型は、画面に表示される
ときに時刻型式に変換されます。

リファレンス
Magic eDeveloper V9 Plus123

第 3 章 - モデル
データ項目
型

内容

メモ

可変長の文字列。メモはデータベース内の最もよく似た属性を使用
して、可変長型式で格納されます。使用しているデータベースが可変長に対応していない場合、メモは文字型として格納されます。メ
モ型は、いったん Magic に読み込まれると、文字型として機能し、最大長に基づいて内部メモリを消費します。そのため、メモ型の最大サイズを指定するときは注意が必要です。また、文字型で十分な場合、メモ型を使用しないようにします。メモ型をインデックスに含めることはできません。
格納されるデータのフォーマットは Magic 独自のフォーマットです。この為、Magic 以外の他のアプリケーションとデータベースを共有する場合は、「互換性の問題」が発生する可能性があります。
その場合は、アプリケーション開発者自身で「互換性の問題」を解決する必要があります。
このような理由から、Magic 以外の他のアプリケーションとデータベースを共有する場合は、メモ型項目を使用されないことをお奨めいたします。

BLOB

Binary Large Object の略。Magic で作成されていないバイナリ情報
を含み、サイズも不明です。この情報は、内容が解読されずにそのまま格納されます。BLOB は一般に、OLE オブジェクトまたはイ
メージビットマップを格納するために使用されます。BLOB が空の場合、NULL として扱われます。
Plus から、構造体を扱うことが可能な「バッファ」として利用することができます。バッファ関数を使うことによって「バッファ」を参照したり修正することができます。
バッファ関数の詳細は、第 8 章「関数」の「バッファ管理」を参照
してください。

OLE

Magic のフォーム外で実行される OLE COM オブジェクトのインスタンスを作成するために使用される BLOB 項目。

ActiveX

Magic のフォームに配置可能な ActiveX COM オブジェクトのインスタンスを作成するために使用される BLOB 項目。

ベクトル

Magic の ベクトルデータ は、基本的に指定されたセルインデックスを使ってデータを格納したり、検索することのできる配列です。
ベクトル型は、追加のセルモデル特性を持つ BLOB 型に基づいています。
ベクトルのセルには、モデルリポジトリで定義されている Magic の項目モデルを指定します。モデルとしてあらゆる型（文字、数値、論理、日付、時刻、メモ、BLOB、OLE、ActiveX）を指定することができます。
ベクトルデータのインデッスは、1 から始まります。ベクトル型は、変数項目やパラメータ項目からのみ選択できます。テーブルのカラムのとして定義することはできません。
再帰的なベクトル定義は、サポートされていません。GUI フォーム
やブラウザフォームに、ベクトル項目を配置することはできません。また、配列はメモリ上に格納されるため多量のデータをベクトルに格納することはお勧めできません。
ベクトル関数を使うことによってベクトルセルを参照したり修正することができます。詳細は、第 8 章「関数」を参照してください。

124

リファレンス
Magic eDeveloper V9 Plus

書式

記憶型式
記憶型式とは、データ項目が実際のデータベースに記憶されるときの型式です。Magic では、デフォルトの最適な記憶型式が、型と書式により自動的に関連付けられます。アプ
リケーションのデータテーブルが Magic 以外のアプリケーションと共有されない場合、記憶型式について考慮しなくてもかまいません。Magic 以外のアプリケーションと共有する場合、データカラムに特定の記憶型式を指定して、互換性の問題を解決する必要があります。これには、カラムを定義するときに、［カラム特性］シートにおいて必要な記憶型式を指定します。
カラム定義の詳細については、第 4 章「テーブル」を参照してください。Magic で利用できる記憶型式の説明については、第 25 章「SQL に関する考慮事項」および各
ゲートウェイの追加情報を参照してください。

書式
各データ項目には、型に応じた書式の設定が必要となります。書式の機能には、次の３つの目的があります。
• データ項目の実際のサイズと記憶型式を定義します。
• 画面または帳票におけるデータ項目のデフォルトの表示形式を定義します。詳細については、第 6 章「プログラム」の「フォームテーブル」を参照してください。
• 型の変換関数において、データの変換規則を定義します。詳細については、第 8 章「関数」を参照してください。

書式の使用方法
書式は、データをどのように入力または表示するかを指定する文字列です。書式は［書式］ダイアログで指定できます。このダイアログには、［項目特性］シートの［詳細］の［書式］属性からアクセスします。Magic では、日付などの一般的な属性を持つデータ項目については、最もよく使用される書式が自動的に定義されます。
書式の指定は、次の 3 つの状況で必要となります。
• ［モデル］リポジトリまたは［テーブル］リポジトリにおいてデータ項目の実際のサイズとデフォルトの記憶型式を定義する場合。書式の使用例を以下に示します。
項目

型

書式

意味

タイトル

文字

15

15 桁の英数字

ID 番号

数値

### または 3

3 桁の整数値期限

日付

YY/MM/DD

年、月、日を表す日付

パーセント

数値

###.## または 3.2

3 桁の整数部と 2 桁の小数部を持つ実数値• 画面または帳票におけるデータ項目のデフォルトの書式を定義する場合。詳細については、第 6 章「プログラム」の「フォームテーブル」を参照してください。
• 型の変換関数において、データの変換規則を定義する場合。詳細については、第 8 章「関数」を参照してください。Str 関数を例にあげると、Str （712.93,’###.####’） は文字列 712.9300 を返します。
書式の文字列は、次の 3 種類の文字で構成されます。
• 機能指示記号として扱われる記号• 位置指示記号として扱われる記号• マスク文字として扱われる上記以外の文字
各型毎に使用される書式指示記号が定義されています。
リファレンス
Magic eDeveloper V9 Plus125

第 3 章 - モデル
各型に属する機能指示記号および位置指示記号の詳細については、次の説明を参照してください。

機能指示記号
機能指示記号は、書式のどの位置に置いても同じ意味に解釈される書式文字です。たとえば、次の 3 つの書式があるとします。
N####、 ####N、 ##N##• これらはいずれも、正および負の値を持つことのできる 4 桁の整数を表します。
• 機能指示記号 N は、この型に負の値が含まれる可能性があることを示します。書式
文字列内の N の挿入位置はどこでもかまいません。これはほかの機能指示記号も同様です。
機能指示記号は、［書式］ダイアログで ［Y］ を入力すると挿入されます。また、［書式］
欄で書式文字列を編集して、手動で挿入することもできます。
機能指示記号はすべて大文字で指定する必要があります。

デフォルトの位置指示記号および機能指示記号
文字型と数値型において最もよく使用される属性を、位置指示記号の省略形で定義できます。
数値型および文字型の書式をカウント値のみで記述した場合、デフォルトの位置指示
記号が繰り返されているものと解釈されます。解釈されるデフォルトの指示記号は、型に応じて次のようになります。
型

デフォルトの指示記号

文字

X（任意の文字の位置を示します）

数値#（1 桁の数値の位置を示します）

この方法により、次の表に示すように、最も頻繁に使用される書式を簡単に定義できます。
型

省略形の書式

同義の書式

文字

7

XXXXXXX または X7

文字

3U2

XXXU2 または X3UU

数値

4#### または #4

文字型書式の機能指示記号
機能指示記号は、各属性の［書式］ダイアログで以下のようなオプションが表示されます。「Yes」を選択すると、自動的に機能指示記号が追加されます。

126

指示記号

意味

オートスキップ：［No］（デフォルト）「Yes」を選択すると、書式に機能指示記号「A」が挿入されます。この指示記号は、データ入力時に最後の文字が入力されたら、次の動作を待たずに、自動的に次のデータに移動するよう指示します。

リファレンス
Magic eDeveloper V9 Plus

書式

数値型書式の機能指示記号
機能指示記号は、各属性の［書式］ダイアログで以下のようなオプションが表示されます。「Yes」を選択すると、自動的に機能指示記号が追加されます。
指示記号

意味

オートスキップ：［No］「Yes」を選択すると、書式に機能指示記号「A」が挿入されます。この指示記号は、データ入力時に最後の（デフォルト）文字が入力されたら、次の動作を待たずに、自動的に次のデータに移動するよう指示します。
負数入力：［No］（デフォルト）「Yes」を選択すると、書式に機能指示記号「N」が挿入されます。この指示記号は、データ入力時に負数が入力できることを指示します。「Yes」を選択すると、書式の表示サイズがテンプレートの記述に従って自動的に拡大され、負数記号を表示できるようになります。

3 桁区切：［No］（デフォルト）「Yes」を選択すると、書式に機能指示記号「C」が挿入されます。この指示記号は、データを 3 桁ごとにカンマで区切るように指示します。「Yes」を選択すると、書式の表示サイズがテンプレートの記述に従って自動的に拡大され、区切り文字を表示できるようになります。このカンマは、［環境環境］ダイアログの［3桁区切文字］欄にて指定した文字に置き換えることが
できます。

左詰：
［No］（デフォルト）「Yes」を選択すると、書式に機能指示記号「L」が挿入されます。この指示記号は、データを左寄せで表示するよう指示します。デフォルトでは、右寄せで表示
されます。

余白埋：
［文字：］

「Yes」を選択すると、書式に機能指示記号「P」が挿入されます。この指示記号は、データ数字が含まれていない部分に、［文字］欄にて指定した文字を表示す
るように指示します。文字を指定しない場合、空白で表示されます。

0 値表示：［文字：］「Yes」を選択すると、書式に機能指示記号「Z」が挿入されます。この指示記号は、データがゼロの場合、全ての桁に、「文字」欄にて指定した文字を表示する
ように指示します。文字を指定しない場合、空白で表示されます。

負数符号：［後付符号］

負の値の前に通常のマイナス記号（−）以外の文字列を表示する場合、［負数符号］欄に表示したい文字を指定します。負の値の末尾に文字列を表示する場合、［後付符号］欄に表示したい文字を指定します。これ
らの文字列は「符号文字列」と呼ばれ、以下の［符号文字列の規則］で説明する規則に従って書式文字列に挿入されます。

正数符号：［後付符号］

正の値の前に文字列を表示する場合、［正数符号］欄に表示したい文字を指定します。正の値の末尾に文字列を表示する場合、［後付符号］欄に表示したい文字を指定します。これらの符号文字列は、次の［符号文字列の規則］で説明する規則に従って書式文字列に挿入されます。

符号文字列の規則［数値型書式］ダイアログの［負数符号］または［正数符号］に別の文字列を指定した場
合は、次の規則に従って書式文字列が作成されます。
• 機能指示記号「−」または「＋」が、書式文字列の末尾に挿入されます。
リファレンス
Magic eDeveloper V9 Plus127

第 3 章 - モデル• 符号の指示記号の直後には、前付符号、カンマ、後付符号が順に挿入され、最後にセミコロン（;）が付けられます。たとえば、負の数字 5.2 を括弧で囲む場合は、5.2-（,）; という書式になります。書式 4.3+,CR;-,DB; は、正の数字の末尾に文字列 CR を付け、負の数字の末尾に文字列 DB を付けます。文字列を前付符号と後付符号に分ける文字として、カンマが使用されます。
［書式］ダイアログの一番下には、データがどのように表示されるかを示すテンプレー
トが表示されます。すなわち、表示されるマスク文字や、データにより使用される画面またはレポートフォームの桁数を確認できます。

数値型書式の例
属性の値

書式

変換結果

コメント

-1234.56######.##^^1234.56

負の数値は使用不可-1234.56

N######.##^^-1234.56

負の数値も使用可能-1234.56

N######.##C^^-1,234.56

カンマを表示-1234.56

N######.##L-1234.56^^

左詰で表示-1234.56

N######.##P*-**1234.56

余白埋部分にアスタリスクを表示

0

N######.##Z**********

数値がゼロのため、全体をア
スタリスクとして表示-13.5

N##.##-DB;

DB13.50

負の値の記号として DB を使用

45.3

N##.##+CR;

CR45.30

正の値の記号として CR を使
用

-13.5

N##.##-（,）;（13.50）

負数符号を表す前付符号と後付符号として括弧を使用

4055.3$######.##$^^4055.30$ をマスク文字として表示^ は、1 桁のスペース文字を表します。

論理型書式の機能指示記号
機能指示記号は、各属性の［書式］ダイアログで以下のようなオプションが表示されます。「Yes」を選択すると、自動的に機能指示記号が追加されます。
指示記号

意味

オートスキップ：［No］「Yes」を選択すると、書式に機能指示記号「A」が挿入されます。この指示記号は、データ入力時に最後の（デフォルト）文字が入力されたら、次の動作を待たずに、自動的に次のデータに移動するよう指示します。

128

リファレンス
Magic eDeveloper V9 Plus

書式

日付型書式の機能指示記号
機能指示記号は、各属性の［書式］ダイアログで以下のようなオプションが表示されます。「Yes」を選択すると、自動的に機能指示記号が追加されます。
指示記号

意味

オートスキップ：［No］「Yes」を選択すると、書式に機能指示記号「A」が挿入されます。この指示記号は、データ入力時に最後の文字（デフォルト）が入力されたら、次の動作を待たずに、自動的に次のデータに移動するよう指示します。
0 値表示：［文字：］「Yes」を選択すると、書式に機能指示記号「Z」が挿入されます。この指示記号は、データがゼロの場合、全ての桁に、「文字」欄にて指定した文字を表示するように指示します。文字を指定しない場合、空白で表示されます。

空白詰：［No］「Yes」を選択すると、書式に機能指示記号「T」が挿入されます。この指示記号は、位置指示記号の「WWW...
（曜日）」「MMM...（月）」「DDDD（日付の英語表記）」により挿入された空白を削除するよう指示します。これらの位置指示記号は、使用可能な最大の桁数で書式文字列に指定されるため、指定した長さより短い名前には不要な空白が作成されることがあります。この指示記号は、これらの空白をすべて削除します。
空白が必要な場合、マスク文字として明示的に書式文字列に挿入する必要があります。^ は、1 桁のスペースを表します。
TWWWWWWWWW^DDDD^MMMMMMMMM,YYYY

テンプレート
日付型のデフォルトの書式は ##/##/## として定義されています。この場合、［動作環境］
ダイアログの［日付タイプ］欄の指定（［A= アメリカ］、［E= ヨーロッパ］、または［J=日本］）に応じて、MM/DD/YY、DD/MM/YY、または YY/MM/DD の型式で日付が表示されます。
デフォルトの書式を変更すると、この欄にはデータが実際にどのように出力されるかを示すテンプレートが表示されます。すなわち、表示されるマスク文字や、属性が画面またはレポートフォームで使用する桁数を確認できます。

日付型書式の例
次の例で使用されている日付は 1997 年 3 月 21 日です。この場合日付の値は、729104 になります。これは、西暦 1 年 1 月 1 日からカウントされた日数です。
指示記号

変換結果

MM/DD/YY

03/21/97

DD/MM/YY

21/03/97

YY/MM/DD

97/03/21

DD/MM/YY

21-03-97

DD-MM-YYYY

21-03-1997

YY.DDD

97.081##/##/##

03/21/97［日付タイプ］欄が［A= アメリカ］に設定されている
場合

21/03/97［

リファレンス
Magic eDeveloper V9 Plus

コメント

［日付区切文字］欄が - に設定されている場合- はマスク文字129

第 3 章 - モデル
指示記号

変換結果

コメント

97/03/21［日付タイプ］欄が［J= 日本］に設定されている場合

MMMMMMMMMM^DDDD,^YYYYMarch^^^^^^21st,^1997

MMMMMMMMMM^DDDD,^YYYYT

March^21st,^1997

WWWWWWWWWW^-^W

Saturday^^^-^7

WWWWWWWWWW^-^WT

Saturday^-^7

機能指示記号 T により空白
詰
機能指示記号 T により空白
詰^ は、1 桁のスペース文字を表します。

時刻型書式の機能指示記号
機能指示記号は、各属性の［書式］ダイアログで以下のようなオプションが表示されます。「Yes」を選択すると、自動的に機能指示記号が追加されます。
指示記号

意味

オートスキップ：［No］「Yes」を選択すると、書式に機能指示記号「A」が挿入されます。この指示記号は、データ入力時に最後の文字（デフォルト）が入力されたら、次の動作を待たずに、自動的に次のデータに移動するよう指示します。
0 値表示：［文字：］「Yes」を選択すると、書式に機能指示記号「Z」が挿入されます。この指示記号は、データがゼロの場合、全ての桁に、「文字」欄にて指定した文字を表示するように指示します。文字を指定しない場合、空白で表示されます。

テンプレートMagic では、時刻型属性のデフォルトの書式マスクが HH:MM:SS として定義されているので、この表示領域にも、最初は HH:MM:SS の型式で時刻が表示されます。デフォルトの書式を変更すると、この領域にはパラメータが実際にどのように出力されるかを示す
テンプレートが表示されます。すなわち、表示されるマスク文字や、パラメータが画面またはレポートフォームで使用する桁数を確認できます。

時刻型書式の例
値
書式（00:00 からカウントされた秒数）

変換結果

コメント

30000

HH:MM:SS

08:20:00

24 時間制で表示される時刻

60000

HH:MM:SS

16:40:00

24 時間制で表示される時刻

30000

HH:MM PM

8:20 am

12 時間制で表示される時刻

60000

HH:MM PM

4:40 pm

12 時間制で表示される時刻

60000

HH:MM PM

4-40 pm［動作環境］ダイアログで［時刻区切文字］欄が - に設定されて
いる場合

60000

HH-MM-SS

16-40-00- はマスク文字

注：表示可能な時間の範囲は、時間は 0 〜 99、分、秒は 0 〜 59 までとなります。
これ以上の時間、分、秒を表示させる必要がある場合は、データを加工する必要があり
ます。

130

リファレンス
Magic eDeveloper V9 Plus

書式

機能指示記号の一覧
機能指定記号は、書式内の任意の場所に 1 度だけ指定できます。
指示記号

型

意味

T

D

MMM...、WWW...、または DDDD の空白をトリミング##/##/##

D

日付型パラメータを［動作環境］ダイアログの定義（［A= アメリカ］、［E= ヨーロッパ］、または［J= 日本］）に従って表示

NN

負数入力が可能+s{,m}

N

正の数値に前付符号 s、および後付符号 m を挿入-s{,m}

N

負の数値に前付符号 s、および後付符号 m を挿入

CN

数値に 3 桁毎にカンマを挿入（挿入される文字は［動作環境］ダイアログの［3 桁区切文字］欄にて指定）

LN

左寄せ。デフォルトは右寄せ。

Pc

N

数値が含まれない桁を文字 c で埋める

Zc

N、D、T

データがゼロの場合、文字 c で埋める

A

すべて

入力のオートスキップ

位置指示記号
位置指示記号は、書式内で位置を指定する書式文字です。したがって、書式文字列内の挿入位置に基づいて解釈されます。たとえば、次の 3 つの書式があるとします。
UXX、 XUX、 XXU• これらはそれぞれ、異なる 3 バイトの文字を表します。
• 位置指示記号 U は、キーボードからデータが入力されたときに、U の位置に対応する文字を大文字に変換するよう指定します。したがって、書式 UXX は最初の入力文字を大文字に変換し、XUX は 2 番目の入力文字を大文字に変換します。このように、位置指示記号の挿入位置は非常に重要です。
位置指示記号はすべて大文字で指定する必要があります。
位置指示記号は書式内にいくつでも使用できます。続けて繰り返しマスク文字を指定する簡単な方法については、この章の「カウント値」の説明を参照してください。

文字型書式の位置指示記号
次の表は、文字型書式の位置指示記号の一覧です。
指示記号

意味

X

任意の文字

U

入力した英文字（半角）を大文字に変換 注

L入力した英文字（半角）を小文字に変換 注#

1 桁の数値。データ入力時に、# の位置に数字が入力されたかどうかが検証されます。数字以外の文字が # の位置に入力された場合、入力は拒否され、エラーメッセージが表示されます。
注：入力項目にて、入力したデータに対して有効。代入（セレクトコマンドの代入式、項目更新コマンドのどちらも）では変換されません。

リファレンス
Magic eDeveloper V9 Plus131

第 3 章 - モデル

数値型書式の位置指示記号
次の表は、数値型書式の位置指示記号の一覧です。
指示記号

意味

#

1 桁の数値.

小数点の挿入位置（挿入される文字は［動作環境］ダイアロ
グの［小数点］欄にて指定）。

論理型書式の位置指示記号
位置指示記号「X」は、内部値を表示値または入力値に変換する際に使用される文字です。1 は「True」を、0 は「False」を表します。また、パラメータの範囲が指定された場
合は、男性、女性などの別の表示値 / 入力値を使用できます。

日付型書式の位置指示記号
次の表は、日付型書式の位置指示記号の一覧です。
指示記号

意味

範囲

DD

月間の日付を示す数字

1-31

DDD

年間の日付を示す数字

1-366

DDDD

月間の日付の英語表記

1st、2nd、3rd など

MM

月を示す数字

1-12

MMM...

月の英語表記（「M」は 3 〜 10 桁使用可能であり、月の名前が「M」の数よ
り少ない場合、残りは空白を表示）

January、February など

YY

年を示す数字の末尾 2 桁

0-99

YYYY

年を示す数字 4 桁

0-9999W

週間の曜日を示す数字

1-7

WWW...

Sunday、Monday など
曜日の英語表記（「W」は 3 〜 10 桁使用可能であり、曜日の名前が「W」の数より少ない場合、残りは空白を表示）

SS...

曜日の日本語表記

日曜日など

S が 2 つで曜日の日本語の表記 1 文字に相当します。
（例えば、書式を「SS」とした場合、水曜日であれば、「水」と表記されます。）
J

元号の（簡易）英語表記

M……明治
T……大正
S……昭和
H……平成

132

JJ...

元号の日本語表記/

日付区切文字の挿入位置（挿入される
文字は［動作環境］ダイアログの［日付区切文字］欄にて指定）

N/A

リファレンス
Magic eDeveloper V9 Plus

書式
指示記号

意味

##/##/##［動作環境］ダイアログの［日付タイプ］ N/A
欄の設定により、日付を DD/MM/YY、
MM/DD/YY、または YY/MM/DD の型式で表示します。

範囲

詳細は、後の「日付型書式の例」を参照してください。

時刻型書式の位置指示記号
次の表は、時刻型書式の位置指示記号の一覧です。
指示記号

意味

範囲

HH

時間

00-99

MM

分

00-59

SS

秒

00-59

:

時刻区切文字の挿入位置（挿入される文字は［動作環境］ダイアログの［時刻区切文字］欄
にて指定）

PM

am または pm を表示し、時間を 12 時間制（1〜 11）にて表示

am または pm

書式指示記号のまとめ
以下の指示記号の説明における小文字の意味は次の通りです。
• n……カウント値を表します。
• s……文字列を表します。
• { }……任意の部分を表します。
• c……マスク文字を表します。指示記号として予約されている文字（たとえば X）をマ
スク文字として使いたい場合、その文字の前に円記号 （¥） を置きます。

位置指示記号の一覧
位置指示記号は、文字の位置を示します。
• 文字型およびメモ型では、X、U、L、または # の指示記号ごとに 1 文字を表します。
X、U、L、および # の合計が、データのサイズになります。
• 数値型では、#、カウント値、および小数点を示す文字によって、数値全体と小数部の桁数が定義されます。この結果により、デフォルトの記憶型式とサイズが定義されます。
• 省略形を使用すれば、数値型の # や、文字型、メモ型、および論理型の X を示す位置
指示記号を指定せずに、カウント値だけを指定することもできます。
指示記号

型

意味

X{n}

A

任意の文字

U{n}

A

入力した文字を大文字に変換

L{n}

A

入力した文字を小文字に変換

#{n}

A、N

任意の数値

.

N

小数点の挿入位置（挿入される文字は［動作環境］ダイアログの［小数点］欄
にて指定）

YY

D

年を示す数字の末尾 2 桁（0 〜 99）

リファレンス
Magic eDeveloper V9 Plus133

第 3 章 - モデル
指示記号

型

意味

YYYY

D

年を示す数字 4 桁（0 〜 9999）

MMD

月を示す数字（1 〜 12）

MMM...

D

月の英語表記（3 〜 10 文字）

DD

D

月間の日付を示す数字（1 〜 31）

DDD

D

年間の日付を示す数字（1 〜 366）

DDDD

D

月間の日付の英語表記（1st、2nd、3rd
など）

W

D

週間の曜日を示す数字（1 〜 7）

WWW...

D

曜日の英語表記（3 〜 10 文字）

SS...

D

曜日の日本語表記

J

D

元号の英語表記JJ...

D

元号の日本語表記/

D

日付の区切文字の挿入位置（挿入される文字は［動作環境］ダイアログの［日付区切文字］欄にて指定）

HH

T

時間（0 〜 99）MMT

分（0 〜 59）

SS

T

秒（0 〜 59）

PMT

am または pm を表示し、時間を 12 時間制（1 〜 11）にて表示:

T

時刻区切文字の挿入位置（挿入される
文字は［動作環境］ダイアログの［時刻区切文字］欄にて指定）

マスク文字
書式文字列の中で、機能指示記号と位置指示記号以外の文字は、すべてマスク文字です。
マスク文字は、実際のデータ値に挿入されて表示されます。たとえば、文字列 $#####
は、常に先頭にドル記号を付けて表示される 5 桁の整数の属性を定義します。
• マスク文字の挿入位置は重要です。 #####$ というように、ドル記号を右端に指定す
ると、ドル記号はデータの右端に表示されます。
• マスク文字は、格納される型のサイズや内部表現には影響しません。
• マスク文字は書式内にいくつでも使用できます。続けてマスク文字を指定する簡単な方法については、この章の「カウント値」の説明を参照してください。

書式作成時の構文規則
大文字 / 小文字の区別
機能指示記号と位置指示記号は、全て大文字で指定します。小文字はマスク文字として解釈されます。
たとえば、次のようになります。
• 書式 XXXXX は、5 文字の文字型属性を定義します。
• 書式 XXxXX は、マスク文字 x が含まれる 4 文字のデータを表します。

134

リファレンス
Magic eDeveloper V9 Plus

項目モデル特性

エスケープ文字エスケープ文字 「¥」 は、その直後の文字がマスク文字であることを明示的に指定します。これにより、指示記号によって暗黙的に指定された意味を無効にし、マスク文字として使用できるようになります。
たとえば、次のようになります。
• 書式 XX¥XXX は、真中にマスク文字「X」が挿入された 4 文字のデータを表します。この例の場合、文字 「¥」 によって、その直後の「X」がマスク文字として解釈されます。
• 重量をポンドで表現した 4 桁の数値を想定し、この値の前に「P」を付けて表示する
ものとします。この場合、単に書式を P#### と指定すると、「P」が余白部分を埋める機能指示記号として解釈されるため、希望どおりに表示されません。そのため、¥P#### と指定します。
「¥」 文字自体をマスク文字として使用する場合、「¥¥」 というように 2 回指定してく
ださい。

カウント値
カウント値は、書式に同じ文字を繰り返し使用するときに使用できます。カウント値は繰り返し使用する文字の後ろに配置して、その文字の繰り返し回数を指定します。
たとえば、次のようになります。
• $#4 は $#### と同義です。
• X6 は XXXXXX と同義です。
• X3U2 は XXXUU と同義です。
カウント値は、位置指示記号またはマスク文字に使用できます。

項目モデル特性項目モデルは、Magic Ver8 以前の「タイプ」に代わるものです。
［クラス］欄のコンボ
ボックスで［項目］を選択し、［型］欄のコンボボックスからデータ項目の属性を選択します。
項目モデルの［特性シート］には、Magic Ver8 以前の「カラム特性」で表示されていた格納形式や SQL 特性も表示されます。

モデル
モデルリポジトリでは、この値は常に「（デフォルト）」です。変更することはできません。

詳細• 書式……データ項目の表示書式を定義します。［ダイアログ］ボタンをクリックして［項目］書式ダイアログ ボックスを開いて、簡単に書式を定義することもできます。
• 型……データ項目の型を表示します。
• セルモデル……ベクトル型において使用するセルの型を指定します。ここからズーム
すると項目モデル一覧が表示されます。
• 範囲……このデータ項目がとりうる値の範囲を設定します。

リファレンス
Magic eDeveloper V9 Plus135

第 3 章 - モデル

入力• 選択プログラム……実行時に実行時にエンドユーザが開くことができる選択プログ
ラムを指定します。
• 起動モード……［選択プログラム］フィールドで定義されたプログラムを呼び出す時期を指定します。

表示• ヘルプ画面……項目モデルを設定したコントロールに関連づけるヘルプ画面を指定します。
• ツールチップ……項目モデルを設定したコントロールに関連づけるツールチップを指定します。
• 自動ヘルプ……項目モデルを設定したコントロールに関連づける自動ヘルプを指定します。

ActiveX、OLE• タイプライブラリ……使用されるオブジェクトのタイプを定義します。
•

OLE 項目の場合……最初に設定する必要があります。ここからズームすると PCに登録されているオブジェクトが一覧表示され、ここから選択できます。

•

ActiveX 項目の場合……オブジェクト名を指定すると自動的に設定されます。オ
ブジェクト名を指定しない状態では、無効になっています。

• オブジェクト名……タイプライブラリ内の実際のオブジェクトを指定します。タイプ
ライブラリは、複数のオブジェクトタイプをサポートしています。
•

OLE 項目の場合……タイプライブラリを選択した後でここでズームします。オ
ブジェクトの一覧が表示され、選択したタイプライブラリによってサポートされているオブジェクト名を選択します。

•

ActiveX 項目の場合……最初にここからズームしてオブジェクトを選択します。
PC に登録されている挿入可能なオブジェクトが一覧表示されます。

• サブオブジェクト名 …… オブジェクトはサブオブジェクトの階層で構成されていることがあります。選択したオブジェクトがサブオブジェクトを持っている場合、ここでズームすることでサブオブジェクトを選択できます。サブオブジェクトを指定する
ことで実行時に取得されるサブオブジェクトの参照を保存できます。
• インスタンス化 …… オブジェクトのインスタンス化する方法を指定します。
•

A= 自動……Magic は、タスクのオープン時に自動的にオブジェクトをインスタンス化し、タスク終了時に解放します。

•

N= なし……COMObjCreate や COMObjRelease 関数を使用して手動でオブジェク
トのインスタンスを作成したり解放したりします。

• リモートホスト …… ホストの IP アドレス（またはホスト名）を指定することで、指定されたリモート PC 上でインスタンス化された DCOM オブジェクトを定義することができます。リモート PC の定義には、「%DCOM_Host%」というように「%」文字を使用することでシークレット名や論理名を使用することができます。デフォルト値
は、空白です。リモート PC が指定されない場合、オブジェクトはローカル PC 上でインスタンス化されます。
• ActiveX デフォルト …… この特性は、ActiveX でのみ有効です。ここでズームするとオブジェクトによって提供されたデフォルトの設定ダイアログがオープンされます。
項目定義の一部として格納することのできるデフォルト値を変更できます。ただし、全てのオブジェクトがこのダイアログを持っているわけではありません。

136

リファレンス
Magic eDeveloper V9 Plus

項目モデル特性

スタイル
次に示す各フォームスタイルをクリックし、コントロールの一覧より選択することでコントロールの特性を設定することができます。次のフォームモデルのいずれかに割当てるコントロールが選択できます。
• ブラウザ形式 …… ブラウザ形式フォームで表示できるコントロ−ル• ブラウザ形式テーブル …… ブラウザ形式フォーム上のテーブルで表示できるコント
ロ−ル• GUI 表示 …… GUI 表示フォームで表示できるコントロ−ル• GUI 表示テーブル …… GUI 表示フォーム上のテーブルで表示できるコントロ−ル• GUI 出力 …… GUI 出力フォームで表示できるコントロ−ル• GUI 出力テーブル…… GUI 出力フォーム上のテーブルで表示できるコントロ−ル• テキスト形式 …… テキスト形式フォームで表示できるコントロ−ル• HTML 形式 …… HTML 形式フォームで表示できるコントロ−ルデフォルト /NULL• NULL 値可：No（デフォルト）•

Yes……このタイプに基づくすべてのカラム（プログラムのデータベースカラム
や変数項目）が有効な値として NULL を許可することを意味します。

•

No……このタイプに基づくすべてのカラムで NULL 値が拒否されることを意味します。

• NULL 計算値……（オプション）［NULL 値可］パラメータが「Yes」に設定されている場合にだけ有効です。アプリケーションの［NULL 値演算］パラメータがデフォル
ト値を使用するように設定されている場合、このパラメータで指定された NULL 値が使用されます。詳細については、第 2 章「設定」の「CTL 特性」を参照してください。
• NULL 表示文字列……（オプション）［NULL 値可］パラメータが「Yes」に設定されている場合にだけ有効です。このパラメータのデフォルト値は、Magic.ini の［MAGIC_DEFAULT］セクションの指定があればその値から取り込まれます。
• NULL デフォルト……NULL に割当てられるデフォルト値があるかどうかを決定します。
• デフォルト値：（オプション）……特定のデフォルト値を割当てます。
• データベースデフォルト値……RDBMS のテーブル定義中に定義されているデフォル
ト値です。

格納形式
• 文字セット……以下から指定ができます。通常日本語版の動作には関係しません。
•

A=ANSI

•

O=OEM

•

U=Unicode• デフォルト記憶形式……開発時に使用するデータベースゲートウェイに依存せず、実行時に使用するデータベース間の移行性をサポートするための設定です。
「Yes」に設定した場合、［記憶形式］、［サイズ］、［データベース定義］の各特性の指定が無効になります。
• 修正許可……実行時にエンドユーザがカラムの値を修正できるかどうかを指定します。
• 更新形式•
リファレンス
Magic eDeveloper V9 Plus

A= 値更新137

第 3 章 - モデル•

D= 差分更新

SQL• データベース情報……実行時、DBMS ゲートウェイに渡されるカスタマイズ情報を定義します。
• DB カラム名……使用データベースで定義されているカラムの実際の名前を定義します。
• タイプ……使用データベースでの SQL のデータタイプを定義します。
• ユーザタイプ……使用データベースでユーザにより定義されたデータタイプです。

コントロールモデル特性［型］カラムから適当なコントロールタイプ（エディット、テキスト、プッシュボタン、
チェックボックス、ラジオボタンなど）を選択し、モデルをコントロールに割当てることができます。すべてのコントロールタイプのコントロール特性は次のとおりです。
コントロールの個々の特性の詳細については、「フォーム」関連の章を参照してください。

詳細• データ……データは、変数または式で定義されます。
• 選択項目リスト……チョイスコントロールの操作によって実際に挿入される値の範囲をカンマ区切りで指定します。
• 選択表示リスト……チョイスコントロールの選択肢として表示されるデータをカン
マ区切りで指定します。
• ボタンスタイル……ボタンの形式を指定します。
• カラムタイトル……テーブルコントロールのカラムのタイトルを指定します。複数行表示したい場合はここで広域表示（F6）することで可能になります。
• RTF の使用……RTF（Rich Text Format）での作業を可能にします。
• コントロール名……コントロールの名前を指定します。
• 書式……エディットコントロールの表示形式やプッシュボタンコントロールのボタ
ントップの表示を指定します。
• 範囲……値の範囲• 属性……選択した項目の値を指定します。
• デフォルトイメージファイル名……イメージボタンとして使用するプッシュボタン
コントロールやイメージコントロールに表示するビットマップファイルの名前を指定します。
• 実行イベント……エンドユーザがボタンコントロールをクリックした際に Magic に送られるアクションを指定します。
• ソート可……カラムによる行ソートを可能にします。
• カラムのマーキング……テーブルでカラムの選択を可能にします。
• スタティックタイプ……フォームに配置したスタティックコントロールのタイプを表示します。
• テキスト……スタティックコントロールとチェックボックスコントロールに表示するテキストを指定します。
• 漢字入力……かな漢字変換プログラム（IME ）を自動起動するためのものです。

138

リファレンス
Magic eDeveloper V9 Plus

コントロールモデル特性• ソーステーブル……コントロールと関連づけるテーブルの番号を指定します。［テーブル］一覧からテーブルを選択することができます。リストボックスコントロールとコンボボックスコントロールにのみ有効です。
• 表示項目……画面に表示されるテーブルのカラムを指定します。
［ソーステーブル］特性で指定されたテーブルのカラムを項目一覧から選択できます。リストボックスコン
トロールとコンボボックスコントロールにのみ有効です。
• リンク項目……実際に格納されるテーブルのカラムを指定します。
［ソーステーブル］
特性で指定されたテーブルのカラムを項目一覧から選択できます。リストボックスコ
ントロールとコンボボックスコントロールにのみ有効です。
• インデックス……画面に表示される順序を決めるテーブルのインデックスを指定します。［ソーステーブル］特性で指定されたテーブルのインデックスをインデックスの一覧から選択できます。リストボックスコントロールとコンボボックスコントロー
ルにのみ有効です。
• 幅固定……カラムの表示状態によってテーブルの表示幅を指定します。
•

Yes……カラムが表示／非表示で切り替わってもテーブルの幅は変わりません。

•

No ……カラムの表示／非表示によってテーブルの幅が変わります。

• カラムタイトル……テーブルコントロール内のカラムのタイトルを入力します。
• ソート可……ここを「Yes」に指定すると、このカラムを使ってテーブルをソートできるようになります。
• カラムのマーキング……ここを「Yes」に指定すると、このカラムを使ってテーブルの行をマークできるようになります。
• Java ファイル名……Java コントロールで使用する Java クラスファイルの名前を定義します。Java クラスファイルを選択するには、この特性をズームします。
• ActiveX ファイル名……ActiveX コントロールで使用する ActiveX の .ocx ファイルの名前を定義します。ActiveX ファイルを選択するには、特性をズームします。
• HTML ファイル名……HTML コントロールの位置に組み込まれる HTML ファイルの名前を定義します。HTML ファイルを選択するには、この特性をズームします。
• サウンドファイル名……サウンドコントロールで使用するサウンドファイルの名前を定義します。ファイルを選択するには、特性をズームします。
• パラメータ……Java コントロールと ActiveX コントロールに適用されます。Java アプ
レット/ActiveX コントロールに引数として渡される変数や式に基づくパラメータを定義するときに使用します。パラメータをパラメータテーブルから選択するには、パラメータをズームします。
• 代替テキスト……イメージ、サウンド、Java の各コントロールに適用されます。ブラ
ウザがコントロールの内容を表示できない場合に、そのコントロールの代わりに表示するテキストを定義します。
• ハイライト表示……ブラウザ形式フォームのテーブルのカーソルのある行を強調表
示するかどうかを指定します。
• 明細行……ブラウザ形式フォームの［フォーム特性］ダイアログの［繰返し行数］特性において指定された行数分を繰り返すテーブルの行を指定します。
• 画像一覧ファイル名……ツリーコントロールでクリックすることで表示される、ノードの拡張、縮小、パークを表すイメージファイルを指定します。
• 展開表示画像インデックス……ツリーコントロールで（画像一覧ファイル内の）ノードの展開表示に使用するイメージを指定します。
• 縮小表示画像インデックス……ツリーコントロールで（画像一覧ファイル内の）ノードの縮小表示に使用するイメージを指定します。
• パーク展開表示インデックス……ツリーコントロールで（画像一覧ファイル内の）拡
張表示ノードのパーク状態を表すイメージを指定します。
• パーク縮小表示インデックス……ツリーコントロールで（画像一覧ファイル内の）縮小表示ノードのパーク状態を表すイメージを指定します。
• 自動展開……「Yes」が選択された場合、ツリーコントロールで実行時にツリーの全てのノードが拡張表示されます。

リファレンス
Magic eDeveloper V9 Plus139

第 3 章 - モデル• ノード事前読込……ツリーコントロールで実行時にデータツリー用のレコードの読込方法を指定します。
•

Yes…… タスクデータビューの全てのレコードのデータを読み込みます。

•

No …… 拡張されたレコードのデータのみ読み込みます。データツリー表示は、［自動拡張］特性によって指定されます。

• ドラッグ許可……この設定を「Yes」にすると Magic アプリケーション内の指定したコントロールをドラッグ可能になり、（Magic アプリケーションを含む）他のアプリ
ケーションへのドラッグ & ドロップが可能になります。
「ドラッグ開始」イベントは、
マウスの左ボタンをクリックし、マウスを 3 ピクセル以上移動させると発生します。
OLE と ActiveX コントロールはドラッグ機能をサポートしていません。
DragSetData や DropFormat 関数は、ドラッグ & ドロップ機能で自動的に処理されないコントロールのデータ内容や書式を定義します。ドラッグ & ドロップ関数の詳細は、
第 8 章「関数」を参照してください。
• ドロップ許可…… この設定を「Yes」にすると（Magic アプリケーションを含む）別のアプリケーションでドラッグされたデータを Magic アプリケーション内の指定したコントロールに対してドロップ可能になます。「ドロップ」イベントは、ドラッグ状態のマウスの左ボタンを離した場合に発生します。
OLE と ActiveX コントロールはドラッグ機能をサポートしていません。
DragSetData や DropFormat 関数は、ドラッグ & ドロップ機能で自動的に処理されないコントロールのデータ内容や書式を定義します。ドラッグ & ドロップ関数の詳細は、
第 8 章「関数」を参照してください。
• フレーム名……フレームセット形式のフレームの名前を指定します。
• スクロール……フレームセット形式のフレームがスクロール可能かどうかを指定します。
• サイズ変更……フレームセット形式のフレームのサイズを変更可能にするかどうかを指定します。
• ツリー表示を保持……ファントムタスクでツリーコントロールが表示されている場
合に、ファントムタスクが起動したり終了したりしてもツリー表示の内容（サブツリーの展開状態）が初期化されないように指定できます。

入力• 必須入力……エンドユーザがこのコントロールに値を入力する必要があるかどうかを定義します。
• 修正許可……実行モード中にエンドユーザがコントロールの値を変更できるかどうかを指定します。
• 複数行編集……エディットコントロールに複数行のテキストを含めることができるかどうかを指定します。
• 垂直スクロール……［複数行編集］が「Yes」に設定されている場合、垂直方向のスクロールが可能かどうかを指定します。
• 水平スクロール……［複数行編集］が「Yes」に設定されている場合、水平方向のス
クロールが可能かどうかを指定します。
• CR 許可……エンドユーザが［Enter］キーを押したときにコントロールを終了するか、または次の行に移動するかを指定します。
• 選択プログラム……実行モードでエンドユーザが開くことができる選択プログラムを指定します。
• 起動モード……［選択プログラム］欄で定義されたプログラムを呼び出す指定します。
• 選択モード……ブラウザ形式フォームやGUI表示フォームでのリストボックスコント
ロールの選択方法を指定します。

140•

S= シングル……選択できる項目は 1 つだけです。

•

M= マルチ……複数の項目を選択できます。

リファレンス
Magic eDeveloper V9 Plus

コントロールモデル特性• パスワードエディット……入力表示をアスタリスク（*）にするかどうかを指定します。
• 照会モード時の修正許可……照会モード時にエンドユーザのレコード修正を許可します。
• 表示通貨……［通貨変換］テーブルの通貨値にアクセスできるかどうかを指定します。
• 非表示項目……HTML フォームに非表示のパラメータとしてコントロールを組み込むかどうかを指定します。
• ハイパーリンク……URL へのアクセス、Web ページ内のセクションへのジャンプ、または Magic プログラムの呼び出しのためのリンクを指定します。
• スクロールバーの表示……垂直スクロールや水平スクロールの特性に基づいて、垂直スクロールバーや水平スクロールバーを表示するかどうかを指定します。「Yes」の場
合、エディットコントロールでスクロールバーを表示します。
• 拡張ウィンドウ……コントロールの表示可能範囲を越えるテキストのためのウィン
ドウを指定します。［フォーム一覧］にズームして、コントロールに関連付ける拡張
ウィンドウのフォームを選択できます。
• 接続先……ブラウザサブフォームで有効です。何を実行するかを指定します。
•

P= プログラム•

S= サブタスク• プログラム / タスク番号……ブラウザサブフォームで有効です。接続先の指定に基づいてプログラムかサブタスクを指定します。
• パラメータ……ブラウザサブフォームで有効です。起動先に渡すパラメータを指定します。
• タブで移動……ブラウザサブフォームで有効です。Tab キーによる動作を指定します。
•

Yes …… エンドユーザは、Tab キーでサブフォームに移動できます。

•

No …… カーソルを（マウスで）サブフォームに移動しなければなりません。

• キャッシュ有効……ブラウザサブフォームで有効です。親のブラウザタスクで読み込
んだレコードに対するサブフォームのデータビューをクライアント側でキャッシュするかどうかを指定します。
•

Yes …… データビューをキャッシュします。これによって、エンドユーザが以前のレコード内容に戻ったとき、サブフォームのデータビューに対するサーバへのアクセス処理がなくなります。

•

No …… クライアントはサブフォームのデータビューをキャッシュせず、サーバに対してサブフォームのデータビューの変更内容を毎回アクセスします。

• ボタンタイプ……HTML 形式のプッシュボタンに適用されます。このボタンを押したときのフォームのアクションを指定します。有効な値は以下のとおりです。
•

S= 送信……フォームを送信します。

•

C= 取消……フォームの初回表示時に表示されたすべてのパラメータに対する値をクリア（リセット）します。

• クリックでパーク…… プッシュボタンコントロールに適用されます。プッシュボタンが押されてイベントが実行された場合のフロー処理を定義します。
•

Yes……その項目が定義された場所までのフロー処理が実行され、フォーカスがプッシュボタンコントロールに移動します。

•

No……フロー処理は実行されず、フォーカスも移動しません。

表示• フォント……フォントスタイルを指定します。
• 色……色を指定します。
• 可視……コントロールをエンドユーザに表示するかどうかを指定します。
• 有効……コントロールが使用可能かどうかを指定します。
• 垂直整列……コントロール内の縦方向のテキスト配置を指定します。
リファレンス
Magic eDeveloper V9 Plus141

第 3 章 - モデル• 水平整列……コントロール内の横方向のテキスト配置を指定します。
• イメージスタイル……イメージをイメージコントロールに合わせる方法を指定します。
• イメージ効果……イメージコントロールのイメージに特殊なビデオ表示効果を指定します。
• スタイル……コントロールの外観を指定します。
• 境界……コントロールの境界のスタイルを指定します。
• 線種……スタティックコントロールの直線の外観を指定します。
• 立体線……スタティックコントロールの直線の幅を指定します。
• 境界線の幅……コントロールの境界の幅を指定します。
• 線幅……スタティックコントロールの直線の幅を指定します。
• スライダ形式……スライダコントロールの方向を指定します。
• ステップ……スライダ範囲の区切りを指定します。
• 列数……ラジオボタンコントロールに表示する列数を指定します。
• タブラベル位置……タブコントロールに表示するタブの位置を指定します。
• 表示行数……コンボボックスコントロールにアクセスしたときに表示される行数を指定します。
• スクロールバー……テーブルコントロールにスクロールバーを配置するかどうかを指定します。
• 区切り……テーブルコントロールに行区切り文字を表示するかどうかを指定します。
• カラムの区切線……テーブルコントロールにカラム区切りを表示するかどうかを指定します。
• 最終区切線……テーブルコントロールの最後のカラムの区切りを表示するかどうかを指定します。
• マルチマーキング……複数レコードのマーキングを許可します。
• タイトル高さ……テーブルコントロールのタイトルの高さを指定します。
• 行高さ……テーブルコントロールの行の高さを指定します。
• ヘルプ画面……ヘルプ画面をコントロールと関連付けるかどうかを指定します。
• ツールチップ……ツールチップをコントロールと関連付けるかどうかを指定します。
• 自動ヘルプ……自動ヘルプをコントロールと関連付けるかどうかを指定します。
• 段落整列……フォーム内のコントロールの配置を指定します。
• HTML 内部属性……HTML スタイルテーブルから、タグ内部で定義される属性を選択します。
• HTML 外部属性……HTML スタイルテーブルから、タグ外部で定義される属性を選択します。
• 上境界線……カラムが上境界線を持つかどうかを指定します。
• 右境界線……カラムが右境界線を持つかどうかを指定します。
• スタイル……コントロールの外観を指定します。コントロールによって指定できる値が異なります。
• ウィンドウ内テーブル……テーブルコントロールの［サイズ変更可］特性が［Yes］に設定されている場合、カラムのサイズが変更されたときにテーブルコントロールの表
示領域を変更するかどうかを指定します。テーブルのサイズが表示領域を超えた場
合、スクロールバーが表示されます。
• サイズ変更可……切り線をドラッグすることでカラムのサイズを変更できるようにするかどうかを指定します。
• 固定サイズテーブル……GUI 出力フォームのテーブルコントロールで有効です。
•

No……テーブルにはレコード行が 1 つしかありません。この行はレコードごとに繰り返されます。テーブルの実際のサイズは、ページに印刷されるレコードの数によって異なります。

•

Yes……テーブルはフォームに定義されているサイズで印刷されます。

• 全ページタイトル……GUI 出力フォームのテーブルコントロールで有効です。

142

リファレンス
Magic eDeveloper V9 Plus

コントロールモデル特性•

No……テーブルヘッダはテーブルの先頭だけに印刷されます。

•

Yes……出力ページすべてにテーブルヘッダが印刷されます。

• テキストタイプ……HTML 形式のスタティックコントロールで有効です。選択したコ
ントロールの行の先頭に、中黒や番号を表示するかどうかを指定します。選択したコ
ントロールの行にあるすべてのコントロールが影響を受け、同じインデントが適用されます。有効な値は次のとおりです。
•

N ＝なし

•

B ＝箇条書•N ＝番号箇条書• ホットスポットタイプ……HTML
形式のホットスポットコントロールで有効です。
ホットスポットの形状を指定します。
• インデントレベル……HTML 形式のフォーム内にあるコントロールの行のインデント
レベルを定義します。選択したコントロールの行にあるすべてのコントロールが影響を受け、同じインデントが適用されます。
• 背景……HTML 形式のスタティックテーブルの壁紙イメージとして表示されるファイルの名前を指定します。
• 水平方向の余白……HTML 形式のイメージ、Java、ActiveX の各コントロールに適用されます。コントロールの左右に空ける、横方向のスペース間隔を定義します。
• 垂直方向の余白……HTML 形式のイメージ、Java、ActiveX の各コントロールに適用されます。コントロールの上下に空ける、縦方向のスペース間隔を定義します。値はピクセル単位で指定します。
• テキストの整列……イメージ、Java、ActiveX の各コントロールに適用されます。コン
トロール直後にあるテキストの整列方法を指定します。有効な値は次のとおりです。
•

T= 上寄せ•C= センタリング•

B= 下寄せ•L= 左寄せ•R= 右寄せ• 行数……スタティックテーブルコントロールの行の数を指定するには、［行］から値を選択します。［行］は 1 〜 100 でなければなりません。
• 列数……カラムの数を指定するには、［列］から値を選択します。
［列］の値は 1 〜 100
でなければなりません。
• セル間隔……スタティックテーブルのセル間のスペースを定義します。
• セルのパディング……スタティックテーブルのセル境界と、そのセル内に配置されているコントロールとの間のスペースを定義します。
• ボタンの表示……ツリーコントロールのボタンイメージの表示を指定します。
•

Yes ……親ノードの隣にボタンイメージが表示されます。

•

No ……ボタンイメージは表示されません。この場合、エンドユーザは、ツリーレベルを拡張する場合、親ノードをダブルクリックする必要があります。

• ラインの表示……データツリーのツリーラインの表示を指定します。
•

Yes ……ツリーラインを表示します。この場合、［選択行のハイライト表示］特性は無効になります。

•

No ……ラインは表示されません。

• ルートのライン表示……ルートのライン表示……ルートノードのライン表示を指定します。
•

Yes ……ルートにラインが表示されます。

•

No ……ラインは表示されません。

• マウスオーバ表示……マウスカーソルがノードを通過したり、ノードにパークしたりした場合の動作を指定します。
•
リファレンス
Magic eDeveloper V9 Plus

Yes……ノードテキストの下にラインを表示します。

143

第 3 章 - モデル•

No ……表示されません。

• 選択行のハイライト表示……マウスカーソルがノードを通過したり、ノードにパークしたりした場合の動作を指定します。
•

Yes ……ノードテキストがハイライト表示します。この場合［ラインの表示］特性が無効になります。

•

No ……ノードテキストの表示は変わりません。

• テーブル色の指定 …… テーブルコントロ−ルの背景色のどのように表示するかを指定します。
• 交互表示色 …… テーブルの行の背景色を交互に切り替える場合に、色を指定できます。［テーブル色の指定］が「T= テーブルに依存」の場合に有効です。
• ハイライト行のスタイル ……テーブルコントロ−ルのフォーカスのある行をどのように表示するかを指定します。
• ハイライト行の色 ……テーブルコントロ−ルのフォーカス表示の色を指定します。
• 下辺の間隔 ……テーブルコントロールに適用されます。ウィンドウサイズ（高さ）が変更された場合、テーブルのサイズをどのようにするかを指定します。
•

R= 行ハイライト …… テーブルの下辺とウィンドの下辺の間隔が調整され、部分表示行（何も表示されず、行の高さが指定行より小さい行）が表示されません。

•

N= なし …… 部分表示行が表示され、テーブルの下辺とウィンドの下辺の間隔が同じになるように調整されます。

位置とサイズ• 位置……フォームのサイズ変更に合わせてコントロールをサイズ変更するかどうかを指定します。
• 幅（%）……HTML 形式のラインコントロールの幅を指定します。

OLE2• OLE クラス……パラメータに挿入できるオブジェクトクラス。
• OLE 表示形式……オブジェクトの表示方法を指定します。
• OLE 形式……オブジェクトの保存方法を指定します。
• リンク自動更新……リンクが設定されたドキュメントのコンテンツビットマップを自動的に更新できます。
• OLE フレームタイプ使用……オブジェクトの周りを別のフレームスタイルで表示します。

フォームモデル特性
フォームクラスでは、GUI 表示、GUI 出力、テキスト形式、HTML 形式、HTML フレー
ムセット形式、HTML マージ形式、ブラウザ形式の中からフォームを選択することがで
きます。

モデル
継承が切れている特性の継承を設定し直したり、フォームモデルのすべての特性の継承を切ったりすることができます。

144

リファレンス
Magic eDeveloper V9 Plus

フォームモデル特性

詳細• モーダルウィンドウ……モーダルウィンドウとして動作し、オープンされているウィ
ンドウを閉じない限り他のウィンドウをクリックすることができなくなります。ブラウザ形式と GUI 表示フォームで有効です。
• フローティングウィンドウ……フローティングウィンドウとして動作し、Magic のメ
インウィンドウの外に移動することができます。GUI 表示フォームで有効です。
• 寸法単位……寸法単位を定義します。
• 垂直精度……垂直方向の倍率を指定します。
• 水平精度……水平方向の倍率を指定します。
• グリッド表示……フォームグリッドを表示します。
• グリッド間隔（X）……フォームグリッドへのコントロールの縦方向の配置を定義します。
• グリッド間隔（Y）……フォームグリッドへのコントロールの横方向の配置を定義します。
• ドロップ許可……同一アプリケーションの他のコントロールや、他のアプリケーショ
ンからのデータのドロップが可能になります。このコントロールへのデータのコピー
は、「ドロップ」イベントを定義したハンドラを用いたり、Magic による自動的な処理で実行されます。
• 繰り返し行数……テーブルコントロールの最大行数を決定します。
• ヘッダファイル名……実行モードで生成されたフォームのヘッダセクションに外部ファイルを追加 w できます。
• 境界線の表示……境界線を表示するかどうかを決定します。
• フレームの間隔……フレーム内のすべてのフレーム枠の幅をピクセル単位で決定します。［境界線の表示］特性を［No］に設定すると無効になります。
• 相対サイズ……相対サイズを［Yes］に設定すると、フレームセット内にあるすべてのフレームのサイズは、ブラウザウィンドウまたはコンテナフレームのサイズに対するパーセントとして定義されます。ブラウザウィンドウまたはコンテナフレームのサイズが変更されると、関連するフレームもすべてその割合でサイズ変更されます。
• HTMLす。

ファイル……出力フォーム操作で使われるテンプレートの名前を定義しま• トークン前付符号……テンプレート内のマージタグで使われる前処理を定義します。マージメカニズムでは、この文字列で始まるタグを検索し、HTML ファイル内のタグに従って値を置換します。
• トークン後付符号……テンプレート内のマージタグで使われる後処理を定義します。マージメカニズムでは、この文字列で終わるタグを検索し、HTML ファイル内のタグに従って値を置換します。
• XML 出力 ……ファイルの作成時に特殊記号（&<>'"）をキーワード（&amp;&lt;&gt;&apos;&quot;）に変換して出力するか否かを指定します。

入力• タイトルバー……タイトルバーを表示するかどうかを決定します。
• インタフェースタイプ……フォームタイプを決定することができます。
• フォーム拡大……複数行のエディットコントロールを処理できるようにフォームを拡大するかどうかを決定します。
• パレット最適化……使用可能な多数のカラーパレットから Magic で標準色を指定するかどうかを決定します。
• ハイパーリンク……スタティック、イメージ、ホットスポット（四角形）の各コン
トロールをクリックしたときに呼び出される URL を決定します。
• 入力フォーム……HTML フォームからデータが入力可能かどうかを定義します。
リファレンス
Magic eDeveloper V9 Plus145

第 3 章 - モデル• コンテキスト変数……［コンテクスト変数］ダイアログボックスで定義されている
コンテクスト変数を選択できます。
• システムメニュー……システムメニューを有効化します。
• 最小化ボタン……［最小化］ボタンを表示するかどうかを設定します。
• 最大化ボタン……［最大化］ボタンを表示するかどうかを設定します。
• 子ウィンドウ……フォームを 2 番目のウィンドウとして開くかどうかを決定します。
• 分割子ウィンドウ……分割された親ウィンドウに表示される子ウィンドウであるかどうかを指定します。
• ヘルプ画面……ヘルプ画面を画面と関連付けるかどうかを指定します。
• デフォルトボタン……フォームのデフォルトボタンとなるプッシュボタンのコント
ロール名を指定します。デフォルトボタンは強調表示され、ユーザーそのボタンにフォーカスがない状態でも Enter キーを押下することでボタンが押されたように動作します。

表示• フォント……コントロールに表示するテキストのフォントを定義します。このパラメータからフォントテーブルにズームして、希望するフォントを選択します。
• 色……基本色一覧の色の番号。このパラメータから基本色テーブルにズームして、希望する色を選択します。
• HTML 内部属性……HTML スタイルテーブルから、コントロールのタグ内に追加される属性、または HTML スタイルを決定する式を選択します。
• 背景……フォームの壁紙として使用するイメージファイル。
• 境界……コントロールの境界線のスタイルを定義します。
• ヘルプ画面……ヘルプ画面をコントロールと関連付けるかどうかを決定します。

分割• ウィンドウ分割……フォームを水平または垂直に分割するかどうかを指定します。以下のオプションがあります。
•

N= なし

•

V= 水平

•

H= 垂直

• 初期表示……分割したウインドウのどこに最初に表示するかを指定します。
水平分割の場合•

D= デフォルト

•

T= 上

•

B= 下

垂直分割の場合•

D= デフォルト

•

L= 左

•

R= 右

• 分割割合 %……分割されたフォームの初期表示するフォームの割合を % で指定します。例えば、「60」とと指定した場合、親タスクのウィンドウはフォームの 60% で表示されます。
有効な値は「0」から「100」です。デフォルト値は「50」です。
• 分割位置……ウィンドウのサイズを変更した場合に、分割フォームの移動する割合を指定します。
「0」から「100」までの数値で指定してください。デフォルト値は、「0」です。
• 分割スタイル……GUI 表示フォームの分割線のスタイルを指定します。

146

リファレンス
Magic eDeveloper V9 Plus

ヘルプモデル特性

位置とサイズ• MDI 調整……タスクのウィンドウを Magic の MDI に合わせて表示するかどうかを指定します。
• 開始時の位置……GUI 表示形式フォームをどのように開くかを指定します。
• 左辺位置……選択したコントロールの左上の x 座標
• 上辺位置……選択したコントロールの左上の y 座標
• 幅……コントロールの幅• 高さ……コントロールの高さ• 位置……フォームのサイズ変更に伴うコントロールのサイズ変更における左右、上限、およびボタンの位置の値

ヘルプモデル特性
次のヘルプタイプから選択することができます。
• 内部• Windows 形式
内部ヘルプの特性は次のとおりです。

モデル：（デフォルト）
このパラメータでは、ヘルプ画面を特定のデータ型と関連付けることができます。このヘルプ画面は、エンドユーザがこのデータ型と関連付けられているカラムのヘルプを要求したときに、実行モードで使用することができます。

詳細• テキスト……内部ヘルプとして表示する文字列• ヘルプファイル名……ヘルプファイルの名前• ヘルプコマンド……ヘルプファイルのコマンド。たとえば、「コンテキスト」、「目次」、「キーワードで検索」など• キー値……ヘルプファイルをナビゲートするために定義されているキー

入力• タイトルバー……タイトルバーを表示します。
• システムメニュー……システムメニューを表示します。

表示• フォント：6（デフォルト）……フォントを指定します。
• 色：4 （デフォルト）……色を指定します。
• 境界：H= 太線……ウィンドウの境界線のスタイルを指定します。

位置とサイズ• 左辺位置：36（デフォルト）……ヘルプ画面の左辺位置を指定します。
リファレンス
Magic eDeveloper V9 Plus147

第 3 章 - モデル• 上辺位置：0（デフォルト）……ヘルプ画面の上辺位置を指定します。
• 幅：42（デフォルト）……ヘルプ画面の幅を指定します。
• 高さ：21（デフォルト）……ヘルプ画面の高さを指定します。

モデルの使用デフォルトでは、新しいオブジェクトはシステムベースのモデルと関連付けられます。
新しいアプリケーションが作成されると、システムベースのモデルの特性値が自動的に使用されます。システムベースの特性値は黒色で表示されます。

モデルの作成ユーザ定義のモデルを作成するには、システムベースの特性値を定義し直します。新しいモデルをダブルクリックして、［特性］シートにアクセスします。
［特性］シートで変更を行わなかった場合、そのモデルではシステムベースのモデルの値がそのまま使用されます。

モデルの削除
ユーザ定義のモデルを削除することができます。モデルを削除すると、モデルと関連付
けられているすべてのオブジェクトが未定義になり、チェックを実行するとエラーが発生します。
モデルを削除する際には、次の警告が表示されます。
モデルを削除した場合、参照しているオブジェクトに予測できない影響が出る可能性があります。

継承関係の解除
個々のモデルの特性の値を、継承されてきたデフォルトの値ではなく、別の値に定義しなおすことができます。特性値を再定義すると、関連付けられているモデルの現在の特性値または更新された特性値が継承されなくなります。継承が「切れた」特性値は、［継承設定］ボタンで継承を設定し直すことができます。

オブジェクトに別のモデルを選択
モデルを別のモデルに変更すると、関連付けられているオブジェクトには新しいモデルの特性が継承され、元のモデルの特性は無視されます。

オブジェクトからモデルを削除
モデルの選択状態を削除すると、ユーザ定義モデルと関連付けられていたオブジェクトが置き換えられ、オブジェクトには、そのオブジェクトタイプのシステムベースのモデ
ルの特性値が継承されます。

148

リファレンス
Magic eDeveloper V9 Plus

モデル変換ユーティリティ

式
モデルに特性値として式が割当てられている場合、関連付けられているすべてのオブジェクトは、モデルテーブルに登録され、オブジェクトの［式］フィールドに表示されるモデル番号を所有します。オブジェクトに別の式を選択すると、モデルへの継承が切れます。式の値を置き換えずに削除すると、オブジェクトには特性値としての式がなく
なります。

権利
アプリケーションの権利は、モデルテーブル全体に割当てることができます。モデルテー
ブルでモデルに権利を設定するには、［権利］ダイアログを開きます。次のような権利を割当てることができます。
• 照会権利……モデルテーブルに表示されるモデルを参照できる。
• 修正権利……モデルテーブルの内容を変更できる。
• 削除権利……ユーザ定義のモデルを削除できる。
• 登録権利……モデルテーブルでモデルを作成できる。

モデル変換ユーティリティ
モデルのコンポーネントのいずれかを変更する場合、モデルテーブルを閉じた後、チェッ
ク処理が自動的に開始されます。この処理では、データベーステーブルやプログラムがスキャンされ、システム全体の変更内容が記録されますが、実際にデータベース中のテー
ブルの構造が再編成されることはありません。データベースの再編成は、テーブルリポ
ジトリで開発者が明示的に Ctrl+O を押すことで実行されます。
詳細については、第 14 章「コンポーネント」を参照してください。

リファレンス
Magic eDeveloper V9 Plus149

第 3 章 - モデル［このページは意図的に空白にしています。］

150

リファレンス
Magic eDeveloper V9 Plus

テーブル

4

テーブルを使用すると、情報カテゴリの編成や定義を行って、実行モードでデータを照会、修正、追加、削除することができます。テーブルはカラムによって定義され、カラムは特定の項目タイプ（文字型、数値型、日付型、時刻型、論理型など）に関連付けられています。項目の詳細については、第 3章「モデル」の「データ項目」を参照してください。
本章では、次の内容について説明します。
• テーブルリポジトリ• カラムテーブル• インデックステーブル

リファレンス
Magic eDeveloper V9 Plus151

第 4 章 - テーブル

テーブルリポジトリ
テーブルリポジトリは、図 4-1 のように［テーブル］ペインと［カラム］ペインで構成されています。

図 4-1 テーブルリポジトリ［ナビゲータ］ペインまたは［ワークスペース］メニューからテーブルリポジトリを選択
するか、あるいは［テーブル］ツールバーボタンをクリックすると、Magic アプリケー
ションでテーブルを作成することができます。
［テーブル］ペインと［カラム］ペインの両方が表示されます。
データベースメタデータは、テーブルリポジトリで定義、保守することができます。テーブルリポジトリに対する修正はすべて、その基盤となるデータベースと同期がとられます。ただしこれは、テーブルに関連付けられたデータベースの特性の［開発モードでのテーブル変換］パラメータをチェックする必要があります。詳細については、第 2 章「設定」の「設定／データベース」を参照してください。
Magic では、データベース構成の最適化やデータベースパラメータの調整は行いません。
このような操作は、データベース管理者（DBA）が外部ツールを使用して実行します。
Magic で作成する新規テーブルは、一般的なフォームで作成され、稼動環境に応じてカスタマイズされます。
テーブルリポジトリに定義されたテーブルは、Magic プログラムで認識される論理定義です。データベース内では、テーブルはテーブルまたはビューとして表示されます。Magic
内でも、同一のデータベースオブジェクトを指すファイルを複数定義することができます。
［テーブル］ペインには、テーブルのエントリ、そのエントリが入っているフォルダ、および次に関する統計情報が表示されます。
• カラム• インデックス• 外部キー• DB テーブル• データベース• フォルダ152

リファレンス
Magic eDeveloper V9 Plus

テーブルリポジトリ• 公開テーブル名［カラム］ペインには、次が表示されます。
• エントリ番号
• 名前
• モデル
• 型
• 書式
テーブルリポジトリパラメータについての説明は、以下のとおりです。

テーブルリポジトリのカラム#（テーブル識別子）
このカラムには、Magic によってテーブル識別子として使用される、自動的に生成される連番が入ります。テーブルを初めて作成する際に、データベースカラムにテーブルのDB 名を明示的に定義されていない場合、Magic ではテーブル識別子を使用してデフォル
トのテーブル名を作成します。このカラムは編集できません。

名前
テーブルの名前を入力します。Magic では、エンドユーザにエラーメッセージを表示するためにこの名前が使用されます。テーブル名の長さは、最大 30 桁です。
dbMAGIC Ver8.2 以前との互換のために 31 桁まで入力できますが、31 桁目は今後対応されなくなる場合があります。できるだけ 30 桁までに収めてください。

カラム
テーブルエントリに対して定義されたカラム数。Magic では、自動的に最新のカラム数が表示されます。このカラムから［カラム一覧］にズームして、テーブルに対してカラムを定義できます。

インデックス
テーブルに対して定義されたインデックス数。Magic では、自動的に最新のインデック
ス数が表示されます。このカラムから［インデックステーブル］にズームして、テーブ
ルに対してインデックスを定義することができます。インデックスを使用することを推奨します。さらに、Magic でアクセスできるデータベースを使用する場合には、インデックスを定義する必要があります。
詳細については、第 25 章「SQL に関する考慮事項」を参照してください。

外部キー
外部キーは SQL データベース内のポインタであり、プライマリテーブルレコードとほかのテーブルのレコードとの参照一貫性を保つものです。外部キーのあるレコードはすべて、プライマリキーのあるレコードを指しており、外部キーテーブルではこれらのレコー
ド間の関係を定義できます。
• 外部キーはプライマリキーがある場合のみ定義できます。
• プライマリキーはインデックステーブルに定義します。

リファレンス
Magic eDeveloper V9 Plus153

第 4 章 - テーブルDB テーブル
DB テーブルカラムでは、以下を定義するオプションがあります。
• テーブルがリモートホストコンピュータ上に存在する場合の Magic サーバ名
• テーブルへのフルパス• Magic がデフォルトで付加する名前より優先される物理テーブル名• 論理名
DB テーブルカラムの最長は 260 文字です。
SQL データベースでは、テーブルの実際の名前が基礎となるデータベースに定義されます。この名前はデータベースの仕様に応じて制限されます。たとえば、Oracle ではデー
タベース名は 30 文字までに制限されており、また文字で開始しなければなりません。
オブジェクトの完全な名前が「Owner.Tablename」または「Database.Owner.Tablename」の場合、Magic ではテーブル特性のオーナー名を使用します。そこでオーナーが指定されていない場合、オーナーはデータベーステーブルで定義されたユーザになります。
Magic では、選択したデータベースが SQL データベースであると、テーブルの［名前］を［ DB テーブル］にコピーします。このとき、空白は下線に変換されます。DB テーブ
ルを変更することができますが、空白にすることはできません。たとえば、テーブル名「my emp table」は、Magic では「my_emp_table」と表示されます。事前に定義された Magicの論理名をテーブル名の一部として使用することで、命名規則を適用しやすくなります。
Magic の論理名の詳細については、第 2 章「設定」の「設定／論理名」の節を参照してください。
保全と移植性の面から、ここではテーブルの場所を設定せず、データベーステーブルの［位置］で指定することをお勧めします。これは、データベーステーブルがアプリケー
ションの外部にあるためです。テーブル場所をアプリケーションの外部に指定すれば、
アプリケーションは特定の環境に縛られなくなります。

Magic パス文字列
パスの記述方法は、アクセスされる OS や DBMS によって異なります。標準的なディレ
クトリパスと物理テーブル名を組み合わせたり、物理テーブル名だけを記述できます。
［DB テーブル］とタスクの DB テーブル式の両方が空である場合、そのテーブルは、デー
タベーステーブルの位置で指定されたディレクトリ、またはローカルワークステーショ
ンのカレントディレクトリのいずれかに存在すると見なします。ただし、［識別子］欄にパス名が指定されている場合は、アプリケーション用に指定されたパスとデフォルトのテーブル名が使用されます。
SQL データベースについては、パスは無視されます。

データベース
このパラメータ内のデータベース名は、Magic からアプリケーションエントリの保存先である物理データベースへのアクセス情報を示します。Magic では、デフォルトデータ
ベースとして、［動作環境］ダイアログのデフォルトデータベースパラメータの設定を使用します。テーブルに対して異なるデータベースを指定する場合は、データベースカラムからズームし、データベース一覧を開きます。データベース一覧には、システムで利用可能な全データベースが示されます。一覧から必要なデータベースを選択します。
データベース設定の詳細については、第 2 章「設定」を参照してください。

154

リファレンス
Magic eDeveloper V9 Plus

テーブルリポジトリ

フォルダ
エントリが所属するフォルダを指定します。リポジトリにフォルダが作成されていない
場合、この欄にカーソルは止まりません。フォルダを作成するには、前述の図のように［テーブル］ペインの左側にある［ナビゲータ］ペインで［テーブル］アイコンを反転表
示し、F4 をクリックします。フォルダを作成すると、登録されているテーブルをグループ化することができます。
フォルダの詳細については、第 1 章「導入とインタフェース」を参照してください。

公開テーブル名
テーブルの公開名を記述します。そのモデル定義をコンポーネントとして外部から利用する場合に必須です。公開名はアプリケーションファイル内でユニークでなければなりません。

テーブル特性
テーブル特性は、以下のタブで設定します。
• 高度な設定• SQL［高度な設定］タブ
アクセスキー
アクセスキーパラメータでは、DBMS のテーブルセキュリティ機構で使用されるアクセ
スキーを指定します。このパラメータの値は、テーブルが開かれると基礎となるデータベースに送られます。外部プログラムまたはほかの Magic アプリケーションからテーブ
ルにアクセスしようとする場合は、基礎となる DBMS へのアクセスキーと同じものを提供する必要があります。提供されない場合、データへのアクセスは拒否されます。このプロテクションをインストール別に実装する場合は、このカラムにシークレット名を使用します。
詳細については、第 2 章「設定」の「CTL 特性」を参照してください。

SQL データベースに対しては、アクセスキーパラメータは無効化されています。

テーブル暗号化：No（デフォルト）
テーブル暗号化パラメータは、アクセスキーが定義されていない場合は無効化されています。アクセスキーがテーブルに定義されている場合、「Yes」を指定し、アクセスキー
を暗号化シードとして使用して、そのテーブルを暗号化することができます。
「No」を指定すると、テーブルは暗号化されません。
アクセスキーパラメータまたは暗号化テーブルパラメータの値を変更すると、Magic
では開発者に対して変更を確認するメッセージが表示されます。

リファレンス
Magic eDeveloper V9 Plus155

第 4 章 - テーブルキャッシュ範囲：D= 位置とデータ（デフォルト）
キャッシュ範囲パラメータでは、このテーブルで使用するキャッシュ範囲を指定します。
キャッシュ範囲パラメータには、次の 3 つの値のいずれかが使用されます。
• P= 位置 ……キャッシュはフェッチしたレコードの位置に関する情報を保持します。
この設定は、テーブルをメインテーブルとして使用する場合にのみ実行されます。次に後方スクロールを行うと、レコードの物理的な位置が読み込まれ、データが再びフェッチされます。
• D= 位置とデータ…… 位置のほかに、レコードの実際のデータがキャッシュされます。
事前にフェッチされているデータを読み込む場合には、キャッシュにすでに保存されている値が表示されます。
• N= なし……キャッシュは行われません。
詳細については、第 11 章「データ管理」の「Magic キャッシュ」を参照してください。

常駐：N= なし（デフォルト）
常駐パラメータを使用すると、テーブルを常駐テーブルとして定義し、テーブルをロードする時期を決定することができます。
このパラメータの有効な値は次のとおりです。
• N= なし……このテーブルが常駐テーブルでないことを示します。
• I= 即時……テーブルは常駐テーブルであり、アプリケーションが起動すると同時にテーブルがロードされます。
• D= 利用時……テーブルは常駐テーブルですが、アプリケーション上でテーブルに対してアクセスが実行された時点で、テーブルがロードされます。

更新レコードの識別
データベースを更新する前に、別のユーザが修正した行を識別できるようにするため、
SQL テーブルに対する Where 句の作成方法を指定できます。
この欄には、以下のいずれかを設定できます。
• P= 位置• S= 位置と選択項目• U= 位置と更新項目
遅延トランザクションを使用しているタスクにのみ適用されます。
詳細は、第 11 章「データ管理」の「更新／削除ステートメント」を参照してください。

サイズ
テーブル内のレコードのサイズ（バイト単位）。Magic では、この値は自動的に更新されます。特定のケースでは、関連するデータベースに応じて、カラムの実際の長さを決められない場合があり、Magic 側で可能な限り予測されます。Magic 側で長さが変化すると予測されたカラム、たとえばメモなどは、この合計長には含まれません。ユーザはこの欄を変更することはできません。Magic によって自動的に更新されます。

156

リファレンス
Magic eDeveloper V9 Plus

テーブルリポジトリ［SQL］タブ
データベース情報
このパラメータを使用して、基礎となる RDBMS に Magic が渡すことのできるデータベース固有の情報を指定します。このパラメータの使用は任意です。
詳細については、第 25 章「SQL に関する考慮事項」を参照してください。

オーナー名
テーブルまたはビューの所有者。論理名を使用することができます。

位置• D=デフォルト……Magic独自のデフォルト値をテーブルの位置インデックスとして使用します。
• R=ROWID……Oracle のテーブルには、ROWID カラムを使用します。
• U= 重複不可インデックス……ほかの RDBMS には、最も短い重複不可インデックスを使用します。このインデックスは、ほかのインデックスを位置キーとして使用することで上書きできます。

インデックス
Magic のデフォルトを使用しない場合、「重複不可インデックス」を位置として選択することができます。

デフォルト位置［位置］パラメータで ［D= デフォルト］を指定した場合、Magic でデフォルト位置イン
デックスとして使用されるインデックスを指定します。この特性は読み取り専用です。

テーブルの存在チェック
この設定により、実行時にアクセスする SQL テーブルの存在をチェックし、存在しない
場合に SQL テーブルを作成するかを決めます。
データベースに依存オプションでは、［データベース情報］ダイアログの［テーブルの存
在チェック］パラメータの値が使用されます。このオプションは［テーブルの存在チェック］パラメータのデフォルトです。
• Yes……データベースにテーブルが作成されます。また、アクセスするテーブルすべての存在がチェックされます。このチェックにより処理速度が低下する可能性があることに注意してください。
• No……アクセス前にテーブルの存在がチェックされません。テーブルが存在しない場
合、RDBMS からエラーが出力されます。
• D= データベースに依存……使用するデータベースの特性に依存します。
実行モードでは、処理速度を高めるために［テーブルの存在チェック］パラメータを「No」に設定します。

テーブルのタイプ
テーブルタイプは「T= テーブル」または「V= ビュー」のいずれかになります。
• T= テーブル……ユーザが DB テーブルを作成できるようになります。
リファレンス
Magic eDeveloper V9 Plus157

第 4 章 - テーブル
• V= ビュー……ビュー（仮想テーブル）を作成できるようになります。ビューは Magic
で作成、削除、または変更できないため、DbDel と DbCopy 機能が無効になります。
ビューを作成する場合、位置キーとして重複不可インデックスを定義する必要があります。

ヒント
Oracle、MS-SQL Server などの RDBMS では、照会処理にオプティマイザを指定することができます。この欄には、プログラマは SELECT 文に連結する文字列を指定します。
詳細については、第 25 章「SQL に関する考慮事項」を参照してください。

• Yes……ヒント特性が有効になります。
• No……ヒント特性が無効になります。
Magic では、文字列はチェックされません。開発者には、正しい構文を使用する責任があります。ヒントは特殊な場合にのみ使用することをお勧めします。

カーソル
MS-SQL Server ゲートウェイの場合、内部 DB コマンドとカーソルのどちらでも指定できます。DB コマンドを使用する場合は、各結果セットに個別の接続が必要になります。結果セットが大きいほど、処理速度は向上します。
以下のことを考慮して、Magic の MS-SQL Server テーブルに対する動作が決まります。
• MS-SQL Server テーブルがメインのタスクテーブルとして設計されている場合は、Magic ではカーソルが使用されます。
• MS-SQL Server テーブルがリンクテーブルとして設計されている場合は、Magic では
DB コマンドが使用されます。
詳細は、第 25 章「SQL に関する考慮事項」を参照してください。

配列サイズ
さまざまな SQL データベースへの Magic ゲートウェイでは、配列処理をサポートしています。データベースからレコードをフェッチする場合、ゲートウェイは 1 度に 1 レコー
ドずつフェッチするのではなく、レコードをまとめてフェッチすることによってネット
ワークのトラフィックを減らします。
デフォルトでは、配列のサイズは「0」ですが、Magic では独自のデフォルトサイズを使用しています。ただしこれは上書き可能です。大規模なテーブルをスキャンする場合、配列のサイズを増やすと処理速度が向上します。ただし、Magic のデフォルト値を使用することをお勧めします。テーブル内の配列のサイズを変更すると、データベース特性の設定が上書きされます。
詳細は、第 25 章「SQL に関する考慮事項」を参照してください。

158

リファレンス
Magic eDeveloper V9 Plus

カラムテーブル

常駐テーブル
Magic の常駐テーブル機能は、アプリケーションのデータが複数回使用されるという原則に基づいています。常駐テーブル機能は、Magic プログラマのディスク入出力を削減
し、クライアント / サーバ設定の場合はネットワークのトラフィックを軽減し、システ
ムパフォーマンスを向上させるツールです。Magic では、［テーブル特性］ダイアログの［常駐］欄の設定に応じて、常駐としてメモリに定義されたすべてのテーブルを読み込みます。
常駐テーブルは読み取り専用であり、メモリに保存されている間は修正できません。

テーブル変換ユーティリティ
テーブル変換は、テーブルの物理構造が変更され、データテーブルが存在する場合に、自動的に開始される処理です。たとえば、テーブルに対する列の追加、テーブルからの列の削除、列の属性の変更、インデックス仕様の変更、外部キーの追加や削除、テーブルで使用されるデータ型の修正などの変更が行われた場合、テーブル変換処理が自動的に開始されます。
重複可インデックス定義を重複不可インデックスに変更すると、重複するインデックス
条件に合うすべての行が変換処理によって削除されます。
テーブル変換処理が開始されるのは、テーブルリポジトリの行の設定を終了したとき、テーブルリポジトリを終了しようとしたとき、あるいはモデルテーブル変換ユーティリ
ティを実行しようとしたときです。
変更する前に存在していたテーブル構造は、テーブルリポジトリでの行の設定またはテーブルリポジトリを終了するまで新規のテーブル構造とともに維持されます。変換処
理を途中でキャンセルしたときには、テーブルの物理構造と論理構造に矛盾が生じることがあります。この場合、その後、自動変換が不可能になります。このため、Magic が矛盾のあるテーブルにアクセスすると、エラーメッセージが表示されることもあります。
テーブル変換ユーティリティの詳細は、第 19 章「ユーティリティ」を参照してくだ
さい。

カラムテーブル
カラムテーブルには、カラムに関連する項目情報が記載されています。カラムテーブルにアクセスするには、テーブルリポジトリの［カラム］にカーソルを置きズームします。

カラムテーブルのカラム
カラムテーブルの各カラムについての説明を以下に示します。

#（カラム識別子）
このカラムには、Magic によってカラム識別子として使用される、自動的に生成される連番が入ります。このカラムは編集できません。

リファレンス
Magic eDeveloper V9 Plus

159

第 4 章 - テーブル名前
カラムの名前を入力します。モデルをカラムに関連付ける場合、カラム名を空白のままにすると自動的に Magic からモデル名がコピーされます。カラム名の長さは、最大 30 桁です。
dbMAGIC Ver8.2 以前との互換のために 31 桁まで入力できますが、31 桁目は今後対応されなくなる場合があります。できるだけ 30 桁までに収めてください。

モデル［モデル］カラムをダブルクリックすると、項目モデルが表示された［モデル一覧］にアクセスできます。項目モデルには次の特性があります。
• すべての項目モデル特性はカラムに継承されます。
• カラム名が空の場合は、項目モデル名に設定されます。。
詳細については、第 3 章「モデル」を参照してください。

型
Magic のデータ項目型から 1 つを選択します。データ項目型として、文字型（デフォルト）、数値型、論理型、日付型、時刻型、メモ型、BLOB があります。頭文字を使用して、あるいはコンボボックスでクリックして、型を表示することができます。
各種の型の概要については、第 3 章「データ項目」を参照してください。

書式
文字型やメモ型カラムでは、最低限の書式として長さが必須になっています。また、必要に応じてほかの書式設定を行います。
数値型カラムでは、整数の桁数が最低限の書式であり、必要な場合には小数と小数点以下の桁数を設定します。必要であれば、そのほかの書式設定を追加できます。
データ型が論理、時刻または日付のカラムの場合、デフォルトの書式を受け入れるか、必要に応じてほかの書式設定を追加できます。
BLOB はバイナリオブジェクトが保存されているものであり、Magic ではデータ解釈は行
われません。このため、BLOB には書式を設定できません。
詳細については、第 3 章「モデル」の「データ項目」を参照してください。

160

リファレンス
Magic eDeveloper V9 Plus

カラムテーブル

カラム特性

図 4-2 カラム特性

カラム特性で、特定のデータ型の特性値を定義します。この特性は、次のセクションで構成されます。

モデル
モデルの継承を設定または解除します。
詳細については、第 3 章「モデル」を参照してください。

詳細• 型……このカラムのデータ型を表します。
• 書式……選択した［型］に対応した［書式］ダイアログを表示します。
• 範囲……コンマで区切り、カラムに有効な値を入力します。有効な値の連続する範囲を指定するには、最小値と最大値をハイフンでつなげます。範囲の詳細については、
第 3 章「モデル」の「データ項目」を参照してください。

入力• 選択プログラム……この特性を使用して、選択プログラムをデータ項目に関連付けます。
リファレンス
Magic eDeveloper V9 Plus161

第 4 章 - テーブル• 起動モード……起動モードが指定され呼び出し時が決定されると、起動モード特性が有効化されます。使用できる値は［B= 前置］、［A= 後置］、［P= 自動］です。
詳細については、第 6 章「プログラム」を参照してください。

表示• ヘルプ画面……この特性を使用し、ヘルプ画面とカラムを関連付けます。ヘルプ画面
は、ユーザが実行時にヘルプを要求した場合に表示されます。
• ツールチップ……この特性を使用し、ツールチップヘルプとカラムを関連付けます。
• 自動ヘルプ……この特性を使用し、自動ヘルプとカラムを関連付けます。

スタイル• ブラウザ形式……ブラウザ形式フォームのスクリーンモードにおけるデフォルトのコントロールタイプを設定します。また、この欄からズームして対応する特性を設定できます。
• ブラウザ形式テーブル……ブラウザ形式フォームのラインモードにおけるデフォル
トのコントロールタイプを設定します。また、この欄からズームして対応する特性を設定できます。
• GUI 表示……クラス「0」の GUI 形式フォームのスクリーンモードにおけるデフォル
トのコントロールタイプを設定します。また、この欄からズームして対応する特性を設定できます。
• GUI 表示テーブル……クラス「0」の GUI フォームのラインモードにおけるデフォル
トのコントロールタイプを設定します。また、この欄からズームして対応する特性を設定できます。
• GUI 出力……クラス「1」以上の形式フォームのスクリーンモードにおけるデフォル
トのコントロールタイプを設定します。また、この欄からズームして対応する特性を設定できます。
• GUI 出力テーブル……クラス「1」以上の GUI フォームのラインモードにおけるデフォ
ルトのコントロールタイプを設定します。また、この欄からズームして対応する特性を設定できます。
• テキスト形式……テキスト形式フォームにおけるデフォルトのコントロールタイプを設定します。また、この欄からズームして対応する特性を設定できます。
• HTML形式……HTML形式フォームにおけるデフォルトのコントロールタイプを設定します。また、この欄からズームして対応する特性を設定できます。

デフォルト /NULL• NULL 値可：No（デフォルト）
NULL 値可パラメータにより、エンドユーザが NULL 値をテーブルカラムに入力できるかどうかを指定します。新規テーブルを作成する場合、この特性によって NULL 制
約が生じます。デフォルト値は、MAGIC.INI ファイルの DBMS セクションの NULLの値が使用されます。
•

Yes……実行時には、エンドユーザはデータベースに NULL 値を渡すことができます。

•

No……Magic では NULL 値が許可されません。

• NULL 計算値：（任意）
NULL 計算値パラメータへの入力は、［カラム特性］ダイアログで NULL 値可パラメー
タが「Yes」に設定されている場合に限られます。
NULL 計算値は、このカラムに NULL 値が含まれ、その値が計算で使われる場合に使用する値を指定します。

162

リファレンス
Magic eDeveloper V9 Plus

カラムテーブル• NULL 表示文字列：（任意）
この欄は、NULL 値可パラメータ（上記参照）の値を「Yes」に設定しているときにのみ使用します。この欄には、NULL 値の表示に使う文字列を指定できます。
• NULL デフォルト
NULL デフォルト特性により、NULL 値またはデフォルト値のどちらをカラムに割当てるかを決定します。有効値は次のとおりです。
•

Yes……NULL がデフォルト値となります。

•

No……デフォルト値の特性が使用されます。

• デフォルト値
デフォルト値が NULL カラムに割当てられます。
• データベースデフォルト値
これはデータベースのデータベースデフォルト値です。プログラムでレコードを作成
し、セレクト項目として指定されていない場合、RDBMS でこのデフォルト値を割当てます。
新たにテーブルを作成する場合は、そのカラムのデフォルト値として、CREATETABLE 文にこの文字列が追加されます。たとえば、データベースデフォルト 'defvalue'
を MS-SQL Server テーブルに作成すると、Magic では次の SQL 文が生成されます。
CREATE TABLE owner1.table1'defvalue'）（Col1 CHAR （10） NOT NULL DEFAULT

Magic では、CREATE TABLE 文にフォーマットを行わず、この文字列がそのまま追加
されます。

格納形式
• 文字セット……以下から指定ができます。Unicode は、DBMS によっては指定できな
い場合があります。
•

A=ANSI

•

O=OEM

•

U=Unicode• 記憶型式……Magic 内のすべての属性には、いくつかの保存タイプがあります。指定されていない場合は、SQL ゲートウェイで関連する RDBMS データタイプに最適なデフォルトマッピングが使用されます。
たとえば、文字型の属性は RDBMS の場合、Magic では「Zstring」として保存されます。この保存は Magic 内部のみです。別の RDBMS に切り替えると、同一の保存タイ
プを維持します。ただし、整合性の理由から保存タイプが異なる場合があります。
Magic のデフォルト保存タイプは変更しないでください。
詳細については、第 25 章「SQL に関する考慮事項」を参照してください。

• デフォルト記憶形式……Magic は、カラムの書式や使用している DBMS ゲートウェイ
に従って、使用する DBMS で最適な記憶形式を自動的に割り当てます。
この機能によって、DBMS の DBMS の携帯性に透明化が加わります。
•

Yes……カラムの記憶形式は、DBMS ゲートウェイによって定義されたデフォル
ト指定に割り当てられます。

•

No……カラムの［記憶形式］特性の指定に依存します。

この特性は、また、SQL コマンドタスクで使用される変数項目に対して有効です。
デフォルト値は、「No」です。SQL コマンドタスクの変数項目の場合は、デフォルトが「Yes」になります。
以前のバージョンのリポジトリ出力ファイルを入力した場合、［記憶形式］、［サイズ］、
リファレンス
Magic eDeveloper V9 Plus163

第 4 章 - テーブル
［データベース定義］の各特性が使用しているDBMSゲートウェイで定義されたデフォ
ルト値と同じであれば、「Yes」になります。そうでなければ「No」になります。
• 修正許可……この特性では、カラムを作成後に修正することができます。オンライン
タスクの場合、カーソルを［修正許可 =No］として指定されたカラムに移動し、データを入力しようとしても、新規入力は拒否されます。
• サイズとデータベース定義……記憶型式、サイズ、データベース定義の各特性はフィールドの内部を表す保存タイプを反映します。Magic では、デフォルトの保存タ
イプとサイズを割当てますが、これは項目の型、書式、割当データベースによって異なります。
• 更新形式……前バージョンの Magic では、絶対数の値更新しか許可されていませんでした。たとえば、値 X をフィールド FLD1 にしか設定できませんでした（FLD1=X）。
Magic Ver.9 では、差分更新を行うこともできます。すなわち、値 FLD1+X を使用して FLD1 を更新します（FLD1=FLD1+X）。カラム特性シートには、更新形式パラメー
タが追加されました。この特性の値は次のとおりです。
•

A= 値更新……固定値による更新•

D= 差分更新……差分による更新•

T= テーブルに依存……テーブルのテーブル特性に依存します。

［タスク特性］ダイアログの［トランザクションモード］欄が「遅延」の場合の SQL
テーブルの数値型項目に対する更新の形式を指定します。この設定は、ISAM ファイ
ルには適用されません。
詳細は、第 11 章「データ管理」の「数値型項目の更新」を参照してください。

SQL• データベース情報……この特性を使用して、基礎となる RDBMS に Magic が渡すことのできるデータベース固有の情報を指定できます。このパラメータの使用は任意です。詳細については、第 25 章「SQL に関する考慮事項」を参照してください。
• DB カラム名……RDBMS におけるカラムの名前。この名前は、使用できない予約語な
ど、RDBMS によって制限される場合があります。
カラムを作成する場合、カラム名が DB カラム名にコピーされますが、そのときに空白は下線に置き換えられます。DB カラム名は変更できますが、空白にはできません。
• タイプ……RDBMS における SQL データ型。定義取得を行うと、自動的に設定されます。テーブルを作成する場合、Magic はデフォルトのマッピングを行うため、この設定は省略できます。Magic の使用するデフォルトのデータ型でないデータ型を使用する場合、この設定を行います。
例えば、日付型のカラムは Oracle では「DATE」という型にマッピングされますが、この欄に「CHAR（8）」と指定することで、「CHAR」という型にマッピングされるよ
うになります。
Magic と RDBMS との有効なデフォルトマッピングの一覧については、第 25 章
「SQL に関する考慮事項」を参照してください。
• ユーザタイプ……これは、データベース内で定義されるユーザ定義データ型（UDT）。
ほとんどの RDBMS では、ユーザ定義データ型を作成し、システムデータ型を再定義できます。
たとえば、UDT「説明」は「VARCHAR（20）」に基づいています。UDT が作成されると、CREATE TABLE 文と ALTER TABLE 文に使用され、デフォルトが適用され、それにルールが作成されます。テーブル定義をロードする場合、Magic では、各カラ
ムの UDT とその基礎となるシステムデータ型がロードされます。Magic にテーブルを164

リファレンス
Magic eDeveloper V9 Plus

インデックステーブル
作成する場合は、SQL データ型以外は使用しません。
詳細は、第 25 章「SQL に関する考慮事項」を参照してください。

インデックステーブル
インデックステーブルでは、重複不可または重複可のインデックスエントリをテーブルに定義されたカラムから選択できます。インデックスエントリは特定のテーブルの ID 番号、電子メールアドレス、電話番号などを、インデックスセグメントとして組み合わせます。インデックステーブルにアクセスするには、必要なテーブル行の［インデックス］
カラムを指してズームします。インデックステーブルは次のように構成されます。

図 4-3 テーブルのインデックスの定義

インデックスの定義は論理的であり、Magic だけで有効です。データベースのインデックスは、Magic で定義したインデックスとは異なる場合があります。定義取得を行うと、データベースの実際のインデックス構造を確認できます。
Magic にインデックスを作る場合に最善な方法は、データベースのインデックスと一致させ、オプティマイザがソート処理を不要になるようにすることです。Magic とデータベースのインデックスが合致していれば、パフォーマンスも向上します。
Magic でインデックスを定義すると、次のようになります。
• インデックスのデータ型を「実キー」にして新しいテーブルに割当てると、データベース内に Magic インデックスと一致するインデックスが作成されます。
• 実行時には、Magic インデックスで ORDER BY 句を Magic の SELECT 文に追加します。インデックスで設定したセグメントは、ORDER BY 句で指定したカラムになる。

インデックステーブルのカラム
インデックステーブルのエントリに対するパラメータについて説明します。

リファレンス
Magic eDeveloper V9 Plus

165

第 4 章 - テーブル# （またはインデックス識別子）
ここには、Magic によってインデックス識別子として使用される、自動的に生成される連番が入ります。カーソルはこのカラムをスキップします。

名前
インデックスの名前を入力します。

タイプ：U= 重複不可（デフォルト）• U= 重複不可……このインデックスの特定の値の行のみ、テーブルに含まれます。SQL
ゲートウェイには、テーブルで作業する場合に Magic 内に 1 つ以上の重複不可イン
デックスが必要なものもあります。
• N= 重複可……重複したインデックス
詳細については、第 25 章「SQL に関する考慮事項」を参照してください。

プライマリキー
このチェックボックスは、インデックスをプライマリキーにするかどうかを指定するものです。「U= 重複不可」のインデックスのみプライマリキーに指定できます。

インデックスセグメントテーブルのカラム
テーブルにおけるセグメントの表示順序には、その優先度の高い順に階層のレベル（高/ 中 / 低）が反映されます。セグメントの表示順序はこのインデックスのソート順に影響します。
［インデックスセグメント］テーブルには、32,767 個のエントリを保存できます。
［インデックスセグメント］テーブルの各カラムについて説明します。

#（セグメント識別子）
このカラムには、Magic によってセグメント識別子として使用される、自動的に生成される連番が入ります。カーソルはこのカラムをスキップします。

カラム（カラム番号）
セグメントとして使用できるテーブルカラムの番号です。任意の番号を入力するか、右側に表示されている［カラム一覧］にズームし、任意のカラムを選択できます。

名前
この欄では、セグメントとして選択した列の名前を表示します。カーソルはこのカラムをスキップします。

サイズ

166

データが文字型の場合のみ、この欄にカラムのサイズを入力できます。この欄は、通常、
インデックスセグメントのカラムのサイズを小さくする場合に使います。カラムのサイズを小さくすると、検索の際の処理速度が向上します。また、サイズを小さくする場合、
インデックスを重複可インデックスに設定します。これで、カラムのサイズが小さくな
り、データが切り取られたときでも、行の喪失を最小限に抑えることができます。ただし、重複可インデックスにすると処理速度が落ち、その関係から、この欄を使用してカ
ラムのサイズを小さくしても、必ずしも処理効率が向上するとは限りません。
リファレンス
Magic eDeveloper V9 Plus

インデックステーブル
SQL データベースを使用する場合には、この特性を変更しないでください。

順：A= 昇順（デフォルト）• A= 昇順……セグメントのソート方向は「昇順」です。
• D= 降順……セグメントのソート方向は「降順」です。
セグメント順序では、［動作環境］ダイアログで指定があれば、照合順序を利用することができます。これはセグメントが文字型カラムであり、そのデータベース定義パラメー
タが標準の場合に利用できます。Magic では、照合順序は同時に 1 つだけサポートしています。照合順序の実行時にアクセスするテーブルはすべて、同一のソート順で作成されていなければなりません。そうでない場合は、Magic 側でこれらのテーブルの正しい照合順序を認識できず、範囲 / 位置付の照会の結果が間違ったものになる場合があります。

インデックス特性
インデックス特性は、特定のデータ型のパラメータを定義する関連特性です。インデックス特性は次のタブで設定します。
• 高度な設定• SQL［高度な設定］タブ
方向：T= 双方向（デフォルト）• T= 双方向……このテーブルでは順方向および逆方向への移動が可能です。通常は、双方向へのアクセスがサポートされていないデータベースのオンラインタスクを使用する場合などに指定します。インデックスをバッチとしてのみ使用し、データベース
で双方向のインデックスをサポートしていない場合は通常、インデックスを片方向として定義します。データベースゲートウェイには、双方向のインデックスをデフォルトとしているものもあり、この設定は無視されます。SQL などでは、この情報を使用し、必要なインデックスは 1 つか、あるいは 2 つ必要かを決定することができます。
• O= 片方向……順方向のアクセスのみを実行します。
データベースに応じてこの設定を切り替えると、処理速度が向上します。詳細は、第25 章「SQL に関する考慮事項」を参照してください。

範囲処理モード：Q= 高速（デフォルト）• Q= 高速……定義したインデックスは、インデックスを使用した高速範囲処理をサポートしています。
• F= 全走査……範囲処理は順次操作方式で実行されます。［範囲処理モード］を［全走査］に指定すると、処理速度が大幅に低下します。
データベースに応じてこの設定を切り替えると、処理速度が向上します。詳細は、第25 章「SQL に関する考慮事項」を参照してください。

リファレンス
Magic eDeveloper V9 Plus167

第 4 章 - テーブル

［SQL］タブ
データベース情報
この特性を使用して、基礎となる RDBMS に Magic が渡すことのできるデータベース固有の情報を指定できます。このパラメータの使用は任意です。
詳細については、第 25 章「SQL に関する考慮事項」を参照してください。

DB インデックス名
RDBMS におけるインデックスの名前です。この名前は、通常、データベースの命名規則にしたがって付けなければなりません。
テーブルに新規のインデックスを追加すると、そのインデックスの名前が、この［DB インデックス名］欄にコピーされます。また、文字間の空白は自動的に下線に置き換えられます。コピーされたインデックス名は変更できますが、空欄にすることはできません。
たとえば、Magic のインデックス名「emp ind1」は、DB インデックス名「emp_ ind1」になります。

インデックスタイプ
この特性では、対象となるインデックスをデータベースに入れるか、それとも Magic だ
けで定義するかを指定します。使用できる値は、［R= 実キー］または［V= 仮想キー］です。テーブルの新規作成時にそのインデックスを Magic で作成する場合は、インデック
スタイプを［実キー］に指定しなければなりません。
インデックスタイプの特性は、実行時には既存のテーブルに影響しません。たとえば、
エンドユーザがデータビューにアクセスする場合には、実インデックスを追加する必要があります。
プログラム内でソート処理コマンドの代わりに仮想インデックスを使用することは、特に RDBMS 使用によるソート機能が利用できる場合はなるべく避けてください。この機能を利用すればレコードを任意の順序で取り出せるため、Magic ではソート機能が不要です。

ヒント
一部の RDBMS では、クエリ処理の際にオプティマイザに対するヒントを指定できます。
このカラムには、プログラマは SELECT 文に連結する文字列を指定します。
詳細については、第 25 章「SQL に関する考慮事項」を参照してください。

クラスタ化
MS-SQL Server の場合、この欄を使用して、Magic でテーブルを作成する際、そのテーブ
ルのインデックスをクラスタ化インデックスとして作成するかどうかを指定できます。
クラスタ化するインデックスを決定することができ、決定しないとクラスタ化インデックスを使用せずにテーブルが作成されます。なお、レコードの挿入が多いテーブルでは、
クラスタ化インデックスは、処理速度を低下させることがあります。

168

リファレンス
Magic eDeveloper V9 Plus

インデックステーブル
クラスタ化インデックスのカラムでは、物理データは、そのインデックスの順にしたがって格納されます。このインデックスの場合、順番に並んでいるデータのうち、複数のデー
タをセットで取り出すときには処理効率は上がりますが、単一のデータを取り出すときには効率はよくありません。
データベースに応じてこの設定を切り替えると、処理速度が向上します。詳細は、第25 章「SQL に関する考慮事項」を参照してください。

再作成
この特性は、タスクの DB テーブルのオープンモードが［再索引］に設定されている場
合に、Magic が既存のインデックスを削除するかどうかを決定します。
詳細については、第 25 章「SQL に関する考慮事項」を参照してください。

外部キーテーブル
プライマリキーと外部キーの間にある参照整合性を定義します。RDBMS では、テーブルの宣言または整合性の制限により、次に示す参照制約を設定できます。
外部キーは外部キーテーブルに定義することができます。この外部テーブルキーテーブ
ルは外部キー定義テーブルおよび外部キーセグメントテーブルにより構成されます（次を参照）。

図 4-4 外部キー定義

外部キー定義テーブル
外部キー定義テーブルには以下のカラムがあります。
• 外部キー番号（#）……自動的に生成された連番が表示されます。この番号は、識別子として使用され、ユーザが変更することはできません。

リファレンス
Magic eDeveloper V9 Plus

169

第 4 章 - テーブル
• 名前……Magic での外部キーの名前。この名前を使用して、RDBMS において外部キーを定義します。外部キーは 1 カラムまたはカラムの集合であり、他のテーブルのプラ
イマリキーを使用して 1 つのテーブル内の行を他のテーブルの一意の行に関連付けます。
• 参照テーブル……参照するテーブルの番号を指定します。この欄は、直接入力できる
ほか、ズームして、［テーブル一覧］から選択することもできます。
• 参照キー……参照するテーブルに定義されている重複不可インデックスを指定します。この欄は直接入力できるほか、ズームして［インデックス一覧］から選択することもできます。
• DB に作成……外部キーの設定を RDBMS にも適用するか否かを指定します。この欄がチェックされていない場合、外部キーの設定は Magic の内部にのみ適用されます。
設定を行うテーブルと参照するテーブルが同じデータベースの場合、この欄はデフォ
ルトでチェックされます。データベースが異なる場合、この欄は無効となり、外部キーの設定は RDBMS に適用されません。
この制約はテーブル内のカラムの値を無条件に参照するテーブルのカラムと同じになる
ように制限します。現在の ANSI 規約では、この制約をテーブルの作成時または修正時に行う必要があります。

外部キーセグメントテーブル
外部キーセグメントテーブルには以下のカラムがあります。
• カラム番号（#）……自動的に生成された連番が表示されます。この番号は、識別子として使用され、ユーザが変更することはできません。
• カラム……参照テーブルのインデックスに対応するカラムを指定します。この欄からズームして、［テーブル一覧］から選択します。
• 参照テーブルのカラム……参照テーブルのインデックスセグメントのカラム名が表示されます。参照キーを設定すると、自動的に設定されます。他のインデックスと交換すると、新しいインデックスセグメントに上書きされます。
既存テーブルに外部キーを追加して自動再作成を行う際に、外部キーを構成している
カラムのデフォルト値や既存の値が、対応している参照キーのデータに存在しない場
合、DBMS による整合性チェックにより、レコードが作成されません。
外部キーを削除しても、参照されていたテーブル定義の変更ができないことがあります。これは、外部キーがあるテーブルの定義変更を行った際に作成されたバックアッ
プのテーブルが存在している可能性があります。

170

リファレンス
Magic eDeveloper V9 Plus

Magic アプリケーションエンジン

5

Magic アプリケーションエンジンは、Magic の実行の全体を管理するモジュールであり、アプリケーションで定義された処理を実行します。また、タスクの実行中に明示的あるいは暗黙的に発生するイベントに対応して、アプリケーション中に定義されているイベ
ントハンドリングのロジックに従ってイベントを処理します。
本章では、次の内容について説明します。
• タスク• エンジンレベル• イベントハンドリング• ユーザ定義イベント• エンジンについての情報• エンジンの実行規則

リファレンス
Magic eDeveloper V9 Plus

171

第 5 章 - Magic アプリケーションエンジン

タスク
アプリケーションは複数のプログラムから構成され、各プログラムは複数のタスクで構成されます。従って、タスクはアプリケーションの処理を定義するプログラムの最も基本となる単位です。データベース関連の処理では、ほとんどの場合、データベーステー
ブル中のレコードに対するループ処理が必要になります。このような、テーブルに対するループ処理を行う単位がタスクです。タスクでのループ処理はタスクごとに決められたデータベーステーブルに対して行われ、これをタスクの「メインテーブル」と呼んでいます。
1. タスクの設定は、［タスク特性］ダイアログで行います。ダイアログでは、アプリ
ケーションのテーブルリポジトリに定義されているデータベーステーブルからひとつのテーブルを選択してメインテーブルとします。メインテーブルとしてテーブル 0を指定することもできます。テーブル 0 は、データベースに格納されているテーブ
ルではなく、メモリ上の仮想スクラッチファイルであり、タスクの実行時にだけ存在し、タスクの終了とともに消滅します。
2. 続いて［タスク特性］ダイアログでタスクの種類を指定します。タスクの種類には、
オンラインタスク、バッチタスク、あるいはブラウザタスクがあります。
オンラインタスクあるいはブラウザタスクの場合、タスクの実行時、ユーザにメインテーブルが表示されます。メインテーブル内でレコード間の移動が可能で、ユーザはレコードを見ながら編集を行うことができます。したがって、データ入力画面を出したり、検索ウィンドウを開いたりするような、ユーザとの対話処理が必要になる場合には、タスクはオンラインタスクかブラウザタスクにしなければなりません。
バッチタスクの場合、ユーザとの対話処理なしに、テーブルの最初のレコードから最後のレコードまで各レコードが順に処理されます。処理の対象となるレコードを範囲
や条件などで制限することも可能で、これはタスクの「データビュー」を定義することにより行います。レポートの作成やテーブル全体にわたるデータの更新など、自動処理を行いたい場合、バッチタスクにします。
3. 以上のようにして、メインテーブルとタスクの種類（オンラインタスク、バッチタ
スク、あるいはブラウザタスク）を選択したら、その後、タスクの具体的な処理内容を定義します。つまり、タスク、レコード、コントロール、グループ（バッチタ
スクの場合のみ）の各レベルのループ処理において、使う規則や実行するアクショ
ン、その他、パラメータやレコード、パラメータ値の変更、アプリケーションブレ
イクに関する設定を行います。
各タスクに対しては、次のように処理の詳細を定義します :• テーブルに対してのループ処理において、実行すべき処理コマンドの決定（たとえば、データ入力や印刷など）。
• 処理コマンドの［処理］テーブルへの割当。［処理］テーブルにはいくつかのレベルに分けられていて、タスクの実行はこのレベルに従って行われます。
タスク中に実行されるべき処理コマンドはすべて、適当なレベルの［処理］テーブルに割当てなければなりません。どのレベルに割当てられるかにより、実行時に、ループ処
理中のどの段階で実行されるかが決まります（図 5-1）。Magic アプリケーションエンジ
ンがループ処理を行う際の各段階を「ハンドラレベル」と呼びます。
バッチタスクにおいては、ループ処理が進む際に、直前に処理したレコードと現在のレコードの、特定のカラムの値を比較し、それが変わったときにだけ行う処理を指定することができます。この処理レベルを「グループレベル」と呼びます。

172

リファレンス
Magic eDeveloper V9 Plus

エンジンレベル

エンジンレベル
図 5-1 は、エンジンの実行レベルと各レベルに対応した処理コマンドテーブルとの関係を図示したものです。こういったテーブルを定義することによりタスクが構成されます。

図 5-1 Magic アプリケーションエンジンの実行モデル

処理テーブル
図 5-1 の上部にある表は、［処理］テーブルと［処理レベル］テーブルを示したものです。
開発者は処理レベルテーブルからレベルを選び、［処理］テーブルを開くことができます。
［処理レベル］テーブルの各行は、レベル（タスク、グループ、レコード、コントロー
ル、あるいはユーザ定義ハンドラ）を表します。
［イベント］列は、「前処理」、「メイン」、
あるいは「後処理」のいずれかで、各レベルごとに定義することができます。例えば、
図ではコントロールレベルに２つのハンドラ（前処理と後処理）があります。
［処理］カラムからは処理コマンドテーブルにズームできます。
［レベル］と［イベント］とを組み合わせて処理コマンドテーブルの名前とします。例えば、タスク前処理、レコードメイ
ン、コントロール前処理、コントロール後処理、タスク後処理などとなります。ただし、［メイン］ハンドラは、レコードレベルだけで有効です。したがって、レコードメインはありますが、タスクメインとかグループメインなどはありません。
処理レベルとハンドラを選択した後は、処理コマンドテーブルで各レベルで行う処理を定義することができます。以下、各処理テーブルについては、その概要を説明します。
説明は、図 5-1 に掲載されている処理テーブルの順に進めています。
リファレンス
Magic eDeveloper V9 Plus

173

第 5 章 - Magic アプリケーションエンジン

タスク前処理タスク前処理には、タスクの開始時に 1 回だけ実行される、タスクの初期化処理を指定します。帳票のヘッダの印刷やローカルのパラメータの初期化などが代表的な例です。

＜グループ項目＞グループ前処理
この処理は、バッチタスクの場合にのみ有効です。
［グループ前処理］レベルを定義したときには、同時に、グループ化するための項目も指定します。この項目を「グループ項目」と呼びます。例えば、受注詳細テーブルから各
顧客ごとの受注合計を印刷するタスクでは、レコードを顧客ごとにグループ化しますので、顧客番号のカラムがグループ項目になります。Magic エンジンは、ループ処理を 1 レ
コード進める際に、直前に処理したレコードと現在のレコードのグループ項目を比較し、これが異なっている場合には、レコードのグループが変わったと見なして、グループ前
処理レベルに指定されている処理コマンドを実行します。たとえば、顧客ごとのレポー
トタスクであれば、ここには、顧客についての詳細を記述したグループヘッダを出力するといった処理を行います。
レコードのグループ化は、複数の項目に対して階層的に定義することもできます。この場合には、複数のグループ項目に対して［グループレベル］（前処理と後処理）を定義す
ることになります。グループレベルは必要なだけ定義することができます。

レコード前処理
レコード前処理には、レコードがディスクから読み込まれてから、ユーザが対話処理を始める直前までに実行される、各レコードに対する初期化処理を定義します。

レコードメインレコードメインには、タスクのデータビューを定義します。エンジンはこの定義に従って、各レコードごとに処理を行い、データビューを作成します。
データビューの作成については、本章の「タスクのデータビュー」の項を参照してください。

コントロール前処理
コントロール前処理には、カーソルが特定のコントロールに移動したとき、ユーザとの対話が始まる前に実行される必要のある初期化のための処理コマンドを定義します。コントロールハンドラ（前処理・後処理）は、フォーム上に定義されている各コントロー
ルに対してそれぞれ定義することができます。コントロールハンドラは、処理レベルテー
ブル上で、レコードハンドラより下に定義します。

コントロール後処理
コントロール後処理には、カーソルが特定のコントロールから離れる際に実行され、各コントロールごとの終了化のための処理コマンドを定義します。例えば、コントロールに入力された値の確認、リセット、更新、印刷の実行などの処理を定義します。

コントロール検証処理
コントロール検証処理は、カーソルが特定のコントロールから離れたり、高速モードでコントロールを通過した場合にコントロール後処理の前に必ず実行されます。

174

リファレンス
Magic eDeveloper V9 Plus

イベントハンドリング

コントロール変更処理
コントロール変更処理は、コントロールに対応する項目が変更された場合に実行されます。オンラインタスクでのみ有効です。

レコード後処理
レコード後処理には、次のような処理を定義します。
データビューのレコードに関する処理（バッチタスクの場合）。
参照と変更が行われたレコードに関する処理（オンラインタスクの場合）。
オンラインとブラウザタスクでは、レコードがユーザの入力などで変更されていないときには、普通、レコード後処理が実行されません。レコードが変更されていない場合にもレコード後処理を実行させたい場合には、［タスク制御］の［強制レコード後処理］パ
ラメータで指定できます。

＜グループ項目＞グループ後処理［グループ後処理］レベルは、バッチタスクでだけ有効です。
グループ後処理はグループ前処理に対応するレベルで、レコードの１グループが終わったとエンジンが判断したとき、すなわち、現在のレコードと次のレコードのグループ項
目の値が異なる場合に、グループの最後のレコードのレコード後処理の後に実行されます。たとえば、レコードを顧客ごとにグループ化してレポートを出力するタスクでは、各顧客の受注額の合計が書かれたグループフッタを出力する処理などがこれにあたります。
グループ前処理と同じく、グループレベルは異なるグループ項目に対して複数定義する
ことができます。

タスク後処理タスク後処理には、タスクの終了時に実行される終了処理を定義します。たとえば、パラメータを呼び出し元のタスクに返すためにパラメータを更新する処理や、レポートの総合計を出力する処理などが代表的なタスク後処理です。

ハンドラレベル
ハンドラレベルでは、特定のイベントが発生したときに実行される処理コマンドのフローを定義します。
イベントハンドラについては、以下の「イベントハンドリング」で詳説します。

イベントハンドリング
タスクの実行中には、エンジンによって暗黙的に、あるいは、ユーザの入力やタスクでの処理コマンドによって明示的に、イベントが発生します。イベントが発生した場合に、タスクがそれを捕捉して適切な対応を行えるよう、開発者はタスクのイベントハンドラ
レベルに、発生したイベントの種類ごとに処理内容を定義することができます。
イベントドリブンの実行方式で使われる用語には以下のものがあります。

リファレンス
Magic eDeveloper V9 Plus

175

第 5 章 - Magic アプリケーションエンジン• イベント……発生するものの論理的な定義です。イベントは、イベントハンドラが処理コマンドのフローを実行することによって処理されます。
• トリガ……イベントハンドラに定義され、どのようなイベントが発生したときにそのハンドラが起動されるのかを定義します。
• ハンドラ……トリガで指定されたイベントが発生した場合に実行される、一連の処理コマンドです。

イベントタイプ
Magic のイベントは、「事前定義イベント」と「ユーザ定義イベント」という 2 つのグ
ループに分類されます。
事前定義イベントは、次のカテゴリに分類されます。
• 内部 Magic イベント……これには、次のものがあります。
•

Magic 実行処理が定義するイベント•

Magic エンジンにハードコードされたハンドラを含むイベント。例：前処理、メ
イン、後処理など。

•

マウスボタンをトリガにしたイベント。マウスボタンのトリガには、クリック、
ダブルクリック、マウスアウト、マウスオーバーがあります。

• システムイベント……ユーザがさまざまなキーを組み合わせてキーボードから入力することにより発生します。
ユーザ定義イベントは、次のカテゴリに分類されます。
• タイマイベント……事前に定義された間隔で発生するイベント。
• 式評価イベント……式が「True」と評価された場合に発生するイベント。

対話型タスクのイベントハンドラ
対話型タスクでのイベント処理では、オンラインタスクかブラウザタスクの事前定義イ
ベントまたはユーザ定義イベントを処理できます。

コントロール処理レベル
コントロールレベルでは、特定コントロールの実行時の動作を制御できます。たとえば、値の設定と表示、入力チェック、その他の処理の実現を行うことができます。
［タスク処理レベル］テーブルのハンドラテーブルのコントロールレベルは、次に示すように定義できます。

図 5-2 事前定義のコントロールハンドラ

コントロール処理レベルには、次の設定欄があります。

176

リファレンス
Magic eDeveloper V9 Plus

イベントハンドリング• ハンドラレベル……コントロールかハンドラ処理レベルを選択します• イベント……前処理または後処理• 詳細……ズームしてコントロールを名前で選択• スコープ……（無効）• 伝播……（無効）• 有効……「Yes」を選択すると「ハンドラ」が有効になり、「No」を選択するとハンドラが無効になります• 処理……コントロール前処理テーブルまたはコントロール後処理テーブル内の処理数

ハンドラ処理レベル
ハンドラレベルでは、イベントのハンドラを割当てることができます。ハンドラ処理レ
ベルは、タスクレベルとレコードレベルの間、またはグループレベルハンドラかコント
ロールレベルハンドラの内部では作成できません。ハンドラレベルでは、コントロール
レベルのすべてのパラメータを共有しますが、次のようなイベントパラメータから必要なイベントタイプを選択できます。

図 5-3 イベントリストからイベントトリガタイプを選択する

ここには、ユーザ定義イベントテーブルに定義されたイベントを選択することもできます。
ユーザ定義イベントについては、本章の「ユーザ定義イベント」の節を参照してください。

図 5-4 ユーザ定義コントロールハンドラのトリガイベントを選択する

リファレンス
Magic eDeveloper V9 Plus177

第 5 章 - Magic アプリケーションエンジン

バッチタスクのイベントハンドラ
バッチタスク処理は前述の対話型処理とは異なり、実行エンジンがユーザからの入力を待機せずにレコードが処理されます。
バッチタスクでは、保留されているイベントをポーリングできます。バッチタスクエン
ジンがイベントをポーリングするタイミングは、次の表に示すように、タイマ、処理済
みレコード数、またはこの両方によって指定できます。
#

バッチイベント間隔

レコードイベント
間隔

動作

1

0

0

そのタスク内でポーリングしません

2

0

N

N レコードごとにポーリング

3

M

0

M ミリ秒ごとにポーリング

4

M

N

M ミリ秒と N レコードごとにポーリング［バッチイベント間隔］パラメータは［動作環境］ダイアログ内にあり、バッチタスクのイベントポーリング用にタイマを設定できます。
「0」を入力すると、バッチイベント間隔は無効になります。この場合、イベントのポーリングは、レコードイベント間隔の数
値によってのみ決定されます。
［レコードイベント間隔］は［タスク制御］ダイアログ内にあり、タスクごとに式で指定することができます。
「0」以外を指定した場合にはレコード数として解釈され、指定された数のレコードが処理されるたびに、イベントのポーリングが行われます。
「0」を入力すると、レコード数はチェックされなくなり、イベントのポーリングは、バッチイベ
ント間隔パラメータ内に設定された数値によってのみ決定されます。

グループハンドラレベル
グループハンドラレベルは、バッチタスクだけに定義することができ、次に示すようにタスクとレコードレベルの間にだけ配置できます。

図 5-5 バッチタスクのグループハンドラレベル

グループハンドラレベルでは、特定のデータ項目（グループ項目）でレコードをグルー
プ化し、グループごとに前処理、後処理を行いたい場合に使います。たとえば、顧客番
号でレコードをグループ化して、グループレベルを定義することができます。グループ
ハンドラレベルにおいて、グループ項目を変更することは可能ですが、グループ項目を変更した場合は、前処理ハンドラと後処理ハンドラの処理コマンドテーブルをリセットする必要があります。

ハンドラ［処理レベル］テーブルには、イベントとそのハンドラとの関連が表示されます。各イベ
ントのハンドラが行う処理は［処理］テーブル内に Magic の処理コマンドと用いて定義することができます。このテーブルには、手続き的な処理コマンドに加えて、そのパラ
メータおよびハンドラ内でだけ有効な変数項目を［セレクト］コマンドを用いて定義することもできます。

178

リファレンス
Magic eDeveloper V9 Plus

イベントハンドリング
以前のバージョンの［処理レベル］テーブルでは、各処理レベル（タスクまたはレコード）における前処理、メイン、後処理のすべてのフロー処理が定義されていましが、Magic
Ver.9 の［処理レベル］テーブルでは、前処理、メイン、後処理は別の行に別々に定義するようになっており、次の図に示すように、プルダウンメニューで前処理あるいは後処理を選択します。
タスクレベルのハンドラとレコードレベルのハンドラは、新しいタスクを作成すると自動的に生成され、追加や削除はできません。

図 5-6 処理レベルテーブルの定義

グループレベル
グループレベルは、バッチタスクでだけ有効です。グループレベルは、タスクとレコードの間にのみ配置できます。グループレベルを使うと、特定のデータ項目ごとにレコー
ドをグループ化した処理を行えます。グループレベルのデータ項目（グループ項目）を変更した場合は、前処理ハンドラと後処理ハンドラをリセットする必要があります。

コントロールレベル
Magic Ver.9 では、［処理レベル］テーブルに「コントロールレベル」が追加されました。
この新しいレベルには、前処理ハンドラと後処理ハンドラおよび検証ハンドラ、変更ハンドラを定義することができます。コントロールレベルでは、カーソルが特定のコント
ロールに移動したとき（前処理）、あるいは特定のコントロールから別のコントロールなどに移動したとき（後処理）に実行される処理コマンドを定義できます。
さらに検証ハンドラは、特定のコントロールから別のコントロールに移動したときと、
特定のコントロールを高速モードで通過したときに実行されます。
変更ハンドラは、オンラインタスクのみ有効でコントロールに対応する項目が変更された場合に実行されます。
後処理ハンドラと検証ハンドラが両方定義されている場合は、検証ハンドラが先に実行されます。

ハンドラレベル
ハンドラレベルでは、イベントとそのハンドラを定義することができます。イベントハ
ンドラでは、「イベント」欄にはトリガとなるイベントを定義し、「前処理」「後処理」の指定はありません。

処理レベルテーブル［処理レベル］テーブルには、以下のカラムがあります :レベル•
リファレンス
Magic eDeveloper V9 Plus

タスク

179

第 5 章 - Magic アプリケーションエンジン•

グループ……バッチタスクのみ

•

レコード

•

コントロール•ハンドラ

詳細
ハンドラの正確なコンテキストを定義するもので、レベルのタイプにより内容が異なります。
• グループレベルの場合……［詳細］カラムには［項目］パラメータが表示されます。
このパラメータには、［項目一覧］からグループ項目となるデータ項目を選択します。
• コントロールレベルとハンドラレベルの場合……［詳細］カラムには［コントロール］
パラメータが表示されます。このパラメータには、［コントロール一覧］からコント
ロールを選択して設定することができます。コントロールが設定されていると、そのコントロールに挿入点がある場合にだけ、ハンドラが有効になります。
• コントロールレベルで作業する場合……［コントロール］パラメータの設定は必須です。［コントロール］パラメータを指定していないコントロールレベルには、コント
ロール前処理やコントロール後処理を定義できません。
• ハンドラレベルで作業する場合……コントロールの指定は任意です。
［コントロール］
パラメータ内で「なし」を選択すると、タスク内にあるすべてのコントロール上において、イベントハンドラが有効になります。

ハンドラタイプ
エラーハンドラの場合、［詳細］カラムには［対応］パラメータが表示されます。このパラメータでは、ハンドラの完了時に実行できるエンジン命令を定義できます。Magic がデフォルトエラーメッセージを表示するかどうかを定義するMSGパラメータも表示されます。エラーハンドラは、次のレベルにおいて定義することができます。
• タスク ……前処理と後処理• グループ……前処理と後処理• レコード……前処理、メイン、後処理• コントロール……前処理、後処理、検証• ハンドラ……システム、内部、ユーザ、タイマ、式およびエラー

スコープ
ハンドラが有効になる範囲を定義できます。スコープは、次の中から選びます。
• タスク……ハンドラは、そのタスク内でのみ有効。
• サブツリー……ハンドラは、そのタスク内、およびそのすべてのサブタスク内で有効。
• グローバル……他の Magic アプリケーションからコンポーネントとして利用されるア
プリケーションの中の「メインプログラム」のイベントハンドラでだけ指定できます。
［グローバル］に設定すると、ハンドラはホストアプリケーション（このコンポーネントを利用しているアプリケーション）で使用できるようになります。

伝播
イベントハンドラでイベントが処理された後、そこでイベント処理が終わるか、あるいは、より上位（親タスクなど）に定義されているイベントハンドラを探しに行くかを制御します。
「Yes」に設定されていた場合、Magic エンジンは、このイベントハンドラを実行した後に、イベントを未処理のものとみなし、より上位レベルでイベントハンドラが定義されていないか検索し、定義されていれば、そのイベントハンドラを実行します。
「No」に設定されていた場合には、Magic エンジンは、イベントハンドラを実行した後、それ以上同じイベントのイベントハンドラを探すことはせず、そこでイベント処理を終
了します。

180

リファレンス
Magic eDeveloper V9 Plus

イベントハンドリング

有効
ハンドラを有効にするか無効にするかを論理型の式で指定します。

処理
このイベントハンドラで定義されている処理コマンドの数。ここからズームして、イベ
ントハンドラの［処理］テーブルに行くことができます。

ハンドラの動作• イベントは、発生するたびに実行中コンテクストのイベントキューに入れられます。
• イベントキューの保留イベントは、次のタイミングでポーリングされます。
•

オンラインタスクとブラウザタスク……タスクがアイドル状態になったとき。

•

バッチタスク……［バッチイベント間隔］（［環境設定］ダイアログ）に指定された時間が経過したとき、または［レコードイベント間隔］（［タスク制御］ダイアログ）に指定されたレコード数が処理されたとき。

• Magic エンジンは、イベントをイベントキューからポーリングした後、そのイベント
をトリガとして定義されているイベントハンドラを検索します。このイベントのハン
ドラが見つかるれば、Magic はそのイベントハンドラを実行します。
• Magic エンジンがイベントハンドラの実行を完了すると、そのイベントハンドラの［伝播］パラメータをチェックし、「Yes」に設定されているか 「True 」に評価される場合には、より上位のレベルで定義されている、同一のイベントをトリガとするイベント
ハンドラを検索します。たとえば、イベント A が発生した場合にイベント A のハンド
ラがイベント B を発生したとすると、イベント B のハンドラが見つかって実行された
場合、イベント A ではなく、イベント B のみで伝播処理が実行されます。
• Magic エンジンは、現在実行中のタスクから始まってメインプログラムに至るまで、各タスク内では処理レベルテーブル内に定義されているイベントハンドラを下から上に向かって検索していきます。このため、同じタスク内で同じイベントのハンドラ
が 2 つ以上ある場合は、［処理レベル］テーブルで一番下に定義されているイベント
ハンドラが一番先に実行されます。

Ver8 以前からのリポジトリ入力
Magic Ver.9 から、イベントハンドリングの構造が変更されたため、Ver8 以前からインポートされたアプリケーション中に定義されているイベント処理は、次のように Magic
Ver.9 に合わせて修正されます。

イベントハンドラ
Ver8 以前では一般的に、イベントはタスク内にイベントハンドラとして定義していました。このハンドラには、プログラムまたはサブタスクを指定することができ、イベントが発生した場合には、指定されたプログラムあるいはサブタスクが呼び出されて実行されます。

ホットキーイベント
Ver8 以前のホットキーイベントは、同じキーの組み合わせの［システム］イベントハン
ドラに変換されます。このイベントに式が設定されている場合は、その式がハンドラの［有効］パラメータとして設定されます。ホットキーと経過時間とが組み合わせて指定されている場合、Ver.9 以降はこのような組み合わせに対応するハンドラがないので、このイベントハンドラは破棄されます。開発者は適当な条件でハンドリングするよう、イベ
ントハンドラを再設計する必要があります。

リファレンス
Magic eDeveloper V9 Plus

181

第 5 章 - Magic アプリケーションエンジン

アクションイベント
Ver8 以前のアクションイベントは、同じ Magic アクションが指定された［内部］イベン
トハンドラに変換されます。このイベントに式が設定されている場合は、その式がハンドラの［有効］パラメータとして設定されます。アクションとともに経過時間が指定されている場合、イベントは破棄されます。

経過イベントVer8 以前の経過イベントは、同じ時間間隔が設定された［タイマ］イベントのハンドラに変換されます。このイベントに式が設定されている場合は、その式がハンドラの［有効］パラメータとして使用されます。

式
Ver8 以前の式イベントは、時間間隔が「00:00:01」である［タイマ］イベントのハンド
ラに変換されます。式はハンドラの［有効］パラメータとして使用されます。

アプリケーションイベント
Magic Ver.9 以降は、Ver8 以前の「アプリケーションイベント」テーブルがありません
が、メインプログラム内で定義されているハンドラとイベントは、アプリケーション全体で有効な、グローバルイベントハンドラとして扱われます。Ver8 のアプリケーションから入力されたアプリケーションイベントは、メインプログラム内のイベントハンドラに変換されます。

ユーザ定義イベント
ユーザイベントテーブルでは、各アプリケーション毎に固有なユーザ定義イベントを定義できます。たとえば Ctrl+F というキーの組み合わせでトリガされる「新規顧客登録」というイベントを定義するとします。

図 5-7 ユーザイベントテーブルにユーザイベントを定義する

定義したユーザ定義イベントは、システムイベントなどと全く同様に、処理レベルテー
ブルでハンドラを定義するトリガとして使うことができます。このハンドラには、処理
コマンドテーブルで一連の処理コマンドを用いて、イベントハンドラの処理内容を定義できます。このように定義された「新規顧客登録」のイベントハンドラは、実行時にエンドユーザが Ctrl+F を押すたびに実行されます。
ユーザイベントはタスク毎に定義することができ、定義されたタスクとそのすべてのサブタスクで使うことができます。メインプログラムのルートタスク内に定義されたユー
ザイベントは、アプリケーション内のすべてのタスクで使うことができます。ユーザイ
ベントをトリガとするイベントハンドラが存在しない場合、イベントが発生しても捕捉されず、イベントは捨てられます。
ユーザイベントのハンドラは、図 5-3 で示したように、処理レベルテーブル内にイベン
トハンドラを作成して定義することができます。
ユーザイベントテーブルには以下のパラメータがあります。

182

リファレンス
Magic eDeveloper V9 Plus

ユーザ定義イベント#
自動的に生成されるエントリ番号

名前
イベントの名前

タイプ
次のようなイベントタイプがあります。
• S= システム…… キーボード操作の組み合わせ• I= 内部……Magic エンジンにハードコードされているイベント• T= タイマ……定義された間隔ごとに発生するイベント• E= 式……式が「True」と評価された場合に発生するイベント• N= なし……トリガの指定は不要です。
「ユーザイベント」と同じように開発者が任意に定義することのできるイベントです。

トリガ
ユーザ定義イベントを発生させるためのトリガ。「なし」をトリガとして設定すると、ユーザ定義イベントは「イベント実行」処理コマンドでのみ発生します。

強制終了
Magic エンジンがイベントハンドラとして定義されている一連の処理コマンドを実行する前に、終了するレベルを指定します。
• N= なし ……レベルも終了せず、イベントが発生したコントロールの編集モード内で処理のフローを実行します。
• C= コントロール……Magic エンジンは、現在のコントロールレベルから抜けてからコントロール検証とコントロール後処理を実行します。これらの処理が実行された後でのみ、Magic エンジンは、特定のイベントのハンドラ処理を実行します。
• R= レコード…… Magic エンジンは、イベントが発生したときにパークしていたコントロールのコントロール検証とコントロール後処理と現行レコードのレコード後処理を実行してから、イベントハンドラを実行します。これらの処理が実行された後でのみ、Magic エンジンは、特定のイベントのハンドラ処理を実行します。
ハンドラの実行後に、レコードはデータベースに書き込まれます。
• E= 編集…… Magic エンジンは、イベントが発生したときにパークしていたコントロー
ルの編集モードを終了します。その際、コントロール後／前処理は実行されません。

リファレンス
Magic eDeveloper V9 Plus183

第 5 章 - Magic アプリケーションエンジン

強制終了による動作フローの違い
ユーザイベントが実行された場合の［強制終了］パラメータの設定による動作フローを
以下に図示します。

図 5-8 ユーザイベントでの動作

公開イベント名
メインプログラムでのみ指定できます。イベントをコンポーネント化する場合に指定します。アプリケーション内でユニークな名前を指定してください。

公開
メインプログラムでのみ指定できます。このチェックボックスを選択すると、コンポー
ネントプログラムからイベント実行処理コマンドの公開イベントオプションを使用することで、このイベントを呼び出すことができます。この場合、［公開イベント名］も指定する必要があります。

184

リファレンス
Magic eDeveloper V9 Plus

エンジンについての情報

エンジンについての情報
Magic の 14 個の処理コマンド
Magic では、14 個の処理コマンドがあります。下の表は、それぞれの処理コマンドの動作を簡単にまとめた表です。処理コマンドのパラメータなどについては、第 7 章「処理コマンド」で詳細に解説しています。
処理番号

処理コマンド
の名前

内容

1

セレクト

タスク内で使われるデータ項目を定義します。
［セレクト］コマンドのパラメータとして、メインテーブ
ルのレコードの範囲、処理対象となる最初のレコード条
件、項目への初期値の割当、カーソルの制御などが設定できます。
［セレクト］コマンドの「代入式」は宣言的（非手続き的）な定義として、再計算の対象となります。

2

エラー

実行時に条件を検証し、条件が「True」になった場合にはエラーメッセージを出力します。この処理コマンドは、
ユーザのデータ入力の検証などに使われます。

3

リンク

メインテーブルと、それ以外のデータベーステーブルとの間で 1 対 1 関係のデータの結合を定義するときに使われます。リンクの［タイプ］パラメータとして「J= 結合」を指定すると、Magic エンジンはメインテーブルとジョイン
テーブルのデータの連結関係を SQL 文により定義し、
RDBMS がこの SQL 文を実行することにより、Magic のデータビューが作成されます。

4

リンク終了

［リンク］コマンドによりリンクされたテーブルからデー
タ項目を定義するための［セレクト］コマンドの後に指定
します。

5

ブロック

複数の処理コマンドをまとめて、ブロックを作成するときに、［ブロック終了］コマンドと対にして使います。ブロックには［条件］パラメータを設定することができ、条件が「True」になった場合にだけ、ブロック内の一連の処理コマンドが実行されます。
• If/Else」パラメータを指定すると、［ブロック］コマンド「
を「Else」パラメータを指定して使うことにより、複数の If-then-else の制御構造を定義することができるようになります。
• Loop」パラメータを指定するとブロック内の処理を繰り「返し実行させることができます。

6

リファレンス
Magic eDeveloper V9 Plus

ブロック終了 ［ブロック］コマンドと対になって、先行のブロックの範囲を閉じるときに使います。

185

第 5 章 - Magic アプリケーションエンジン
処理番号

処理コマンド
の名前

内容

7

コール

コールコマンドには、8 つのオプションがあります。
•コールタスクは、サブタスクを呼び出します。
•コールプログラムは、別の Magic プログラムを呼び出します。
•コール式は定義式を使用して Magic プログラムを呼び出します。
•コール公開プログラムは、（公開プログラム名が指定された）別の Magic アプリケーションのプログラムを呼び出すことができます。
•コール UDP は、ユーザが定義した外部プロシジャーを呼び出します。
•コール COM は、COM オブジェクトを呼び出します。
•コールリモートは、MRB 経由で別の PC 上にある Magic
アプリケーションサーバ上の Magic プログラムを呼び出します。
•コール Web サービスは、SOAP プロトコルを使用してWeb サービスを呼び出します。

8

アクション

アクション関数を含む式を実行します。

9

項目更新

式を評価し、結果を指定された項目に代入します。［セレクト］コマンドの［代入］パラメータとは異なり、この処
理コマンドは手続き的に処理され、再計算の対象とはなり
ません。

10

データ出力

フォームに定義されているデータなどを、ファイルや印刷装置などの出力メディアに出力します。レポートの印刷、
テキストファイルへのデータ出力などに使われます。

11

データ 入力

入力ファイルまたは入力デバイスからのデータをフォームの指定に従って解釈し、タスクのデータ項目に読み込みま
す。

12

エディット

Magic の内部エディタを起動し、指定されたテキスト
ファイルを表示します。パラメータにより、ユーザによる編集可能か表示専用かを指定できます。

13

OS コマンド

Magic から、外部プログラムを実行します。実行した外部プログラムの実行中に Magic を待機状態にしておくか、プ
ログラムの終了を待たずにすぐに Magic に制御を戻すかを、［ウエイト］パラメータによってい設定できます。

14

イベント起動

イベントを明示的に発生させます。［イベント起動］コマ
ンドで発生したイベントは、他のイベントと全く同様に、
Magic エンジンによって処理されます。

非手続き的処理
上記の処理コマンドは、セレクトとリンク処理コマンド以外は手続き的に実行されます。
つまり、エンジンは処理コマンドテーブル中の処理コマンドを上から順にスキャンしな
がら実行を進めていきますので、処理コマンドの実行順序は［処理］テーブルに定義されている順序となります。
［セレクト］コマンドの代入式とリンクコマンドのリンク条件式については、どちらも非手続き的に処理されます。この 2 つの処理コマンドはタスクのデータビューの構築のために使われ、レコードメイン以外には定義できません。
この 2 つの処理は必ずしも［処理］テーブル中に定義された順に処理されるとは限りません。この 2 つの処理は、表計算プログラムのシートの再計算に似ています。

186

リファレンス
Magic eDeveloper V9 Plus

エンジンについての情報

非手続き型の処理については、第 7 章「処理コマンド」の「セレクト」に詳細がありますので、そちらを参照してください。非手続き的な処理については、その都度、必要に応じて説明します。

タスクのデータビュー
タスクは、データベースから選択された一連のレコードに対して処理を実行します。処理の対象となる個々のデータは、メインテーブルやリンクされたテーブルに定義されているカラムの中から［セレクト］コマンドにより選択されますが、このようなデータ項
目を「実データ項目」あるいは「実項目」と呼びます。また、タスクの処理を行うために、実データ項目のほかに、一時的な計算結果などを格納しておくデータ項目も必要になることがあります。このようなデータ項目は、タスクの実行中にだけ存在することから、実データ項目に対して「変数項目」と呼んでいます。また、［コール］コマンドでタスクやプログラムを呼び出すときに、呼び出し側タスクとの間でデータの受け渡しを行いたい場合がありますが、この場合には、「パラメータ」というデータ項目を使います。
パラメータは、［コール］コマンドの設定時などに変数項目と区別して扱われますが、それ以外には、タスクの実行中にだけ存在する変数項目と同じです。

図 5-9 データビューの構造

タスクの項目は、実項目、変数項目、パラメータのいずれも、すべてタスクの［項目一覧］に登録されます。一覧では、各項目にシンボル名という文字コードが割当てられます。式中で項目を参照したい場合、このコードを使用して項目を指定します。また、親タスクで定義された項目は、サブタスクでも使うことができ、サブタスクの［項目一覧］
から選択することができます。

Magic によるデータビューの準備処理
Magic エンジンがタスクの実行を開始すると、エンジンはタスクのデータビューを構成
するレコードの範囲条件をチェックします。このチェックに通過したレコードに対してだけ、タスク前処理が実行されます。このチェックは、次のようにして行われます。
1. まず、エンジンは、レコードメインのレベルの処理コマンドテーブルがスキャンします。この中に見つかった［セレクト］コマンドの設定から、実項目（メインテー
ブルまたはリンクテーブルのカラムより選択）あるいは変数項目やパラメータなど
を論理レコードの中に入れます。

リファレンス
Magic eDeveloper V9 Plus187

第 5 章 - Magic アプリケーションエンジン
2. 次に、［タスク制御］ダイアログで指定されている［範囲］式と、［セレクト］コマ
ンドの［範囲上限］［範囲下限］パラメータに設定されている式が、［処理］テーブ
ル上で定義されている順番に評価されます。これらの範囲式の評価結果は、タスクの処理の対象となるレコードを絞り込むために使われます。オンラインタスクでは、実行時にユーザが入力したデータが範囲式を満たしていない場合には、そのレコー
ドはデータベースに書き込まれますが、表示はされなくなります。
3. タスクの［ソート］テーブルでソートが設定されている場合、Magic エンジンは、タスクの実行に先立ち、［ソート］テーブルに指定されたデータ項目の値に従って、昇順あるいは降順にメインテーブルのレコードをソートします。ここでは、範囲条件に合致したレコードだけがソートの対象になります。また、オンラインタスクでユーザが新しいレコードを作成した場合には、このレコードは［ソート］テーブルで指定された順序に従って表示されます。
埋め込み SQL タスクの場合、Magic エンジンは「SQL コマンド」で定義されている
SQL 文を RDBMS に送って実行させ、結果として得られた一連のレコードをメイン
テーブルとして、タスクの処理を行います。この場合、上記の Magic エンジンによるデータビューの準備はすべて割愛され、すぐに準備処理以降の処理が実行されます。埋め込み SQL タスクにおいては、SQL 文によって作成されたデータビューの項
目は実項目ではなく、変数項目となります。Magic では、実項目はテーブルリポジト
リ中に定義されているテーブルの定義をもとにして認識されますが、SQL 文が定義されているときには、テーブルの定義がテーブルリポジトリ中に存在しないからです。

データビューのチューニング
データビュー中のデータの値をより細かく制限するには、以下のような方法があります。
タスクの処理対象となるレコードは、タスクの［タスク制御］ダイアログの［範囲］パラメータに式を使用してより詳細に絞り込むこともできます。この方法は条件を任意の式で指定することができるため柔軟性が高く、複数の非連続な範囲を指定することもできますし、実項目だけでなく、変数項目の値をもとに範囲条件を設定することもできます。
また、［タスク制御］ダイアログの［範囲順序］パラメータを使用して、レコードが処理あるいは表示される順序（昇順または降順）を設定することもできます。
なお、［タスク制御］ダイアログの［範囲］式と、セレクト処理コマンドの［上限］/［下限範囲］パラメータの両方で範囲が指定されている場合には、範囲条件は AND で結合され、すべての条件を満たすレコードが、タスクの処理の対象となります。
メインテーブルが RDBMS にある場合、タスクの「範囲／位置付」ダイアログの「SQL
Where 句」を使って、任意の WHERE 句を使ってレコードを絞り込むことができます。
詳細については、第 6 章「プログラム」を参照してください。

項目モデルには［範囲］という特性を設定することができます。ここには、このモデルを使ったデータ項目がとりうる値を設定することができます。ただし、この設定は、ユー
ザのデータ入力時にチェックされるだけで、すでにデータベースに格納されているデー
タに対しては適用されません。
テーブルリポジトリの［カラム］テーブルでは、各カラムのデータがとりうる値を［範囲］特性に設定することができます。この設定も項目モデルの［範囲］特性と同じく、ユーザのデータ入力時にのみチェックされます。
詳細については、第 4 章「モデル」を参照してください。

188

リファレンス
Magic eDeveloper V9 Plus

エンジンについての情報

レコードデータビュー
エンジンがタスクのデータビューから特定のレコードを処理しているときには、このデータビューには［変数］テーブルにある変数の値も含まれています。これを「論理レコード」と呼びます。

タスクフローでの処理モード
Magic アプリケーションエンジンの動作は、タスクのタイプ（オンライン、ブラウザ、バッチ）と「処理モード」によって変わります。ここでは処理モードについて説明します。
処理モードは、タスクのメインテーブルに対してだけ意味があります。処理モードは基
本的には 4 つあり、下の表は 4 つの処理モードをまとめたものです。
処理モード

ユーザが行える操作

登録

新規レコードの作成が可能です

修正

既存のレコードの修正が可能です

照会

レコードの参照のみ可能で、更新はできません。オンラインタスクの場
合、ユーザはキーボードから文字などを入力し、その入力を条件としてレコードの検索を行うことができます。バッチタスクでも、テーブルは読込専用で開かれるため、検索は可能ですが、更新はできません。

削除

レコードの削除が可能です。この削除モードは、［レコード後処理］でだけ有効です。

処理モードはタスク実行中にユーザが変更することができますが、開発者はタスクが始まるときの［初期モード］を［タスク特性］ダイアログで指定しなければなりません。
モードや表示方法などの詳細については、［タスク制御］ダイアログにあるパラメータで制御することができます。
オンラインタスクの場合、［タスク制御］ダイアログのパラメータで、ユーザによるモード変更を制限することができます。一方、バッチタスクでは、タスクの実行中にユーザが初期処理モードを変更することはできず、［タスク特性］で設定した処理モードのままで処理が進められます。
［処理］テーブルに定義されている処理コマンドの実行は、一般には、処理モードによって影響を受けることはありません。しかし、その時点の処理モードに応じて処理を制限
したい場合には、［条件］欄に Stat 関数を使った式を指定することで実現できます。Stat関数の使い方については、本章の「エンジンの実行規則」の「処理実行の制御」に詳細があります。
処理モードはメインテーブルにリンクしているテーブルの登録や修正には影響しません。この場合、リンク処理コマンドのリンクタイプによって決まります。
Stat 関数の詳細については、第 8 章の「関数の説明（アルファベット順）」に記述があります。

修正モードから登録モードへの自動切替
初期処理モードが修正モードのオンラインタスクが実行されたとき、タスクメインテーブルが存在しなかったときや、テーブルは存在するが指定された範囲のレコードがな
かったときには、処理モードが修正モードから登録モードに自動的に変更されます。この自動切り替え機能により、テーブルの作成と更新に使うプログラムを別々に用意しなくても済みます。

リファレンス
Magic eDeveloper V9 Plus

189

第 5 章 - Magic アプリケーションエンジン

修正モードでユーザが編集を行っているときの登録モードへの一時的切替
修正モードの場合、ユーザはタスクのデータビューにあるレコードを更新することができます。編集中、ユーザの操作によっては、修正モードが一時的に登録モードに自動的に切り替わることがあります。この場合、タスクのフォームに表示されている情報はそのまま残ります。この一時的自動切替が実行されると、空のレコードが表示され、ユーザがデータの入力を行うことができます。入力後、ユーザが別のレコードに移動すると（つまり、レコードの入力を確定すると）、処理モードは自動的に修正モードに変わります。また、［動作環境］ダイアログの［修正後の再位置付］欄の値を「Yes」にしている
ときには、新規のレコードは、タスクのソート順にしたがって再位置付けされます。この一時的自動切替は、ユーザが次のような操作を行ったときに実行されます。
• ユーザが［行作成］アクション（F4）を実行したとき。この場合、現在のレコードの後ろに新規のレコードが表示されます。
• カーソルがテーブルの一番最後のレコードにあるときに、ユーザが［次行］アクション（「↓」）を実行したとき。この場合、最後のレコードの後ろに新規のレコードが表示されます。

照会モードと修正モードの違い
照会モードと修正モードでは、タスクの実行フローは似ています。ただし、厳密には、照会モードと修正モードとでは、次の点が異なります。

バッチタスクの場合
照会モードと修正モードの実行フローはほぼ同じですが、照会モードではデータベースの更新が行われない点が異なります。つまり修正モードでは、レコードがすべて読み込
まれ、処理後、データベースにレコードが書き込まれます。照会モードでは、タスクに関連するデータベーステーブルはすべて読み込み専用で開かれ、データに対しては読込処理しか行われません。このため、照会モードは、通常、データを出力する場合に使います。また、修正モードより照会モードの方が処理が高速です。

オンラインタスクの場合
照会モードでは、レコードと項目に対する更新と削除はすべて拒否されます。レコード
や変数がユーザにより入力されたものでも、また手続き型タスクによるものでも、更新と削除はいっさい拒否されます。このように更新と削除はできませんが、照会モードでは、位置付（検索）は非常に高速です。また、このモードでは、タスクのフォームで指定する条件をユーザが変更したり追加したりでき、このため、データベーステーブルに対して柔軟な検索が可能です。また、検索でデータが損害を受けることもありません。

エンドユーザによる画面での操作
以下、エンドユーザによる画面上での操作と処理の関係について説明します。エンドユー
ザによる対話的な操作は、オンラインタスクのレコードメインでのみ可能なので、ここの説明もオンラインタスクのレコードメイン処理に限って行います。
ユーザの入力は、現在フォーカスのあるコントロールに対して行われます。これを「カーソル」と呼びます。カーソルは画面上を、レコードメインに定義されているセレクト処
理コマンドの順に移動します。つまり、カーソルは、画面上に配置されているコントロー
ルの場所ではなく、［セレクト］コマンドの定義順にしたがって移動します。このため、レコードメインに選択処理を定義する際には、画面上でカーソルをどういった順序で動かすかを考慮しながら、定義しなければなりません。
ユーザが同一レコード内の項目間や別のレコード間でカーソルを移動させたとき、Magic
エンジンに何らかの処理を実行させたい場合がありますが、実行すべき処理コマンドは、
次のような方法で指定します。

190

リファレンス
Magic eDeveloper V9 Plus

エンジンの実行規則
1. 項目 A から項目 B にカーソルが移動したときに行うべき処理は、レコードメイン中に、項目 A と項目 B を定義している２つの［セレクト］コマンドの間に定義します。
この場合には、［セレクト］コマンドの［条件］欄には「Yes」あるいは 「True」に評価される式を指定し、カーソルがそれぞれの項目にパークできる（カーソルがコン
トロール上に止まって、ユーザの入力待ち状態になる）ようにしなければなりません。カーソルのパークについては、下記を参照してください。
2. 処理コマンドの実行を、カーソルの動く向き（前方向、後方向）とか、マウスを使った場合には実行しない、などのような条件で制御した場合がありますが、これには［フロー］欄のパラメータにより指定することができます。フローとは、ユー
ザのキー入力などによるカーソルの移動の仕方を分類したもので、以下に解説する
方式に従って、処理コマンドの実行が制御されます。フローについては、［フロー］
欄の解説セクションを参照してください。

パーク可能コントロール「パーク可能コントロール」とは、画面上のコントロールのうち、カーソルが止まってユーザの入力を受け付けるコントロールをいいます。次の 4 つの条件が満足される場合、そのコントロールは、パーク可能コントロールとなります。
1. コントロールに関連付けられているデータ項目を定義している［セレクト］コマン
ドが、現在のタスクのレコードメインに定義されています。親タスクのレコードメ
インに定義されているデータ項目は、コントロールに関連づけてデータを表示させることはできますが、パーク可能コントロールとはなりません。
2.［セレクト］コマンドの［条件］欄が 「Yes」であるか、あるいは式が設定されていて、その式を評価した結果が「True」になる場合。
3.［セレクト］コマンドの［フロー］欄の「通常モード」または「高速モード」のパラメータが、そのときのフローモードと一致する場合。
4.［セレクト］コマンドの［フロー］欄のカーソルの移動方向のパラメータ（前方向、後方向）が、そのときのカーソルの移動方向と同じ場合。
オンラインタスク／ブラウザクライアントタスクには、少なくても 1 つはパーク可能
コントロールがなければなりません。1 つもない場合、エラーメッセージが表示され、そのタスクは終了します。

エンジンの実行規則
タスクの実行は、何段階かのレベルを経て行われます。ここでは、タスクのサイクルとレベルについて説明します。

タスクサイクルのレベル
次の図は、タスクサイクルを構成する基本的なレベルを図解したものです。図中、四角はタスクサイクルの中の個々のレベルを表します。また、四角の中にある小さな四角は、そのレベルで実行される処理コマンドテーブルです。

リファレンス
Magic eDeveloper V9 Plus

191

第 5 章 - Magic アプリケーションエンジン

図 5-10 タスクサイクルの各レベルと実行の流れ（エンジンループ）

各レベルではそれぞれ、対応する処理コマンドテーブル中に定義された処理コマンドが実行されます。この図に書いたのは、エンジンによって行われる処理のうち、サイクルの制御の側面だけを描いたもので、これはエンジンの機能の一部にすぎません。エンジ
ンはこのほかにも、データベース管理などの重要な処理を実行しています。
上記の図で分かるように、タスクサイクルには次の 2 つのループがあります。
• レコードループ……このループでは、各レコードについてそれぞれ、処理が繰り返されます。
• コントロールループ……このループでは、画面に表示されているレコードに対してエンドユーザが対話的に編集などの操作を行ったときに繰り返されます。したがって、
このループは、オンラインタスクおよびブラウザタスクのときだけ有効です。項目
ループについては、本章の「エンドユーザによる画面での操作」に詳細があります。
ブロック処理コマンドによるループ処理は、同一処理レベル内のループ処理なのでここでは説明を省略いたします。

タスクサイクル
192

1 つのタスクにつき、前処理と後処理が 1 回ずつ実行されます。前処理と後処理のレベ
ルでは、エンジンにより次のような処理が行われます。
リファレンス
Magic eDeveloper V9 Plus

エンジンの実行規則

タスク前処理レベル
1. このタスクが別のタスクから「コール」コマンドなどで呼び出されたときには、呼び出しタスクから渡されたパラメータが、呼び出されたタスクのパラメータ項目あるいは変数項目にコピーされます。
2. タスクのデータビューの準備と作成が行われます。つまり、処理の対象となるレ
コードの選択やソートなどが Magic エンジンにより実行されます。データビューの準備については、「Magic によるデータビューの準備処理」のセクションを参照してください。
3. タスク前処理に定義されている処理がすべて、［処理］テーブルに定義されている順に実行されます。
4. タスクがオンラインタスクで、モードが修正（または、照会）モードの場合、初期画面に表示する一連のレコードをアクセスします。まず最初に現在のスクロールや繰り返しの設定にしたがって、画面に一度に表示されるレコードの数が計算されます。次に、このレコード数分のレコードがアクセスされ、［セレクト］コマンドの代入式と［リンク］コマンドのリンク条件式が評価されます。その後、レコードが画面に表示されます。
この場合の画面の表示方法の詳細については、第 6 章「プログラム」の「フォームテーブル」を参照してください。
5. レコードループ処理が実行されます。

タスク後処理レベル
1. レコードループ処理（下記を参照）が完了すると、タスク後処理で定義されている
処理コマンドが、［処理］テーブルに定義されている順に、すべて実行されます。
2. タスクが終了します。

レコードループ処理
オンラインタスクではユーザが参照している各レコードについて、次に説明する「レコード初期化」と「レコード終了」の処理が実行されます。また、バッチタスクでは、処理対象となる全レコードについて、［タスク特性］の［インデックス］で指定されたインデックスの順番あるいは［ソート］テーブルに指定された順番で、最初のレコードから
最後のレコードまで、1 レコードずつ処理が実行されます。

レコード初期化処理
1. メインテーブルのレコードをメモリに読み込まれ、［セレクト］コマンドで選択された実項目のデータがタスクで利用可能になります。
2. レコードメイン中の［セレクト］コマンドに設定されている代入式がすべて評価され、［セレクト］コマンドで定義されている変数項目が初期化されます。
3.［チェック時期］欄の値が「前置」の場合、［タスク終了条件］欄の式が評価されます。評価の結果が「True」ならば、ここでタスクが終了します。
4. レコード前処理で定義されている一連の処理コマンドが実行されます。
5. モードが登録モードの場合、レコードメインの［セレクト］コマンドの代入式が評価され、項目が初期化されます。
6.［リンク］コマンドで定義されているデータリンクがすべて計算されます。すなわ
ち、リンクの条件に従ってリンクテーブルからレコードが 1 件アクセスされ、対応する実項目にデータが設定されます。

リファレンス
Magic eDeveloper V9 Plus

193

第 5 章 - Magic アプリケーションエンジン
7. タスクがオンラインタスクの場合、項目ループが実行されます。つまり、レコード
メインの処理が順次、実行されます。

レコード終了
1. レコード後処理の処理が実行されます。
タスクがバッチタスクの場合、レコード後処理は常に実行されます。タスクがオンラ
インタスクの場合、現在の論理レコードが変更されているときに限って、レコード後処理が実行されます。カレントのレコードは、次のような操作が行われたとき、変更されたと解釈されます。
a. エンドユーザが、キーボードを使用して項目の値を編集したとき。
b.［項目更新］コマンドにより、値が変更されたとき。
c. サブタスクの実行中に［項目更新］コマンドにより、値が変更されたとき。
d. データ入力コマンドにより、入力ファイルからデータが読み込まれたとき。
e.［タスク制御］ダイアログの［強制レコード後処理］パラメータの値が「Yes」であるか、あるいは式が設定されていて、評価の結果 「True」になったとき。
f. レコードの削除が実行されたとき。
•

オンラインタスクでのレコードの削除
オンラインタスクでは、エンドユーザが［編集／行削除］（F3）を選択した場合、
または［レコード削除］パラメータの値が「True」になった場合、次のような削除処理がエンジンによって実行されます。
a. レコードが変更されていない場合、削除モードで、レコード後処理が 1 回実行されます。
b. レコードが変更されている場合••

修正モードで、レコード後処理が実行されます。これで、テーブルの処理に定義されている更新処理が実行され、更新が行われます。

•

続いて、今度は削除モードで、再度、レコード後処理の処理が実行されます。これは、1 対多のリレーションにより関係づけられているレコードな
ど、レコードの削除に関する処理を行うため、または、加算更新モードで更新を行うために必要です。

バッチタスクでのレコードの削除
a. タスクの［初期モード］が「削除」の場合、削除モードで、レコード後処理が 1 回だけ実行されます。
b. タスクの［初期モード］が「削除」でない場合には、［タスク制御］ダイア
ログの［レコード削除］パラメータの値が評価され、「True」の場合、次のような処理が実行されます。
•

修正モードで、レコード後処理の処理が実行されます。これで、リポジト
リの処理に定義されている更新処理が実行され、更新が行われます。

•

続いて、今度は削除モードで、再度、レコード後処理の処理が実行されます。これは、1 対多のリレーションにより関係づけられているレコードな
ど、レコードの削除に関する処理を行うため、または、加算更新モードで更新を行うために必要です。

上記のようにオンライン・バッチいずれも削除モードでレコード後処理の処理が実行されると、レコードに「削除済み」というマークが付けられます。いずれの場合にも、レコードが修正されてから削除される場合には、同一のレコードに対してレコード後処理が 2 回実行されるので、1 レコードに 1 回しか実行してはならない処理コマンド
は、［条件］パラメータに Stat（）関数などを用いて、実行モードにより実行を制御するようにしてください。
2. レコード後処理が完了すると、このレコードサイクル中に変更されたメインテーブ
ルおよびリンクテーブルのレコードがすべてディスクに保存されます。レコードが変更されなかったときには、ディスクへの保存は行われません。

194

リファレンス
Magic eDeveloper V9 Plus

エンジンの実行規則
3.［チェック時期］欄の値が「後置」の場合、［タスク終了条件］欄の式が評価されます。評価の結果が「True」の場合、レコードループが終了します。

コントロールレベル
コントロールレベルのループは、オンラインタスクとブラウザタスクでだけ有効です。
コントロールレベルでは、コントロール前処理とコントロール後処理があり、データの初期化、ユーザの入力データのチェック、コントロールの値の表示、その他コントロー
ルにフォーカスが移った場合あるいは離れた場合に行うべき処理を定義できます。タス
クのフォーム上に設定されているすべてのパーク可能なコントロールに対して、コント
ロール前処理と後処理を定義することができます。

コントロールハンドラの作成
タスクやレコードレベルのハンドラは、開発者がタスクを新しく作成した場合に自動的に作成され、削除することはできませんが、コントロールレベルのハンドラはこれとは異なり、新規のタスクには定義されておらず、開発者が作成します。また、作成した後に削除することも可能です。
コントロールレベルのハンドラは、［イベント］欄には「P= 前処理」か「S= 後処理」ま
たは「V= 検証」か「C= 変更」を指定し、［詳細］欄には、対象となるコントロール名を指定します。コントロール名は、ズームして［コントロール一覧］から選びます。Magicのフォームエディタは、データ項目に関連付けられているコントロールがフォーム上に貼り付けられたときに、コントロール名を自動的に生成します。これは APG によりフォームが作成された場合も同じです。

コントロール前処理
コントロール前処理レベルは、指定されたコントロールに、エンドユーザがカーソルを移動した場合（そのコントロールにフォーカスが移動した場合）に実行されます。コントロール前処理として定義された一連の処理コマンドがすべて実行された後に、エンド
ユーザはそのコントロールへの入力ができるようになります。

コントロール後処理
コントロール後処理レベルは、指定されたコントロールからカーソルが離れ（そのコントロールからフォーカスが離れ）、別のコントロールにカーソルが移動したか、あるいは
タスクが終了する場合に実行されます。

コントロール検証
指定されたコントロールから別のコントロールに移動したときと、指定されたコント
ロールを高速モードで通過したときに実行されます。
後処理と検証が両方定義されている場合は、検証が先に実行されます。

コントロール変更
指定されたコントロールに対応する項目の値が変更されたときに実行されます。
コントロールレベルの処理は、このほかにも、［イベント］テーブルの［強制終了］カラムが「コントロール」あるいは「レコード」に設定されているユーザ定義イベントが発生し、イベントハンドラでハンドリングされた場合にも実行されます。
「ビュー再表示」などの内部イベントが発生した場合にも、カーソルはいったんコントロールから離れる
ので、コントロールレベルの処理が実行されます。この場合には、次のような処理が行われます。
1. コントロール上でのユーザ入力が中止されます。
2. 入力された値が、データ項目の内部格納領域に設定されます。
リファレンス
Magic eDeveloper V9 Plus

195

第 5 章 - Magic アプリケーションエンジン
3. 新しいデータ項目の値を使って、必要な再計算が行われます。
4. コントロール後処理を実行します。

グループレベル
グループレベルは、バッチタスクのみで有効です。このレベルは、レポート出力などのときに、地域や顧客番号などによりデータをグループ化して、グループごとに統計をとりながら印刷するような処理を行うときに便利に使うことができます。
グループレベルにはグループ化を行うためのデータ項目を指定します。このデータ項目を「グループ項目」と呼びます。ひとつのグループ項目について、グループ前処理とグ
ループ後処理を定義できます。
異なるグループ項目を使って複数のグループレベルを定義することにより、複数のデー
タ項目で階層的にグループ化することもできます。
Magic エンジンは、メインテーブルのループ処理を進めていくときに、現在のレコードと直前に処理されたレコードについて、グループ項目の値を比較します。直前のレコー
ドの値と現在のレコードの値に違いがあれば、エンジンはそこがレコードのグループの境界であると判断し、今までのレコードグループに対してグループ後処理を行い、新しいレコードグループのためにグループ前処理を行います。現在のレコードのグループ項
目と直前に処理されたレコードのグループ項目の値を比較して異なった状態、つまり値が変化した時のことを、「ブレイク発生」といいます。例えば、グループ前処理はグルー
プごとの小計を計算する変数の初期化に、グループ後処理はグループの小計を印刷する処理のために使うことができます。
Magic エンジンは、レコードグループの境界を判断するのに、前後のレコードのグルー
プ項目の値を比較するだけなので、グループレベルの処理が正しく行われるためには、開発者はメインテーブルのレコードを、グループ項目に従って並び替えておかなければなりません。並べ替えには、インデックスまたはソートを使います。グループ項目がメ
インテーブルのインデックスに定義されているのならば、そのインデックスを［タスク特性］の［インデックス］に指定することができます。そのようなインデックスが定義されていない場合には、タスクの「ソートテーブル」で、メインテーブルのレコードがグループ項目の順に正しくソートされるように指定する必要があります。
グループレベルは、処理レベルテーブルの「タスク」レベルと「レコード」レベルの間に作成できます。複数のグループ項目を使って複数のグループレベルを定義する場合には、処理レベルテーブルの一番上の方に定義されているグループレベルが大グループとなり、下の方に定義されているグループレベルが大グループの中の小グループとなります。すなわち、グループレベルの実行順は、［処理レベル］テーブルの［#］欄の値が小さいほど、グループレベルが上位であることを示しています。
したがって、インデックスをレコードの並び替えに使う場合には、インデックスセグメ
ントが大グループから小グループの順番に定義されているインデックスを使う必要があります。また、ソートテーブルをレコードの並び替えに使う場合には、ソートテーブル
で、大グループのデータ項目から小グループのデータ項目へと定義します。この順序を間違えると、Magic エンジンはレコードグループの境界を正しく判断できず、グループ
処理は正しく実行されません。
上位のグループレベルの値が変わると、その下にあるグループレベルの値も変わったと見なされ、下位のグループレベルも実行されます。この場合、グループ前処理は、上位のグループレベルの処理から下位のグループレベルの処理の順で実行され、グループ後処理は、反対に、下位のグループレベルの処理から上位のグループレベルの処理の順で実行されます。

196

リファレンス
Magic eDeveloper V9 Plus

エンジンの実行規則

グループレベルの実際の流れ
Magic エンジンがバッチタスクの実行を開始すると、最初にタスク前処理を実行します。
次に、最初のレコードに対して、すべてのグループレベルの前処理を、上位のグループレベルから下位のグループレベルの順で実行していきます。その後、エンジンはメイン
テーブルから１レコードづつフェッチしてレコード処理を進めていきますが、レコードをフェッチしたときに、いずれかのグループ項目の値に変化を検出すると、レコード後処理の後に、最下位のグループレベルから、変化があったグループ項目のグループレベ
ルまで、グループ後処理がすべて実行されます。この後処理は、この時点で処理済みのレコードに対して実行されます。この後、グループ項目に変化があったグループレベル
から、最下位にあるグループレベルまで、［グループ前処理］がすべて実行されます。この前処理も、この時点での処理済みのレコードに対して実行されます。
続いて、次のグループの最初のレコードがレコードレベルで処理されます。その後も引き続きグループ項目の値がチェックされ、変化があったときには同様の処理が繰り返されます。最後に、レコードがすべて処理し終わったとき、あるいは［タスク終了条件］
欄の式が「True」に評価されたときには、レコードの処理が終了し、最下位のグループレ
ベルから最上位のグループレベルまで、グループ後処理が実行されます。この処理は、最後に処理されたレコードに対して実行されます。その後［タスク後処理］が実行され、タスクが終了します。

グループレベルの例
たとえば、［受注］データをもとに集計を行うとします。このデータは、「顧客コード」（上位グループレベル）、「受注番号」（中位グループレベル）、「商品コード」（下位グループレベル）でソートされているものとします。つまり、「商品コード」の値が変化すると下位のグループレベルの値が、「受注番号」の値が変化すると中位のグループレベルの値
が、「顧客コード」の値が変化すると上位のグループレベルの値がそれぞれ、変化（ブレイク発生）することになります。
この場合、まず、最初のレコードについて、上位のグループレベルから下位のグループレベルまで、各グループレベルの［グループ前処理］が実行されます。その後、最初の顧客の最初の受注番号の最初の商品の処理が完了すると、「商品コード」の［グループ後処理］（最初のグループレベル）が実行されます。
最初の受注番号に属するすべての商品について処理が終わると、中位のグループレベル（つまり、受注番号）の［グループ後処理］が実行され、ここで、最初の注文の合計が出力されます。続いて、最初の顧客について「商品コード」と「受注番号」の両方のグループレベルの処理が終わると、次の顧客について［グループ前処理］が実行されます。
以上のようにしてレコードのチェックが進み、途中、上位のグループレベルの値が変化した場合、そのグループレベルの下位のグループレベルから、値が変化したグループレ
ベルまでの［グループ後処理］がすべて実行されます。その後、再度、次のレコードが処理されることになります。

リファレンス
Magic eDeveloper V9 Plus

197

第 5 章 - Magic アプリケーションエンジン
このようにして、すべてのレコードについて処理が完了すると、［タスク後処理］が実行されます。この処理により、すべての顧客の注文の合計価格が出力されます。

図 5-11 グループレベルの実行の流れ（受注番号でグループレベルが変わった場合）

レコードループのフローチャート
ここでは、レコードループのフローチャートについて説明します。以下のページには、
オンラインタスクでのレコードループのフローチャート、バッチタスクでのレコード
ループのフローチャートです。このフローチャートを見ることで、タスクが実行される
ときのレコードループの流れが分かりやすくなるはずです。

198

リファレンス
Magic eDeveloper V9 Plus

レコードループのフローチャート

オンラインタスクでのレコードループ
図 5-12 は、オンラインタスクでレコードループがどのように実行されるか、その流れを図示したものです。

図 5-12 オンラインタスクでのレコードループ

リファレンス
Magic eDeveloper V9 Plus

199

第 5 章 - Magic アプリケーションエンジン

バッチタスクでのレコードループ
図 5-13 は、バッチタスクでレコードループがどのように実行されるか、その流れを図示したものです。

図 5-13 バッチタスクでのレコード / 行ループ

レコードレベルでのエンジンの動作
レコードメインの処理テーブルの実行手順［レコードメイン］レベルの［処理］テーブル中の処理コマンドは、エンドユーザのキー
ボード操作に応じて、「通常モード」か「高速モード」のどちらかのフローモードで実行
されます。

通常モード
通常モードは、デフォルトのフローモードです。エンドユーザが「次項目」と「前項目」
動作を使用して、現在のパーク可能項目から同一レコード内の直前または次のパーク可能項目にカーソルを移動させているときには、エンジンは通常モードで［レコードメイン］の処理コマンドを実行します。

200

リファレンス
Magic eDeveloper V9 Plus

レコードループのフローチャート
通常モードでは、レコードメインレベルの中の、以下の 3 つの条件に合致する処理コマ
ンドがエンジンにより実行されます。
1. カーソルが移動する前にパークしていたコントロールと、移動した後のコントロー
ルとに対応する、2 つの［セレクト］コマンドの間に定義されている処理コマンドが実行の対象となります。
2. 該当する処理コマンドの［条件］に 「Yes」が設定されている場合、あるいは、式が設定されていて、式を評価した結果 「True」になる場合。
3. 該当する処理コマンドの［フロー］欄の最初の値が「通常」または「両用」のいず
れかで、また、［フロー］欄の 2 番目の値がカーソル移動する方向（「前方」「後方」
あるいは「両用」）と同じ場合。ここで、［フロー］欄の最初の値の「両用」は、「通常」と「高速」の両方の組み合わせを意味し、［フロー］欄の 2 番目の値の「両用」
は、「前方」と「後方」の組み合わせを表します。
たとえば、ユーザがカーソルを「項目 B 」から「項目 A 」に戻したときには、［セレクト 実項目 A （または、セレクト 変数項目 A ）］と［セレクト 実項目 B （または、セレ
クト 変数項目 B ）］という 2 つの処理が逆順（B 、A の順）でエンジンにより実行されます（図 5-14 を参照してください）。

図 5-14 通常モードでの処理のスキャンと実行

デフォルトでは、カーソルの方向にかかわらず、手続き型の処理コマンドはすべて通常
モードでのみ実行されるようになっています。このデフォルトの設定は、ほとんどの場
合に有効で、プログラミングの手間もかかりません。ただし、処理の実行の流れを調整したい場合、たとえば、カーソルの移動を前方または後方のどちらかに限定したいときには、［フロー］欄の 2 番目の値を使用して指定することもできます。
処理の実行については、後述の「処理実行の制御」に詳細があります。

高速モード
エンドユーザが「次項目」「前項目」以外の入力をしてカーソルを移動させる場合には、エンジンは高速モードで実行します。これは、マウスをクリックしてカーソルを移動する場合、［↑］や［↓］キーを使って、別のレコードにカーソルを移動させる場合、タスクを終了する場合などです。

リファレンス
Magic eDeveloper V9 Plus

201

第 5 章 - Magic アプリケーションエンジン
通常モードから高速モードへの切替は、自動的に行われます。たとえば、ユーザがレコードのコントロールに対して作業を行っている途中で、そのレコードの編集作業を中止し、カーソルを別のレコードに移動すると、通常モードから高速モードに自動的に切り替わります。図 5-15 は、高速モードでの処理の実行の仕組みを図示したものです。
高速モードの場合、レコードメインがエンジンによりスキャンされた後、［フロー］欄の最初のパラメータが「高速」または「両用」に設定されている処理コマンドだけが実行されます。

図 5-15 高速モードでの処理のスキャンと実行

高速モード（図 5-15）での処理のスキャンと実行の流れは、次のようになります。
1. 現在のレコードがユーザにより編集されている場合、Magic エンジンは、カーソルのあった項目に対応する［セレクト］コマンドから始めて、下方向にレコードメイン
レベルの残りの処理コマンドをスキャンします。このときのスキャンは高速モード
で行ない、［フロー］欄の最初のパラメータが「高速」あるいは「両用」に設定されている処理コマンドを実行します。レコードメインのスキャンが完了すると、エン
ジンは［レコード後処理］を実行します。
2. 次のレコードをフェッチし、レコード前処理を行います。
3. 次のレコードについて、高速モードでレコードメインをスキャンします。スキャンはレコードメインの処理テーブルの最初から始まり、カーソルのあった項目に対応する［セレクト］コマンドまで進みます。この［セレクト］コマンドで、カーソルがパークします。
4. カーソルがパークすると同時に、エンジンが通常モードに変わります。
以上のように、ユーザがレコードの編集中に別にレコードに移ると自動的に高速モードに切り替わりますが、そのほか、次のような場合にも、高速モードに切り替わります。
1. エンドユーザが、マウスを使用してカーソルを現在のレコードの別のカラムに移動したとき。
2. エンドユーザが、［行終了］アクション（Alt + →）を使用して、カーソルを現在のレ
コードの最後のコントロールに移動したとき。この場合、高速モードで、レコード中の最後のパーク可能コントロールの［セレクト］処理コマンドまで前方向にス
キャンが行われます。

202

リファレンス
Magic eDeveloper V9 Plus

レコードループのフローチャート
3. エンドユーザが、［行開始］アクション（Alt + ←）を使用して、カーソルを現在のレ
コードの最初のコントロールに移動したとき。この場合、高速モードで、レコード中の最初のパーク可能コントロールの［セレクト］コマンドまで後方向にスキャンが行われます。
4. エンドユーザが、同じレコード上でマウスを使用してカーソルを前方または後方に移動し、別のパーク可能コントロールに移動したとき。この場合、そのパーク可能
コントロールまで、高速モードで前方または後方にスキャンが行われます。
5. エンドユーザが、［編集／行削除］（F3）を選択したとき。この場合、高速モードで、レコードメインの残りの処理コマンドが実行されます。
6. エンドユーザが、Esc キーを押してタスクを終了したとき。この場合、高速モード
で、レコードメインの残りの処理コマンドが実行されます。

処理実行の制御［処理］テーブルに定義されている手続き型処理は、実行するかしないかを制御することができますが、非手続き型処理は必ず実行され、実行するかどうかを指定することはできません。これは、［セレクト］コマンドの代入式と［リンク］コマンドのリンク条件
は、データの整合性の維持の点で、優先して実行しなければならないためです。
手続き型の処理コマンドの実行は、［処理］テーブルの［条件］欄で制御できます。オン
ラインタスクの場合には、更に、レコードメインの［フロー］欄を使用しても制御できます。図 5-16 は、処理の実行の制御の仕組みを示したものです。

図 5-16 ［フロー］欄と［条件］欄による処理の実行の制御

処理コマンドを実行するために、エンジンは［処理］テーブルをスキャンし、どの処理コ
マンドを実行するかを決めます。スキャンでは、まず、処理コマンドの［条件］欄の値をチェックし、オンラインの［レコードメイン］レベルの場合には［フロー］欄の 2 つの値もチェックします。エンジンは、［条件］と［フロー］の各欄の条件がすべて満足されたと
きだけ、その処理コマンドを実行します。

［条件］式［条件］欄は、処理テーブルの最後のカラムにあります。
［条件］欄の意味は、次に示す
ように、処理コマンドによって異なります。
リファレンス
Magic eDeveloper V9 Plus203

第 5 章 - Magic アプリケーションエンジン• オンラインタスクの［セレクト］コマンドの場合、項目をパーク可能項目にするかどうかを制御します。条件が 「True 」の場合にはパーク可能となり、「False」の場合にはパークできなくなります。
• ［リンク］コマンドでは、指定されたリンクを行うかどうかを制御します。
• 上記以外の処理コマンドでは、処理コマンドの実行を制御します。
［条件］欄に指定できる値は、以下のとおりです。
• Yes……デフォルト値。この値は条件式として「True 」を指定したのと同じです。
• No ……これは、条件式として「False」を指定したのと同じで、この処理コマンドは実行されなくなります。これは、デバッグ時にだけデバッグ情報を出力するなコマン
ドに対してとか、テストのために一時的に処理を行わせないようにするためなどに使います。
• 式……［式］テーブルに定義した式の番号を参照します。この式を実行時に評価した結果が「False 」のときは、処理コマンドは実行されません。「True 」のときは処理コ
マンドが実行されます。
タスクのモードに依って処理コマンドを実行するかどうかを制御したい場合には、Stat関数を使った条件式を［条件］欄に指定します。Stat 関数の構文は、次のとおりです。
Stat （ タ ス ク番号 , モー ド ）上記で、引数［タスク番号］は、タスクの呼び出し関係を何代さかのぼるかを指定します。すなわち、• 0 ……現在実行中のタスクを表します。
• 1……親タスク（現在のタスクを呼び出したタスク）を表します。
• 2 ……親の親タスクを表します。
また、［モード］は、タスクのモードです。指定できるモードは次の 4 種類のいずれか
で、頭文字を使用して指定します。
• C ……登録モードを表します。
• M ……修正モードを表します。
• Q ……照会モードを表します。
• D……削除モードを表します。モードが削除モードかどうかは、レコード後処理でのみチェックできます。
たとえば、次の式の場合、Stat （0,'CQ'MODE）
カレントのタスクモードが登録モードまたは照会モードの場合、「True」が返ります。したがって、この式を条件式として使うことで、カレントのタスクが登録モードまたは照会モードのときにのみ、処理が実行されることになります。
ハンドラの［有効］欄で Stat 関数を使用した場合、タスク番号はイベントが発行されたタスクをもとに判断されます。ハンドラが定義されたタスクではありません［フロー］欄［フロー］欄は、オンラインタスクの［レコードメイン］と［ハンドラ］及び［コントロール］レベルでのみ有効です。このパラメータを使うことで、ユーザによる画面上の操作状況に応じて、処理コマンドの実行を制御することができます。
［フロー］欄は、［レコードメイン］の処理が「リンク」、「リンク終了」、「ブロック終了」のときには空白になります。これ以外のレコードメインの処理では、［フロー］欄にはフローモード（インターアクションモード）とカーソルの方向を示す値が入ります。
［コントロール］レベルでは、「コントロール検証」でのみ全てのパラメータが有効で、これ以外は、［フローモード］の指定ができません。また、［ハンドラ］及び［コントロー
ル］レベルでは［フローモード］の「前置」と「後置」が指定できません。

204

リファレンス
Magic eDeveloper V9 Plus

レコードループのフローチャート

フローモード （［フロー］欄の最初の値）
フローモードとしては、次の 5 種類があります。いずれも、頭文字で表されます。以下
は、フローモードと、処理が実行されるときの条件を示したものです。
フローモードフローモード処理が実行される条件

S （通常）

タスクが通常モードにある場合

F （高速）

タスクが高速モードにある場合

C （両用）

通常モード、高速モード両方

A （後置）

エンドユーザが前のコントロールでズーム（F5）を行った場合

B （前置）

エンドユーザが次のコントロールでズーム（F5）を行った場合

通常モードと高速モードについては、前述の「エンドユーザによる画面での操作」のセクションに解説があります。後置モードと前置モードは、両方合わせて「ズームモード」と呼んでいます。

ズームモードの使い方
オンラインタスクでのみ有効です。ズームモードの前置モードまたは後置モードを、［セレクト］コマンドの直前（前置モードの場合）あるいは直後（後置モードの場合）にある処理コマンドに設定します。このモードを設定すると、［セレクト］コマンドにより定義されているデータ項目にカーソルがパークしているときにユーザのズームが可能になり、エンドユーザが F5 を押してズームを行うと、その処理コマンドが実行されます。エンドユーザがズームを行わないときには、処理コマンドは実行されません。これは、例
えば、顧客番号のフィールドから F5 でズームすると、顧客一覧を表示するタスクを呼び出したい場合などに使えます。
このとき、ズーム可能となるデータ項目を「ズーム項目」と呼びます。ズーム項目とズー
ム時に実行する処理コマンドを指定するには、ズーム後のカーソルの動きにより、次の２つの方法があります。
1. ズーム項目を定義している［セレクト］コマンドの直前に、ズーム時に実行したい
処理コマンド（コールコマンドなど）を置き、この処理コマンドの［フローモード］
を［前置］とします。実行時には、ズーム項目にカーソルがあるときにズーム可能となり、ユーザが F5 を押してズームしたときに、直前にある処理コマンド（フローモードが前置となっている処理コマンド）が実行されます。処理コマンドが実行された後は、カーソルは再びズーム項目で止まります。
2. ズーム項目を定義している［セレクト］コマンドの直後に、ズーム時に実行したい
処理コマンド（［コール］コマンドなど）を置き、この処理コマンドの［フローモー
ド］を［後置］とします。実行時には、ズーム項目にカーソルがあるときにズーム可能となり、ユーザが F5 を押してズームしたときに、この処理コマンド（フローモードが後置となっている処理コマンド）が実行されます。処理コマンドが実行された後は、カーソルは次にパーク可能なデータ項目に移動します。

図 5-17 ズームモードを「A= 後置」にしたときの処理と画面

リファレンス
Magic eDeveloper V9 Plus

205

第 5 章 - Magic アプリケーションエンジン
上記の例では、項目 C はズーム項目です。実行時、エンドユーザがカーソルを項目 Cに移動させると、メッセージラインに「ズーム」という文字が表示されます。これで、ユーザは、現在、ズーム可能であることが分かります。ここで、ユーザがズームを行
うと、エンジンは直前の処理コマンドであるコールコマンドでタスク X を呼び出します。その後、タスクが終了すると、カーソルは次のパーク可能項目である項目 Ｄ に移動します。
3. 上記の例では、ズーム可能処理の実行後、カーソルは次の項目に移動しますが、ズームによる処理コマンドの実行後もカーソルをズーム項目に置いておきたい場合には、ズームモードを「B= 前置」に設定し、処理コマンドをズーム項目の選択処理の前に定義します。

図 5-18 ズームモードを「B= 前置」にしたときの処理と画面

上記の例で、項目 C はズーム項目です。実行時、エンドユーザがカーソルを項目 C に移動させると、メッセージラインに「ズーム」という文字が表示され、ユーザは現在ズー
ム可能であることが分かります。ここで、ユーザがズームを行うと、エンジンは［コール］コマンドを実行し、タスク X を呼び出します。タスクが終了したら、カーソルは再び項目 C に戻ります。
ズームモードは、上記のようなコールタスク処理のほか、手続き型の処理であれば、どんな処理でもズーム可能処理にすることができますが、ルックアップウィンドウや一覧の表示などの処理を行うのが一般的です。
ズーム時に複数の処理コマンドを実行させたい場合には、［ブロック］コマンドと［ブロック終了］コマンドを使って、ズーム時に実行させたいの一連の処理コマンドをブロッ
クで囲みます。そして、ブロックコマンドの［フローモード］を［前置］あるいは［後置］とし、１つの処理コマンドだけを実行させる場合と同様に、ブロック全体を［セレクト］コマンドの直前あるいは直後に置きます。

カーソルの方向 （［フロー］カラムの 2 番目の値）［フロー］カラムの「カーソル方向」欄の意味は、次のとおりです。
モード

カーソル方向処理が実行される条件

F （前方）

カーソルが前方に動きながら、その処理を通過した場合にだけ実行されます。

B （後方）

カーソルが後方に動きながら、その処理を通過した場合にだけ実行されます。

C （両方向）前方、後方いずれの場合にも実行されます。

エンドユーザによる画面での操作
ここでは、オンラインタスクの［レコードメイン］レベルにおける、エンドユーザによる画面上での操作と処理の関係について説明します。

206

リファレンス
Magic eDeveloper V9 Plus

レコードループのフローチャート
画面上のカーソルの移動順序は、［レコードメイン］レベルの処理コマンドテーブル中に定義されている［セレクト］コマンドの順序と同じになります。コントロールのフォー
ム上の物理的な位置は、カーソルの移動順序とは必ずしも一致しません。このため、レコードメインに［セレクト］コマンドを定義する際には、画面上でカーソルをどういった順序で動かすかを考慮しながら、定義しなければなりません。
項目間やレコード間でカーソルが動いたときに実行される処理コマンドは、次の 2 つの方法で指定できます。
1. 項目 A から項目 B にカーソルが移動したときに行うべき処理コマンドは、項目 A を定義している［セレクト］コマンドと、項目 B を定義している［セレクト］コマン
ドの間に定義します。この際、［セレクト］コマンドによって表示される項目は、カーソルがパークできるようにしておかなければなりません。カーソルのパークについては、下記を参照してください。
2.［フロー］欄を使用して、処理コマンドごとに、実行するかしないかを詳細に指定できます。［フロー］の設定を使って、エンジンの実行モードによりそれぞれの処理コ
マンドを実行するかしないかを決めることができます。フローについては、［フロー］欄の解説セクションを参照してください。

パーク可能コントロール「パーク可能コントロール」とは、画面上に配置されたコントロールのうち、カーソルが停止することのできるコントロールをいいます。次の 4 つの条件がすべて満たされる場
合のみ、そのコントロールは、パーク可能コントロールとなります。
1. そのコントロールに対応する［セレクト］コマンドが、現在のタスクのレコードメ
インで定義されている場合。親タスクのレコードメインに定義されている場合、そのコントロールは表示はできますが、パーク可能にはなりません。
2.［セレクト］コマンドの［条件］式が「True」になる場合。
3.［セレクト］コマンドの［フロー］欄のフローモード（通常モードまたは高速モード）の指定が、そのときのエンジンのフローモードと同じである場合。
4.［セレクト］コマンドの［フロー］欄のフローモード（カーソルの移動方向）の設定
が、実際のカーソルの移動方向と同じ場合。
オンラインタスクには、少なくても 1 つパーク可能コントロールがなければなりません。タスクの起動時にパーク可能コントロールが 1 つもない場合、タスクはエラーメッセージを表示して終了します。

ハンドラ内でのフロー制御
ここでは、ハンドラ内に定義された処理がどのような順序で実行されるかを説明します。
この場合、以下のタスクを前提に説明します。
• オンラインタスクでテーブルコントロールを使用してテーブルのデータを表示している。
• フォーム上のコントロール（例：テーブル内のカラム）に対してコントロールハンド
ラが定義されている。
実行時の操作に対して、ハンドラ内でのフローモードは以下のようになります。

コントロール前• Tab キーでカラムに入った場合……順方向で通常モード• Shift+Tab キーでカラムに入った場合……逆方向で通常モード• 該当カラムより前のカラムからマウスクリックでカラムに入った場合……順方向で
通常モード

リファレンス
Magic eDeveloper V9 Plus

207

第 5 章 - Magic アプリケーションエンジン• 該当カラムより後のカラムからマウスクリックでカラムに入った場合……逆方向で通常モード• ↓キーで次の行に移動した場合……順方向で通常モード• ↑キーで次の行に移動した場合……逆方向で通常モード

コントロール後• Tab キーでカラムを出た場合……順方向で通常モード• Shift+Tab キーでカラムを出た場合……逆方向で通常モード• 該当カラムより後のカラムにマウスクリックで出た場合……順方向で高速モード• 該当カラムより前のカラムにマウスクリックで出た場合……逆方向で高速モード• ↓キーで次の行に移動した場合……順方向で高速モード• ↑キーで次の行に移動した場合……順方向で高速モード

コントロール検証• （修正後）Tab キーでカラムを出た場合……順方向で通常モード• （修正後）Shift+Tab キーでカラムを出た場合……逆方向で通常モード• （修正後）該当カラムより後のカラムにマウスクリックで出た場合……順方向で高速モード• （修正後）該当カラムより前のカラムにマウスクリックで出た場合……逆方向で高速モード• （修正後）↓キーで次の行に移動した場合……順方向で高速モード• （修正後）↑キーで次の行に移動した場合……順方向で高速モード

イベントハンドラ
イベントが発行された場合、以下の順にモードを切り替えて動作します。
1. 順方向で通常モード
2. 順方向で高速モード
イバンとハンドラの場合は、Flow 関数で判別できません。

208

リファレンス
Magic eDeveloper V9 Plus

プログラム6

この章では、Magic プログラムとタスクの作成と修正を行うプログラムリポジトリについて説明します。
本章では、次の内容について説明します。
• プログラムテーブル• タスク• 埋め込み SQL• タスク制御• 変数項目テーブル• 式テーブル• フォームテーブル• DB テーブル• 入出力ファイルテーブル• ソートテーブル• イベントテーブル• 範囲と位置付ダイアログ• タスク定義ウィンドウ• メインプログラム

リファレンス
Magic eDeveloper V9 Plus

209

第 6 章 - プログラム

プログラムテーブルプログラムテーブルには、アプリケーション内の各プログラムのエントリがあります。

プログラムテーブルの設定欄
プログラムテーブルの各エントリには、次の設定欄があります。

#（プログラム識別子）
このカラムには、Magic が使うプログラム識別子が入ります。この番号は自動的に生成される連番で、開発者が変更することができません。
プログラムテーブル内でプログラムを移動したり、プログラムを追加・削除してプログ
ラムテーブルを編集した場合、Magic はプログラムの番号を自動的に割当て直し、それらのプログラムの識別子番号をアプリケーション全体にわたって更新します。たとえば
メニュー項目にプログラム番号を指定することができますが、プログラムテーブル修正
された場合、プログラム番号の変更を反映するよう割当て直され、関連付けが維持されます。
式の中でプログラム識別子番号を使用する場合、「PROG」リテラルを使用してプログラム識別子番号を明示的に修飾する必要があります。つまり、プログラム番号 nn を、'nn'PROG のように指定します。たとえば、式テーブル内で '3'PROG をプログラム式として入力したとします。その後、新しいプログラムをプログラムテーブル内で 3 番目に位置するプログラムの直前に挿入し、結果として元からあったプログラムエントリが #3 から #4 に変更されると、Magic は自動的に式の中の '3'PROG を ’4’PROG に変更します。
クロスリファレンスユーティリティは、PROG リテラルを使用してプログラムを参照している式を見つけることができます。

名前プログラムの名前です。開発者は任意の名前をつけることができます。
• プログラム名は、ルートタスクのタスク名としても使用され、［ナビゲータ］ペインのルートタスク名、［タスク特性］ダイアログの［タスク名］欄に表示されます。
• これらはすべて関連しており、いずれかを変更すると、ほかの個所も変更されます。

フォルダプログラムが置かれるフォルダの名前を表示します。ナビゲーションペインのプログラ
ムアイコンにカーソルを置き、F4 をクリックすることによってフォルダを作成することができます。フォルダによって、プログラムをグループ分けすることができます。

公開プログラム名
インターネットリクエスタや［コールリモート］コマンドによってプログラムを呼び出す場合に使用される、プログラムの公開名を指定します。同一のアプリケーション内に、２つ以上の同じ公開名があってはいけません。

最終更新日
ここは、プログラムが最後に変更された日付が自動的に入ります。開発者が変更することはできません。

210

リファレンス
Magic eDeveloper V9 Plus

タスク

更新時刻
ここは、プログラムが最後に変更された時刻が自動的に入ります。開発者が変更することはできません。

タスク
タスクは、Magic アプリケーションエンジンが実行する制御構造の一番基本的な単位です。プログラムはひとつのタスク、あるいはそのサブタスクから構成され、サブタスク
は階層構造に編成されます。プログラムの中のサブタスクの階層構造は、［ナビゲータ］
ペインで視覚的に確認できます。現行タスクがルートタスクの場合、このタスクの名前
はプログラムテーブルに表示されるプログラムの名前にもなります。

タスク環境のメニューオプション［タスク環境］メニューには、タスクのさまざまな部分を定義するツールオプションが存在します。［タスク環境］メニューには、次のようなオプションがあります。
• SQL コマンド ……タスクのデータビューとして、メインテーブルの代わりに使う、SQL
文を定義します。
• タスク制御 ……タスクの実行時の動作を制御する特性を設定します。
• 変数項目……タスクの一時的な変数項目とパラメータ項目が定義されている変数項目
テーブルを開きます。
• 式……タスクの式を作成／編集します。
• フォーム ……タスクの表示フォームと出力フォームを作成／編集します。
• DB テーブル……タスクで使用されているデータベーステーブルに対して実行時の特定を設定します。
• 入出力ファイル……タスクが使う、オペレーティングシステムの入出力装置やファイルを定義します。
• ソート……タスクのデータビューのレコードの順番を指定します。このソートテーブル
に従って、タスクの実行開始時にソート処理が実行されます。
• ユーザイベント……タスクに固有なイベントを定義します。
• 範囲／位置付……タスクのデータビューの範囲指定や位置付けを定義します。

［タスク特性］ダイアログ
タスク特性は、［タスク特性］ダイアログを使用して定義できます。このダイアログは、タスクを最初にズームしたときに、自動的に開きます。また、その後は、タスク内において［編集 / 特性］を選択して開くことができます。
［タスク特性］ダイアログは、3 つのタブから構成されます。
• ［特性］タブ• ［高度な設定］タブ• ［拡張］タブ［特性］タブ
タスク名
これは、タスクボックスに表示される名前です。現行タスクがルートタスクの場合、これはプログラムテーブルに表示されるプログラムの名前にもなります。

リファレンス
Magic eDeveloper V9 Plus211

第 6 章 - プログラム
タスクの実行時に表示されるタスクウィンドウのタイトルは、このタスク名から継承されます。なお、この名前は上書きすることも可能です。
［タスク特性］ダイアログで名前を変更すると、フォームテーブルのエントリやフォームのウィンドウタイトルなど、その名前が使われているすべての箇所で自動的に更新が行われます。ただしフォームテーブルのエントリ名については、タスク名を変更する前か
らそれがタスク名と異なっていた場合、そのエントリ名は変更されません。

タスクタイプ：オンライン（デフォルト）
タスクタイプは「R= ブラウザ」、「O= オンライン」、「B= バッチ」のいずれかになります。
ブラウザタスクは常にデータ更新をするわけではありません。もしタスクがデータを更新しないのであれば、トランザクションをオープンする必要がありません。トランザク
ションを必要としないブラウザタスクをオープンするのであれば、［トランザクション
モード］を「O= なし」に設定してください。
各タスクタイプの相違点の詳細については、第 5 章「Magic アプリケーションエンジ
ン」を参照してください。

初期モード：修正（デフォルト）
この特性では、タスク実行を開始するときの処理コマンドのモードを定義します。次の選択肢があります。これには、
［修正］、
［登録］、
［削除］、
［照会］、
［親と同じ］、［位置付］、
［範囲］
、
［キー］
、
［ソート］
、
［入出力ファイル］、［オプション］、［式］があります。
実行モードはエンドユーザが実行中に変更することが可能ですが、エンドユーザ変更可
能な実行モードを制限したい場合には、［タスク特性］ダイアログ（次を参照）で設定することができます。
選択可能なモードを次の表に示します。

212

モード

エンドユーザが行える処理

M= 修正

既存のレコードの変更。

C= 作成

新しい行の作成。

D= 削除

データビューの全行削除。バッチタスクの場合にのみ使用できます。

Q= 照会

方向キーやマウスによる、行全体および列全体のスキャン。ユーザ
入力は、［照会モード位置付］オプションが「Yes」に設定されている場合にのみ可能。バッチタスクでは［DB ファイル］テーブルの設定とは無関係に、テーブルを読み取り専用モードで開いて読み取り
専用処理コマンドを実行します。

P= 親と同じ

実行時にモードがその親のモードと同一になるタスクまたはプログ
ラムの実行。実行時におけるタスクモードが「親と同じ」になっているプログラムが、別のプログラムによって呼び出されないと、そのタスクのモードはデフォルトにより照会となります。

L= 位置付値または式（あるいはその両方）によって定義された、特定の行の
検索。

R= 範囲

範囲の上限・下限値または式（あるいはその両方）に従って、どの行をタスクに組み込むかを決定します。

K= インデックス

メインテーブルのインデックスを変更し、変更後のインデックスに従って行へのアクセスとその表示を行います。

S= ソート

希望するソート条件を指定して、オンラインソートを実行します。
エンドユーザによって定義されたソート条件はそれぞれが一時インデックスを作成し、タスクセッション中にそれをタスクのインデックスに追加します。

F= 入出力ファイル

タスクに定義されているすべての入出力ファイルの名前を指定し、それらをディスクファイル、コンソール、プリンタなどに転送します。このモードは主にバッチタスクで使用されます。
リファレンス
Magic eDeveloper V9 Plus

タスク

モード

エンドユーザが行える処理

O= オプション

オプションメニューでモードを切り替えられます。（現在は使用でき
ません。）

E= 式

初期モード式特性（次を参照）に式を指定します。この式は、実行時に動的に評価され、初期モードを決定します。

初期モード（式）［初期モード］欄で「E= 式」を指定した場合、カーソルはここに移動し、式番号を指定できるようになります。この式は実行時に評価され、初期モードを決定します。

注意事項
1. 式の評価結果は有効なタスクモード略字（M、C、D、Q、P、L、R、K、S、F、O）の 1 つでなければなりません。
たとえば次のような式があったとします。
IF （A=’QUERY’,'Q’MODE,'M'MODE"）
上記の式は、タスク内にある項目 A の値が「QUERY」であれば、Magic がこのタスクの実行を Q（照会）モードで開始することを意味します。それ以外の場合は、M（修正）モードで実行を開始します。
2. 初期モードの評価は、タスクの実行開始と同時に行われます。初期モード式の評
価中には、現在のタスクのデータ項目を使用することはできません。したがって、
式にデータ項目が使用されている場合、これらのデータ項目は、パラメータや親タスクのデータ項目でなければなりません。式を使用して処理コマンドの初期モードを動的に定義している場合、その式の有効な値が実行時に見つからないとメッセージボックスに問題をユーザに知らせるプロンプトが表示され、タスクが終了します。
3. 上記の例のように初期モード式の中で MODE リテラルを使用することにより、Magic に文字列の内容を調べさせて有効なタスクモードが指定されているかどうかを確認できます。有効でないタスクモードがその文字列に含まれていると、該当する文字は自動的に除去されます。文字列内の各文字で表されている値は、内部表現の形式で保存されます。

タスク終了条件：No（デフォルト）
この特性の値として「No」を指定した場合、以下のようになります。
• ブラウザタスクとオンラインタスクは、ユーザがタスクを完了するとき、あるいは開発者が終了イベントを発生したときに終了します。
• バッチタスクは、データビューの全レコードの処理が完了すると終了します。タスクが取り消し可能な場合は、エンドユーザが Esc キーを押してそのタスクを取り消すと終了します。

リファレンス
Magic eDeveloper V9 Plus

213

第 6 章 - プログラム
値として「Yes」を指定した場合、タスクが終了するのは［チェック時期］の設定に応じて、レコードレベルを実行する前、あるいは 1 つの行を処理した後になります。この特性から式テーブルにズームすることで、［タスク終了条件］を有効にする条件を設定できます。
バッチタスクでは無限ループを回避するため、次のような場合にタスク終了条件が必要となります。
• バッチタスクにループを実行させるため、スクラッチファイル（メインテーブル=0）を指定した場合• バッチタスクで作成モードにした場合［タスク前処理］と［タスク後処理］の各操作は、［タスク終了条件］欄の設定に関係なく常に実行されます。

チェック時期：B ＝前置（デフォルト）
Magic がいつタスク終了条件を評価 / テストするかを定義します。
• B= 前置 ……タスク終了条件のテストを、レコードを入力する前に実行します。
• A= 後置……レコードを更新した後でテストを実行します。このようにすると、たとえば最後に処理した行のデータ項目をタスク終了条件に組み込むことができます。
• I= 即時……レコードが変更されると同時にテストを実行します。

タスク終了条件のタスクの終了［チェック時期］特性を「I= 即時」に設定した場合、［タスク終了条件］はすべてのレベルにおいて各処理コマンドごとに毎回検査されます。また、［タスク終了条件］欄から「True」が戻った場合、Magic が内部的な終了状況を設定します。この状況はオンラインのレコードメインレベルでのみ検査され、そのレベルにおける即時終了を引き起こします。
オンラインタスクのレコードメインレベルでは、終了状況が設定されているとタスクの即時終了が発生します。
オンラインタスクのその他のレベル、およびバッチレベルのすべてのレベルでは、終了状況が設定されていてもタスクの終了は生じません。終了検査が［B ＝前置］または［A＝後置］のいずれかになっている場合は、［タスク終了条件］欄が「True」のときにタスクが終了します。
［タスク終了条件］欄から「True」が戻った場合、タスクを終了するときに、Magic は次のことを実行します。
1. 行が修正されていた場合は、ブラウザタスクとオンラインタスクのレコード後処理を実行します。
2. グループレベルを実行します（バッチタスクの場合）。
3. タスク後処理を実行します。
4. タスクを終了します。

［タスク終了条件］と［チェック時期］の例• 1 つの行を処理する場合は、［タスク終了条件］を「Yes」に、また［チェック時期］を［A ＝後置］に設定します。
• どの行も処理しない場合は、［タスク終了条件］を「Yes」に、また［チェック時期］を［B ＝前置］に設定します。
• 15 の行を処理する場合は、［タスク終了条件］欄に式として Counter（）=15 を指定し、［チェック時期］を［A ＝後置］に設定します。

214

リファレンス
Magic eDeveloper V9 Plus

タスク

イベント可：Yes（デフォルト）
バッチタスクのときのみ有効です。
バッチタスクで、ハンドラがイベントを処理するか否かを定義します。
• Yes……ハンドラは、イベントを処理します。
• No ……ハンドラは、イベントを処理しません。この場合、例えばバッチタスク実行中にエンドユーザはタスクをキャンセルできません。もし、10 秒間のタイマーイベントが定義されているとすると、イベントが発生しても、Magic エンジンは、このイベントを処理しません。
• 式 ……イベントを処理するかどうかを定義式で動的に指定できます。

戻り値
タスクの戻り値を指定することができます。この特性は式で定義します。ここから式
テーブルにズームして、変数や式を割り当てることができます。

メインテーブル
この欄には、タスクのデータビューの作成元となっているテーブルの識別番号を指定します。タスクに SQL コマンドが指定されている場合、メインテーブル特性にはアクセスできません。
詳細については、第 5 章「Magic アプリケーションエンジン」を参照してください。

インデックス
このタスクのデータビューレコードの取り出し順序を決定する、メインテーブルのイ
ンデックスの番号を指定します。デフォルトのインデックスは、テーブルの［インデックス］テーブルにある最初のインデックスです。
［インデックス］の値が「0」に設定されており、［インデックス式］を使用していない
場合は、インデックスを使用せずに物理的な順序でインデックスのスキャンが行われます。
タスクに SQL コマンドが含まれている場合、［インデックス］は無効です。

インデックス（式）データビュー中のレコードの並び順を決めるインデックスの番号を実行時に動的に決定したい場合には、［インデックス式］を使います。［インデックス式］を使用するには、［インデックス］は「0」に設定しておきます。
［インデックス式］に入力される式
番号には数値を返す式を設定しておきます。インデックス番号はタスク開始時に評価されます。
タスクに SQL コマンドが含まれている場合、［インデックス式］は無効になっています。
［インデックス式］を使用するときは次の点に注意してください。
• 式の評価結果は、選択したメインテーブルで有効なインデックス番号でなければなりません。式の評価の結果得られた番号がインデックス番号として不適当な場合、あるいは［インデックス］も［インデックス式］も「0」のままだった場合には、Magic は
物理順をデフォルトとして使用します。

リファレンス
Magic eDeveloper V9 Plus215

第 6 章 - プログラム• ［インデックス式］はタスクが実行開始時に、タスクの変数が有効になる前に評価されます。そのため［インデックス式］中には、呼び出し元から渡されるパラメータ変数か、
親タスクの変数を使用しなければなりません。それ以外のタスクの変数項目はまだ初期化されていないのでゼロのままです。
式の中でインデックス番号を使用する場合、「KEY」リテラルを使用すれば、開発者
がテーブルリポジトリでインデックスを追加削除などした場合にも、Magic はイン
デックスの番号を自動的に更新してくれます。つまり、式の中でインデックス番号を使用するときに、インデックス番号 nn を 'nn'KEY として指定します。たとえば、式
テーブル内で「'2'KEY」をインデックス式として入力したとします。その後、新しいインデックスをインデックステーブル内の既存のインデックスより前の位置に挿入
し、結果として元からあったインデックスエントリが #2 から #3 に変更されると、Magic は自動的に式の中の「'2'KEY」を「'3'KEY」に変更します。

［高度な設定］タブ
選択テーブル：No（デフォルト）
この欄はオンラインタスクとブラウザタスクのみ関連します。この特性を「Yes」に設定
すると、Magic は選択テーブルタスクとして動作するようになります。このようなタス
クでは、エンドユーザが個々の値をテーブル（選択テーブル）から選択した後、Enter
キーを押して処理を終了させることができます。

タスク常駐：No（デフォルト）［タスク常駐］欄を「Yes」に設定すると、呼び出される側のタスクまたはプログラムはそれを呼び出す側のタスクの読み込み時にメモリに読み込まれ、呼び出し側のタスクが終了するまでの間、メモリに常駐します。これによってメモリが占有される代わりに、親タスクが繰り返し呼び出すタスクをなるべくメモリ内に保持しておくことでパフォー
マンスが向上します。メモリのリソースが限られているシステム上では、このオプショ
ンは控えめに使用してください。

チャンクサイズ（式）
この欄は、ブラウザタスクにのみ関連し、１度にクライアントに送信するレコード数を表す式を指定します。これにより、新しいレコードやページを表示するときにローカルのキャッシュを参照し、アプリケーションサーバへ戻る回数を減らすことにより、ネッ
トワークの負荷を軽減します。この特性に使用される式は評価されると、数値になります。この式の評価はタスクを初期化する時点で行われます。
チャンクサイズが定義されていない場合、以下の値がデフォルト値となります。
• メインテーブルが定義されていない場合……1• メインテーブルが定義されている場合……30

終了時 URL
この欄は、ブラウザタスクにのみ関連し、ブラウザタスクの終了時に実行するハイパー
リンクを指定します。このハイパーリンクでは、Magic のプログラムだけでなく、URLも指定できます。これは内部的な終了アクションが発行された場合に実行されますが、ブラウザを終了した場合には実行されません。

ショートカットメニュー
この特性を利用して、コンテクストメニューを現行タスクに付加できます。この特性はオンラインタスクでのみ有効です。エンドユーザが実行時に、このタスクにフォーカスを当てた状態でマウスの右クリックを実行すると、アプリケーションのデフォルトのコ
ンテクストメニューではなく、この特性で定義されているメニューが表示されます。

216

リファレンス
Magic eDeveloper V9 Plus

タスク

詳細については、第 12 章「エンドユーザメニュー & ヘルプ」を参照してください。

MAGIC.INI ファイルの［MAGIC_SPECIALS］セクションに以下のように指定することで、この欄の右側に［式］欄が表示されます。
[MAGIC_SPECIALS]
SpecialDynamicContextMenu=Y［式］欄にショートカットメニューの番号を定義式で指定することで、動的に表示するメニューを切り替えることができます。

メインフォーム：0（デフォルト）
この欄では、メインフォームに使用するフォーム番号を返す式を指定します。これにより、実行時にメインフォームを動的に切り替えられます。
定義式においてフォーム番号を使用する場合、そのフォーム番号を自動的に更新されるようにするため、FORM リテラルを使用して「'nn'FORM」という形式でフォーム
番号を指定することができます。
その後、［フォーム］テーブルにおいて 2 番目の行の前に行を追加したとします。この場合、これまで 2 番目だったフォームは 3 番目になりますが、FORM リテラルを使用しているため、「'2'FORM」が自動的に「'3'FORM」に更新されます。

アイコンファイル名
この特性では、プログラムを最小化したときに使用するアイコンファイル名を指定できます。

［拡張］タブトランザクションモード
トランザクション処理を有効にするためのトランザクションモードを指定します。この欄には、以下のいずれかを設定できます。
• D= 遅延……レコードに対する変更は一時的にキャッシュに保存され、すぐには物理デー
タベースに送信されません。データベースに対するトランザクションは、遅延トランザ
クションのコミット時にはじめて開始され、キャッシュに保存されていた変更の情報がすべてデータベースに対して実行され、コミットされます。遅延トランザクションがア
ボートされた場合には、キャッシュに保存されていた変更情報はすべて捨てられます。
• N= ネスト遅延……遅延と同じだが、あるタスクが別の遅延タスクから呼び出される場合に特に適用されます。
• W= 親と同じ……タスクは親タスクのトランザクション内で実行されます。
• P= 物理……Magic でのトランザクションとデータベースでのトランザクションは一致します。Ver8 までのトランザクションと互換のモードです。
• O= なし……Magic はトランザクションをオープンしません。このオプションはブラウザ
タスクの時のみ有効です。
メニュー画面のようにテーブルを使用しないタスクや、読込モードでテーブルをオープンする場合など、トランザクションをオープンする必要がない場合は、この設定にしてください。
モーダルタスクの場合、トランザクションモードを「O= なし」に設定できません。

リファレンス
Magic eDeveloper V9 Plus217

第 6 章 - プログラム

詳細は、第 11 章「データ管理」の「トランザクション処理」の節を参照してください。

トランザクション開始
この欄には、以下のいずれかを設定できます。
• T= タスク前処理の前……トランザクションはタスク前処理の前にオープンされ、タスク
タスク前処理の後でクローズされます。
• L= レコードロック時……トランザクションはレコードがロックされる前にオープンさ
れ、レコードが更新された後にクローズされます。
• P= レコード前処理の前……トランザクションはレコード前処理の前にオープンされ、レコードが更新された後にクローズされます。
• S= レコード後処理の前……トランザクションはレコード後処理の前にオープンされ、レコードが更新された後にクローズされます。
• U= レコード更新前……トランザクションはデータベースに対して物理更新処理が送られる前にオープンさます。
• N= なし……トランザクションはオープンされません。
• G= グループ……トランザクションはグループ前処理の前にオープンさます。バッチタス
クで「グループレベル」が定義されている場合に指定できます。この場合には、グルー
プ項目を［項目］欄に定義します。
• ［トランザクションモード］が「O= なし」の場合、［トランザクション開始］オプ
ションは無効になります。
• メインテーブルが変更された場合、「トランザクション開始」パラメータは、SQL
DBMS におけるロックとトランザクションに関する一般的な制限規則（ロックに先立って、必ずトランザクションが開始されていなければならない）に適合する
ように、以下のように自動的に変更されます。
1. 「トランザクションモード」、「トランザクション開始」、「ロック方式」、「タスクタイプ」などのパラメータをチェックします。
2. もし設定が上記制限規則に適合していなければ、この制限規則を満たし、かつトラ
ンザクションが最小になるような設定に「トランザクション開始」パラメータが設定されます。
3. もし現在の設定で制限規則をすでに満たしている場合には、設定は変更されません。

ロック方式
この特性はオンラインタスクとバッチタスクの両方で利用することができ、現行タスクが処理しているレコードに他のユーザがアクセスしないようにするために Magic がロッ
クをかける時期と、メモリ内で保持している情報に関して検証コントロールを使用するかどうかを指定できます。
［ロック方式］欄の値としては、次のいずれかが指定できます。
• I= 即時……レコードが読み込まれると同時に、そのレコードにロックがかけられます。
この場合、検証は行われません。ロックは、解除されるまで有効です。バッチタスクではこの設定がデフォルトです。マルチユーザ環境のオンラインタスクでは、ユーザが同じプログラムを使い続ける時間が予期できないため、この設定にしておくと、レコードのロックが異常に継続することがあります。この値は物理トランザクションにのみ適用
されます。

218

リファレンス
Magic eDeveloper V9 Plusタスク
• O= 入力時……ユーザがレコードの更新を始めたときに、ロックがかけられます。オンラ
インタスクでは、この設定がデフォルトです。更新を始めたときとは、オンライン特性
で入力カラムの先頭に入力した文字、あるいはルックアップテーブルで選択した最初の値によって決定されます。バッチタスクではユーザのインターアクション（ユーザによる操作）がないため、レコード後処理やレコード前処理で実行される最初の更新処理コ
マンド、あるいは最初に呼び出されるタスクやプログラムの際にロックが実行されます。
このロック方針では検証が行われます。この値は遅延トランザクションと物理トランザ
クションに適用されます。
• B= 更新時……Magic がロックするレコードは、実際にデータベースに書き込まれる前のレコードに限られます。対話段階（オンライン）とレコード後処理操作（オンライン、
バッチ）の実行中に、ロックがかけられることはありません。ロックの検証段階でエラーが発生すると（レコードを読み取った後で別のユーザがそれを更新した場合）、更新は実行されず、その旨を報告するメッセージが表示されます。カレントのタスクが呼び出す
サブタスクは他のテーブルに対して情報を更新していることがあり、そのため現行レ
コードがディスクに対して更新されていないとデータの整合性に問題が発生します。
データの整合性で問題が生じないようにするため、この値を使用するときは注意してください。基礎となるデータベースでロック処理による負荷が大きいとき、または、検証に失敗しても、タスクの構造上、データの整合性を維持できるときに限って使うようにします。この値は物理トランザクションにのみ適用されます。
• N= なし……レコードにロックはいっさいかけられません。その関係から、他のワークス
テーションがアクセスして更新したばかりのレコードを Magic が更新してしまい、データの整合性が失われる可能性があるため、このオプションの設定は、注意して使わなけ
ればなりません。
詳細については、第 23 章「マルチユーザ環境」を参照してください。

［トランザクションモード］が「O= なし」の場合、［ロック方式］オプションは無効になります。

キャッシュ範囲
キャッシュ方式を指定します。指定したキャッシュ方式は、タスクのメインテーブルで使われます。
詳細については、第 11 章「データ管理」を参照してください。第 4 章「テーブル」の「テーブルリポジトリ」の節も参照してください。

エラー発生時
エラー発生時のデフォルトの対応方法を指定します。［R= 復旧］または［A= アボート］のいずれかに指定します。
詳細については、第 11 章「データ管理」の「エラー処理」を参照してください。

コンテキストの保持「Yes」を指定すると、バッチタスクかオンラインタスクでリクエストを受け取るとコン
テキストをオープンし、継続するリクエストに対してそのコンテキストを保持します。
この特性は、バッチまたはオンラインプログラムのみ有効です。サブタスクやブラウザ
プログラムでは無効になります。
この特性は、基本的にはバッチプログラムで使用されることを前提にしています。ただし、デバッグ用としてオンラインプログラムでも利用できるようにしています。デフォ
ルト値は「No」です。
リファレンス
Magic eDeveloper V9 Plus219

第 6 章 - プログラム
この特性を使用した場合、コンテキストはブラウザクライアントプログラムと同じように［コンテキストの非稼働タイムアウト］の値を受け取ります。この値は、リクエストの処理が完了した時点でリセットされます。
コンテキストリクエストには、以下の HTTP パラメータを含めることができます。
• CTX ……サーバ上に保存されるコンテキスト ID
例：
http://MyServer/Magic94Scripts/Mgrqisipi94.dll?
APPNAME=MyApp&PRG NAME=MyProg&CTX=9755586289880
CTX コンテキスト ID は、GetParam 関数や CTXGetId 関数を使用して、現在の URL によって作成されたタスクによって受け取ることができます。
実行時、以下のように動作します。
•

コンテキストは存在しているが非稼働（ペンディング）……CTX パラメータで設定されたコンテキストは存在していますが稼働していない場合、コンテキス
トは稼働し、要求されたプログラムはコンテキスト内で実行されます。

•

コンテキストは存在しているが稼働中（実行中）……特定のコンテキスト用のリクエストが送信され、コンテキストがそのリクエストに応答した場合、送信されるリクエストは前のリクエスト処理が完了するまで保持されます。複数のリクエストが同じコンテキスト内で実行待ちになっている場合、到着順に随時処理を行います。. ペンディング中のリクエストがタイムアウトを超えた場合、リクエストの処理は失敗します。

•

指定したコンテキストが存在しない……リクエストは失敗し、次のエラーメッ
セージが表示されます。
-197, Context not found.

•

コンテキストが指定されていない…… CTX が指定されていない場合、リクエス
トは新しいコンテキストをオープンします。

コンテキストのオープンとともに、バッチやブラウザプログラムは、CTX パラメー
タを使用して実行されます。
• TRMCTX……このパラメータには、Y または、N を指定します。
例：
http://MyServer/Magic94Scripts/Mgrqisipi94.dll?
APPNAME=MyApp&PRG NAME=MyProg&CTX=9755586289880&TRMCTX=Y
TRMCTX パラメータは、リクエストに CTX パラメータが指定されていて、サーバ上にコンテキストが存在している時のみ有効です。
リクエストによってコンテキストが定義され、TRMCTX=Y が指定されている場合以下のように動作します。
•

要求されたプログラムは設定されたコンテキスト内で実行されます。

•

先頭のプログラムが完了した場合、コンテキストはクローズされます。ブラウザクライアントタスクは、突然クローズされることに注意してください。

クライアントの ID について
クライアントを識別する ID がないと、あるユーザが使用した有効なコンテキスト ID を、別のユーザが取得して実行する可能性があります。
これを避けるために、以下のようなクライアントの環境変数を利用することができます。
• REMOTE_ADDR……クライアント側の IP アドレス
• REMOTE_HOST……クライアント側のホスト名

220

リファレンス
Magic eDeveloper V9 Plus

埋め込み SQL
• REMOTE_USER……クライアント側のユーザ名• HTTPS, SSL_CLIENT_KEY_SIZE……SSL 関連の情報• ユーザ定義の Cookie の項目
クライアント ID の認証は、サイト毎に変更することが可能です。Web サイトが Web サー
バーのログオン機能を利用する場合は、クライアント側のユーザー名を使用するだけで十分と思われます。
Web サイトが Web サーバー認証をサポートしない場合は、クライアント ID はクライア
ント側の IP アドレス、ホスト名や他の識別情報で定義することができます。
クライアント側の ID は、Mgreq.ini ファイルの［HttpSigVars］で指定することができます。
詳細は、第 20 章「分散アプリケーション アーキテクチャ」の「Magic のリクエス
タ」を参照してください。

埋め込み SQL
埋め込み SQL は、RDBMS に渡す SQL 文をユーザが直接記述します。
SELECT 文が複雑な場合は、RDBMS サーバに行の結合と制約を行わせて、指定した行だ
けを Magic タスクのデータビューに反映させる方がより高速に処理できます。この機能は、ネットワークトラフィックが小さいほどシステム全体のパフォーマンスが向上する、クライアント / サーバ環境において特に有用です。
RDBMS は 1 つの SQL 文、カーソル、単純なトランザクションだけで垂直方向の更新と削除を実行できます。Magic タスクは、データビューの処理を 1 レコードずつ行います。挿入、更新、削除の各タスクは、全レコードを 1 回のトランザクションで処理できる場合であっても、レコードの処理を個別に実行します。
一般的には、DDL （Data Definition Language）を Magic から実行するのは望ましくありません。

埋め込み SQL の使用
Magic では「SQL コマンド」ダイアログを利用して、Magic アプリケーションにネイティ
ブの SQL 文を埋め込むことができるようになっています。SQL コマンドを使用する場合
は、その SQL 文がタスクのメインテーブルになります。
1.

［ワークスペース］メニューの［プログラム］を選択します。

2.

新しい行を作成します。

3.

プログラム名として「デモ（または任意の名前）」を入力します。

4.

タスクツリーへズームします。

5. ［タスク環境］メニューから［SQL コマンド］を選択します（Ctrl+Q キー）。図 6-2のような［SQL コマンド］ダイアログが現れます。

リファレンス
Magic eDeveloper V9 Plus

221

第 6 章 - プログラム

図 6-1 ［SQL コマンド］ダイアログ

Magic は「タスク前処理」レベルを実行する前にこの SQL コマンドを実行します。タス
クは戻されてきたデータをメインテーブルとして利用します。
Magic はコマンドの構文とセマンティクスの分析は行いません。これによってプログラ
ミングの自由度は高くなりますが、それと同時にプログラマがプログラミング作業を慎重に計画する必要も生じます。Magic には、埋め込み SQL のエラーからデータを保護する仕組みはありません。
Magic の埋め込み SQL 機能は、パフォーマンスを改善するための調整ツールとして用意されています。この機能は選択的に、またそれを使用することでパフォーマンスが大幅に向上する場合にのみ使用してください。
次の場合に埋め込み SQL 機能を使用します。
• データベースに関する統計、たとえばある特性を持つレコードの数や、当月の給与額総計などを出さなければならない場合。
• データに対して垂直方向の更新をかける場合。たとえば、すべての給与を 5 パーセント
増額する、古くなったレコードをすべて削除する、あるテーブルの一部を別のテーブルにコピーするなど。
• 以前に SQL DBMS ツールで開発してコンパイルした既存のコード、たとえばストアドプ
ロシージャなどを活用する場合。

埋め込み SQL の構成要素
埋め込み SQL タスクを作成する
1. ［タスク環境］メニューから SQL コマンドを選択します。図 6-2 のような［SQL コ
マンド］ダイアログが現れます。
2. ［データベース］欄から［データベース一覧］にズームします。
3. SQL 文を実行するデータベースを選択します。

SQL コマンドSQL 文はデータベースによってタスク開始時に実行されます。この段階でエラーが発生すると、メッセージとともにタスクが終了します。
SQL コマンドを利用して、一括更新、一括削除、DDL 文、PL/SQL ブロックを実行できます。

222

リファレンス
Magic eDeveloper V9 Plus

埋め込み SQLSQL コマンドには、以前に DBMS の各機能により開発してコンパイルした、プロシー
ジャ（ストアドプロシージャ）も指定することができます。そのようなプロシージャ名を SQL コマンドとして指定した場合、該当するデータベースプロシージャは RDBMS によって呼び出され、実行されます。これらのストアドプロシージャは、一般の SQL コマ
ンドと同じように使用できます。埋め込み SQL の構成に関する前述の規則はいずれも、ストアドプロシージャにも適用されます。

ストアドプロシージャを実行する
ストアドプロシージャを使用するには、次の形式で予約語 EXEC を指定します。
EXEC procedure-name parameters
プロシージャに複数のパラメータを使用することができる場合、パラメータをカンマで区切ります。プロシージャの本文が SELECT 文になっている場合、そのプロシージャは
通常の SELECT 文のように扱ってください。つまり、［オプション /APG］を実行してください。ストアドプロシージャ内では、以下に示す APG の 3 つの点に注意する必要があります。
• APG はストアドプロシージャを呼び出す際に、ストアドプロシージャに SELECT 以外の文が含まれている場合、残りの文を注釈に変更しておく。
• Magic から呼び出されるストアドプロシージャは、パラメータを値として受け取る。
• 出力パラメータを結果として得ることができるのは SELECT 文の場合に限られる。

入力パラメータ
埋め込み SQL 内では、特性を示す標識としてコロン（:）の後ろに数字を付けたものを任意の場所に挿入できます。コロンと数字の組み合わせは、SQL コマンドフォームの入力
特性テーブルで指定されている特性値に置き換えられます。SQL コマンドを準備する直前にこれらの特性が処理されると、Magic は特性を示す標識を、SQL 文のテキスト中にあるこの処理後の値で置き換えます。その後、この文は構文の評価と実行のため RDBMSに渡されます。
常駐タスクのフラグ値に関係なく、コマンドの実行前にはその SQL コマンド構文が必ず再評価されます。入力パラメータは一般に、SQL WHERE 句のプレースホルダとして使われます。

出力パラメータSQL SELECT 文またはストアドプロシージャは、通常使われている標準のメインテーブ
ルに代わる別のデータビューを Magic に提供します。SQL コマンドの結果によって結果
テーブルやデータストリームが生成されると、Magic はそのデータを受け入れるのに必要なバッファを用意します。これらのバッファは、SQL コマンドのタスク内に定義された変数項目という形をとります。これらの変数項目は属性と書式において、SQL コマンドが生成したデータと一致している必要があります。

アシストユーティリティ
アシストユーティリティを利用すれば、テーブルやカラムのデータベース名が組み込まれた SQL 文を簡単に作成できます。SQL コマンドアシストユーティリティは、SQL コマ
ンドを使用するときの前提条件となる、SQL 言語の知識に代わるものではありません。
データベース内にあるテーブルやカラムの名前を参照するのにアシストユーティリティを使用することができますが、このユーティリティを利用して構文を組み立てるときは注意が必要です。
たとえば、アシストユーティリティは次のような構文を作成します。
SELECT ALL FROM EMPLOYEE
しかし、これは正しい構文ではありません。正確な構文は以下のようなものです。
223
リファレンス
Magic eDeveloper V9 Plus

第 6 章 - プログラム
SELECT * FROM EMPLOYEE

アシストユーティリティを使用する
1. ［SQL コマンド］ダイアログの［アシスト］ボタンをクリックします。図 6-3 のような［SQL アシスタ］ダイアログが表示されます。
2. キーワードリストから 1 つのキーワードを選択して Enter キーを押し、［SQL コマンド］ボックスにその選択したキーワードを入れます。

図 6-2 ［SQL アシスタ］ダイアログ

続いてカラム名、テーブル名、処理コマンドも同じ方法でそれぞれのリストから選択します。
テーブルはそれぞれ Magic における名前と RDBMS における名前で表示できます。
［表示切替］ボタンをクリックすると、Magic でのテーブル名と RDBMS でのテーブル名を相互に切り替えることができます。Magic 名と RDBMS 名のどちらから選択した場合でも、SQL 文には RDBMS 名が示されます。
［テーブル］ボックスには、Magic のテーブルリポジトリで定義されているテーブルだけが表示されます。ただし、テーブルリポジトリで定義されていないテーブルであっても、データベース内で使用可能なそれらのテーブルにアクセスする SELECT 文を定義することはできます。

SQL コマンドの APG
SQL APG ユーティリティは、プログラマが入力した SQL 文を元にして完全な Magic プロ
グラムを作成します。SQL APG を実行することだけが、SELECT 文の実行前にその構文を検査できる唯一の方法です。このユーティリティは、SELECT 文やストアドプロシー
ジャにもとづく Magic タスク構造を生成します。
生成されるタスクには次の項目が含まれています。
• 元の SQL コマンド• 仮想の SELECT 処理コマンド、および結果テーブルの全カラムに対する仮想のフィール
ド定義• 自動変数項目を持つ、完全な出力特性テーブル• ユーザとの対話に使用するデフォルトのフォーム開発者が実行する必要があるのは、必要に応じて SQL コマンドの入力特性を定義すること、および必要に応じてデフォルトのフォームを変更することだけです。

224

リファレンス
Magic eDeveloper V9 Plus

埋め込み SQL

埋め込み SQL の SELECT 文の動作
結果データベースを持つ埋め込み SQL 文の中には、Magic での動作が異なるものがいく
つかあります。
埋め込み SQL 文は常に、タスク前処理の前に実行されます。それでタスク前処理が実行される時点では、その SQL 文はすでに実行されていることになります。

オンラインタスクとバッチタスクの比較
オンラインタスクの場合は次のようになります。
• SELECT 文の結果を表示する必要があります。
• Magic は一時的な結果テーブル/ファイルを作成して全部のレコードをそこに挿入するため、ユーザはそれらのレコードをスクロールできます。このテーブルはタスク終了時に削除されます。
バッチタスクの場合は次のようになります。
• レコードはすべて１度限り読み込まれるため、前に戻る必要はありません。
• Magic は SELECT 文に従ってカーソルをオープンし、全部のレコードを 1 つずつ順番にフェッチします。

結果データベースと入力データベースが同じ場合
このオプションを選択すると、結果データベースを入力データベースと同じにすることができます。ほとんどの場合、基礎となる RDBMS では次の文を使用できます。
INSERT INTO table AS SELECT...
この文は 1 回のコマンドで全データをテーブルにコピーしています。この方法はカーソ
ルをオープンするよりも高速です。レコードはすべてクライアントから取得され、結果テーブルに挿入されます。
このような場合、SQL ゲートウェイはデータベース内にテーブルを作成し、次の文を送信します。
INSERT INTO temp_table AS direct SELECT statement
その後、ユーザはこのテーブルをスクロールして SELECT 文の実行速度を向上させることができます。この方法では一時ファイルから個々のレコードを取り出したりそこへ挿入したりする処理がないため、結果セットが大きい場合には特に有効です。

結果データベースと入力データベースが異なる場合
結果データベースが入力データベースと異なる場合は、一時テーブルが作成され、SELECT 文の結果のレコードがすべてこの一時テーブルに格納されます。その後、タスクはこの一時テーブルをメインテーブルとしてスクロールできます。

推奨事項• 結果が大量になる場合は、結果データベースを入力データベースと同じにするオプションを利用するのが最善です。
• 結果が比較的小さくなる場合は、結果データベースとして、クライアントに常駐する
ISAM データベースを指定するのが最善です。そうすることで、結果を作成してそれをスクロールするときの作業がクライアント上だけで済むため、ネットワークトラフィッ
クが減少します。
• 結果が比較的小さくなる場合は、メモリゲートウェイを使用することでパフォーマンス
が向上します。

リファレンス
Magic eDeveloper V9 Plus

225

第 6 章 - プログラム

埋め込み SQL の使用における制約事項
メインテーブルの代わりに埋め込み SQL があるタスクは標準的な Magic タスクで、機能もほとんど同じです。ただし、以下のように制約事項がいくつかあります。
• SQL コマンドに参加しているすべてのテーブルは、［SQL コマンド］ダイアログの［データベース］欄で宣言されているデータベースからのものでなければなりません。別々のデータベースからのテーブルを組み合わせることはできません。
• オンラインタスクでは、SQL コマンドのビュー（結果テーブル）に属するカラムを更新
してはなりません。結果テーブルはタスク終了時に削除されてしまうため、そのような更新はディスクに書き戻されません。情報の更新には、他のテーブルへのリンクを使用します。
• 上位タスクの現行ビューとなっているレコードの状況を変更するコマンドは使用してはなりません。
• バッチ SQL コマンドでは、タスクレベルのトランザクションを使用します。
• 埋め込み SQL で COMMIT、ROLLBACK の各コマンドを使用した場合、それらが Magicのトランザクション内で生成されないと、その結果は予測できません。COMMIT とROLLBACK は、Magic のタスクレベルテーブルで適切なトランザクションモードを選ぶ
ことによってのみ正常に機能します。
• SQL 文は RDBMS によって実行されます。コマンドの構文を決めるのは開発者の責任であり、開発者は DBMS 固有の拡張機能を自由に利用できます。ただし、各種の SQL DBMS
間でアプリケーションの可搬性が必要とされる場合は、DBMS 固有の SQL 拡張を埋め込
み SQL に組み込まないように注意してください。これは Magic が作成した SQL 文では問題となりません。Magic ゲートウェイはデータベースごとに、正確で最適化された構文を生成します。
• 埋め込み SQL をオンラインタスクで使用すると、Magic によって一時テーブルが作成されます。このテーブルは任意にデータベース内に作成できます。通常は、Magic に各レ
コードの読み取りと書き込みを行わせるより、RDBMS のユーティリティを利用してその同じ RDBMS 内に一時テーブルを作成する方が効率が高くなります。
• 埋め込み SQL タスクの範囲指定は使用できません。
• ストアドプロシージャを実行するときは、以下の形式で名前のすぐ前に exec を指定します。
exec sp_order_upDate
ゲートウェイは生成されたプログラム文を実際に実行して、APG 内にある結果セットの正しい形式を認識します。それで文がデータを変更するものであれば、実際に変更が行われます。
• DB2 UDB と ODBC は、埋め込み SQL の結果データベースとして利用できません。

バインディング変数
埋め込み SQL タスクを使用する場合、Magic は SQL ステートメントをデータベースに送ります。データベースは、文字か数字の文字列として SQL ステートメントを受け取り、それを解析し実行します。
SQL ステートメントの一部は、事前に定義された値に対するプレイスホルダーになることができます。
プレイスホルダーを値に置き換えることを「バインディング」と呼ばれます。これによって、データベースによる SQL ステートメントの解析処理が何度も行われることがなくなります。

バインディング変数の制限
SQL ステートメントのバインディング変数は、Oracle でのみ有効です。

226

リファレンス
Magic eDeveloper V9 Plus

タスク制御バインディング変数は、Select ステートメントか戻り値を返すストアドプロシジャでのみ有効です。
バインディング変数は、チルダ (~) で指定します。例えば以下のように指定します。
Select * from table where field1 = ~1 and field2 > ~2
バインディング変数は、文字型と論理型、数値型でサポートされます。
文字列に対して、アポストロフィ（`）は、必要ありません。Magic は、日付型や時刻型、論理型、数値型は、数値として扱います。
Oracle 上の パラレルデータタイプが数値の場合、バインディング変数が使用できます。
バウンド（~）とアンバウンド指定を含んだ SQL ステートメントは、バインディング
変数の利点が無効になります。

遅延トランザクション内での埋め込み SQL
Magic は、すべてのタイプのタスクモード（ブラウザ、オンライン、およびバッチ）で埋め込み SQL を定義することができます。
［SQL コマンド］ダイアログからタスクを作成する場合、APG の［オプション］から「R=ブラウザ」を選択することで、埋め込み SQL のブラウザタスクを作成することができます。
ブラウザタスクで、ステートメントを選択し、ストアドプロシジャを呼び出すことができます。Update や Insert、Delete といった DML ステートメントは使用できません。
埋め込み SQL の行が、他のテーブルにリンクされている場合、埋め込み SQL でない行にリンクされたデータは、トランザクションキャッシュ内に保存されます。これは、遅延トランザクション内で通用のリンクとして動作します。
ブラウザクライアントのサブフォームとして定義された SQL タスクは、ブロックされます。SQL コマンドの実行タイミングによって、Magic がサブフォームを再表示しないよ
うにします。

タスク制御
タスク制御特性は、タスクの実行時の動作を制御するために使用されます。

条件としてのタスク制御特性［タスク制御］ダイアログの各欄のほとんどは、値として「Yes」または「No」を指定できます。また、論理式を指す番号を指定できるものもあります。指定した番号の式は、実行時に評価されます。式を使用することで、その式の結果によってタスクを制御できます。式の結果が「True」の場合、この欄に「Yes」を設定したときと同じになります。
式の結果が「False」の場合、この欄に「No」を設定したときと同じになります。

リファレンス
Magic eDeveloper V9 Plus

227

第 6 章 - プログラム［タスク制御］ダイアログ［タスク制御］ダイアログの欄を使用して、タスクで使用できる処理モードを設定できます。設定した処理モードはタスクメニューに表示され、実行時、ユーザが必要に応じて指定できます。また、このダイアログで指定した処理モードが、タスクの有効な初期モー
ドとなります。
［タスク制御］ダイアログで無効にした処理モードが、初期モードとして設定されているときには、実行時にエラーメッセージが表示され、そのことが報告されます。ただしそのエラーメッセージをユーザが閉じると、通常どおりに操作ができるようになります。
［タスク制御］ダイアログは、次の 2 つのタブから構成されています。
• ［モード］タブ• ［オプション］タブ［モード］タブ
メニュー使用
この欄を「No」にしておくと、エンドユーザ用のオプションメニューが無効になります。
つまり、タスクは初期モードで動作し、その初期モードをエンドユーザが変更できなくなります。
オンラインタスクのデフォルトは「Yes」。バッチタスクのデフォルトは「No」です。

修正：Yes（デフォルト）
この欄を「No」にしておくと、エンドユーザは修正モードを使えなくなります。

登録：Yes（デフォルト）
この欄を「No」にしておくと、エンドユーザは登録モードを使えなくなります。

削除：Yes（デフォルト）
この欄を「No」にしておくと、エンドユーザは削除モードを使えなくなります。

照会：Yes（デフォルト）
この欄を「No」にしておくと、エンドユーザは照会モードを使えなくなります。

位置付：Yes（デフォルト）
この欄を「No」にしておくと、エンドユーザは位置付を実行できなくなります。照会モー
ドでは、自動位置付処理が実行されなくなります。

範囲：Yes（デフォルト）
この欄を「No」にしておくと、エンドユーザは範囲の指定ができなくなります。

インデックス変更：Yes（デフォルト）
この欄を「No」にしておくと、［インデックス］の切り替えはできなくなくなります。また、同時に自動インデックス最適化も行われなくなります。

228

リファレンス
Magic eDeveloper V9 Plus

タスク制御ソート：Yes（デフォルト）
この欄を「No」にしておくと、エンドユーザはソートを実行できなくなります。

入出力ファイル：Yes（デフォルト）
この欄を「No」にしておくと、エンドユーザは入出力ファイルの指定の変更ができなくなります。

インデックス最適化：Yes（デフォルト）
この欄を「No」にしておくと、インデックス最適化処理はできなくなります。

照会モード位置付：Yes（デフォルト）
この欄を「No」にしておくと、照会モードでの自動位置付処理が行われなくなります。

データ出力ウィザード : No （デフォルト）
この欄を「Yes」に設定すると、データ出力ウイザードが有効になります。このオプショ
ンはオンラインタスクでのみ有効です。
データ出力ウイザードについては、第 19 章「ユーティリティ」の「データ出力ウィザード」を参照してください。

［オプション］タブ
ウィンドウ表示ブラウザとオンラインタスクでは、タスクウィンドウは必ず開かれるため、この欄と関係があるのはバッチタスクだけです。
バッチタスクに対して「No」を指定すると、画面にタスクウィンドウが表示されなくなります。なおオンラインタスクに対して「No」を指定すると、タスクは実行されません。
オンラインタスクのデフォルトは「Yes」。バッチタスクのデフォルトは「No」です。

ウィンドウ消去：Yes（デフォルト）• Yes……タスクの終了とともにタスクウィンドウが閉じます。
• No……タスクが終了してもタスクウィンドウは閉じず、そのまま残ります。その後同じタスクを実行したときには、表示されていたタスクウィンドウが閉じ、タスクウィンド
ウが新たに開きます。なお、実行環境自体が終了すると、開いているウィンドウはすべて閉じます。この欄が関連するのはオンラインタスクとバッチタスクのみです。
親タスクがモーダルウィンドウで表示していて、タスクがそのフォームの子ウィンドウでない場合、この設定は無効になります。
下記の表は、［ウィンドウ表示］と［ウィンドウ消去］欄の値の組み合わせと、その組み合わせのときに、どういったタスクで有効かをまとめた表です。
ウィンドウ表示ウィンドウ消去

有効なタスクYes

Yes

オンラインタスクとバッチタスク

Yes

No

オンラインタスクとバッチタスク

NoNo

バッチタスクのみNo

Yes

バッチタスクのみ。（結果的に No と同じ）

リファレンス
Magic eDeveloper V9 Plus229

第 6 章 - プログラム

前面表示：Yes（デフォルト）
この欄が関連するのはオンラインタスクとバッチタスクのみです。タスクの実行時には、
タスクウィンドウが通常は最前面に（つまり全体が完全に見える状態で、開いている他のすべてのウィンドウより前面に）表示されます。一方、タスクウィンドウを背面で開き、他のアクティブなタスクウィンドウ下に表示することも可能です。標準のバックグ
ラウンドウィンドウの代わりにタスクウィンドウを使用する場合、あるいは Magic の作
業領域のバックグラウンドより前面でタスクウィンドウをそのまま表示しておく場合
は、「No」にしておきます。時刻や日付などをバックグラウンド情報として表示させる場
合この設定にします。
［前面表示］を「No」に設定するときは、バックグラウンドウィンドウを常に開いておくために、通常は［ウィンドウ消去］も「No」にしておきます。ユーザの操作に応じて、また定期的にこのバックグラウンドウィンドウの情報を更新するには、［イベント］テーブルを利用して、プログラム実行を特定のキーストローク、あるいは指定した時間の経過に応じたものにします。

ウィンドウ再表示：No（デフォルト）
この欄では、行の処理と［レコード後処理］の実行後にタスクウィンドウの表示を更新するかどうか指定します。詳細は、第 5 章「Magic アプリケーションエンジン」を参照
してください。この欄が関連するのはオンラインタスクとバッチタスクのみです。
Magic では、１度に１行づつ処理されます。ラインモードの複数行表示においても、ハ
イライトされている行だけが更新され、その行だけにデータビューの行の値が表示されます。ほかの行については、入力フォーカスが移った時点で、その行の表示が更新されます。このため、ハイライトされていない行は、データビューの行の内容が変わっているのに、その最新の値がすぐには反映されないということも起こります。
さらに、カレントのデータビュー行に含まれている一部のカラムがリンク処理コマンドのため、同じデータビューの別の行にも組み込まれているというケースも考えられます。
この場合、残りのデータビュー行はラインモードで、あるいは親タスクで同じ画面上に表示される可能性があります。そのようなカラムを変更すると、変更内容は現在ハイラ
イト表示されているデータビュー行でのみ表示されます。こういった場合、［ウィンドウ
再表示］を「Yes」または式に設定して使用し、現在表示しているすべてのデータビュー
行の変更内容をすぐに反映するという方法があります。
「Yes」を設定すると、常時再表示が実行され、処理速度が低下します。このため、式を使用して必要なときに限り、この設定を有効にしてください。
［タスク特性／拡張タブ／トランザクションモード］が「D= 遅延」、または「P= 物理」でキャッシュが有効になっているプログラムでは、［タスク制御／オプションタ
ブ／ウィンドウ再表示］は機能しません。再表示が必要な場合、「ビュー再表示」のアクションを発行する必要があります。

レコードイベント間隔：0（デフォルト）
この欄は Magic がイベントキュー内の保留イベントを検索するまでに処理するレコード数を表す式を指定します。この式の評価結果は数値であり、評価はタスクの初期段階で行われます。たとえば式の評価結果が「500」の場合、エンジンは 500 レコード毎にイベントキュー内の保留イベントを検索します。あるイベントのハンドラと一致するハンド
ラがキュー内で見つかった場合、そのハンドラが実行されます。この欄が関連するのはバッチタスクのみです。

230

リファレンス
Magic eDeveloper V9 Plus

タスク制御ページ当りレコード件数：0（デフォルト）
この欄はバッチタスクのみに関連しています。これは印刷プレビュー形式のレポートを出力するのに使われます。生成されるレポートでは、ヘッダとフッタは定位置にあり、各ページの行数は固定されています。この場合は、決まった数のレコードが各ページに出力され、最後のページには空行が埋め込まれます。
この機能の詳細については、『開発者ガイド』の「高度なプログラミング」の節と第7 章「処理コマンド」の「データ出力」を参照してください。

循環入力：Yes（デフォルト）• Yes……エンドユーザが現行の行にある最後のカラムの処理を終了すると、カーソルはその同じ行の先頭にあるカラムに戻ります。この処理はユーザがその行から別の行へ移動
するか、そのタスクを終了するまで続きます。
• No……カーソルがその行にある最後のカラムから、データビューの次の行にある最初のカラムへ自動的に移動します。
この欄はオンラインタスクにのみ関連します。

更新確認：No（デフォルト）• Yes……Magic は作成および修正処理コマンドの場合にも確認を行います。
• No……Magic は削除処理コマンドの場合にのみ確認を行います。
• 式……式を使ってこの動作を変更することも可能です。たとえば Stat
（0,'C'MODE）のように指定すると、作成処理コマンドの場合にのみ確認が行われます。

キャンセル確認：No（デフォルト）「Yes」の場合、レコードの変更に対する取消をおこなう際に、確認のダイアログが表示されます。取消を実行すると、変更内容が取り消されて、レコードの値が元に戻ります。
取消を中止すると、変更内容は保持されます。

強制レコード後処理：No（デフォルト）
この欄は、ブラウザとオンラインタスクのみに関連します。
• Yes……該当する行に修正が加えられたかどうかに関係なく、Magic によってレコード後処理が実行されます。
• No……Magic は現行のデータビュー行が変更されている場合、つまりタスクのデータ項
目の 1 つが変更された場合にのみレコード後処理が実行されます。
• 式……式を使ってこの動作を変更することも可能です。

レコード削除：No（デフォルト）
この特性を利用することで、タスクのデータビューから条件付きで行を削除できます。
削除条件式は、Magic がレコード後処理を開始する前に評価されます。評価の結果が「True」の場合、対象となる行はユーザが削除キー（F3）を押したときと同じ仕組みで削除されます。その点については次の部分で説明します。
削除の仕組み対象となる行が修正されている場合、あるいはタスクがバッチモードで実行されている
場合は、そこで定義されている［項目更新］コマンドをすべて実行して処理論理を完了するため、レコード後処理が一旦「修正モード」で実行されます。その後、削除関連の処理コマンドを実行するため、「削除モード」で 2 回目のレコード後処理が行われます。
そのような処理コマンドには、1 対多関係にある相互連結した行の削除、［加算］モード

リファレンス
Magic eDeveloper V9 Plus

231

第 6 章 - プログラム
による［項目更新］コマンドなどがあります。
詳細については、第 7 章「処理コマンド」の「項目更新」を参照してください。

対象となる行が修正されていない場合は、レコード後処理は「削除モード」で 1 回限り実行されます。次の図に、このロジックを示します。

図 6-3 レコード削除の影響［レコード削除］を利用して特定のレコード後処理の処理コマンドで二重処理を回避するには、それらの処理コマンドの［条件］カラムに指定する条件式の中で、Stat 関数を使用します。

変数項目テーブル
ほとんどすべてのタスクでは、タスク実行の間、一時的に一定の情報を格納する必要があります。このために、ローカル変数を定義することができます。ローカル変数は、仮想ファイルと呼ばれる一時的な「スクラッチ」メモリ領域から選択されます。
選択したすべてのローカル変数は、タスクの［変数項目］テーブル内のエントリとして表示されます。
［変数項目］テーブルは、テーブルリポジトリのカラムテーブルと同様の動作をします。
［変数項目］テーブルがテーブルリポジトリのカラムテーブルと異なるのは、［変数項目］テーブルでは行を作成することも削除することもできないという点です。
［レコードメイン］テーブルで［セレクト］コマンドを作成または削除すると、行がテーブルに自動的に作成、削除されます。
詳細については、第 7 章「処理コマンド」の「［セレクト］コマンドの設定欄」の節を参照してください。

変数項目テーブルのカラム［変数項目］テーブルには以下のカラムが存在します。

232

リファレンス
Magic eDeveloper V9 Plus

変数項目テーブル#（データ項目識別子）
このカラムには、Magic によってデータ項目識別子として使用される自動的に生成される連番が入ります。このカラムは編集できません。

名前
変数の名前を入力します。データ項目が項目モデルを継承するようにする場合は、［名前］カラムを空白のままにすると、モデル名がここにコピーされます。

モデル
モデルリポジトリに定義されている項目モデルを参照して変数を作成できます。
［モデル］カラムからズームして目的の項目モデルを選択するか、項目モデルの番号を直接入力します。
モデルを選択すると、名前がモデル番号の隣に表示され、［型］と［書式］カラムにモデ
ルの型と書式が反映されます。その他すべての特性が選択したモデルから継承されます。
［モデル］カラムを空白（0）のままにして、［変数］特性をデータ項目の特性シートによって直接定義することもできます。いずれの場合でも、すべての特性の継承関係を切って個別に設定することができます。

型
コンボボックスをクリックし、［型一覧］から型を選択します。または、Magic データ項
目の型のいずれかの頭文字（文字型の A（デフォルト）、数値型の N、論理型の L、日付
型の D、時刻型の T、メモ型の M、BLOB の B）を入力します。
詳細については、第 3 章「モデル」の「データ項目の特性」を参照してください。

書式• 文字型やメモ型データ項目では、最低限の書式として長さが必須になっています。さらに、必要に応じてその他の書式の仕様も入力できます。
• 数値型では、整数の桁数が最低限の書式であり、必要な場合には小数と小数点以下の桁数を設定します。その他の書式の仕様も必要に応じて追加できます。
• 論理型、時刻型、日付型データ項目では、デフォルトの書式が設定されますが、その他の必要な書式の仕様を追加したりすることもできます。
• BLOB では書式は指定できません。
書式仕様の詳細は、第 3 章「モデル」の「書式」の節を参照してください。

変数項目特性
変数項目の特性シートは、モデルリポジトリで表示される［モデル特性］シートとほぼ同じです。
項目モデル特性の設定についての詳細は、第 3 章「モデル」を参照してください。

リファレンス
Magic eDeveloper V9 Plus233

第 6 章 - プログラム

式テーブル
式テーブルは、以下のものからなる複合ウィンドウです。
• 左上に表示されている式テーブル• 右上に表示される項目一覧• ウィンドウの下側セクションに表示される展開されたデータ項目領域。展開された式領域では、画面の上部の式テーブル領域で強調表示されている式が、完全なデータ項目名
で置き換えられたそれぞれのデータ項目の名前とともに表示されます。
• 以下の表に示されている式テーブルの底部にあるボタン
操作

機能ボタン

意味

OK
Enter

OK

変更を受け付けて、ダイアログを終了します。
現在の式番号を、式テーブルにズームしたパ
ラメータにコピーします。

キャンセル
F2

キャンセル

式テーブルに加えられたすべての変更をキャンセルし、現在の式番号をコピーせずにダイ
アログを終了します。

式表示

表示

展開された式領域に編集済みの式を表示しま
す。

関数一覧
Alt+F

関数

使用可能なすべての関数の一覧を表示します。

アクション一覧
Alt+A

アクション

KbPut または KbGet 関数を編集しているときにアクションの選択に使用するアクション一
覧を表示します。

キーボード一覧
Alt+S

キーボード

KbPut または KbGet 関数を編集しているときに使用するキーボードを表示します。

権利一覧
Alt+R

権利

Rights 関数とともに使用することを許可された権利の一覧を表示します。

コントロール名一覧
Alt+N

コントロール

フォーム内のコントロールとともに使用するコントロール名の一覧を表示します。

テーブル一覧
Alt+T

テーブル

テーブル関係の関数で使用できるテーブルの一覧を表示します。

プログラム一覧
Alt+P

プログラム

プログラム関係の関数および処理で使用できるプログラムの一覧を表示します。

エラー一覧
Alt+E

エラー

エラー関係の関数で使用するサポートされているエラーの一覧を表示します。

一覧から式に値をコピーするには、カーソルを式テーブル上に置かなければなりません

式
式は、値を計算するための定数または公式を定義します。式の値は、数値型（日付型と時刻型を含む）、文字列型、または論理型（「True」または「False」）です。式は、アクションの実行を指示する一連の演算子と演算の実行対象であるオペランドから成り立っています。オペランドには、データ項目、関数、定数（リテラルと呼ぶ）、またはその他の下位の式が使用できます。
• データ項目は、自分のタスクや親のタスクで定義された項目から選びます。項目一覧には、実データ項目と変数項目の両方が含まれます。

234

リファレンス
Magic eDeveloper V9 Plus

フォームテーブル• 関数は、Magic の組み込み関数ライブラリの中から選びます。組み込み関数は、
「数値」
、
「文字」、
「基本」、
「日付／時刻」、「項目」、「タスク」、「他アプリ連携」、「インタフェー
ス」、「データベース」、「権利」、「App サーバ」、「動作環境」
、
「入出力」
、
「変換」
、
「その
他」などのカテゴリに分類されて表示されます。
［関数］ボタンを押すことで、関数を選択することができます。使用可能な関数については、第 8 章「関数」を参照してください。
関数は通常、1 つまたは複数のパラメータ（カンマで区切る）を持ちます。パラメータは括弧で囲みます。関数にパラメータがなくても、括弧は必要です。たとえば、今日の日付を返す Date 関数を使う場合には、Date （ ）とします。
関数はすべて値を返します。
• 演算子には、数値型（たとえば、「+」）、文字列型（たとえば、「&」）、または論理型（た
とえば、
「NOT」
）があります。
• 式テーブルの各エントリは、評価されると、使用するデータ項目と関数の型に応じて、
数値、文字列、BLOB、または論理値（「True」または「False」）になります。使用する型の組み合わせが不適切だと、エラーメッセージが表示されます。
• 関数はネストして使うことができます。たとえば、データ項目 A に格納されている文字
列の実際の長さ（後続の空白文字を除く）を求めるには、Len（LTrim（RTrim（A）））
、あるいは Len（Trim（A））とします。
• IF、AND、NOT、OR を含む論理式をネストすることにより、さらに複雑な式を作ることもできます。
• 不要な括弧は自動的に除去されます。

フォームテーブル
アプリケーションのすべての表示ウィンドウ、帳票、および文字入出力レイアウトは、
フォームテーブルに定義します。
［タスク環境］メニューより［フォーム］をクリックすると以下のようなフォームテーブ
ルが表示されます。

図 6-4 フォームテーブル

リファレンス
Magic eDeveloper V9 Plus235

第 6 章 - プログラム
プログラムを新規に作成すると、Magic によりそのプログラムの最初のエントリが［フォーム］テーブルに自動的に追加されます。このエントリは、そのタスク固有のものであり、削除することや、テーブル上の別の場所に移動することはできません。また、その前に別のエントリを作成することもできません。
オンラインタスクやブラウザタスクでは、表示フォームはデータ項目を表示したり、エンドユーザによる入力を行うために使用します。バッチタスクでは、タスクが実行中であることや、進捗状況などの処理に関する情報を表示するために表示フォームを使用します。また、表示フォームは、バッチタスクの位置付や範囲を設定するなど、エンドユー
ザが選択するテンプレートとしても役立ちます。
サブタスクを作成すると、Magic により新しいエントリが［フォーム］テーブルに自動的に追加されます。このエントリはサブタスクの固有なものになります。このエントリは削除できません。上位タスクの［フォーム］テーブルでエントリを追加または削除す
ると、このエントリはテーブル内の位置が移動します。サブタスクの［フォーム］テー
ブルからは、サブタスクに関するすべてのフォーム、およびサブタスクの上位タスクで作成されたエントリにアクセスできます。
Magic は、タスクの最初のフォームエントリにクラス値として「0」を自動的に割当てます。クラス値「0」の追加のフォームを定義することもできます。クラス値「0」のフォー
ムは、GUI 形式の対話型ウィンドウのために予約されています。
フォームはクラスにまとめることができます。同じクラス値のフォームは、実行時にMagic で同じグループとして処理されます。
［フォーム特性］シート上の特性値を変更することで、指定したフォームの定義することができます。
図 6-5 に示すように、［オプション／フォーム表示］（Ctrl+U）を実行するか、フォーム
テーブルの編集したいフォーム名をダブルクリックしてください。

図 6-5 フォームエディタ［コントロール］パレットからコントロールを選び、フォーム上にコントロールをドラッ
グ & ドロップすることで、コントロールをフォームに配置することができます。［コントロール］特性シートでに表示された特性値を変更することでコントロールを定義する
ことができます。

236

リファレンス
Magic eDeveloper V9 Plus

フォームテーブル［フォーム］テーブルの設定欄
次に［フォーム］テーブルの設定欄について説明します。

#（フォーム識別子）
フォームのテーブル内の位置を表す連番です。自動的に付番され変更することはできません。タスクの最初のフォームは、クラス =0 になり、削除も移動もできません。フォー
ム名や、子ウィンドウの指定などの特性値を変更することは可能です。

名前
フォームの名前を指定します。新規のプログラムやサブタスクを作成すると、そのタスクに関する［フォーム］テーブルのエントリが自動的に作成されますが、そのときタスクツリーや［タスク特性］ダイアログで表示されるタスク名が、［フォーム］テーブルのデフォルトのフォームの名前として設定されます。この名前はタスク名と一致する必要はなく、後で変更できます。ただし、タスク名とフォーム名が同じデフォルト状態の場
合、タスク特性でタスク名を変更すると、自動的にフォーム名に反映されます。
［フォーム］テーブルを使用して、ユーザが後から追加したエントリには、ユーザが名前を設定する必要があります。この名前はクラス「0」のフォームの場合、表示ウィンドウのタイトルバーの部分に表示されます。
［名前］欄のエントリからズームすると、フォームエディタが起動され、フォームが編集できるようになります。フォームがブラウザまたは HTML マージフォームの場合、［動作環境］ダイアログの［アプリケーションサーバ］タブの［Web オーサリングツール］に設定されているエディタが起動されます。フォームが「WebOnline 応答形式」の場合、［マージコマンド］テーブルが表示されます。

クラス
異なるレポートのクラス値は、別の値（0 以外）を設定します。
クラス値が 1 以上の［フォーム］テーブルエントリからズームすると、フォームエディ
タにより同一のクラス値を持つすべてのフォームが表示されます。したがって、レポー
トの場合には、ページヘッダ、ヘッダ、明細、フッタ、ページフッタの各フォームが存在するとき、すべてが同時に表示されます。
このとき、同じクラス値（クラス値＞ 0）のグループのフォームに対し、「単位」、「垂直精度」、「水平精度」の設定が Magic によって自動的に調整され、同じ値になります。解
像度については、同じクラスのいずれかのフォームで定義されている最高の解像度に統一されます。

区分
対話型ウィンドウのクラス 0 のフォームでは、区分欄は無効です。帳票フォームの場合、区分欄には、明細、ヘッダ、フッタ、ページヘッダ、ページフッタのいずれかを指定します。入出力レコードレイアウトとして用いるフォームでは、この欄の設定は意味がな
く無視されます。
［フォーム］テーブルにおける、ヘッダ、明細、フッタの各フォームエントリの配置は重要です。ヘッダフォームエントリの次のエントリには、対応するフッタが存在する場合には、必ずそのフッタフォームエントリがなくてはなりません。すべてのヘッダとフッタの対は、明細行よりも先に配置してください。ヘッダとフッタの対は、そのネスト構造の外側から順に配置されなければなりません。明細フォームエントリは、最も内側にあるヘッダとフッタの対のフォームエントリの後ろに配置します。明細フォームエント
リは、レポートに表示される順に配置しなければなりません。フォームエディタで編集するとき、これらのフォームはネストしたヘッダ、明細、フッタの順で入れ子形式に表示され、実際のレポートで出力される順序に並びます。

リファレンス
Magic eDeveloper V9 Plus237

第 6 章 - プログラム

インタフェースタイプ
クラス =0 のフォームでは、インタフェースタイプは「G=GUI 形式」（オンラインタスクの場合）または「R= ブラウザ形式」（ブラウザタスクの場合）のいずれかです。
クラス値＞ 0 のフォームでは、［フォーム］テーブルの［インタフェースタイプ］欄を使用して次のいずれかを選択できます。
• GUI 形式 …… GUI 形式の出力フォーム• テキスト形式 …… テキストベースの入出力フォーム• HTML 形式 …… インターネットタスク用の HTML 出力フォーム• HTML フレームセット形式 …… 複数の HTML ページを組み合わせて表示させる場合に使用するフォーム
• HTML マージ形式 …… 既存の HTML ファイルにデータをマージさせる場合に使用するフォーム• Web Online 応答形式 …… マージ機能を利用してインタラクティブな HTML ページを作成する場合に使用するフォーム
クラス値＞ 0 以上のフォームで、そのフォームにテキスト形式とは互換性のないコント
ロールが定義されている場合に、現在の表示に上書きするかどうかを尋ねる、「変更しますか？」というダイアログが表示されます。ここで Enter キーを押すと、変換が実行されます。フォームと既存のコントロールはテキストベースのフォームに強制的に変更され、互換性がないコントロールは削除されます。
• 表示フォームについての詳細は、第 9 章「表示フォーム」を参照してください。
• 出力フォームについての詳細は、第 10 章「出力フォーム」を参照してください。

子ウィン :No（デフォルト）
レポートのフォームでは、［子ウィン］欄は無効です。クラス「0」の GUI フォームでは、［フォーム］テーブルの［子ウィン］欄のコンボボックスをクリックし、次のいずれかを選択します。
タスクのデフォルトフォームは、［フォーム］テーブルで変更できません。
［フォーム］
特性で変更してください。
• Yes……フォームが 2 次（子）ウィンドウとして表示されます。
• No……フォームがメインウィンドウとして表示されます。
• 式……タスク前処理が実行される前にフォームがオープンされた時に評価されます。

フォームの操作
エンドユーザーは、フォームを使用してアプリケーションにアクセスします。フォームには、データを表示したり、エンドユーザーにデータを入力させるためのコントロールが含まれています。フォームエディタは、指定された特性値を元にフレームと内容を表示します。
フォーム特性を指定したり、コントロールを配置したり、コントロールの特性を定義することによってフォームを編集することができます。

フォームの配置とサイズの変更
フォームのサイズを変更するには２つの方法があります。１つは、フォーム特性の［位置とサイズ］に表示されるサイズの値を変更するやり方です。もう１つは、フォームレ
イアウトが表示された状態で、Shift + カーソルキーを押す方法です。クラス =0 のフォー
ムでは、フォームレイアウトの右端や下辺部をマウスでドラッグすることでもサイズを変更することができます。

238

リファレンス
Magic eDeveloper V9 Plus

フォームテーブルフォーレイアウトを移動する場合は、カーソルキーやマウスでタイトルバーをドラッグします。
キーボードでのフォームのサイズ変更や移動を行った後、Enter キーを押すことで変更内容が確定され、Esc キーで変更がキャンセルされます。
フォームサイズを小さくして配置されたコントロールが隠れるような状態になった場
合、自動的にスクロールバーが表示されます。フォームのサイズ変更で配置されたコントロールが削除されることはありません。

寸法単位
フォーム上のコントロールのサイズや位置は、寸法単位に基づいて決まります。フォー
ムの解像度も寸法単位によって決まります。寸法単位の設定はフォーム特性シートで指定します。指定できる寸法単位は、「D= ダイアログ」、「C= センチ」、「I= インチ」のいずれかです。「D= ダイアログ」を使用することで、そのときのフォントサイズをもとにコントロールが配置されます。このため、異なる解像度の画面を使用しても、1 つのフォー
ム上の同じ特性を維持できます。ただし、印刷帳票のフォームにおいては、システムが異なると互換性が維持できない場合があるため、「D= ダイアログ」以外の使用を推奨しています。
フォームの解像度を変更するためには、「ダイアログ」の分割単位を変更します。
［フォー
ム特性］ダイアログで［垂直精度］と［水平精度］の欄を使用します。
HTML フォームやテキストフォームの寸法単位は必ず、フォームのフォントを基準にした「D= ダイアログ」です。寸法単位によって、フォームの作成時に表示されるグリッドのサイズが決まります。
コントロールがフォーム上のどの行に置かれるかは、グリッドによって決まります。
フォーマット済みコントロールの場合、パディング（余白埋め）のスペースの数によって、コントロールの位置が設定されます。

フォームパレット
フォームパレットには、フォームエディタで使用するアイコンが配置されています。
Magic には以下のパレットがあります。
• ［コントロール］パレット• ［項目］パレット• ［コマンド］パレット• ［色］パレット• ［HTML］パレット• ［スタティックテーブル］パレット［コントロール］パレット［コントロール］パレットには、フォームに配置できる各種のコントロールが表示されます。次のようなコントロールパレットの種類があります。
• テキストフォーム用パレット• GUI フォーム用パレット• HTML フォーム用パレット• HTML フレームセット用パレット
コントロールをフォームに配置するには、適切な［コントロール］パレットからコント
ロールのボタンを選択します。次に、そのコントロールをフォームレイアウトにドラッ
グ & ドロップします。または、GUI コントロールパレットのコントロールのボタンをダ
ブルクリックすると、コントロールがフォームの左上に表示され、同時にコントロール
は Z オーダ順に配置されます。

リファレンス
Magic eDeveloper V9 Plus239

第 6 章 - プログラム
HTML フォームでは、パレットのコントロールのボタンをダブルクリックすると、コントロールがフォームの左上に表示され、現在のコントロールは右側に寄せられます。ただし、コントロールのボタンをダブルクリックしたとき、HTML コントロールが常に左上に表示されるわけではありません。たとえば、コントロールが直線の場合、ダブルク
リックすると、フォームグリッドの左上にある現在のコントロールの下に直線が表示されます。
また、モデルリポジトリにコントロールモデルが登録されている場合、［コントロール］
パレットで右クリックすると対応するコントロールのモデルの一覧が表示されます。配
置したいモデル名をクリックしてからフォームにドロップすることで、そのモデルを使用したコントロールを配置することができます。

図 6-6 コントロールパレット［項目］パレット［項目］パレットのついての詳細は、第 9 章「表示フォーム」の「項目パレット」を参照
してください。

［コマンド］パレット［コマンド］パレットでは、コントロールの整列、サイズ変更、リンク、リンク解除、配置、変更取消、やり直しなどを行うことができる汎用タブがあります。
また、選択されたフォームエディタによって、汎用タブ以外に、色、HTML、スタティッ
クテーブルなどのパレットタブが含まれます。

［色］パレット［色］パレットを使用すると、特定のコントロールの色をパレットに表示されるとおりに
定義できます。どの色も［色］ボタンで確認できます。現在選択されているコントロー
ルに色を割当てる場合や、基本色テーブルにアクセスして［色］パレットの色を定義する場合は、［色］ボタンをクリックします。

［HTML］パレット
HTML フォーム用の［コマンド］パレットには、HTML コントロールのフォーマットとフォームの編集のそれぞれに固有なコマンドを含む［HTML］タブがあります。

240

リファレンス
Magic eDeveloper V9 Plus

フォームテーブル［スタティックテーブル］パレット［スタティックテーブル］パレットには、HTML コントロールの位置を細かく設定したりするための、スタティックテーブルの行およびセルが準備されています。これによって独自の設定を行うことができます。

フォームテンプレート
現在のフォームレイアウトは、テンプレートとしてファイルに保存できます。デフォル
トのファイル拡張子は MFT（Magic Form Template）です。テンプレートには、以下のものを除き、すべてのコントロールとコントロール特性が格納されます。
• コントロール名• ［式］欄の内容• ［データ］欄の内容• ［選択プログラム］欄の内容
上記の特性は、テンプレートファイルを読み込むと、空白になります。
テンプレートファイルを既存のフォームに読み込むと、テンプレートファイルによってフォームのすべての設定が上書きされるため、フォーム上のすべてのコントロールが削除されます。
［フォーム］テンプレートは GUI フォームのみで有効です。HTML テンプレートは、GUI
フォームエディタでは扱えません。

フォーム特性とコントロール特性
フォーム特性はタスクの表示内容やフォーマットを指定します。コントロール特性は、コントロールの表示内容や操作方法を指定します。
フォームとコントロールの特性については、第 9 章「表示フォーム」と第 10 章「出力フォーム」に説明があります。
フォームやコントロールの特性は、モデルの情報を継承している場合があります。この場合は、モデルリポジトリのフォームモデルやコントロルモデルを定義することになります。
詳細は、第 3 章「モデル」を参照してください。

ショートカットキー
フォームに関連するキーボードショートカットには、次のものがあります。
キー

状態

動作

F5

追加キー

コントロールが選択されているコントロール特性

F5

コントロールが選択されていないフォーム特性

Delete

選択されたコントロー
ルの削除

Insert新しいコントロールの
挿入

Enter

スタティックコントロールが選択されている

テキスト入力の開始

Enter

チョイスコントロールが選択されている

選択肢の変更リファレンス
Magic eDeveloper V9 Plus241

第 6 章 - プログラム
キー

追加キー

矢印キー
矢印キー

Shift

矢印キー
矢印キー

Shift

Alt

状態

動作

コントロールが選択されている

選択されたコントロー
ルの移動

コントロールが選択されている

選択されたコントロー
ルのサイズ変更

コントロールが選択されていないフォームの移動コントロールが選択されていないフォームのサイズ変更

項目パレットから項目をカラムにドラッグ選択したテーブルのカ
ラムにコントロールを
配置

Tab
Tab

次のコントロールを選
択
Shift

Home

最初のコントロールを選択

End

最後のコントロールを
選択

Ctrl

テーブルのカラム幅の調整

プッシュモード

Shift

項目パレットから項目をカラムにドラッグする

プッシュモード（既存のテーブルのカラムの前にカラムを追加）

フォームの高さの調整

プッシュモード

項目パレットからコントロール
をドロップする

タイトルなしテーブルにコントロールを配置

タイトルなしEsc

コントロールが選択されている

終了

Esc

Z オーダの表示

キャンセル

Shift

矢印キー

Shift
Ctrl

Shift

Ctrl

↓

マルチマークテーブルの次の行に移動Ctrl↑

マルチマークテーブルの前の行に移動

Ctrl

PgDownマルチマークテーブルの次のページに移動

Ctrl

PgUp

マルチマークテーブルの前のページに移動

Ctrl

Space

テーブル行のマークまたはマーク解除

Shift

PgDown

次のページにマーク

Shift

PgUp

前のページにマーク

Shift

↓

次の行に移動し、その
行にマーク

Shift

↑

前の行に移動し、その
行にマーク

Esc

242

前のコントロールを選択

終了

リファレンス
Magic eDeveloper V9 Plus

フォームテーブル

マウスによる操作
フォームエディタでは、マウスを使用した操作により、フォームを作成できます。マウ
スのクリックやドラッグで、コントロールを選択したり、グループ化することができます。1 つまたは複数のコントロールを選択してマウスの右ボタンをクリックすると、コンテキストメニューが表示され、そこからコマンドを実行することもできます。
操作

追加キー

フォーム上でドラッグ動作
境界線で囲んで選択（子コントロールも選
択される）

Ctrl

フォーム上でドラッグコントロール上でクリック
コントロール上でクリック

コントロールの選択（子コントロールも選
択される）
Ctrl

選択されたコントロールのドラッグ
チョイスコントロール上でクリック

境界線で囲んで選択（子コントロールは選択されない）

コントロールを選択しているグループに追加、または選択しているグループから削除（子コントロールは選択されない）
選択されたコントロールの移動

Shift

フォームのクリック

レイヤの変更コントロールの選択解除

Shift

フォームのクリック

フォームの移動（クラス 0 のフォームのみ）

コントロールパレットをダブルクリック

フォームの左上にコントロールを挿入

コントロールをダブルク
リック

コントロール特性

フォームをダブルクリック

フォーム特性右クリック

コンテキストメニューの表示

テーブルのカラムのクリック

Alt

カラムの選択テーブルのカラムの境界線
をドラッグ

Ctrl

テーブルのカラム幅の調整

項目をテーブルにドラッグ

Shift

既存のテーブルのカラムの前にカラムを追加

項目をテーブルにドラッグ

既存のテーブルのカラムの後ろにカラムを追加

項目をテーブルのカラムに
ドラッグ

Alt

選択したテーブルのカラム（既存の項目の下）にコントロールを配置

項目をテーブルにドラッグ

Ctrl+Shift

テーブルにコントロールを（タイトルを入力しないで）配置

キーボードによる操作
フォームの編集では、キーボードからカーソルを操作すると便利な場合があります。カー
ソルの移動に使用できるキーには、次のものがあります。
キー

カーソルの動きHome

最初のコントロールを選択End

最後のコントロールを選択

Tab

次のコントロールを選択

Shift ＋ Tab

前のコントロールを選択

リファレンス
Magic eDeveloper V9 Plus243

第 6 章 - プログラム
キー

カーソルの動き

矢印キー

選択したコントロールまたはフォームの移動

Shift ＋矢印キー

選択したコントロールまたはフォームのサイズ変更

Esc

キャンセル

Enter

確定

DB テーブル［DB テーブル］のテーブルは、このタスクで使うデータベースのテーブルを登録し、実行時の特性を指定します。
Magic は［DB テーブル］のテーブルにメインテーブルと、［リンク］コマンドで使用されるテーブルを自動的に組み込みます。これらのエントリはテーブルから削除しても除去できません。また、それらのエントリがある行にカーソルが置かれている場合、［編集］の［行削除］（F3）オプションは選択不可になります。編集可能なのはそれらの特性だけです。
タスクで使用していないテーブルを DB テーブルに登録しておくことも可能です。これは、子タスクの DB テーブルを親タスクの［DB テーブル］テーブルに追加することで、子タスクを呼び出すたびにテーブルのオープン・クローズにかかる時間を節約するためなどに使います。

DB テーブルのカラム#
Magic では、自動的に連続番号がテーブルのエントリに割当てられます。このテーブルを参照する場合には使用されません。このカラムは編集できません。

テーブル
このカラムには、テーブルリポジトリ内のテーブル識別子番号を指定します。
新しいテーブルを追加するには、［編集／行作成］（F4）を選択して新しい行を作成し、任意のテーブルの識別子番号を入力するか、［テーブル一覧］にズームして任意のテーブ
ルを選択します。

名前［名前］カラムには、テーブル名が表示されます。テーブルリポジトリの識別子番号が指定されるときに名前が自動的に挿入されるため、このカラムを編集することはできません。

アクセス［アクセス］カラムは、マルチユーザ環境でのテーブルのアクセス方法を指定します。
• R ＝読込……読み取り専用アクセスの場合です。
• W ＝書出……読み取り / 書き込みアクセスの場合に指定します。
（デフォルト）［アクセス］特性の詳細については、第 23 章「マルチユーザ環境」の「アクセスモー
ド」の節を参照してください。

244

リファレンス
Magic eDeveloper V9 PlusDB テーブル共有
この特性は、マルチユーザ環境で同時実行している他のタスクがどのようにテーブルにアクセスできるかを決定します。
• R ＝読込……他のタスクに読み取り専用アクセスだけを許可するときに使用します。
• W ＝書出……他のタスクにも読み取りと書き込みアクセスを許可するときに使用します（デフォルト）。この場合には、行ロックによる排他制御が行われます。
• N ＝なし……共有アクセスを許可しないときに使用します。この場合にはテーブルレベ
ルで排他ロックがかかります。
［アクセス］と［共有］が両方とも［W ＝書出］の場合、レコードロックが実行されます。また、［アクセス］が［W ＝書出］で［共有］が［R ＝読込］の場合、テーブルの共有が可能になります。さらに、［共有］が［N ＝なし］のときには、テーブルは排他使用となります。
アクセス / 共有モードの詳細については、第 23 章「マルチユーザ環境」の「共有モード」の節を参照してください。

オープン• N= 標準 …… 通常はこのオープンモードを利用します。
（デフォルト）• D= 破損……このオープンモードは、データベースマネージャからテーブル損傷のエラーが返されても、テーブルを強制的にオープンするように指示します。このモードでは、Magic は損傷しているテーブルから取り出せる行があればそれらをすべて取り出します。
そのようなアクセスを行っている間は、テーブルのどのインデックスも使用できません。
このモードの場合、すべての行の取り出しは保証されません。
［破損］オープンモード
は、テーブルの修復を試みる場合にのみ使用してください。
• R= 再索引 …… このオープンモードは、テーブルをオープンするときに Magic がすべてのインデックスを削除し、タスクの実行が終了し、テーブルをクローズするときにインデックスを再構築するように指示します。作成モードで大きなテーブルをインポートす
る場合、あるいはテーブルに対して大量のインデックス値の修正を実行しなければならない場合などに、［再索引］オープンモードはパフォーマンスを向上させる機能があります。すべてのインデックスを除去しておくことにより、挿入または修正のたびに行われるインデックス操作（Pervasive SQL の B ツリーをバランス化する処理など）のための時間が不要になります。処理が終了すると、Magic はテーブル全体に対してインデックス
構造を作成します。
［再索引］オープンモードが使えるか否かは、データベースゲートウェイがサポートしているかどうかに依存します。このオープンモードを指定した場合、重複不可のイ
ンデックスに重複するキー値を入力すると、インデックス再構築の処理で予期しない結果が生じることがあります。たとえば、Pervasive SQL はインデックス再構築の処理をそのまま中止します。他のデータベースゲートウェイはその重複する行をスキップする場合があります。
詳細については、第 25 章「SQL に関する考慮事項」を参照してください。

• F= 高速……データベーステーブルを、できるだけ高速に処理できるようにオープンします。整合性を優先させるには、ISAM トランザクション特性を「Yes」に設定します。処理速度を優先させる場合、ISAM トランザクション特性を「No」に設定します。

リファレンス
Magic eDeveloper V9 Plus245

第 6 章 - プログラム式
この欄に「0」を指定しておくと、テーブルリポジトリに定義されたテーブル名がそのまま使用されます。また、この欄に式の番号を指定することで、その式を使用してテーブ
ルリポジトリで定義されているテーブル名以外のテーブル名を指定できます。式は、実行時にテーブル名が返るように作成します。式には、論理名または場所（サーバ、ドラ
イブ、ディレクトリ）を記述することもできます。

キャッシュ［キャッシュ］カラムはリンクテーブルにのみ関連します。この特性の設定値により、リンクテーブルをキャッシュするかどうかを指定します。メインテーブルではこの設定値を変更しないでください。
設定可能な値は以下のとおりです。
• Yes……リンクテーブルに対してキャッシュを使用します。
• No……リンクテーブルに対してキャッシュを使用しません。
デフォルト値は、テーブルの［特性］ダイアログにあるキャッシュ方式によって異なります。
位置キャッシュはリンクテーブルに対しては無意味である点に注意してください。そのため、位置キャッシュの設定が「位置」のときには、「なし」とみなされます。
デフォルトの設定値は、以下のように［テーブル特性］ダイアログの内容によって決まります。
• Yes……［テーブル特性］ダイアログで［位置とデータ］を指定した場合• No……［テーブル特性］ダイアログで［位置］または［なし］を指定した場合更新レコードの識別
データベースを更新する前に、別のユーザが修正した行を識別できるようにするため、
SQL テーブルに対する Where 句の作成方法を指定できます。
この欄には、以下のいずれかを設定できます。
• P= 位置• S= 位置と選択項目• U= 位置と更新項目• T= テーブル特性に依存
遅延トランザクションを使用しているタスクにのみ適用されます。

入出力ファイルテーブル［入出力ファイル］テーブルには、現行タスクで読み取り / 書き込みに使用する入出力装置あるいはファイルすべて定義されています。各入出力ファイルを［データ出力］または［データ入力］コマンドで参照するには、それらをあらかじめ定義しておく必要があります。
サブタスクはその親タスクで定義されている入出力ファイルにアクセスできます。サブタスクの［入出力ファイル］テーブルには、その上位タスクで定義されているすべての入出力ファイルが含まれています。
次に、入出力ファイル特性の意味と各特性で使用できるオプションを示します。

入出力ファイルテーブルのカラム#

246

リファレンス
Magic eDeveloper V9 Plus

入出力ファイルテーブル
この番号には自動生成された順序番号が含まれ、入出力ファイル識別子として Magic で使用されます。この番号を編集することはできません。

名前
入出力ファイルの名前を入力します。この欄に指定される入出力ファイル名は、文書化とメッセージ表示の目的のみに使用されます。
入出力名は、論理名で指定することができます。INIPut 関数でこの論理名に対する実行名を指定することで、入出力名を動的に変更することができます。これによって、PDF
形式で出力する場合のファイル名を指定することができます。

メディア
ファイルの物理的な入出力先を定義します。すなわち、出力ファイルの出力先、または
入力ファイルの入力元を定義します。［メディア］の有効値は、次のとおりです。
• G=GUI 形式プリンタ（デフォルト）……OS に定義されているプリンタドライバに直接出力します。
• P= テキスト形式プリンタ……テキスト印刷用ドライバを経由して、Magic の論理プリン
タ（プリンタテーブル中に定義されているプリンタ）のいずれかに出力できます。式を定義してプリンタファイルをファイルにリダイレクトすることもできます。その場合、［式］欄に式番号を指定し、実行時に有効なファイル名が返る式を定義します。
• C= コンソール……この設定では、出力内容が画面表示用にフォーマットされ、コンソー
ルにリダイレクトされます。ファイルは、Magic 内部に定義されている特殊なウィンド
ウを使用して表示されます。ウィンドウの表示領域は、Magic の MDI ウィンドウの寸法に従って定義されます。フォームの幅が MDI ウィンドウの幅を超える場合、ウィンドウの幅はフォームの幅と同じになります。
• F= ファイル……入力、出力いずれかのディスクファイルを定義します。ファイルのパスと名前は、式で指定します。
• R= リクエスタ……このリクエスタの入出力装置は、コールリモート処理コマンドやイ
ンターネットリクエスタが起動するアプリケーションのバッチタスクによって使用されます。この出力結果は、それをオープンしたタスクの終了と同時に、呼び出し元のタスクまたは Web ブラウザに送り返されます。
• D=XML ダイレクトアクセス……XML 関数（XMLCnt、XMLExist、XMLFind、XMLGet）
を使用することによって問い合わせることのできる XML ファイルを開く場合に使用します。
• V= 項目……「式」欄には BLOB 項目を指定します。入出力ファイルを使ってテキスト
項目の送受信する場合に使用します。このオプションは、XML ファイルの保存や変換用としても使用できます。
［アクセス］欄を「R= 読込」にした場合、XMLCnt、XMLExist、
XMLFind、XMLGet、XMLInsert、XMLModify 関数で使用できます。
「GUI 形式プリンタ」、「テキスト形式プリンタ」、「コンソール」、「リクエスタ」の各欄では、必ずしも式を定義する必要はありません。

プリンタ
この欄は、
［メディア］欄の値として［GUI 形式プリント］または［テキスト形式プリント］を指定した場合にのみ関連します。ここでは、［プリンタ］テーブルに定義されている論理プリンタのいずれかを指定します。
詳細は、第 2 章「設定」を参照してください。

リファレンス
Magic eDeveloper V9 Plus247

第 6 章 - プログラム

図 6-7 プリンタ一覧

デフォルトとして、［プリンタ］テーブルに定義されている最初のプリンタの名前が表示されます。別のプリンタを選択するには、この設定をダブルクリックして［プリンタ一覧］を表示し、必要なプリンタを選択するか、あるいはプリンタの名前を直接入力します。
実行時には、さまざまなエラー状態を示すエラーメッセージが表示されることがあります。たとえば、「プリンタが接続されていません」、「プリンタの電源が入っていません」、「プリンタが選択されていません」、「用紙切れです」といったメッセージがあります。プリンタエラーメッセージが表示されると、続いて［中断しますか？］ダイア
ログボックスが表示されます。ここで「Yes」を選択すると、プログラムはデータの最後まで処理が実行された後、処理が終了します。このほかの処理はすべて無視されます。同時に、そのファイルに対する EOF（ファイル終了）ステータスが設定されます。
EOF ステータスは、EOF 関数を使った［タスクの終了条件］式を設定することによって、タスクの処理を終了するのに使用されます。
［中断しますか？］ダイアログボック
スで「No」を選択した場合は、印刷処理が再試行されます。しかし、エラーが解消されていない場合は、再び［中断しますか？］ダイアログボックスが表示されます。

アクセス
ファイルを開くときのモードを定義します。
指定できる値は以下のとおりです。
• R= 読込……ファイルを［読込］モードで開きます。ファイルに対する［データ入力］
コマンドを［処理］テーブルで定義した場合にこのモードを指定します。読込アクセ
スの入出力ファイルに対する［データ出力］コマンドは無視されます。
• W= 書出……ファイルを［書出］モードで開きます。ファイルに対する［データ出力］
コマンドを［処理］テーブルで定義する場合にこのモードを指定します。書出アクセスの入出力ファイルに対する［データ入力］コマンドは無視されます。
名前が式によって定義され同名のファイルがすでに存在する場合は、このファイルの内容は上書きされます。
• A= 追加……ファイルを［書出］モードで開きます。ファイルに対する［データ出力］
コマンドを［処理］テーブルで定義する場合にこのモードを指定します。
同名のファイルがすでに存在する場合、このファイルの末尾に追加されます。

248

リファレンス
Magic eDeveloper V9 Plus

入出力ファイルテーブル

フォーマットこの特性では、出力ファイルへ自動的に書き出す制御文字、あるいは入力ファイル中で予期される制御文字を定義します。
フォーマットで設定可能な値は以下のとおりです。
• P= ページ……「改ページ」制御文字がページの終わりに、また「改行」制御文字が行の終わりに付加されます。
• L= ライン……「改行」制御文字が行の終わりに付加されます。
「改ページ」制御文字は付加されません。
• N= なし……「改行」「改ページ」制御文字が付加されません。

式／項目
実行モードで使用する式テーブル内の式の番号を定義します。この式は、オペレーティ
ングシステムファイル名となります。オプションとして、ファイル名にサーバやパスを含めたり、式に論理名を使用することもできます。このような場合は、Magic では指定された条件に従って、読み込みまたは書き込みが行われます。式は、タスク初期化段階で評価されるため、タスク内では動的に変更できません。
［メディア］カラムが「V= 項目」の場合、ここには項目の番号を入力します。項目一覧にズームして選択することもできます。Blob 項目のみ指定できます。

ダイアログ（印刷ダイアログ用）「ダイアログ」カラムの有効な値は、「Yes」、「No」、または「式」のいずれかです。［ダイアログ］特性は、メディアが「GUI 形式プリント」の場合にのみ有効で、タスクが入出力ファイルを開いたときに、Windows の［印刷］ダイアログを表示するかどうかを指定します。ここで、エンドユーザが印刷特性を変更できます。「No」を指定すると、Windows の印刷ダイアログは表示されず、印刷特性はエンドユーザの操作なしでプリンタに直接送られます。式を使用して、Yes/No の設定を動的に選択できます。［印刷］ダ
イアログ設定のデフォルト値は「No」です。

行
この欄は、［フォーマット］欄の設定が［ページ］のときで、［メディア］欄の設定が［テキスト形式プリント］または［コンソール］の場合のみ有効になります。
この欄には、出力ファイルの 1 ページあたりの行数、つまり 2 つの連続する改ページと改ページの間の行数を指定します。デフォルト値は使用するプリンタによって異なります。詳細については、第 2 章「設定」の「［プリンタ］テーブルの設定欄」を参照してください。デフォルト値は「0」で、出力ページは 60 行です。これには、ヘッダ領域（3行）とフッタ領域（3 行）が含まれます。
［タスク制御］の［入出力ファイル］を「Yes」に設定しておくと、実行モードのときに［入出力ファイル］テーブル内で行数をエンドユーザが変更できます。

リファレンス
Magic eDeveloper V9 Plus249

第 6 章 - プログラム

入出力特性
用紙サイズ
［用紙サイズ］によって、グラフィックプリンタに用紙サイズを指定できます。

ページヘッダフォーム［ページヘッダフォーム］は、ページヘッダとして使用するフォームを、フォームテーブ
ルから指定します。このフォームは、新しいページが印刷されるたびに、ページヘッダ
として自動出力されます。

ページフッタフォーム［ページフッタフォーム］は、ページフッタとして使用するフォームを、フォームテーブ
ルから指定します。このフォームは、新しいページが印刷されるたびに、ページフッタ
として自動出力されます。

部数［部数］は、グラフィックプリンタで印刷されるコピーの部数を指定します。
［部数］は、［メディア］欄で［GUI 形式プリント］が選択されている場合のみ有効です。

式［式］には、式テーブルに定義されている式の番号が入り、グラフィックプリンタで印刷されるコピーの部数を動的に指定することができます。
［部数］と［部数式］は、同時に有効にすることはできません。

印刷方向：縦方向、横方向［印刷方向］は、グラフィックプリンタで、用紙を「縦」あるいは「横」のどちらの方向で印刷するかを指定します。
入出力特性の［用紙サイズ］、［印刷方向］および［部数］の指定より、MGPRN ユー
ティリティでの指定が優先されます。

印刷プレビュー
［印刷プレビュー］は、プリンタの出力先を Magic の印刷プレビューシステムに変更します。有効な値は［Yes］、［No］です。論理結果を返す式も使用できます。印刷プレビュー
システムを使用すると、エンドユーザは帳票の出力内容をプレビュー表示で確認してから印刷することができます。この場合、出力開始時に指定されたプリンタに印刷されます。
［印刷プレビュー］は、「GUI 形式プリント」を選択している場合のみ使用できます。
• Windows98 上で、多量の印刷プレビューを行ったりイメージを含むプレビューを行ったりして、リソースまたは仮想メモリが不足すると警告メッセージが表示されます。
• プレビュー表示では、プリンタ固有のマージンの設定を考慮しておりません。このため、左右上下の余白部分が実際の印刷結果と異なります。

250

リファレンス
Magic eDeveloper V9 Plus

ソートテーブル

使用する入出力名［使用する入出力名］を使用すると、現在のプログラムで使用する入出力ファイルを別のプ
ログラムでオープンされた入出力ファイルから指定できます。
この設定をダブルクリックして［式］テーブルを開き、入出力ファイルの名前を求める
式を入力します。実行時には、この設定に指定した名前の入出力ファイルが検索されます。ファイルが検出された場合は、現在のタスクで使用されます。
なお、帳票の印刷の場合、最初に入出力ファイルを開いたタスクからページヘッダとフッタが印刷されることに注意してください。また、自動的に印刷されるのは、現在印刷中のタスクのヘッダフォームだけです。最初に入出力ファイルを開いたタスクのヘッダは自動的に印刷されません。

使用する文字セット
この特性は、メディアとして［ファイル］を選択している場合にのみ関係します。
この特性を［ANSI］に設定すると、文字セットの変換は行われません。Magic では内部
的に ANSI 文字コードが使用されているためです。
この特性を［OEM］に設定した場合は、OEM2ANSI 変換ファイルを使用して、ANSI から OEM にデータが変換されます。ファイルが定義されていない場合は、オペレーティン
グシステムのコード変換ルーチンを使用してコード変換が行われます。
Ver8.2 以前で、
［メディア］を［S= 標準ファイル］にして出力しているプログラムは、［OEM］。
［I= 内部ファイル］にして出力しているプログラムは、［ANSI］にしてください。

ソートテーブル
ソートテーブルは、以下のものからなる複合ウィンドウです。
• ウィンドウの左側にあるセグメントテーブル• ウィンドウの右側にある項目一覧

セグメントテーブルのカラム
セグメントがテーブル内に表示される順序は、大から中、小と、この順序で、ソート順が決まります。
Magic で使用できるそれぞれのデータベースには、たとえば、セグメントの個数やインデックスに使用できる最大サイズなどに関する固有の制限がある場合があります。ソー
トファイルを作成するには、［動作環境］ダイアログにある［ソート / 一時用データベース］を使用します。
SQL データベースでのソートでは、［RDBMS によるソート］機能を使用できます。詳細
については、この章の「ソートテーブル」にある「RDBMS によるソート」を参照してください。
次に示されるガイドラインに準拠して、セグメントを定義してください。

#（セグメント識別子）
この番号には自動生成された順序番号が含まれ、セグメント識別子として Magic で使用されます。この特性を編集することはできません。

項目
セグメントとして使用する実データ項目または変数項目の文字識別子。
リファレンス
Magic eDeveloper V9 Plus251

第 6 章 - プログラム
文字識別子を入力するか、右側にある［項目一覧］にズームして、データ項目を選択します。［項目一覧］がら［カラム］テーブルにズームして、補足情報を取得できます。

項目名
この特性には、セグメントとして選択されたデータ項目の名前が表示されます。この特性を編集することはできません。

サイズ選択されたデータ項目の属性が文字型の場合のみ、この特性を変更して、セグメント項
目の中でソートの対象となるデータの最大サイズを短縮することができます。デフォル
トでは、データ項目のサイズがそのまま設定されます。
この特性は、パフォーマンスとメモリを考慮するためのものです。ソートの対象となる有意な文字数が、項目のサイズよりも小さいことがわかっている場合には、必要なだけのデータ長を対象としてソートすることにより、インデックスセグメントを短くすることができ、インデックス空間の利用率が高まるため、ソート処理は速くなり、ソートファ
イルが小さくなります。
SQL データベースでは、フィールドの一部でのソートをサポートしていません。

順
この特性は、ソートの方向を指定します。

ソートタイプこの特性では、ソートで使用するカラムがユニークであることを Magic に通知できます。
これは、テーブル特性の位置の値を SQL テーブルの ORDER BY 句に加える必要はないということを Magic に通知する設定です。
• ユニーク ……ソートで使用されるカラムは一意。SQL ゲートウェイは、位置の値を
ORDER BY 句に追加しません。
• インデックスに依存 ……既知のすべてのインデックスをスキャンして、ソートの一意性を判別します。ソートセグメントに一意的なインデックスが含まれている場合、ソートは一意と定義されます。そうでない場合は、ソートは一意でないと定義されます。
デフォルト値は「インデックスに依存」です。

RDBMS によるソート
SQL データベースを使用する場合、RDBMS エンジンは ORDER BY 句を使用して、行を動的にソートすることができます。このとき、ISAM ファイルで要求されているインデックスを定義する必要はありません。プログラムでのソートの定義方法は変わりませんが、メインテーブルと結合テーブルの一部としてすべてのカラムがソートされると、RDBMS
でソートできるようになります。RDBMS でソートすることができない場合、Magic では
MAGIC.INI ファイルで定義されているソートデータベース内の一時ファイルを使用して行をソートします。
タスクでのソート方法はこのテーブルの仮想インデックスの定義方法と同じです。さらに、このソート方法は追加仮想インデックスを定義する必要性を最小限に抑え、エンド
ユーザからのインデックスの要求を満たします。
ソートを定義すると、Magic ではタスクの SELECT 文を再発行します。そして、次の条件が満たされていると、インデックスに準拠して生成された ORDER BY 句をソートで使用されるカラム名に置き換えます。
ソートセグメントはすべてメインテーブル、またはリンク内部結合、リンク左外部結合
テーブル中のカラでなければなりません。それ以外の場合、RDBMS によるソート機能は使われず、一時ソートファイルが作成されます。

252

リファレンス
Magic eDeveloper V9 Plus

イベントテーブル
すべてのソートセグメントは、RDBMS でソート可能なデータ型であること。たとえば、
MS-SQL では BIT データ型をソートすることはできません。そのため、データベース内
で BIT にマッピングされるソートセグメントを使用してソートするときには、RDBMS によるソート機能は使用されず、MAGIC.INI ファイルで定義されたソートデータベースを使った一時ソートテーブルを作成します。
Magic では、常に一意の ORDER BY 句が必要となります。ORDER BY 句が一意であると指定しない場合や、Magic でソートセグメントの組み合わせが一意であると決定できな
い場合、位置インデックスセグメントが ORDER BY 句に追加されます。
最終的に ORDER BY 句となるソートを定義すると、RDBMS オプティマイザはインデックスを使用せずにクエリを実行しますが、さらに効率的な方法でクエリを実行するために異なるアクセス方法を使用した方が良い場合があります。
外部結合テーブルのカラムをソート項目に指定した場合に ORDER BY 句に付加されるのは、物理トランザクションモードの時のみです。

イベントテーブル
それぞれのタスクにおいて、ユーザ定義イベントが発生したときに、アプリケーション
内で処理されるように定義できます。
ユーザ定義イベントは、アプリケーションにおける論理的定義です。たとえば、「顧客の追加」というイベントを定義できます。イベント定義はそれ自体、アプリケーションに影響を与えるものではありません。この論理的定義では、このような論理的発生に対する処理を定義できます。

イベントテーブルのカラム#
この番号には自動生成された順序番号が含まれ、イベント識別子として Magic で使用されます。この特性を編集することはできません。

名前
これはイベントの説明的な名前です。イベント名は、ハンドラを定義する際に、その対象となるイベントを選択するのに使用されます。

タイプ
イベントのトリガとして使用する、事前定義されたイベントタイプです。
この特性の有効なオプションは次のとおりです。
• S= システム• I= 内部• T= タイマー• E= 式• N= なし
トリガタイプが［N= なし］（トリガなし）に設定されている場合、このイベントは［イベント実行］コマンドかプッシュボタンコントロールの［実行イベント］特性に定義されている場合のみ発生します。
「ユーザイベント」のように開発者が任意に定義することのできるイベントです。

リファレンス
Magic eDeveloper V9 Plus

253

第 6 章 - プログラム

トリガ
この特性は、トリガタイプを［なし］以外の値に設定した場合のみ適用されます。このカラムをダブルクリックすると、ユーザ定義イベントを発生させるトリガを定義できます。
• システム ……［キー設定］ダイアログが表示され、そのイベントをトリガするキーの組
み合わせを入力できます。
• 内部 ……［Magic アクション一覧］が表示され、そこから Magic のアクションを選択できます。
• タイマー……時間間隔を設定できます。
• 式 ……ダブルクリックして［式］テーブルを表示し、必要な式を定義したり選択したりすることができます。

強制終了
この特性では、定義したイベントのハンドラを実行する前に、強制終了するレベルを定義できます。
• N= なし ……Magic エンジンは、どのレベルに対しても終了しません。ハンドラはエンジ
ンフローの実行点に到達した時点で常に実行されます。
• E= 編集 …… イベントを実行する前に既存のコントロールの編集モードを終了します。
Magic エンジンは、以下の順番に処理を実行します。
1. 編集モードを終了します。
2. 編集項目の内容を更新します。
3. 更新された項目に関係する全ての値を再計算します。
4. データが変更されたら「コントロール変更」ハンドラを実行します。
5. イベントハンドラを実行します。
6. コントロールの編集モードに戻ります。
実行されたハンドラ内でコントロール項目を参照する場合、その項目は編集された値として参照されます。
このオプションはエディット、リッチエディット、およびリストボックスコントロー
ルで有効で、編集状態の時に項目の内容と異なる値の場合に更新されます。
• C= コントロール ……イベントを実行する前に現在のコントロールレベルを終了します。
Magic エンジンは、以下の順番に処理を実行します。
1. 編集モードを終了します。
2. 編集項目の内容を更新します。
3. 「コントロール変更」ハンドラを実行します。
4. 「コントロール検証」ハンドラを実行します。
5. イベントハンドラを実行します。
6. 「コントロール前処理」ハンドラを実行します。
7. コントロールの編集モードに戻ります。
• R= レコード……イベントを実行する前に現在のレコードレベルを終了します。Magic エンジンは、以下の順番に処理を実行します。
1. 編集モードを終了します。
2. 編集項目の内容を更新します。
3. 更新された項目に関係する全ての値を再計算します。
4. 「コントロール変更」、「コントロール検証」及び「コントロール後」ハンドラを実行します。
5. レコードが変更された場合、「レコード後」ハンドラを実行します。

254

リファレンス
Magic eDeveloper V9 Plus

範囲と位置付ダイアログ
6. レコードが変更された場合、テーブルのレコードを更新します。
7. イベントハンドラを実行します。
8. 「レコード前」ハンドラを実行します。
9. 「コントロール前」ハンドラを実行します。
10. コントロールの編集モードに戻ります。

公開イベント名
メインプログラムでのみ指定できます。イベントをコンポーネント化する場合に指定します。アプリケーション内でユニークな名前を指定してください。

公開
メインプログラムでのみ指定できます。このチェックボックスを選択すると、コンポー
ネントプログラムからイベント実行処理コマンドの公開イベントオプションを使用することで、このイベントを呼び出すことができます。この場合、［公開イベント名］も指定する必要があります。

範囲と位置付ダイアログ［範囲 / 位置付］ダイアログを使用して、タスクでデータビューに入るレコードの範囲を指定したり、タスク開始時に特定のレコードに位置付けする指定などができます。
［範囲 / 位置付］ダイアログは、次の 2 つのタブから構成されています。
• ［範囲 / 位置付］タブ• ［SQL Where 句］タブ

［範囲／位置付］タブ
範囲式：0（デフォルト）
範囲式は、タスクのデータビューを指定する手段の 1 つです。データビューには、タスクの［セレクト］コマンドに指定された「範囲下限」式または「範囲上限」式に基づいて、処理対象となるレコードが高速に絞り込まれた後、「範囲式」によって、任意の式を使ってより複雑で動的な条件を適用することができます。範囲式は、取得したレコードごとに評価されます。
• 範囲式が「True」の場合、その行はデータビューに含まれません。
• 範囲式が「False」の場合、その行は処理の対象となりません。
• 範囲式が指定されていない（範囲番号が「0」）場合、結果は「True」となる。
範囲式は、次の場合に要求されます。
1. 範囲基準が、タスクの初期化時点で使用できない変数の値に依存する場合。
2. 範囲基準が、［セレクト］コマンドの［範囲下限］と［範囲上限］だけで定義できな
いような複雑な場合。
範囲式はデータベースには送られません。Magic では、データベースから取り込まれたレコードをフィルタリングします。

リファレンス
Magic eDeveloper V9 Plus255

第 6 章 - プログラム

範囲順序：A= 昇順（デフォルト）［範囲順序］欄は、データビューに含める行の範囲の取得方向を、先頭行から始まる昇順にするか、または最後の行から始まる降順にするかを決定します。

位置付式：0（デフォルト）
位置付式は、タスクの実行を開始する際に、データビューが特定のレコードから始まる
ように位置付ける場合に使用します。タスクが開始されると、Magic では、位置付式で「True」と評価されるレコードが現れるまで、データビューが先頭からスキャンされます。
「True」と評価されたレコードは取り出され、カーソルがそのレコードの上に置かれます。
方向キーを使用してデータビュー内の前後に移動することができるようになります。
• ［位置付式］欄は、オンラインタスクとブラウザタスクに関係します。
• ［位置付式］欄は、位置付け条件が 1 つの連続する範囲に限られない場合のような、検索条件が複雑な場合に使用してください。その他の場合は、［セレクト］コ
マンドの［範囲下限］または［範囲上限式］を使用した方が、処理速度が速くなります。
• ［位置付式］に含まれるすべての項目は、タスクの初期化時に評価されるため、特性の項目、または上位タスクの項目しか含まれない場合があります。
• ［位置付式］が指定されていない場合、カーソルは取得された最初のデータビューの行に配置されます。
• オンラインタスクの開始時にデータビューの開始レコードが見つからない場合は、警告メッセージが表示され、カーソルがデータビューの先頭レコード、または次の直近値（存在する場合）に配置されます。

位置付順序：A= 昇順（デフォルト）
この欄は、データビューのレコードを決定する際の検索方向を、先頭行から始まる昇順にするか、または最後の行から始まる降順にするかを決定します。特定の基準に一致した最後のレコードが必要な場合は、降順を指定します。たとえば、データビューを日付でソートするときに、［位置付順序］を「D= 降順」を使用して、この日付の最終トラン
ザクションに位置付けします。
［位置付順序］欄は、［位置付式］または［範囲下限］/［範囲上限］基準がなくても使用できます。

ポジション：0（デフォルト）位置に従ってレコードを表示したり、特定位置から開始される一連のレコードを表示することができます。この項目は、タスクのメインテーブルのみに設定できます。リンク
テーブルでは、位置に従った範囲の指定や位置付けはできません。
この特性には BLOB 式を使用して、タスクを開始または位置付ける先頭レコードの位置を示すことができます。
［ポジション］はタスクのメインテーブルのみに有効です。
この欄には、BLOB 型にレコード位置を返す式を使用します。
Magic V9 Plus では、レコード位置を返す関数として、次の 2 つがあります。
• CurrPosition……現在のタスクのメインテーブルの現在のレコードの内部の位置を返します。
• ErrPosition……エラーが発生したレコードの位置を取得します。
これらの関数の詳細については、第 9 章「関数」を参照してください。

256

リファレンス
Magic eDeveloper V9 Plus

範囲と位置付ダイアログ

方法［方法］欄は、［ポジション］欄が「0」以外の場合のみ有効になります。いったん［ポジション］を選択すると、次のオプションから［方法］欄を選択できるようになります。
• O= このポジションで絞り込む……特定のレコードのみが表示されます。
Magic では get current コマンドが実行され、open cursor コマンドは実行されません。
（デフォルト）• F= このポジションから開始する……開始位置レコードからすべてのレコードが表示されます。Magic では、この位置を開始位置として、open cursor コマンドが実行されます。
上記２つの範囲オプションでは、選択処理コマンドの範囲、タスクの範囲式、および
この条件の間に、AND 演算子が使用されます。
また、このレコードが存在しない場合、レコードは何も表示されません。
• L= このポジションに位置付ける……他のすべてのタスク範囲に応じて、すべてのレコー
ドが表示され、特定の位置のレコードにカーソルが置かれます。
［セレクト］コマンドの位置付け、タスクの位置付け式、およびこの条件の間には、AND 演算子が使用されます。
このレコードが存在しない場合、位置付けコマンドは失敗し、「該当するレコードがありません - 先頭に位置付けます。」という警告メッセージが表示されます。

［SQL Where］タブ
Magic SQL 式：0（デフォルト）DB SQL Where 句は、遅延トランザクションで実行されるタスクには使用できません。遅延トランザクションに SQL Where 句を使用するためには、［Magic SQL］と呼ばれる新し
い範囲で定義します。
この範囲は、1 つの点を除き、既存の DB SQL Where 句と変わりません。異なる点は、この範囲の定義に Magic の式のサブセットが使用されるという点です（既存の DB SQLWhere 句にはフリー形式のテキストが使用されます）。Magic エンジンで SQL に変換できる式だけを含めることができます。
たとえば、次の場合を想定します。
A は Employee.BirthDate という DB 名の実カラムだとします。ここで［Magic SQL 式］を
A = Date（）と記述すると、［Where 句の全体表示］領域には次のように表示されます。
Employee.BirthDate = Date （）（テーブル名はリンク結合が発生した場合のみ追加されます）
ここでは、DB 専用の関数ではなく、Magic の Date 関数が使用されていることに注意してください。
この関数は、Oracle データベースの場合、実行モード時に次のように変換されます。
TO_Date （Employee.BirthDate, 'DD-MON-YY'） = TO_DATE （SYSDATE,'DD-MON-YY'）
MS-SQL Server の場合は、次のように変換されます。
CAST （CONVERT （CHAR, Employee.BirthDate,112） AS DATETIME） =CAST （CONVERT （CHAR, GETDATE （） ,112） AS DATETIME）
2 つの異なる DB に対し、同じタスクが式のプログラムを変更せずに実行されています。
このように、Magic では、データベースごとに、［Magic SQL 式］が適切な SQL の WHERE
句に変換されます。
リファレンス
Magic eDeveloper V9 Plus257

第 6 章 - プログラム

Magic の SQL 関数
文字関数
Len、Lower、Upper、LTrim、RTrim、Trim、MID、InStr、&、LIKE
日付関数
Date、Time、AddDate、AddTime、Year、Month、DAY、Hour、Minute、Second、Str、Val
算術関数+,-,*,/,
論理関数
OR、AND、NOT
比較演算子=,<,<=,>,>=,NULL 関数
NULL、ISNULLDB SQLDB SQL は、Magic Ver8 で導入された SQL Where 句と同じ機能を持ちます。この機能は、SQL テーブルがメインテーブルに設定されている物理トランザクションモードのタスクに使用できます。遅延およびネスト遅延トランザクションモードのタスクには、この機能は使用できません。
DB SQL 機能の目的は、プログラマーが SQL タスクを使用しなくても、Magic で自動的に生成された Where 句のほかに、SQL 専用の Where 句も使用できるようにすること、また、Magic で生成された Full Where 句を表示できるようにすることにあります。
これは、Magic のカラムを使用して、SQL プログラムに基づく範囲を記述するためのイ
ンタフェースです。記述された範囲は、［レコードメイン］で定義された Magic Where 句に追加されます。
［DB SQL］欄でダブルクリックすると［項目一覧］が表示されます。ここには、［DB SQL］
特性に使用できるすべてのデータ項目が表示されます。
• メインテーブルおよび結合テーブルの実データ……DB カラム名に置き換わります。
• 親タスクのデータ項目……親タスクの値に置き換わります。
• 現在のタスクの変数項目とその他の実データ……それぞれの値に置き換わります。
DB SQL は、DB SQL Where 句が記述されているフリーテキストを参照します。
［DB SQL］
領域には、2 種類の文字列を記述できます。詳細は次のとおりです。
• 項目番号（A、B、C など）の先頭に ':' 記号を付けて記述
このカラムがメインテーブルまたは結合テーブルである場合は、その DB カラム名に置き換わります。その他の場合は、属性に応じた値に置き換わります。文字型カラムの場合は、末尾の空白が削除され、引用符が付加されます。
• 項目番号（A、B、C など）の先頭に '@' 記号を付けて記述
メインテーブルまたは結合テーブルの実データでなく型が文字型の場合この方法を使います。この場合、カラムが値に置き換わりますが、引用符は付加されません。
Magic では、カラムをその内容で置き換えるとき、カラムの属性と記憶域がチェックされ、文字型の場合のように、必要に応じて引用符が付加されます。文字列カラムに引用符が付加されないようにして、記述するプログラムのすべての種類を有効にするには、@記号を接頭辞としてカラムに追加する必要があります。
たとえば、次の場合を想定します。
Employee. jobname という DB 名の実データ A と、Vjobname という名前で、実行モード時の値が「AB」の変数の文字型カラム B があるとします。このとき、DB SQL に

258

リファレンス
Magic eDeveloper V9 Plus

範囲と位置付ダイアログ:A like 'B%'と記述すると、次のように表示されます。
Employee. jobname like'B%'（テーブル名はリンク結合が発生した場合のみ追加されます）
実行時の変換結果は、次のようになります。
jobname like 'B% 'また、DB SQL に:A like :B と記述すると、表示は次のようになります。
Employee. jobname like［"Vjobname"］（テーブル名はリンク結合が発生した場合のみ追加されます）
実行時の変換結果は、次のようになります。
jobname like 'AB'
次に、Voperation という記述（名前）で、実行モード時の値が「like」の変数項目 C があったとします。DB SQL に:A @:C :B と記述すると、次のように置き換わります。
jobname ［Voperation］［" Vjobname"］
実行時の変換結果は、次のようになります。
jobname like'AB'

Where 句の全体表示［DB SQL］欄で指定された Where 句は、Magic で生成された SQL 文で使用されるとおりに、［Where 句の全体表示］領域に表示されます。画面の下部の［表示］ボタンをクリッ
クすると、［Where 句の全体表示］が更新されます。
［Where 句の全体表示］は、次の 3 つの部分で構成されます。
1. ［セレクト］コマンドの範囲と［結合／外部リンク］コマンドで構成される［レコードメイン］の Where 句の式。
2. AND 句と共に括弧内に挿入され、［レコードメイン］範囲に連結される Magic SQL
Where 句。
3. AND 句と共に括弧内に挿入され、［レコードメイン］範囲に連結される DB SQLWhere 句。遅延トランザクション内でタスクを実行している場合、DB SQL Where 句は無視されます。Where 句のこの部分は、タスクトランザクションモードが遅延またはネスト遅延以外の場合のみ追加されます。
カラムリストのカラムはすべて、Where 句で置き換わります。メインテーブルおよび結合テーブルの実データは、'Column DB name' または 'A column DB name' 書式に置き換わ
り、変数項目はそれぞれの名前に置き換わります。

Magic SQL Where と DB SQL Where の機能
タスクにデータビューが作成されると、Magic では WHERE 句を使って SELECT 文が生成されます。
• WHERE 句の最初の部分は、［レコードメイン］の選択処理コマンドの範囲大小に基づいています。
• WHERE 句の 2 番めの部分は、［結合／外部リンク］コマンドです。
リファレンス
Magic eDeveloper V9 Plus259

第 6 章 - プログラム• 3 番めの部分は Magic SQL Where で、すべての SELECT 文に追加されます。
• 4 番めの部分は DB SQL Where で、すべての SELECT 文に追加されます。
• カラムの値は、タスクの入力時に 1 度だけ計算され、再計算は行われません。
SQL Where が使用されないのは、Magic で内部の Get Current および「フック処理（ロック方式で制御）」の SELECT 文が生成される場合だけです。これらの処理コマンドでは、
位置インデックスによって行が取得されるので、SQL Where は不要になります。

Magic SQL Where と DB SQL Where の使用上の考慮事項• SQL Where 句は、タスクの実行開始時に評価され決定します。この時には、カレントタ
スクのデータ項目はまだ初期化されていないので、呼び出しタスクから渡されるパラ
メータ項目以外はデフォルトの値（文字型は空文字、数値型は 0）となっています。従って、Where 句の中で使われる「:v」の形式でのパラメータは、パラメータ項目か、あるいは親タスクのデータ項目しか使うことができません。
• ［BLOB 型］および［メモ型］項目は、SQL Where 句には使用できません。
• Magic は SQL Where 句をプログラムチェック対象にしていません。したがって、無効な
SQLWhere 句を使用すると、実行時に RDBMS からエラーメッセージが発行される場合があります。
• Magic では、SQL Where で使用される各カラムの型はチェックしません。各型が SQL
Where 文字列の対応位置に連結される文字列に変換されます。したがって、型を適切に使用することが重要になります。
• ［結合リンク］コマンドが使用された場合は、テーブル名にエイリアスが使用されます。
したがって、［Table1.Column1］の代わりに、［A.Column1］が使用されます。カラム名が含まれる DB SQL に文字列が記述された場合は、そのテーブルに対応するエイリアスがカラム名の先頭に付加されます。
• 末尾の空白は削除されます。
• DB SQL Where 範囲および Magic SQL Where 範囲は、タスク前処理の前に 1 度だけ計算されます。

タスク定義ウィンドウ［タスク定義］ウィンドウは、以下のものからなる複合ウィンドウです。
• ［処理レベル］テーブル……［ハンドラ］テーブルとも呼びます。ウィンドウ上部にある
実行ハンドラのテーブルです。
• ［処理］テーブル……現在強調表示になっているレベルに対応するウィンドウ下部のテーブルです。
［処理］テーブルのタイトルには、処理が関連付けられている実行レベルの名前が表示されます。

処理レベルテーブルの構造
すべてのタスクには、レコード前処理、レコードメイン、およびレコード後処理からなるレコードレベルハンドラと、タスク前処理およびタスク後処理からなるタスクレベル
ハンドラがあります。さらに、コントロール前処理またはコントロール後処理などの「コントロールレベル」と、イベントをトリガとする「イベントハンドラレベル」もサポートされます。バッチタスクでは、更に、「グループレベル」も設定できます。
• レコードメインは、タスクのデータビューの定義に使用されます。
• レコード前処理、レコード後処理、タスク前処理、タスク後処理、コントロール前処理、および後処理の処理テーブルが空の場合があります。
• コントロールレベルのハンドラは、レコードレベルのハンドラの後に続きます。コント
ロール前処理には、特定のコントロールに挿入点が移動したときにエンジンによって実行される処理を定義し、コントロール後処理では、特定のコントロールから挿入点が離れるときにエンジンによって実行される処理を定義します。

260

リファレンス
Magic eDeveloper V9 Plus

タスク定義ウィンドウ• イベント ハンドラレベルは、タスクレベルとレコードレベルの間、またはレコードレベ
ルの後に定義でき、特定のイベントが発生した場合、それをトリガとして実行される処理を定義します。
• バッチタスクでは、「グループレベル」というレベルを定義することができます。グルー
プレベルは、主にレポート出力タスクなどで、特定のカラムの値によってレコードのグ
ループ化を行い、レコードグループごとに小計などの統計処理を行い出力するような場合に用いられます。ひとつのタスクに複数のグループレベルを定義することができ、それぞれのグループレベルには、レコードをグループ化する基準となるカラム（グループ項目）が設定されます。Magic エンジンはひとつのレコード処理を終えて次のレコードに移るとき、現在のレコードと次のレコードのグループ項目の値を比較して、違いがあった場合に、グループレベルの処理を行います。
一番大きなグループ（最も発生頻度の少ないもの）は、テーブル内のタスクレベルの直下に配置し、小グループ（最も発生頻度の大きいもの）は、テーブル内のレコード前処理の直前に、最後のグループレベルとして配置します。
レベルの内容とその実行フローとの関係の詳細については、第 5 章「Magic アプリ
ケーションエンジン」を参照してください。

処理レベルテーブルのカラム

図 6-8 処理レベルテーブル#
ここには、処理レベルの順序番号が表示されます。

レベル
処理レベル（タスク、レコード、グループ、ハンドラ，コントロール）を表します。

リファレンス
Magic eDeveloper V9 Plus261

第 6 章 - プログラム

イベント
コントロールレベルでは、前処理か後処理かを選択します。イベントハンドラレベルには、
トリガとなるイベントを定義します。タスクレベルまたはレコードレベルの場合、「イベン
ト」欄は、前処理、後処理、メインなどに固定されており、変更できません。イベントト
リガには次のものがあります。

コントロールイベント• R= 前処理……カーソルがコントロールに移動する前に処理が実行されます。
• S= 後処理……カーソルがコントロールから移動した後に処理が実行されます。
• V= 検証……カーソルがコントロールから移動したり、高速モードで通過した時に処理が実行されます。
• C= 変更……コントロールに対応した項目が変更された時に処理が実行されます。

ハンドライベント• S= システム……キー操作の組み合わせをトリガとするイベント• I= 内部……アクション一覧に定義されている Magic の内部イベント• T= タイマ……定義された間隔で発生するイベント• E= 式……式が「True」と評価された場合にトリガされるイベント• U= ユーザ……イベントテーブルで定義されているイベント• R= エラー……データベース処理の際にデータベースエラーが発生したときに発生するイベント• X=ActiveX……COM オブジェクトによって発行されたイベント
最初に開いた時のイベント設定ダイアログのイベントタイプは「U= ユーザ」ですが、二度目以降に開いたイベント設定ダイアログのイベントタイプは、直前に指定したイベン
トタイプが設定されます。
[ イベントタイプ ] 欄から［イベント］欄にカーソルを移動する際、[ イベント ] 欄が空白の場合、自動的にズームが実行されます。イベントタイプによってオープンされる選
択一覧の表示は以下のようになります。
• S= システム…… キー定義ダイアログ• I= 内部……アクションダイアログ• U= ユーザ…… イベント一覧• T= タイマー…… なし• E= 式…… 式定義ダイアログ• R= エラー…… エラー一覧

詳細
グループレベル
このレベルは、バッチプログラムでのみ有効です。
［詳細］カラムでズームして、［項目一覧］より項目を選択してください。

コントロールレベル
コントロールレベルハンドラについては、このハンドラが実行されるコントロールを指定します。この項目からコントロール名リストをズームすると、フォームに定義されているコントロールの名前の一覧が表示されるので、そこから対象となるコントロールを選択します。

262

リファレンス
Magic eDeveloper V9 Plus

メインプログラム

ハンドラレベル
コントロールレベルと同様に、コントロール名リストからコントロールを選択します。
コントロールを指定すると、挿入点がこのコントロールにある場合にだけ、このイベン
トハンドラが有効になります。
コントロールレベルとは異なり、「コントロール」パラメータは必須ではありません。特定のコントロール名が指定されていない場合、挿入点がどのコントロールにあっても、このハンドラが有効になります。

エラーレベル
エラーレベルについては、次の 2 種類の詳細を定義できます。
• 対応……一覧からエラー処理後に Magic エンジンで実行すべき処理を選択します。
• メッセージ …… Magic のデフォルトのエラーメッセージを表示するかどうかを、
「Yes」
、
「No」
、あるいは論理値の「式」により指定します。

スコープ
スコープは、イベントハンドラの有効範囲を決めるもので、次の中から選択します。
• T= タスク……イベントハンドラは現在のタスクのみで有効です。イベントがサブタスク内で発生した場合、ハンドラはそれを無視します。
• S= サブツリー……イベントハンドラは、そのタスクとそのサブタスク内で有効です。
• G= グローバル …… イベントハンドラは常に有効になります。Magic コンポーネントとして使用されるアプリケーションのメインプログラムに定義されるイベントハンドラで使用できます。

伝播
伝搬は、イベントハンドラレベルでだけ有効になります。
• Yes ……トリガとして定義されているイベント捕捉して処理を終えた後、同じイベント
を次のハンドラレベルに伝播します。
• No ……イベントを次のハンドラレベルに伝播しません。

有効
コントロールレベルとハンドラレベルでだけ有効で、ハンドラを有効にするかどうかを決定します。

処理
コントロール前処理テーブルまたはコントロール後処理テーブル内の処理コマンドの数を表示します。ここからズームして［処理］テーブルに行くことができます。

メインプログラムメインプログラムは、すべてのプログラムの親タスクで、すべてのプログラムがここから実行されます。このため、メインプログラムはアプリケーションの実行中はずっとア
クティブになっています。メインプログラムは、アプリケーションを開いたときに最初に開くプログラムであると同時に、最後に閉じるプログラムでもあります。
メインプログラムのリソースには以下のものがあります。
• データ項目• イベント• ハンドラリファレンス
Magic eDeveloper V9 Plus263

第 6 章 - プログラム•

フォーム

これらは、アプリケーション内のその他のプログラムによってアクセスされ、使用されます。これらのリソースはグローバルであるため、アプリケーション全体に適用できます。

メインプログラムのアクセスと使用
メインプログラムは、次の場合に自動的に実行されます。
• Magic エンジンが実行モードになっている間にアプリケーションが開かれた場合• ユーザがアプリケーションを開発モードで開いた後に実行モードに切り替えた場合• プログラムテーブルの［プログラム実行］アクション（F7）、またはテーブルリポジトリの［APG］アクション（Ctrl + G）を使用して、開発モードでプログラムを実行している場合。どちらの場合でも、メインプログラムは現在のプログラムの前に実行されます。
メインプログラムは、次の目的で使用されます。
• アプリケーション全体の初期化と終了時の処理のために、メインプログラムのタス
ク前処理とタスク後処理をそれぞれ利用します。
• アプリケーション全体のグローバル変数として、メインプログラムのレコードメインで定義する変数項目を使います。
• アプリケーション全体で有効な、グローバルなイベントハンドラは、メインプログラムのイベントハンドラとして定義します。
• アプリケーション全体で有効な、グローバルなユーザ定義イベントは、メインプログラ
ムでユーザ定義イベントとして定義します。

実行モードでの特徴と動作
データビュー
ほかのプログラムとは異なり、メインプログラムにはメインテーブルを指定できません。
メインプログラムには、実行の開始時に初期化され、アプリケーション全体から使用できるグローバルな変数項目を定義できます。
特定のテーブルを、アプリケーションが開くと同時に開くようにするには、そのテーブ
ルをメインプログラム内で開くようにします。また、メインプログラム内で、特定のレコードを［リンク］コマンドで読み込んで、アプリケーション全体で使用するパラメー
タとして利用することもできます。テーブルは、［DB テーブル］テーブルで指定することもできます。ただし、これらのテーブルは読み取ることはできますが、書き込むことはできません。
メインプログラム内で［リンク］コマンドによって取り出したレコードは更新できません。更新を試みても無視されます。したがって、メインプログラムは、レコードロック
コマンドやトランザクション管理コマンドは実行しません。ただし、テーブルロックは
メインプログラムによって開かれるテーブルには使用できます。

フローメインプログラムは、レコードサイクルが 1 回実行されるバッチタスクとして実行されます。この動作は、［タスク終了条件］で止めることはできません。アプリケーションが開くと、メインプログラムのテーブルが開き、そのタスク前処理が実行されます。その後、メインプログラムの変数項目が初期化され、リンクレコードが読み取られます。
アプリケーションを終了するときに、メインプログラムのタスク後処理がアプリケー
ション終了の直前に実行されます。メインプログラムのテーブルも閉じます。ほかのバッ
チプログラムと同様に、メインレコードフロー内にあるバッチタスクに関係のない処理は無視されます。

264

リファレンス
Magic eDeveloper V9 Plus

メインプログラム

サブタスク
メインプログラムは、通常タスクとして実行される通常サブタスクを持つことができます。
これらのサブタスクにはメインテーブルと、通常タスクに類似した関数があります。ただし、それらの変数はグローバル変数ではありません。グローバル変数は、メインプログラ
ムのルートタスクに定義された変数だけです。

再計算
メインプログラム中の変数は、ほかのプログラムと同様に、サブタスクから更新された
親タスクからの変数の再計算は許さないという規則に従います。

コール式
メインプログラムは、［コールプログラム］コマンドで明示的に呼び出すことはできません。
［コール式］コマンドで、プログラム番号が「’1’PROG」と評価された場合、エラー
メッセージが表示され、［コール］コマンドは実行されません。

終了条件
メインプログラムの終了条件が「True」と評価されると、アプリケーション全体の実行が停止します。

開発モードでの特徴と動作
プログラムテーブル
メインプログラムは常に、プログラムテーブル内の最初のプログラムとしてリストされます。メインプログラムは、新しいアプリケーションが作成されるたびに自動的に生成され、デフォルト名は「メインプログラム」となります。
メインプログラムを削除することはできません。この条件は、削除処理、コピー処理、上書き処理にも適用されます。さらに、メインプログラムを実行することはできません。
［メインプログラム］行にカーソルが留まっている間は、実行オプションは無効になります。メインプログラムのインデックス番号は常に「1」です。

［タスク特性］ダイアログ
メインプログラムの［タスク特性］ダイアログは、次のような設定になっています。
• タスクタイプ……「B= バッチ」に固定されています。
• 初期モード……「Q= 照会」に固定されています。
• タスク終了条件……「No」に設定されています。開発者は式を設定することができます。
• イベント可……「No」に固定されています。
• メインテーブル……「0」に固定されています。
• メインフォーム……「0」に設定されています。開発者は式を設定することができます。
• ［拡張］タブ …… 全て無効化されています。

リファレンス
Magic eDeveloper V9 Plus

265

第 6 章 - プログラム［タスク制御］ダイアログ
メインプログラムの［タスク制御］ダイアログは、次のような設定になっています。
• ［モード］タブ …… ［照会］以外のすべての特性は「No」に固定されています。
• ［オプション］タブ …… ［ウィンドウ表示］は「No」に設定されています。その他の特性はすべて無効化されています。

［フォーム］テーブル
プログラムは、デフォルトのクラス「0」フォームで作成されます。フォームはいつでも追加できますが、このフォームにはシステムメニューがありません。
「0」より大きい番号のクラスのフォームは、すべてのアプリケーションプログラムの出力に使用できます。

［DB テーブル］テーブル
メインプログラムのデフォルトのテーブルアクセスタイプは［R= 読込］、オープンモー
ドは［N= 通常］、キャッシュ方式は［No］に固定されています。したがって、メインプ
ログラムではロックは行われません。

［入出力ファイル］テーブル
メインプログラムには入出力はありません。したがって、［入出力ファイル］テーブルは無効になっています。

［タスク処理］ウィンドウ
メインプログラムには、タスク前処理、タスク後処理、レコードメインの各組み込みハ
ンドラがあります。レコード前処理ハンドラとレコード後処理ハンドラは、メインプロ
グラムにはありません。ユーザ定義のハンドラはアプリケーション全体で使用できるように設定できます。

メインプログラムのデータ項目の可用性
メインプログラムのデータ項目は、アプリケーション内のすべてのプログラムで使用できます。
［項目一覧］では、ほかのプログラムのデータ項目より前に表示され、アルファ
ベット順に並べられます。
データ項目名は、3 文字で構成されます。データ項目を選択すると、その名前が自動的に表示されます。

チーム開発
メインプログラムのデータ項目はアプリケーション全体で使用されるので、チーム開発
時はそれを独立したエンティティとみなし、共有アクセスを許可しますが、メインプロ
グラムのリソースの修正は、排他的にしか行えません。
メインプログラムを使用するオブジェクトを編集している場合は、メインプログラムをチェックインできません。後者の場合にメインプログラムをチェックしようとすると、「メインプログラムはロックされています」というメッセージが表示されます。

コールコマンド［コール］コマンドでメインプログラムを明示的に呼び出すことはできません。

266

リファレンス
Magic eDeveloper V9 Plus

メインプログラム

選択プログラム
メインプログラムは明示的に呼び出すことができないので、カラム定義やモデル定義の［プログラム選択］では指定できません。

ユーザイベント
ユーザイベントテーブルの［公開］欄のチェックボックスを選択すると、他のコンポーネントからのプログラムは、イベント実行処理コマンドを使用してホストアプリケー
ションのメインプログラムに登録されたイベントを発行することができるようになります。チェックボックスが選択されていない場合は、呼び出すことはできません。
また、対応するハンドラを検索する時、Magic がユーザイベントの公開名を使用するため、ユーザイベントの公開名を指定しておく必要があります。
同じアプリケーション内のプログラムの場合は、［公開］欄の指定に関係なくイベント実行コマンドによって公開イベントを起動することができます。
実行イベントについては、第 7 章「処理コマンド」の「イベント実行」を参照してください。

メインプログラムの他の特徴
これまでに説明した実行 / 開発モードの動作以外に、メインプログラムには以下の特徴が備わっています。

メインプログラムのタスク前処理
メインプログラムのタスク前処理ハンドラは、アプリケーション全体の前処理段階として機能します。このハンドラは、アプリケーションの初期化段階で実行する処理を定義するために使用します。
［項目更新］コマンドを使用してメインプログラムのグローバル変数を初期化したり、［コール］コマンドやその他の関連処理コマンドを使用してメインプログラムの初期化プ
ログラムを呼び出したりすることができます。

メインプログラムのタスク後処理
メインプログラムのタスク前処理と同様、タスク後処理ハンドラはアプリケーション全体の後処理段階とみなすことができます。このハンドラは、アプリケーションの終了段
階で実行する処理を定義するために使用できます。

RunMode 関数
他のプログラムが開発 / 実行モードで実行される前にメインプログラムが実行されるため、RunMode 関数を使用してアプリケーションの実行状況を識別することができます。
詳細については、第 8 章「関数」を参照してください。

メインプログラムのリポジトリ入力
メインプログラムが格納されているファイルをリポジトリ入力するときに、現在のメインプログラムを置換するかどうかを確認するメッセージが表示されます。
「Yes」を選択
すると、現在のメインプログラムがリポジトリ入力したファイル内のメインプログラムに置き換えられます。
「No」を選択すると、リポジトリ入力したファイル内のメインプロ
グラムは置き換わりません。メインプログラムを通常プログラムとして入力することはできません。
リファレンス
Magic eDeveloper V9 Plus267

第 6 章 - プログラム

メインプログラムとコンポーネント
メインプログラムは、コンポーネントの一部としてエクスポートすることはできません。
メインプログラムとコンポーネントについては、第 14 章「コンポーネント」を参照
してください。

268

リファレンス
Magic eDeveloper V9 Plus

処理コマンド

7

Magic では、タスクは処理テーブルを使用して定義します。処理テーブルは、タスクの各レベル（タスク後処理、レコードメインなど）ごとに用意されています。各レベルの処理テーブルでは、そのレベルに応じたコマンドを定義します。処理テーブルでは、Magicの 14 種類の処理コマンドを選択して指定できます。また、処理コマンドは式を使用してカスタマイズすることもできます。式では、Magic のライブラリ（100 種以上の関数が用意されています）の関数が使えます。
つまり、こういった処理コマンドと関数が、Magic の「言語」になります。ここでは、Magic の処理コマンド、その動作、パラメータについて解説します。また、［パラメータ］
テーブル（［コールタスク］、［コールプログラム］の各処理で使います）についても説明します。
［処理］テーブルで新規の行を作成すると、デフォルトの処理として［コメント］コマン
ドが表示されます。この［コメント］コマンドは、その後、14 種類の Magic のいずれかの処理コマンドに置き換えることができます。
本章では、次の内容について説明します。
• 処理コマンドと動作• 処理コマンドの設定内容• パラメータを渡す• 処理コマンドの使用方法

リファレンス
Magic eDeveloper 9 Plus269

第 7 章 - 処理コマンド

処理コマンドの索引
処理コマンド名

処理コマンド番号

ページ

コメント

0

271

セレクト

1

271

エラー

2

278

リンク

3

280

リンク終了

4

291

ブロック

5

287

ブロック終了

6

294

コール

7

294

アクション

8

311

項目更新

9

314

データ出力

10

318

データ入力

11

321

エディット

12

324

OS コマンド13

325

イベント実行14327

概要
処理テーブルはタスクのレベルごとに用意されており、［処理］テーブルによって定義できる処理コマンドも異なります。たとえば、［レコードメイン］以外のレベルの処理テー
ブルでは、［セレクト］、［リンク］、［リンク終了］の処理コマンドを選択しても、コマン
ドは行に表示されません。この場合、そのコマンドは、処理テーブルでは定義できないことを示しています。コマンドが表示されないのは、［セレクト］、［リンク］、［リンク終了］の各コマンドがデータビューの定義用のコマンドであるためです。具体的には、この 3 つのコマンドには、次のような特徴があります。
1. ［セレクト］、［リンク］、［リンク終了］の 3 つのコマンドは、［レコードメイン］レ
ベルの処理テーブルでのみ定義できます。
2. バッチタスクの場合、［レコードメイン］レベルで実行できるのは、［セレクト］、［リンク］、［リンク終了］のコマンドのみです。
以下、コマンドについて実際の画面を紹介しながら、順に解説します。なお、解説では、
次のような表記方法を用いています。
• 画面はいずれも、［レコードメイン］レベルの［処理］テーブルを使用しています。また、画面では、便宜上、解説するコマンドを一番上の行に置いてあります。
• ［処理］テーブルのカラムのうち、名前が表示されていたり、パラメータ値が表示されているカラムには、カーソルを置くことができ値の入力が可能です。
• 表示されているパラメータ値は、デフォルト値です。
• 画面では、使用できるコマンドを示しております（たとえば、ズームなど）。

270

リファレンス
Magic eDeveloper V9 Plus

コメント

コメント
目的
• ［コメント］コマンドは、処理テーブルに空白行を挿入したいときに使います。この空白行を挿入することで、処理テーブルのコマンドをグループに分けることができ、また、内容が見やすくなります。
• ［処理］テーブルにコメント（注釈）を挿入したいときに使います。
• ［コメント］コマンドの行には、実際のコマンドは定義できません。

用途
注釈文を記述します。

［コメント］コマンドの設定欄［コメント］コマンドを定義すると、GUI 環境の場合、デフォルトでは、その行が空白になります。テキスト環境では、行に線が引かれます。
［コメント］コマンドの行には、文字を入力できます。入力する場合、カーソルを右に移
動します。

セレクト
目的
タスクのデータビューの論理レコードを定義する場合、また、タスクで使う項目を定義する場合に使います。なお、［セレクト］コマンドで項目を定義することを、「項目を選択する」ともいいます。

用途• ［セレクト］コマンドでは、メインテーブルまたはリンクテーブルから実データ項目を選択して、データビューの論理レコードを作成できます。そのほか、変数項目やパラメータ項目を作成することもできます。変数（パラメータ）項目を作成した場合、自動的に［変数項目］テーブルに挿入されます。この場合、変数項目は、［処理］テー
ブルでの位置と別の変数項目との関係が考慮されて挿入されます。実データ項目、変数項目のどちらの場合も、［レコードメイン］の［処理］テーブルに定義されると、その時点からタスクで使用できるようになります。
• タスクのデータビューと項目の実際の値を関係づけることができます。タスクのデー
タビューには、論理レコードがすべて表示されます。このデータビューの論理レコー
ドが、タスクで使用されます。
［セレクト］コマンドの行には［範囲］欄があり、この欄に式を指定することで、タスクのデータビューと項目の実際の値を関係づけることが可能です。
• 新規のレコードの作成後、実データ項目にデフォルトの初期値を割当てることができます。割当は、代入式を使用して行います。指定方法については、下記のパラメータの解説を参照してください。
• 計算項目（計算に必要な一時的な項目）を定義することもできます。その場合、［変数項目］を選択します。
• 特定の値が入ったレコードの位置付も可能です。その場合、［位置付］欄に検索用の式を指定します。
リファレンス
Magic eDeveloper 9 Plus271

第 7 章 - 処理コマンド• ［セレクト］コマンドでは、カーソルの移動順序を指定できます。また、カーソルを置くことができる項目を指定することもできます。さらに、［条件］欄を使用して条件式を指定できます。

配置• ［レコードメイン］の処理テーブルは、タスクのデータビューの定義に関するテーブ
ルです。このため、［セレクト］コマンドは、このテーブル専用となり、ほかのテーブルでは使用できません。
• オンラインタスクの場合、カーソルは、［処理］テーブルで定義されている［セレクト］コマンドの順番にしたがって、コントロールからコントロールへと移動します。
つまり、実行時の画面上でのカーソルの動きは、［フォーム］ウィンドウで指定したコントロールの配置とは関係なく、［セレクト］コマンドの順番によって決まります。
• 代入式が再計算される場合、そのコマンドの順番は、処理テーブルの［セレクト］コ
マンドの位置によって変わります（下記を参照）。

［セレクト］コマンドの設定欄
セレクト［セレクト］コマンドの最初の欄は［セレクト］で、ここでは「R= 実データ」、「V= 変数」、「P= パラメータ」のいずれかを指定できます。［タスク特性］ダイアログの［メインテーブル］パラメータに DB テーブルを指定している場合、この欄にはデフォルト値
として「実データ」が表示されます。一方、DB テーブルを指定していないときには、この欄には「変数」が初期表示され、「実データ」は選択できません。
この欄の値が「変数」または「パラメータ」の場合、［変数項目］テーブルに自動的に変数項目が挿入されます。挿入される変数項目には、［処理］テーブルの［セレクト］コマンドの位置に応じた番号が付けられます。
［変数項目］テーブルでは、挿入された変数項
目から下の変数項目の番号（連番）は、自動的に振り直されます。
「変数」と「パラメータ」のデータ項目は、どちらも、別のタスクから渡されるパラメー
タを受け取ることができます。パラメータ項目を定義しておくと、［コール］コマンドによって他のタスクから呼び出される場合、呼び出し元のプログラムに対して、開発時に選択可能なパラメータの一覧を表示します。タスク中にパラメータ項目が 1 つも設定されていない場合は、渡されたパラメータは変数項目が受け取ります。
詳しくは本章の「［コール］コマンド」を参照してください。

内容
この欄のデフォルト値は、「??」です。
［セレクト］欄で項目を指定すると、この欄に、その項目の名前（［変数項目］テーブル上の名前）が表示されます。
「実データ項目」の場合は、項目名を変更できます。変更された名前は、変更したプログ
ラムとそのサブタスクでのみ有効です。空白は入力できません。空白を入力すると、テーブルで定義された名前になります。

代入（オプション）
この［代入］欄には、式を示す番号を指定します。実行時には、ここで指定した番号の式が評価され、その結果の値が、この［セレクト］コマンドで指定した項目に初期値として格納されます。この欄の値を「0」にしておくと、式は使用されません。
Magic では、このように式を使用して項目に値を代入できますが、この式は、ちょうどスプレッドシートのセルに定義する式と同じと考えて差し支えありません。

272

リファレンス
Magic eDeveloper V9 Plus

セレクト
代入式の先頭には、「=」は必要ありません。たとえば、項目［受注合計］（変数項目）に［価格 * 数量］という式の値を代入したい場合、代入式の末尾には「=」を付ける必要はなく、「価格 * 数量」だけで済みます。

代入式による値の代入
代入式の実行方式には、手続き型と非手続き型の 2 種類があります。また、手続き型方式の場合、変数項目とパラメータ項目には同じルールが適用されますが、実データ項目と変数項目とで計算の方法が異なります。
• 実データ項目は、タスクが登録モードで実行されるときにだけ作成されます。この関係から、項目が実データ項目の場合、その代入式は、タスクが登録モードで実行され、レコードが画面に表示される前に実行されます。また、実データ項目にリンクが設定されている場合、そのリンク処理が失敗したときに代入式が実行され初期値が入れられます。このときの処理については、本章の「リンク失敗と代入式」を参照してくだ
さい。
• 変数項目やパラメータ項目は、必要に応じて作成されます。このため、項目が変数（パラメータ）項目の場合、その代入式はモードとは関係なく、必要に応じて実行され、項目に値が入、画面にレコードが表示されます。
• パラメータ項目は、変数項目と同じように作成されて動作します。
• ［セレクト］コマンドで項目として変数項目を選択し、式を定義しなかったときには、変数項目には、更新処理の際に値が入れられます。また、こういった変数項目は、レ
コード処理の開始時に値が「0」になることはなく、それまでの値がそのまま格納されています。したがって、式を定義しない変数項目は、累計用の項目として使用できます。

非手続き型方式での代入式の自動再計算［レコードメイン］または［レコード後処理］の実行時には、項目（実データ項目または変数項目）の値が変更された場合、その項目に定義されている代入式が自動的に実行（再計算）されます。この再計算は、タスクのモードとは関係なく実行され、ちょうどスプ
レッドシートのセルの再計算と同じと考えることができます。再計算は、タスクが［レコードメイン］であるか、または［レコード後処理］であるかによって多少異なります。
• レコードメイン
1. 代入式を構成する項目のどれかを修正した場合
2. 代入式を使用する項目より前に、修正した項目を定義している場合
この 2 つの条件が満たされたとき、代入式が再計算されます。レコードメインでの再計算は、順方向（処理テーブルの上から下へ向かって）にだけ処理されます。
• レコード後処理［レコード後処理］では、項目のいずれかが変更されると、［レコードメイン］の代入式のうち、その項目が使われている代入式がすべて再計算されます。再計算は、まず、［レコードメイン］の処理テーブルの行の中で変更された項目が定義されている行か
ら始まり、その後、テーブルの最後の行に向かって実行されます。
代入式の再計算は、Magic エンジンの非手続的処理の 1 つです。
詳細については、第 5 章「Magic アプリケーションエンジン」を参照してください。

なお、これ以降の説明では、項目のうち、代入式番号が 0 以外の項目（つまり、何らかの代入式が定義されている項目）を「代入項目（初期化される項目）」と呼びます。また、代入式で使われている項目のうち、その項目に変更があった場合、代入項目の再計算が行われるような項目を「修正項目（修正を引き起こす項目）」と呼びます。

リファレンス
Magic eDeveloper 9 Plus273

第 7 章 - 処理コマンド
たとえば、実データ項目 A に「5」が、実データ項目 B に「6」が入っていたとします。
また、実データ項目 C に「A*B」という代入式が定義されていたとします。この場合、エンドユーザがタスクを登録モードで実行すると、実データ項目 C には「30」という値が初期値として入れられます。その後、エンドユーザが実データ項目 A の値を「7」に変更すると、実データ項目 C の代入式が自動的に再計算され、実データ項目 C の値は「42」になります（非手続き型処理）。したがって、エンドユーザは項目 C にカーソルを移動し、「42」という値を入力する手間が省けます。上記では、実データ項目 A が修正項目ということになります。
修正項目の値は、次のようなときに変更されます。
• エンドユーザが手動で値を変更したとき（上記の例）• ［項目更新］コマンドの実行時• 修正項目がタスクまたはプログラムでパラメータとして使用されたとき• ［データ入力］コマンドでデータがインポートされたとき• 修正項目［戻りコード項目］として使われたとき
修正モードに対する変更は、［レコードメイン］レベル（エンドユーザによる対話型操作）のほか、その［レコードメイン］レベルから呼び出される子タスクがあれば、その子タスクでも発生します。また、［レコード後処理］レベル（非対話型操作）でも発生します。
また、再計算は、次の項目について、また、次のモードで実行されます。
• 項目のうち、その代入式に修正項目が使われている項目• モードが、登録モードまたは修正モードの場合• タスクが、オンラインタスクまたはバッチタスクの場合• 高速モードまたは通常モードの場合
再計算は、再計算される項目がなくなるまで続きます。再計算が続くのは、再計算される項目自体が修正モードであることがあるためです。1 サイクルの再計算が終わると別のサイクルが開始され、関連する代入式がすべて実行されるまで続きます。
代入項目は、次の 2 つの条件が両方とも満足されるときに再計算が実行されます。
• 代入項目の行が、処理テーブル上で修正項目の行より後ろに置かれている場合• 代入項目の代入式に修正項目が使われている場合

再計算の例 1
Magic では、タスクの初期化時、再計算テーブルが作成されます。タスクの実行中には、
このテーブルを使用して非手続き型の自動再計算が効率よく行われます。
ここでは、上記の条件 1 は満足されない場合の例を紹介します。その結果、項目 A は再計算されません。
このタスクでは、［レコードメイン］の処理テーブルに 2 つの［セレクト］コマンドが定義されているとします。また、［レコード後処理］の処理テーブルには、2 つの［項目更新］コマンドが定義されているとします。それぞれ、項目の構成は、次のようになっています。
レコードメイン
行１ セレクト：項目 Ａ −代入式：項目 Ｂ
行２ セレクト：項目 Ｂ −代入式：項目 Ａ
レコード後処理
行１ 項目更新：項目 Ａ
行２ 項目更新：項目 Ｂ
上記の場合、次の順序で再計算情報が作成されます。タスクの実行時には、この情報に基づいて代入式が実行されます。

274

リファレンス
Magic eDeveloper V9 Plus

セレクト
データ項目ごとに［レコードメイン］の処理テーブルの行が上から下まで検索されます。
検索では、行に定義されている項目と代入式の中の項目がチェックされます。このチェックで、代入式で以前の行の項目が使われていた場合、その代入式が再計算テーブルに登録されます。
上記の例では、行 2 の代入式に項目 A が定義されていますが、この項目 A は、行 1 の［セレクト］コマンドで定義されている項目です。したがって、上記の条件 1（修正項目が前）に該当するため、行 2 の代入式が再計算テーブルに登録されます。一方、行 1 の代入式は、再計算テーブルには登録されません。これは、行 1 の代入式に定義されている項目 B は行 2 で定義されている項目であり、条件 1 には当てはまらないためです。
実行時、エンドユーザがレコードを操作して項目 A に何らかの値を入力した場合、自動的に再計算が実行され、項目 B の値が変更されます。ただし、エンドユーザが項目 B の値を変更しても、再計算は行われません。理由は、再計算テーブルには項目 A の代入式
（項目 B が定義されている代入式）は登録されていないためです。
また、エンドユーザがレコードの編集を終え、［レコード後処理］が実行されると、［項目更新］コマンドにより項目 A の更新が行われます。このときにも、項目 B について再計算が実行されます。これは、更新処理により項目 A の値が変更されますが、上と同様に、項目 A が定義されている代入式が再計算テーブルに登録されているためです。これに対して、項目 B が変更されても、再計算は実行されません。

再計算の例 2
ここでは、［レコードメイン］の［処理］テーブルに次のように処理コマンドが定義されているとします。
行1

…

セレクト

：項目 A

行2

…

セレクト

：項目 B - 代入式 : A + C

行3

…

セレクト

：項目 C

行4

…

セレクト

：項目 D - 代入式 : A + C

行5

…

項目更新

：項目 C

また、このタスクは修正モードで、項目の値は次のようだったとします。
• A=2
• B=5
• C=3
• D=5
上記の場合、エンドユーザが項目 A（修正項目）の値を「3」に変更すると、各項目の値は次のように変化します。
• A=3（エンドユーザによって変更）• B=6（Magic によって再計算）• C=3（変化なし）• D=6（Magic によって再計算）
この後、項目 C に対して［項目更新］コマンドが実行されます。ここでは、項目 C の値は「10」に更新されるものとします。この場合、各項目の値は次のようになります。
• A=3（変更なし）• B=6（変更なし - 再計算なし）• C=10（更新処理コマンドによって更新）• D=13（Magic によって再計算）
上記では、項目 B は、条件 1 が満足されないため、再計算は行われません。つまり、項目 B の［セレクト］コマンドが項目 C の［セレクト］コマンドより前に置かれており、この順序は条件 1 には該当しません。
リファレンス
Magic eDeveloper 9 Plus275

第 7 章 - 処理コマンド

範囲（オプション）
この欄には範囲式を指定できます。この範囲式を使用して、タスクのデータビューに表示するレコードを絞り込むことができます。
［範囲］欄には、範囲式を示す番号を 2 つ指定できます。最初の番号としては、最小値が返る式の番号を指定します。2 番目の番号としては、最大値が返る式の番号を指定します。この 2 つの式で指定された範囲のレコードがタスクのデータビューに表示されることになります。範囲式は、メインテーブルやリンクテーブルの項目（実データ項目）でも、変数項目でも有効です。
範囲式から返る値のデータ型は、項目のデータ型と同じでなければなりません。また、論理条件を使用して範囲を限定することもできます。その場合、条件は、［タスク制御］ダイア
ログの［範囲式］欄で指定できます。また、SQL の場合は DB SQL Where 句で条件を指定することができます。
［セレクト］コマンドの行に定義した範囲式は、タスクの実行開始の際に評価されます。
このため、タスクが開始されたとき、範囲式に定義した項目にはすでに値が入っていることが必要になります。範囲式の項目としては、親タスクの項目が使用できます。また、タスクに渡されるパラメータも使用できますし、定数を指定することもできます。
オンラインタスクの場合、指定した範囲以外のレコードは、エンドユーザには表示されません。そのほか、エンドユーザが［オプション］メニューの［範囲］（Ctrl+R）を選択して、さらにレコードを限定することもできます。
このパラメータの範囲式（最小と最大）のほか、［タスク制御］ダイアログの［範囲式］
パラメータ、［オプション］メニューの［範囲］、および DB SQL Where 句の結果がすべて AND で連結され、その最終の結果がデータビューに表示されます。
範囲式を指定しない場合は、全範囲のレコードが表示されます。

1 対多のリレーション
Magic では、
［コール］コマンドで子タスクを呼び出すことで、1 対多のリレーションを設定することができます。その場合、子タスクの［セレクト］コマンドに指定されている範囲式も有効になります。ここで、範囲式が指定されている子タスクの項目が実デー
タ項目であり、その実データ項目が［テーブル］リポジトリでインデックスセグメントとして定義されているおり、さらに、そのインデックスが子タスクのメインテーブルのインデックスである場合、自動的に 1 対多のリレーションが作成されます。

範囲と処理速度範囲式（最小／最大）を指定している項目が実データ項目で、その実データ項目がテー
ブルリポジトリですでにインデックスセグメントとして定義されており、さらに、そのインデックスセグメントがタスクのメインテーブルのインデックスとして選択されている場合、範囲の絞り込みは非常に高速になります。一方、範囲式（最小／最大）を指定している項目が変数項目の場合、または、実データ項目であっても、その実データ項目
がタスクのメインテーブルのインデックスでないときには、メインテーブルとリンク
テーブルに対して順次検索が行われた後、タスクのデータビューが作成されます。このため、とくにファイルが大きいときには、データビューの作成に時間がかかります。
この順次検索は、次の場合にも実行されます。いずれの場合も、この検索の後、範囲が特定されます。
• インデックスがマルチセグメントで、そのインデックスの下位セグメントに対応する
項目に範囲式（最小／最大）を設定しているものの、上位セグメントには範囲式（最小／最大）を設定していない場合。または、上位セグメントに指定している範囲が広い場合• ［範囲／位置付］ダイアログの［範囲式］欄に範囲式を設定し、その範囲式を使用してデータビューの範囲を指定している場合

276

リファレンス
Magic eDeveloper V9 Plusセレクト

位置付（オプション）［位置付］欄には、式を示す番号を 2 つ指定できます。式は、1 つは最小値、もう 1 つは最大値が返る式を指定します。実行時には、この最小値と最大値の間にあるレコードが検索され、最初に見つかったレコードがデータビューで位置付されます。式は、その項目のデータ型と同じデータ型の値が返るようにしま論理条件を使用して最初のレコードの位置付を行いたいときには、［範囲／位置付］ダイ
アログの［位置付式］欄で指定できます。
詳細については、第 6 章「プログラム」の「範囲と位置付ダイアログ」を参照してください。
位置付式は、範囲式とは別個に機能します。
オンラインタスクでの位置付の後、レコードがどのように表示されるかは、［動作環境］
ダイアログの［カーソルの画面中央位置付］パラメータの設定によります。このパラメー
タの値が「Yes」の場合、位置付されたレコードは画面の中央に表示されます。また、カーソルは、そのレコードの最初のパーク可能項目に置かれます。
［カーソルの画面中央
位置付］パラメータの値が「No」のときには、位置付されたレコードは画面の一番上に表示されます。
位置付の場合、エンドユーザは実行時、位置付式（最小／最大）で指定された範囲以外のレコードを表示することができます。また、範囲外のレコードにカーソルを置くこともできます。
位置付式（最小／最大）を指定し、その項目がタスクのインデックス項目、またはインデッ
クスセグメントで、位置付の実行時に条件を満足するレコードが見つからなかったときには、位置付式の最大より上位のインデックスを持つレコードのうち、最初のレコードに処理ポインタが置かれます。また、「レコードが見つかりません - 次のレコードに位置付を行います」というメッセージが表示されます。位置付式の最大より大きいインデックスを持つレコードが見つからなかったときには、カーソルはデータビューの最初のレコードに移動するとともに、「レコードが見つかりません - 最初のレコードに位置付を行います」というメッセージが表示されます。
また、位置付式として最小の位置付式だけを指定し、実行時に条件に該当するレコードが見つからなかった場合、処理ポインタは上位のインデックスで最初のレコードに置かれます。この場合、メッセージは表示されません。一方、位置付式として最大の位置付式だけを指定し、実行時に条件に該当するレコードが見つからなかった場合、処理ポインタはデー
タビューの最初のレコードに置かれます。
位置付式を指定した項目がキー項目ではなく、実行時、条件に該当するレコードが見つからなかった場合、処理ポインタはデータビューの最初のレコードに置かれます。

フロー
この欄を使用して、項目上でのカーソルの動作を制御できます。この欄の設定は、フロー
モードとカーソル方向モードの両方を制御できることから、［条件］欄の設定より優先されます。
［フロー］欄では、「フローモード」と「カーソル方向モード」の 2 つの欄を指定します。
デフォルトは、フローモードが「S ＝通常」、カーソル方向モードが「C ＝両方向」です。
フローモード処理が実行される条件

S ＝通常タスクが通常モードにある場合

F ＝高速

タスクが高速モードにある場合

C ＝両用

タスクが通常モードまたは高速モードのどちらかにある場合

B ＝前置

次の項目にカーソルがある状態でズーム（F5）を行った場合

A ＝後置

前の項目にカーソルがある状態でズーム（F5）を行った場合

リファレンス
Magic eDeveloper 9 Plus277

第 7 章 - 処理コマンド

カーソル方向エンジンで処理が実行される条件

F ＝前方カーソルが［レコードメイン］の処理テーブルの定義にしたがって前方に移動した場合

B ＝後方カーソルが後方に移動した場合

C ＝両方向カーソルが前方または後方に移動した場合

条件
カーソルが画面のコントロール（項目）に停止するかどうかを指定します。指定できる
値は次の通りです。論理式の番号も指定できます。
• Yes……この値を指定しておくと、この項目でカーソルが停止します。（デフォルト）• No……この値を指定しておくと、この項目でカーソルは停止しません。
• 式……論理式を示す番号です。論理式から返る値によって、実行時にカーソルが項目に停止するかどうかが決まります。ズームすると［式］テーブルが表示されますので、ここで式を定義します。
この欄の設定は、カーソルの動き以外の動作には影響しません。

セレクト特性セレクトコマンド行で ［編集／特性］（Ctrl+P）を実行すると、［セレクト特性］ダイア
ログが表示されます。ここには以下の設定欄があります。

更新形式［タスク特性］ダイアログの［トランザクションモード］欄が「D= 遅延」の場合における、SQL テーブルの数値型項目に対する更新の形式を指定します。この設定は、ISAM
ファイルには適用されません。
指定できる値は以下の通りです。
• A= 値更新……固定値による更新• D= 差分更新……差分による更新• T= テーブルに依存……テーブルレポジトリでの定義に従います「差分更新」に設定すると、「FLD1=FLD1+X」という形式の SQL 文により FLD1 を更新
できます。

エラー
目的
• このコマンドでは、［モード］欄の値を「E= エラー」にしておき、［条件］の式から「True」が返った場合、エラーメッセージが表示されると同時に処理も中断します。このため、エンドユーザにエラーの訂正を求めることができます。
• ［モード］欄の値を「W= 警告」にしておき、［条件］欄の式から「True」が返った場
合、警告メッセージが表示されます。このときには、処理は中断されません。

278• ［モード］欄の値を「R= 復帰」にしておき、［条件］の式から「True」が返った場合、エラーメッセージが表示されると同時にハンドラ内の処理を再実行させることができます。
リファレンス
Magic eDeveloper V9 Plus

エラー

用途
• エンドユーザによる入力の検証を行いたいときに使います。
• デバッグを行うときに使用します。警告メッセージを表示させることができますので、タスクの処理の追跡が便利になります。

［エラー］コマンドの設定欄
式
この欄は、［処理コマンド］欄の中の右側（「0」が表示されている部分）にあります。
［処理コマンド］欄の列で［エラー］コマンドを選択すると、この欄にカーソルが移動します。
この欄をズームすると、［式］テーブルが開きますので、ここで文字列式を入力します。
この文字列式が、メッセージとなります。メッセージの文字としては、文字定数、数値（文字列に変換される数値）、文字列項目が使用でき、このためメッセージの内容を動的に変更できます。

内容［式］欄に式を示す番号を指定すると、ここに式の最初の部分が表示されます。この欄には式の内容が表示されるだけで、カーソルは停止しません。
［式］欄の値を「0」（デフォルト）のままにしておいたときには、この欄に文字列定数を直接入力できます。入力した文字列が欄の列幅より大きい場合、自動的に広域ウィンド
ウが表示されます。
式（メッセージ）を指定し、実行時に［条件］欄から「True」が返ると、メッセージラ
インにエラーメッセージが表示されるとともに警告音が鳴ります。
［式］欄の値が「0」で、［内容］欄にメッセージを入力していない場合、メッセージは表示されませんし、警告音も鳴りません。この場合、処理は通常どおり続きます。

モード：W= 警告（デフォルト）［エラー］コマンドを定義したのが［タスク後処理］レベルで、この欄を「E= エラー」に設定しておいた場合、実行時にエラーが発生するとタスクは終了します。これ以外のレベルでは、指定した規則にしたがってタスクが再開されます（規則は、下記を参照）。
［モード］欄に指定できる値は、次の通りです。
• W= 警告……この値の場合、警告音が鳴ると同時にメッセージが表示されます。ただし、タスクの実行は停止しません。エンドユーザは、メッセージを無視して作業を続けることもできます。
• E= エラー……この値を指定しておくと、メッセージが表示され、その後、次の規則にしたがって動作が実行されます。
•

オンラインタスクの［レコードメイン］の場合、処理が一時中断し、カーソルが最後のパーク可能項目に止まります。その後、エンドユーザがエラーを訂正するまで待機状態に入ります。

•

オンラインタスクの［レコード後処理］の場合、処理が一時中断し、カーソル
は、現在のレコードでパーク可能項目のうち、カーソルが最後に置かれていた項目に戻ります。その後、エンドユーザがエラーを訂正するまで待機状態に入ります。

•

上記以外の非対話型のレベル、つまり、各タスクの［タスク前処理］と［タスク後処理］、バッチタスクのブレイクレベル、［レコード前処理］では、処理が中断するとともに、その時点のレベルの処理がアボートされます。

• R= 復帰……この値を指定しておくと、メッセージが表示され、ハンドラ内をフローが逆方法に移動し、ハンドラの先頭に戻ります。この値は、以下のハンドラ内のみ有効です。
リファレンス
Magic eDeveloper 9 Plus279

第 7 章 - 処理コマンド• ［イベント］ハンドラ• ［コントロール前］ハンドラ• ［コントロール後］ハンドラ• ［コントロール検証］ハンドラ

表示モード：B= ボックス（デフォルト）［表示モード］欄では、エラーコマンドで表示されるメッセージの形式を指定できます。
［表示モード］には次のものがあります。
• B= ボックス…… エラーメッセージがメッセージダイアログで表示されます。Magic は
このダイアログが閉じられるまで次の処理に移行しません。
• S= ライン……ウィンドウのステータスラインにメッセージが表示されます。

フロー
この［フロー］欄は、［エラー］コマンドをオンラインタスクの［レコードメイン］の処
理テーブルで定義したときにだけ有効です。この欄を使うことで、メインウィンドウでエンドユーザが行ったカーソルの操作に応じて処理を実行できます。デフォルトは、フローモードが「C ＝両用」、カーソル方向モードが「C ＝両方向」です。［フロー］欄については、本章の「［セレクト］コマンド」を参照してください。

条件
この欄には、論理条件を指定します。その論理条件から返る値を使用して、［エラー］コ
マンドの実行を制御できます。
• Yes……この値を指定しておくと、このコマンドが実行されます。（デフォルト）• No……この値を指定しておくと、このコマンドは実行されません。
• 式……論理式を示す番号です。論理式から返る値によって、コマンドを実行するかど
うかが決まります。ズームすると［式］テーブルが表示されますので、ここで式を定義します。

［エラー］コマンドの使用に際しての注意• この［エラー］コマンドを使用して、エラーが発生したことをエンドユーザに知らせることができます。その場合、［モード］欄の値を「警告」にしておきます。
• オンラインタスクの［レコードメイン］の場合、［エラー］コマンドを使用してエンドユーザに有効な値を再入力させることができます。この処理を行いたいときには、［モード］欄の値を「エラー」にしておきます。

リンク
概要
Magic の［リンク］コマンドを使うことで、異なるデータベーステーブル間に 1 対 1 のリレーションを作成できます。リンクは、タスクのメインテーブルでのカレントのレコー
ドと、別のデータベーステーブル（リンクテーブル）のレコードとの間に張ることができます。リンクにはインデックスセグメントを使い、その値が等しい場合、レコードとレコードとの間でリンクが作成されます。照合規則は、リンク条件（リンク式）で指定
できます。

280

リファレンス
Magic eDeveloper V9 Plus

リンク［リンク］コマンドはレコードのデータビューの準備と同時に実行されます。リンクの作成後、定義した［セレクト］コマンドによりリンクテーブルの項目がデータビューに追加されます。このようにしてリンクされた項目は、メインテーブルから選択した項目と同じように扱うことができます。
リンクの特徴は、その処理が動的であることです。つまり、メインテーブルの処理中、［リンク］コマンドで指定した式の値が変わると、リンクが自動的に再設定されるとともに、リンクされているレコードの値が設定されます。式の再計算については、本章の後述の「リンク式の再計算」を参照してください。
［リンク］コマンドは以下のような場合に使用します。
• レコードがリンクテーブルに存在するかどうかをチェックできます• リンクテーブルの項目を［セレクト］コマンドを使用して選択し、その項目をデータ
ビューに表示できます。また、リンクテーブルのレコードの修正や作成も可能です。

リンクの種類
リンク処理は、その用途から、大きく次の 2 種類に分けることができます。また、それぞれ、各種のリンク方式に分けられます。
• リンクテーブルに記録されている既存のレコードの照会や修正• リンクテーブルの新規のレコード作成
最初の用途の場合、確認、照会、書出（レコードが存在する場合）、ジョインが可能です。2 番目の用途では、書出（レコードが存在しない場合）、作成が可能です。リンク方式については、後述の「5 つのリンク方式」の節で説明しています。
上記のどちらの用途でも、リンクテーブルから［セレクト］コマンドで選択した項目（リンクで使用するインデックスセグメントの項目）はすべて、タスクの実行時に修正ができます。また、リンクテーブル上の修正済みレコードは、メインテーブル上の修正済み
レコードと同様、［レコード後処理］が実行されるとディスクに書き込まれます。

リンクの定義内容
リンクは、データビューに関連する処理で、このため、タスクの［レコードメイン］レ
ベルでだけ定義できます。リンクは、処理テーブルでは、基本的に次の順序で定義します• ［リンク］コマンド……このコマンドを使用して、リンク対象となるデータベーステー
ブルを指定します。また、リンク方式、インデックスも指定します。
• ［セレクト］コマンド……位置付式（（最小／最大））を使用して、リンクテーブルのインデックスセグメントを指定します。また、各インデックスセグメントについて、
リンク条件を設定します。
• ［リンク終了］コマンド……このコマンドを使用して、リンクを終了させます。
上記は、リンク処理を行う場合の最小限の設定で、この設定は、Magic により半自動的に行われます。つまり、［リンク］コマンドを選択すると、このコマンドに対応する［リンク終了］コマンドが自動的に作成されます。また、リンク先のテーブルとリンクで使用するインデックスを選択すると、［リンク］コマンドと［リンク終了］コマンドの間に、自動的に［セレクト］コマンドが挿入されます。挿入された［セレクト］コマンド
はそれぞれ、指定したインデックスのインデックスセグメントに対応します。
たとえば、指定したインデックスにインデックスセグメントが 2 つある場合、［リンク］
コマンドの後に［セレクト］コマンドが 2 つ挿入されます。この 2 つの［セレクト］コ
マンドはそれぞれ、指定したインデックスの 2 つのインデックスセグメントに対応しています。その後、必要に応じて、各インデックスセグメントについて、位置付式を指定します。
また、リンクテーブルとのリンクに使うインデックスを変更すると、変更後のインデッ
クスのインデックスセグメントに対応する［セレクト］コマンドが、自動的に追加されます。

リファレンス
Magic eDeveloper 9 Plus281

第 7 章 - 処理コマンド
上記のように、リンクテーブルの項目は［セレクト］コマンドにより自動的に選択されますが、リンクテーブルの項目を追加選択することもできます。項目を指定する場合、［リンク］コマンドと［リンク終了］コマンドの間に［セレクト］コマンドを定義します。指定した項目は、レコードのデータビューに追加されます。
なお、［リンク］コマンド内に別の［リンク］コマンドをネストして指定することはできません。リンクをネストにしたい場合、まず、最初のリンクの直後に 2 番目のリンクを作成し、最初のリンクで指定した項目を 2 番目のインデックスセグメントの位置付式で指定します。これで、ネストと同じ処理ができます。

リンク条件
新規のレコードの作成ではなく、リンクを既存のレコードへのアクセス（照会、修正）に使う場合、リンクされているレコードのうち、キーセグメントの値とリンク条件（そのリンクの総合条件）から返った値が一致するレコードが見つかったとき、リンクは成功したと判断されます。この場合、戻りコードとして「True（論理型）」または「0（数値型）」が返ります。一方、値が一致するレコードが見つからなかったときには、戻りコードとして「False（論理型）」または「1（数値型）」が返ります。
リンクの戻りコードのデータ型は、できるだけ論理型にするようにしてください。これは、論理型のほうが処理の失敗、成功の意味がよく分かるためです。数値型も使えることは使えますが、このデータ型は下位互換のために用意されています。戻りコードのデータ型は、自動的に判別されます。
リンクの値の照合条件としては、次の 4 種類を指定できます。
• ユニーク値による照合……単一の特定のインデックス値を使用して照合を行う方法
で、この場合、［セレクト］コマンドで、［位置付］欄の［最小］と［最大］の両方に同じ式を指定します。この方法が標準です。
• 範囲による照合……範囲を指定して値を照合する方法です。この場合、［セレクト］コ
マンドの［位置付］欄の［最小］と［最大］に異なる位置付式を指定します。この設定では、リンクテーブルのレコードのうち、インデックスセグメントの値が指定した範囲の最初のレコードに対してリンクが設定されます。なお、この照合の場合、［リンク］コマンドの［順］欄を使用して、リンクテーブルのレコードに対するアクセスの方向を指定できます。つまり、指定された範囲のレコードのうち、値が一致する最初のレコードにリンクを設定するか、または最後のレコードにリンクを設定するかを指定できます。
• 部分照合……インデックスがマルチセグメントの場合、リンクに使用したいセグメン
トを指定して照合を行う方法です。この方法では、照合に使いたいインデックスセグ
メントの［セレクト］コマンドで、位置付式（最小／最大）を指定します。この場合、リンクテーブルのレコードのうち、インデックスセグメントの値が指定した範囲にある最初のレコードに対してリンクが設定されます。
• 拡張照合……以上のように、位置付式は、一般にリンクに使いたいインデックスセグ
メントの［セレクト］コマンドで指定しますが、そのほか、次のような設定も可能です。
• ［リンク］コマンドでインデックスを指定すると、そのインデックスのセグメン
トに対応する［セレクト］コマンドが作成されます。この［セレクト］コマン
ドの行で位置付式（最小／最大）を指定できます。リンクの中では、このほかにも必要に応じて［セレクト］コマンドを使用して項目（実データ項目または変数項目）を指定し、その項目に対して位置付式（最小／最大）を指定できます。こういった位置付式を指定した場合、指定した位置付式がすべて満足されたときに初めて、リンクが設定されます。
なお、［セレクト］コマンドを使用して特に項目を指定したときには、インデッ
クスの［セレクト］コマンドと、特に項目を指定した［セレクト］コマンドでは、値の照合方法が異なります。標準のインデックスで項目を定義した場合、検索はインデックスを使用して高速に行われます。一方、［セレクト］コマンドを使用して任意の項目を指定したときには、値の照合は、インデックスセグメン
トの値が一致したところから順次検索で実行されます。
•

282

リンクの中では、［セレクト］コマンドを使用して項目（実データ項目または変数項目）を指定し、その項目に対して範囲式（最小／最大）を指定できます。こういった［セレクト］コマンドが複数ある場合、各コマンドの範囲式はすべてリファレンス
Magic eDeveloper V9 Plus

リンク
タスクの実行時に評価されます（［セレクト］コマンドがメインテーブルに関連しているか、リンクテーブルに関連しているかは無関係です）。
その後、リンクが設定され、リンクされたレコードの項目がデータビューに追加されます。最後に、範囲式が指定されている項目に対して、範囲内にあるかどうかがチェックされます。範囲内に無いレコードはスキップされ、次のレコー
ドのチェックが実行されます。

初期リンク［リンク］コマンドが実行されると同時に、データビューの論理レコードの作成が開始されます。この処理は、［セレクト］コマンドの場合と同じです。具体的には、レコードのデータビューの準備が実行されている間、初期リンクが作成されます。続いて、［レコードメイン］が実行され、その後、リンクが非手続き型処理として再度、リンクの作成が行われます。

リンク式の再計算
リンクは、Magic の処理の中では非手続き型の処理に入ります。そのため、［レコードメイン］または［レコード後処理］の実行中、リンクの中で使われている位置付式（最小／最大）の項目の値が変化し、しかも、その項目が処理テーブルでリンクの前に定義されていたときには、リンク式が再計算されると同時にリンクが再作成されます。このため、リンクの中の項目の値がすべて変更されることがあります。式の再計算については、
前述の「［セレクト］コマンド」の節に解説があります。
リンク式の項目のうち、値の変更を引き起こす項目を「修正項目」と呼んでいます。つまり、処理テーブルでリンクの前に定義されており、その項目の値が変わるとリンクの再計算が引き起こされるような項目が修正項目となります。修正項目の値は以下の場合に変更されます。
• エンドユーザが手動で変更したとき• 項目更新が実行されたとき• ［データ入力］コマンドでデータが入力されたとき• コールされたタスクに渡され、そのタスクで変更されたときリンクの再計算は、登録モードまたは修正モードで実行されます。また、オンラインタ
スク、バッチタスク、通常モード、高速モードのいずれの場合でも実行されます。さらに、［レコードメイン］と［レコード後処理］のどちらでも行われます。
処理が［レコード後処理］で［項目更新］コマンドを使う場合、その対象となる項目
が、リンクの位置付式（最小／最大）で使われている項目でないかどうかを確認しなければなりません。こういった項目に対して［項目更新］コマンドを実行すると、リンク式が再評価され、リンクが再作成されます。その結果、リンクされているレコードの項目のうち、リンクに使われていない項目の更新済みの値が失われます。ただし、見方を変えれば、オンラインタスクの［レコードメイン］では、この［項目更新］コマンドを使用して強制的にリンクを再作成することもできます。

リンク失敗と代入式
リンクの実行に失敗すると、そのリンクの［セレクト］コマンドに定義されている代入式はすべて再評価され、その値が項目に渡されます。その場合の処理の規則は、リンク外の通常の［セレクト］コマンドと同じです。
リンク方式が「登録」の場合、その性質上リンクは必ず失敗します。

用途• ［リンク］コマンドを使用して、メインテーブルとデータベーステーブルとの間に 1 対1 のリレーションを作成できます。
リファレンス
Magic eDeveloper 9 Plus283

第 7 章 - 処理コマンド• ［リンク］コマンドを使うことで、テーブルの特定のレコード検索が可能です。
• ［リンク］コマンドを使用して、特定のテーブルのデータ検証が可能です。

配置［リンク］コマンドは、［レコードメイン］でだけ定義できます。これは、このコマンドがタスクのデータビューに関連する処理のためです。

5 つのリンク方式
Q ＝照会
リンク方式として「Q ＝照会」を指定しておくと、Magic によりリンクの作成が試みられます。
リンクの作成に成功すると、リンクテーブルでリンクレコードの項目のうち、リンクの［セレクト］コマンドで指定されている項目のデータがデータビューに表示されます。
リンクに失敗したときは、［リンク特性］ダイアログでの［確認］欄の設定によって動作が異なります。

確認 =Yes の場合
実行結果の確認を行う「確認リンク」のモードとなります。リンクに失敗したときには、タスクがオンラインタスクかバッチタスクかに応じて、所定の動作が実行されます。
オンラインタスクの場合、タスクの実行が中断され、警告音と共に次のエラーメッセー
ジが表示されます。
テーブルにレ コ ー ド が見つか り ません ： テーブル名
上記で、「テーブル名」は、リンクテーブルの名前です。この名前は、［テーブル］リポ
ジトリの［DB テーブル］欄に登録されている名前です。
続いて、Magic は待機状態に入ります。その後、エンドユーザがリンクキーの値として別の値を入力するか、または、［編集／取消］（Esc）を選択してレコードの編集を取り消すと、処理が再開されます。
リンクで使われる項目のうち、［セレクト］コマンドに代入式が指定されていない項目
は、データ型が数値、日付、時刻の場合、「0」で埋められます。また、データ型が文字のときにはスペースが入れられ、BLOB またはメモのときには項目の内容は空になります。データ型が論理の場合、「False」が入ります。なお、この値はいずれもデフォルト値
で、このデフォルト値は、モデルレベルおよびカラムレベルで変更できます。
他方、リンクで使われる項目のうち、［セレクト］コマンドに代入式が指定されている場
合、その項目には、その代入式によって値が入れられます。

確認 = No の場合
実行結果の確認を行わない「照会リンク」のモードとなります。リンク処理に失敗すると、次の処理が実行されます。
リンクで使われる項目のうち、［セレクト］コマンドに代入式が指定されていない項目
は、データ型が数値、日付、時刻の場合、「0」で埋められます。また、データ型が文字型のときにはスペースが入り、BLOB 型またはメモ型のときには項目の内容は空になります。データ型が論理型の場合、「False」が入ります。なお、この値はいずれもデフォル
ト値で、このデフォルト値は、モデルレベルおよびカラムレベルで変更できます。

284

リファレンス
Magic eDeveloper V9 Plus

リンク
• リンクで使われる項目のうち、［セレクト］コマンドに代入式が指定されている場合、その項目には、その代入式によって値が入れられます。
「確認＝ No」の「照会リンク」では、リンクの失敗時、エラーメッセージが表示されるように設定できます。エラーメッセージを表示したい場合、［リンク終了］コマン
ドの後に［エラー］コマンドを指定し、その条件式でリンクの戻りコードを利用して処理を行います。詳細については、後述の［戻］欄の説明を参照してください。

W ＝書出
リンク方式として「W ＝書出」を指定しておくと、Magic によりリンクの作成が試みられます。リンク処理に成功すると、リンクテーブルでリンクレコードの項目のうち、そのリンクの［セレクト］コマンドで指定されている項目の値がデータビューに表示されます。
リンク処理に失敗すると、以下の規則に従って新規のレコードが作成されます。
• リンクで使われる項目のうち、［セレクト］コマンドに代入式が指定されていない項
目は、データ型が数値型、日付型、時刻型の場合、「0」で埋められます。また、デー
タ型が文字型のときにはスペースが入り、BLOB 型またはメモ型のときには項目の内
容は空になります。データ型が論理型の場合、「False」が入ります。なお、この値はいずれもデフォルト値で、このデフォルト値は、モデルレベルおよびカラムレベルで変更できます。
• リンクで使われる項目のうち、［セレクト］コマンドに代入式が指定されており、タスクがオンラインタスク、または修正モードのバッチタスクの場合、その項目には、
その代入式によって値が入れられます。

C ＝登録
リンク方式として「C ＝登録」を指定しておいたときには、リンクの作成は行われません。この方式では、必ず、新規のレコードが作成されます。レコードの項目には、次の規則にしたがって値が入れられます。
• リンクで使われる項目のうち、［セレクト］コマンドに代入式が指定されていない項
目は、データ型が数値型、日付型、時刻型の場合、「0」で埋められます。また、デー
タ型が文字型のときにはスペースが入り、BLOB 型またはメモ型のときには項目の内
容は空になります。データ型が論理型の場合、「False」が入ります。なお、この値はいずれもデフォルト値で、このデフォルト値は、モデルレベルおよびカラムレベルで変更できます。
• リンクで使われる項目のうち、［セレクト］コマンドに代入式が指定されており、タスクがオンラインタスク、または修正モードのバッチタスクの場合、その項目には、
その代入式によって値が入れられます。

J ＝結合「結合リンク」方式は、Magic の機能と併せて、RDBMS の結合機能を使用して複数のデー
タベーステーブルの読込を行ったり、結合を行ったりするときに使います。この方式では、1 対多のリレーションの作成が可能です。この「結合リンク」は、エンドユーザがレコードを更新したり、Magic により再計算が実行されると機能しますが、「結合リンク」は「確認リンク」として機能します。
「結合リンク」によって、関連するすべてのテーブルにおいて SQL 内部結合のクエリが生成されます。
これに対して、通常のリンクコマンド（「照会リンク」「確認リンク」）の場合は、次のよ
うなデータ処理によってリンクを実現します。
• リンクテーブルがある場合、メインテーブルから行が読み込まれるたびに、Magic により SELECT ステートメントがもう 1 つ追加されます。この SELECT ステートメント
によって、リンクテーブルの行が取り出されます。
リファレンス
Magic eDeveloper 9 Plus285

第 7 章 - 処理コマンド• メインテーブルの行はループしながら、取り出し（フェッチ）処理が行われます。よって、リンクが設定されているときには、メインテーブルの行が取り出されるたびに別のカーソル（SELECT ステートメント）がオープンされ、リンクテーブルの行が取り出されることになります。
• メインテーブルが 2 つのテーブルとリンクされている場合、まず、メインテーブルのカーソルがオープンされ、その後、ループで次のような処理が実行されます。
•

メインテーブルの行が取り出されます。

•

最初のリンクテーブルのカーソルが開かれます。

•

2 番目のリンクテーブルのカーソルが開かれます。

通常のリンクコマンド（「照会リンク」「確認リンク」）は、「結合リンク」と次の点で異なります。
• 結合処理の場合、結合テーブルにテーブルの行が存在しないときには、行は取り出されません。
• 複数のテーブルの結合すると、単一のテーブルになります。したがって、テーブルのカーソルは 1 つで、このカーソルを使用して行の取り出しが行われます。
• Magic のリンク処理は、結合処理よりも効率が悪くなります。これは、リンクの場合、結合に比較して、Magic と SQL サーバとの間の通信量と要求が増えるためです。
以上の点から、複数のテーブルを使用してレポートや照会を行いたい場合、次のようにすると効率が上がります。
• 複数のテーブルを結合し、ビューを使用してレポートや照会（読み取り専用）を実行します。
なお、リンクテーブルはキャッシュに置くようにします。とくに、リンクテーブルに格納されている行の数が少ないときや、リンクテーブルの行の取り出しで同じ行がいくつも返るような場合、リンクテーブルをキャッシュに置きます。
「結合リンク」は「確認リンク」と次の点で異なります。
• 「確認リンク」では、まず、リンクテーブルの行の取り出しが試みられます。ここで所定の行が見つからなかったときには、その行に対応するメインテーブルの行が有効になります。
• 「結合リンク」では、内部結合の SELECT ステートメントを使用してメインテーブルとジョインテーブルが処理されます。このため、制約定義が重要になります。
「結合リンク」を指定した場合、タスクでデータビューが作成される際、Magic により結合テーブルに関する JOIN 構文が生成されます。また、定数と一致条件が入った Where 句
も Magic によって作成され、この Where 句では、メインテーブルと結合テーブルの列の名前が指定されます。次に残りのデータビューが構築されます。
「結合リンク」で JOIN 構文が生成されると、「結合リンク」からは戻りコードとして「True」が返ります。その後、「結合リンク」が「確認リンク」として機能した場合（つまり、エンドユーザによるレコードの更新や Magic による再計算が実行された場合）、リンクの作成が試みられ、その結果、リンクレコードの項目の値がレコードのデータビューに表示されます。以下は、「結合リンク」を使う場合の一般的な規則です。
• 結合テーブルのインデックスセグメントはすべて、［セレクト］コマンドを使用して指定しなければなりません。また、各インデックスセグメントには、それぞれ、位置付式を定義しなければなりません。
• 結合テーブルでは、厳密な範囲の指定が必要です。このため、位置付式（最小）と位
置付式（最大）は同じでなければなりません。
• 結合テーブルに対する位置付式では、次の要素が指定できます。
•

定数

•

タスクで指定されているメインテーブルの項目を指す参照（項目）•

タスクで指定済みの結合テーブルの項目を指す参照（項目）「結合リンク」で使用されたキャッシュは、次の場合にクリアされます。
• インデックスが変更されたとき• ジョインテーブルの列（項目）の値が更新されたとき

286

リファレンス
Magic eDeveloper V9 Plus

リンク
• 位置付、範囲、ソートが実行されたとき• タスクモードが登録モードに変わったとき使用の際の注意• 「結合リンク」は、データベースが SQL データベースの場合にのみ有効です。また、結合できるファイルは同一種類のデータベースのものに限ります。
• DB2 UDB が各テーブルに対して個別のロックを要求するため、即時ロックになっているバッチタスクでの結合リンクは、結合された各テーブルに対してロックしないような結合リンク処理として動作し、フェッチされた各行に対する照会リンクまたは確認リン
クとして動作します。
• Magic によって SELECT 文が生成され、その SELECT 文で複数のファイルが指定されている場合、ファイル名にはいずれもエイリアスが使われます。たとえば、メイン
テーブルには A、最初のジョインテーブルには B、次のジョインテーブルには C などというエイリアスが使われます。
• ユニークインデックスを使った場合、Magic では重複レコードは作成できません（作成できない場合でもメッセージは表示されません）。

O ＝外部（左外部結合）「外部結合リンク」は、メインテーブルと結合テーブルの両方が同じデータベースの SQL
テーブルの場合に使用できます。
また、メインテーブルと結合テーブルは、多対１の関係にならなければなりません。結
合テーブル内にメインテーブルと関連するレコードが 1 つだけあるか、または 1 つもない状態が必要です。
「外部結合リンク」は、メインテーブルのレコードと関連のある、結合テーブルのレコードを結合します。もし、関連するレコードがない場合は、NULL を設定します。関連するテーブルがあれば、「True」を返します。ない場合は、「False」を返します。

データベース毎の外部結合リンクの構文
各 DBMS の外部結合リンクの SQL 構文は以下のようになっています。
DBMS

構文

例

SELECT Dname, Ename FROM
MS-SQL Server、 SELECT { カラム }departments a LEFT OUTER JOIN
DB2 UDB,
FROM メインテーブル
ODBC
LEFT OUTER JOIN リンクテーブ employees b ON
（a.deptno=b.deptno）
ル ON （リンク条件）
OracleSELECT { カラム }FROM メインテーブル , リンク
テーブル
WHERE （メインテーブル = リ
ンクテーブル）

SELECT Dname, Ename FROM
departments a, employees b
WHERE a.deptno=b.deptno（+）

ISAM データベースでの外部結合
本来、外部結合は、RDBMS（SQL 系）でのみ有効なオプションですが、ISAM データ
ベースでも使用でします。この場合、Magic は、「Q= 照会」オプションのリンクコマン
ドと同様の動作をするようになります。

外部結合を使用する上での注意事項• 外部結合リンクはネストできません。外部結合リンクのブロック内にさらにこの同じコマンドを入れると、以下のようなエラーが表示されます。
エ ラ ー ： リ ン ク コ マ ン ド はネス ト で き ません．
リファレンス
Magic eDeveloper 9 Plus287

第 7 章 - 処理コマンド• ISAM 系のメインテーブルに対して外部結合リンクは使用できません。この場合以下のようなエラーが表示されます。
エ ラ ー ： 結合 リ ン クは メ イ ン テーブルが SQL テーブルの と きのみ定義で き ます .
• メインテーブルと異なるデータベースを使用したテーブルに対して外部結合リンクは使用できません。この場合以下のようなエラーが表示されます。
エ ラ ー ： 結合 リ ン クは同 じ デー タ ベース を使用 し なければな り ません .
• 重複可インデックスを指定すると以下のようなエラーが表示されます。
エ ラ ー ： 結合 リ ン ク では重複不可イ ンデ ク ス し か使えません .
• インデックスセグメントすべてを［セレクト］コマンドで定義しない場合、以下のよ
うなエラーが表示されます。
エ ラ ー ： 結合 リ ン ク での ［セ レ ク ト ］ コ マ ン ド は位置付大小の値を同 じ 値に し て
く ださい .
• インデックスセグメントすべてに位置付大小の値を指定しないと、次のエラーが表示されます。
エ ラ ー ： 結合 リ ン ク での ［セ レ ク ト ］ コ マ ン ド は位置付大小の値を同 じ 値に し て
く ださい .
• インデックスセグメントの位置付け指定に式を使用すると、以下のようなエラーが表示されます。
エ ラ ー ： 結合 リ ン ク によ る位置付は、 項目か定数で指定 し て く だ さ い .
• 外部結合リンクのブロック内に変数項目を定義し、定義したその変数項目を使って位置付の式を設定すると、次のエラーが表示されます。
エ ラ ー ： 変数項目に対する結合 リ ン クは無視 さ れます .

［リンク］コマンドの設定欄
タイプ［リンク］コマンドの［処理コマンド］欄は、「リンク」という文字が表示されます。リ
ンク方式の領域（Q ＝照会、W ＝書出、C ＝登録、J ＝結合、O ＝外部）、リンクテーブ
ル識別子の領域での 3 つの領域に分かれています。
リンク方式の選択肢は下記の5つがあります。デフォルトでは「Q＝照会」が選択されます。
• Q ＝照会……「既存のレコードの検索を行いたいときに指定します。リンク方式欄にカーソルを合わせて、［編集］メニューの［特性］（Ctrl+P）を選択すると［リンク特性］ダイアログが開きます。［確認］欄の設定によりリンク失敗時の動作を指定できます。
• W ＝書出……「レコードが存在するかどうかをチェックし、存在しているときには読込を、存在していないときには作成したいときに指定します。
• C ＝登録……「インデックス項目を使用して新規のレコードを作成したい場合に指定します。
• J ＝結合／ O ＝外部……Magic の機能と併せて、RDBMS の結合機能を使用して読込や結合を行いたいときに指定します。

テーブル識別番号［処理コマンド］欄の 3 番目の領域は、リンクテーブル識別番号の領域です。この領域をズームすると、データベーステーブルの一覧が表示されます。この一覧で、リンクする
テーブルを選択できます。

288

リファレンス
Magic eDeveloper V9 Plus

リンク

インデックスメインテーブルとリンクテーブルの間（1 対多のリレーション）では、重複不可のイン
デックス以外は使用できません。
［インデックス］欄をズームするとインデックス一覧（重複不可のインデックスのみ）が表示されますので、ここからインデックスを選択します。

ロック
ロックが必要かどうかは Magic により判断されます。必要な場合、使用している RDBMS
上でロックが設定されます。
SQL ゲートウェイで論理ロックが使用されており、メインテーブルのアクセスモードと共有モードが両方とも［書込］の場合、メインテーブルと結合テーブルに対して同時に論理ロックが機能します。
SQL ゲートウェイで物理ロックが使用されている場合、SQL ゲートウェイにより、現在使用している RDBMS では、ジョインテーブルの SELECT 構文で FOR UPDATE 句が使用できるかどうかがチェックされます。
• RDBMS で、結合テーブルの SELECT 構文で FOR UPDATE 句が使用できる場合（たとえば、Oracle）、アクセスモードが「書込」のメインテーブルと結合テーブルに対してロックが同時にかけられます。
• RDBMS で、結合テーブルの SELECT 結合では FOR UPDATE 句が使用できない場合（たとえば DB2 UDB）、メインテーブルと結合テーブルに対しては、別々にロックがかけられます。ここの動作は、「結合リンク」のほか、「確認リンク」でも同じです。
タスクで、結合テーブルが「読込」モードで開かれたときには、ロックはメインテーブ
ルだけにかけられます。結合テーブルにロックはかけられません。
Magic によるデータベースの更新が必要になったときには、結合テーブルの位置キーにしたがって、各ジョインテーブルの更新が実行されます。
詳細については、第 25 章「SQL に関する考慮事項」を参照してください。

順 :A ＝昇順（デフォルト）
レコードがスキャンされる方向を指定します。スキャンは、リンクで指定しているインデッ
クスをもとに実行されます。昇順を指定したときには「A」を、降順を指定したいときには「B」を選択します。
「B ＝降順」の場合、スキャンは通常とは反対方向で行われます。
つまり、［リンク］コマンドと［リンク終了］コマンドの間に定義されている［セレクト］
コマンドの位置付式（最小／最大）または範囲式（最小／最大）はすべて、逆方向に評価
されます。

フロー
この欄は、リンクには関係ないため、カーソルは止まりません。

条件［条件］欄に「Yes」、「No」、「式」のいずれかを入力することで、リンク条件を定義できます。なお、式の評価対象は論理値でなければなりません。
［条件］欄の値が「Yes」の場合、および、式の評価結果が「True」になる場合は、必要なレコードがそのリンク条件によって取り出し（フェッチ）されます。
［条件］欄の値が「No」の場合、および、式の評価結果が「False」になる場合は、レコー
ドの取り出し（フェッチ）は実行されません。このレコードはリンクに失敗したものとして動作し、以下の処理が行われます。
リファレンス
Magic eDeveloper 9 Plus289

第 7 章 - 処理コマンド• リンクコマンドの選択済みカラムのすべての値がデフォルトに戻されます。
• リンクの戻り値は「False」となります。
• この条件の評価結果が「True」になるまで更新処理コマンドが有効になりません。
• レコード後処理の終了時にリンク条件の評価結果が「False」である場合には、現在の論理レコードのレコード前処理が無視されると同時に、変更内容もすべて無視されます。

［リンク特性］ダイアログ［リンク］コマンド行にカーソルを合わせて、［編集］メニューの［特性］（Ctrl+P）を選択すると［リンク特性］ダイアログが開きます。戻り値の項目や有効なリンク条件、およびリンク条件を評価するタイミングを設定します。このダイアログには、次の設定項
目があります。

戻り値
この欄はオプションです。
［リンク特性］ダイアログの他、処理テーブルの［戻］欄でも設定できます。
リンクが成功または失敗したとき、戻りコードが返りますが、この欄を使用して戻りコードを格納する項目を指定できます。実行時、リンク処理が完了し、リンクが成功すると、ここで指定した項目に「True（データ型が論理型の場合）」または「0（データ型が数値型の場合）」が返ります。一方、リンクが失敗に終わったときには、ここで指定した項目に「False（データ型が論理型の場合）」または「1（データ型が数値型の場合）」が返ります。
この欄には、通常、実データ項目ではなく変数項目を指定します。また、リンクには使用していない項目を指定します。変数項目のデータ型は、論理型または数値型とします。
変数項目は［変数一覧］から選択します。
ヒント：戻りコードを使用して、リンク処理が失敗したときにエンドユーザにエラーメッ
セージを表示することもできます。方法は、［リンク終了］コマンドの後に［エラー］コ
マンドを定義し、その条件式に次のような式を指定します。なお、この場合のリンクは、「確認リンク」以外でなければなりません。
X ＜＞ 0（戻りコードが数値の場合）

not X（戻りコードが論理の場合）

X は、［戻り値］欄に指定したデータ項目の文字コードです。

確認
この欄はリンク形式が「Q ＝照会」／「J= 結合」の場合に有効です。
実行結果の確認処理が行われるかどうかを指定します。この指定により、リンクに失敗したときの処理が変わります。
Ver.8 以前の Magic アプリケーションから［照会リンク］コマンドを含むプログラムをリポ
ジトリ入力した場合には、従来の設定が「確認リンク」だったか「照会リンク」だった
かに応じて、この欄の Yes ／ No が自動的に設定されます。
［リンク照会］処理コマンドの場合、この特性によって以下のように動作します。
• Yes……この値にしておくと、論理条件は必ず「True」となり、リンクは「確認リンク」となります。
リンクが成功した場合、リンクレコードの項目のデータにはデータビューが含まれています。リンクが失敗した場合、エラーメッセージが表示されます。
• No（デフォルト）……論理条件は必ず「False」となり、この場合、リンクは「照会リンク」となります。

290• 式……式を示す番号を指定することもできます。実行時、この式から返る値によって、動的に変更することができます。式から「True」が返ると、リンクは「確認リンク」となります。「False」が返ると、リンクは「照会リンク」となります。
リファレンス
Magic eDeveloper V9 Plus

リンク終了［リンク結合］処理コマンドの場合、この特性によって以下のように動作します。
「結合リンク」を使用すると、SELECT JOIN ステートメントを使用してデータベースからデータをフェッチします。
メインテーブルのリンクカラムを更新した場合、JOIN ステートメントを送りません。実
データを取得するためにリンクテーブルに SELECT ステートメントのみ送ります。
• No……リンクテーブルに該当するデータがない場合、エラーメッセージを表示せず、レコードが再表示されても表示されません。
• Yes……リンクテーブルに該当するデータがない場合、エラーメッセージを表示します。

リンク条件の評価
リンク条件を評価するタイミングを指定します。
［タスク］と［レコード］から選択します。
• T= タスク……ビュー全体が取り出される前に条件が 1 回だけ評価されます。リンク
条件が「False」となった場合、リンクは SELECT 文に含まれなくなります。リンク条
件が「True」となった場合、リンクが行われますが、リンクの再計算は行われません。
• R= レコード……「結合リンク」または「外部結合リンク」を使用した場合は、レコー
ドの取り出し（フェッチ）が行われます。リンク条件が「True」となった場合、リンクが行われ、リンクの再計算も行われます。リンク条件が「False」となった場合、リンクされたデータの取り出し（フェッチ）は行われず、代わりにデフォルト値が使用
されます。

リンク終了
目的
［リンク終了］コマンドを使用して、先に定義した［リンク］コマンドを終了させることができます。このコマンドが実行されると、リンクテーブルの項目の処理がすべて終わったことが、Magic に伝えられます。リンクテーブルの項目とは、［レコードメイン］の処
理テーブルで、［リンク］コマンドと［リンク終了］コマンドの間に定義されている［セレクト］コマンドによって選択された項目をいいます。一方、リンクの外側で定義されている［セレクト］コマンドによって選択された項目は、いずれも、メインテーブルの
項目です。

用途
［リンク終了］コマンドの使い方については、「［リンク］コマンド」を参照してください。

配置［リンク終了］コマンドは、［レコードメイン］の処理テーブルでのみ定義が可能です。

［リンク終了］コマンドの設定欄［リンク終了］コマンドには設定欄はありません。

使用の際の注意
リファレンス
Magic eDeveloper 9 Plus291

第 7 章 - 処理コマンド• 処理テーブルで［リンク］コマンドを定義すると、自動的に［リンク終了］コマンドが挿入されます。
• ［リンク終了］コマンドは、［リンク］コマンドが定義されている限り、削除しないようにします。また、別のコマンドに変更しないように注意します。
• ［リンク終了］コマンドを誤って削除したときには、手動で再度、定義できます。
• たとえば、リンクがネストになっていたり、［リンク］コマンドと［リンク終了］コ
マンドが対になっていなかったり、処理テーブルのリンクが無効な場合、メッセージが表示されます。

ブロック
目的［ブロック］コマンドと［ブロック終了］コマンドとの間には、複数の手続き型コマンド
を論理ブロックとしてまとめて定義できます。挿入した手続き型コマンドは、一括して実行できます。実行するかどうかは、［ブロック］コマンドの［条件］欄を使用して指定できます。また、［ブロック］コマンドと［ブロック終了］コマンドでは、エンドユーザ
がズームを行ったときに論理ブロックのコマンドがすべて実行されるように設定することもできます。

用途• ［ブロック］コマンドと［ブロック終了］コマンドを使うことで、複数の一連の処理コマンドを１度に実行することができます。このため、各処理コマンドごとに条件式を使用して、実行、非実行を指定する必要がなくなります。
• エンドユーザがズームすると、論理ブロックのコマンドがすべて実行されるようにすることもできます。
• デバッグのときに、複数の一連のコマンドを実行されないようにできます。
• 処理を繰り返し実行するようにできます。

［ブロック］コマンドのパラメータタイプ［ブロック］コマンドには以下の 3 つのタイプがあります。
• If• Else• Loop

If［ブロック If］コマンドは、基本的なブロック処理です。
このタイプは、［ブロック終了］コマンドと一致していなければなりません。Magic エン
ジンがこのタイプの処理を見つけた場合、処理コマンドの条件を評価します。条件に合えばブロック内の処理を実行します。条件に合わない場合は、［ブロック終了］コマンドまでの処理をスキップします。［ブロック If］コマンドで指定されたブロック内に別の［ブロック］コマンドをネストさせることができます。

292

リファレンス
Magic eDeveloper V9 Plus

ブロック

Else
［ブロック Else］コマンドは、［ブロック If］コマンドの拡張機能です。
［ブロック Else］コマンドは、それ自身対応した［ブロック終了］コマンドを持っていません。その前に定義されている［ブロック If］コマンドと同じロジック内にあるからです。同じ［ブロック If］コマンドの拡張機能として複数の［ブロック Else］コマンドを定義することができます。
［ブロック If］コマンドの指定条件に合えば、［ブロック If コマンド］から［ブロックElse］コマンドまでの間の処理を実行し、［ブロック Else］コマンドから［ブロック終了］
コマンドまでの処理をスキップします。
［ブロック If］コマンドの指定条件に合わなければ、［ブロック If］コマンドから［ブロック Else］コマンドまでの間の処理をスキップし、［ブロック Else］コマンドで指定された条件を評価します。この条件に合えば［ブロック Else］コマンドから次の［ブロック Else］
コマンドまでの処理を実行します。このようにして［ブロック終了］コマンドまでの各ブロックを評価していきます。

Loop［ブロック Loop］コマンドは、［ブロック終了］コマンドまでの間の処理を繰り返し実行
するように指定するものです。
Magic エンジンが ［ブロック Loop］コマンドを見つけると、まず 条件設定をを評価します。その条件が満たされるのであれば、ブロック内の処理を実行します。
［ブロック終了］コマンドに達すると、［ブロック Loop］コマンドの先頭に戻り、再び条件を評価します。条件が満たされる限り、［ブロック Loop］コマンドの処理を実行します。条件が満たされない場合、ブロック終了処理コマンドを抜けて、タスクフローを続けます。
LoopCounter 関数を使用して、［ブロック終了］コマンドによって実行される回数を監視できます。
詳細は、第 8 章「関数」の関数の説明を参照してください。

フロー［フロー］欄は、オンラインタスクの［レコードメイン］のときだけ有効です。この欄を使用して、タスクのメインウィンドウ上でのエンドユーザの操作に応じて、論理ブロッ
クのコマンドを実行させるように指定できます。

条件
この欄には、論理条件を指定します。その論理条件から返る値を使用して、［ブロック］
コマンドと［ブロック終了］コマンドの間のコマンドを実行するかどうか制御できます。
詳細については、本章の「［エラー］コマンド」を参照してください。

使用の際の注意• ［ブロック］コマンドと［ブロック終了］コマンドは、ネストにすることができます。
ネストの階層は Magic により自動的に認識されます。
• ［ブロック Else］コマンドを複数使用する場合、条件を指定しない［ブロック Else］コ
マンドを最後に使用することができます。
• ［ブロック Else］コマンドにはそれ自身の［ブロック終了］コマンドはありません。
リファレンス
Magic eDeveloper 9 Plus

293

第 7 章 - 処理コマンド• ［ブロック］コマンドと［ブロック終了］コマンドの間のコマンドは、レベルが［レコードメイン］で、［条件］欄の条件式から「True」が返った場合に実行されます。また、エンドユーザによる操作が、［フロー］欄の設定に合致したときに実行されます。
なお、論理ブロックのコマンドのうち、［条件］欄と［フロー］欄が設定されているコマンドがあった場合、そのコマンドは、
その欄によって実行されるかどうかが決まります。
• ［ブロック Loop］コマンドの条件が常に「True」になるように設定した場合、処理が永久にループしてしまいます。

ブロック終了目的
この［ブロック終了］コマンドを使用して、［ブロック］コマンドで開始されたコマンドをすべて終了させることができます。
［ブロック］コマンドと［ブロック終了］コマンドに挟まれたコマンドが、単一の論理ブロックとなります。

用途「［ブロック］コマンド」の解説を参照してください。

［ブロック終了］コマンドの設定欄［ブロック終了］コマンドには、パラメータはありません。

使用の際の注意• ［ブロック終了］コマンドは、［ブロック］コマンドを定義すると、その後に自動的に定義されます。
• ［ブロック終了］コマンドは、［ブロック］コマンドが定義されている限り、削除しないようにします。また、別のコマンドに変更しないように注意します。
• ［ブロック終了］コマンドを誤って削除したときには、手動で再度、定義できます。
• たとえば、［リンク］コマンドと［リンク終了］コマンドが対になっていなかったり、
処理テーブル上の構文が無効な場合、メッセージが表示されます。

コール
目的［コール］コマンドでは、サブルーチンを指定できます。そのサブルーチンの種類に応じて全部で 5 種類の［コール］コマンドがあります。5 種類の［コール］コマンドとは次の通りです。
• ［コールタスク］コマンド……子タスクを呼び出します。
• ［コールプログラム］コマンド……Magic のプログラムを呼び出します。
• ［コール式］コマンド……式を使ってプログラムを呼び出します。
• ［コールユーザ PRC］コマンド……ユーザ定義プロシージャを呼び出します。

294• ［コールリモート］コマンド……リモートアプリケーションのプログラムを呼び出します。
リファレンス
Magic eDeveloper V9 Plusコール
• ［コール Web サービス］コマンド……既存の Web サービスを呼び出します。
• ［コール COM］コマンド……COM オブジェクトを呼び出します。
• ［コール公開プログラム］コマンド……公開プログラムを呼び出します。
呼び出すサブルーチンにはパラメータを渡すこともできますし、サブルーチンからパラメータを受け取ることもできます。

パラメータの受け渡し
Magic では、パラメータの受け渡しに関連するテーブルとして、次の 2 つを使用します。
• ［パラメータ］テーブル…呼び出し元のタスクの［コール］コマンドで使用するテーブル。パラメータとして渡したい項目や値（式を使用）を指定します。
• ［変数項目］テーブル…呼び出されるサブルーチン側のテーブル。
［変数項目］テーブ
ルには、［パラメータ］テーブルのパラメータとちょうど対応するようにパラメータ項目または変数項目を指定します。また、データ型も指定します。

［パラメータ］テーブル［コール］コマンドの［パラメータ］欄をズームすると、［パラメータ］テーブルが開きます。呼び出し元が渡すパラメータをテーブル上に定義します。
［コールタスク］コマンドと［コールプログラム］コマンドの場合には、［パラメータ］
テーブルの右側に［コール先パラメータ］のリストが表示されます。このリストには、呼び出されるタスクで予め定義されたパラメータ項目が表示されます。

#
ここには、Magic によって生成された連番が表示されます。この欄にはカーソルは置けません。

項目
この［項目］欄には、パラメータ項目の文字コードが表示されます。パラメータ項目とは、サブルーチンにデータを渡すときに使われる変数項目をいいます。また、逆にサブルーチンのデータを取り込むときにも使われます。なお、項目を使用してパラメータを渡す方法を「項目渡し」といいます。一方、式を使用してパラメータを渡す方法を「値渡し」といいます（この方法については、下記の「式」のセクションで解説します）。
パラメータ項目は、ズームして［項目一覧］から選択できます。または、項目の文字コー
ドを直接タイプしても結構です。パラメータ項目を指定すると、この［項目］欄に、その文字コードが表示されます。同時に、［名前］欄に、その項目の名前が表示されます。
なお、パラメータとして定数を渡したいときには、この［項目］欄はパスして、［式］欄に進みます。
式が定義されている場合、［項目］欄にカーソルは止まりません。

式［式］欄は、サブルーチンに定数を渡したいときに使います。定数は、式の形式で指定します。パラメータをサブルーチンに定数として渡す方法を「値渡し」といいます。なお、
このパラメータはサブルーチンから値を受け取ることができません。
［式］欄には、式を示す番号が表示され、また、［名前］欄には、式のテキストの最初の部分が表示されます。このパラメータをズームすると［式］テーブルが表示されますので、ここで式を定義します。式は、既存の式から選択することもできます。式からは、Magic の有効なデータ型が返らなければなりません。

リファレンス
Magic eDeveloper 9 Plus295

第 7 章 - 処理コマンド［項目］欄でパラメータ項目を指定しているときには、この欄にはカーソルは止まりません。この［式］欄を使いたい場合、［項目］欄の識別子（文字コード）を削除します。

内容（［コールリモート］以外で指定）［内容］欄には、［項目］または［式］のどちらのパラメータを使用しているかによって、パラメータ項目または式の最初の部分が表示されます。この欄には、カーソルは置けません。

説明／名前（［コールリモート］で指定）［説明］および［名前］欄には、［項目］または［式］のどちらのパラメータを使用しているかによって、パラメータ項目または式の最初の部分が表示されます。この欄には、カーソルは置けません。

スキップ（［コールリモート］以外で指定）［スキップ］欄のチェックボックスをオンにすることで、その行のパラメータについての定義を省くことができます。チェックボックスがオンになっている場合は、呼び出される側へは値は渡されません。

コール先パラメータ（［コールタスク］、［コールプログラム］で指定）渡された値を受け取るパラメータ項目の名前。呼び出されるタスクで予め定義されたパ
ラメータ項目が表示されます。

型（［コールタスク］、［コールプログラム］で指定）渡された値を受け取るパラメータ項目の型。

書式（［コールタスク］、［コールプログラム］で指定）渡された値を受け取るパラメータ項目の書式。

変数項目とパラメータ項目の違い［コールタスク］コマンドと［コールプログラム］コマンドの場合、呼び出されるタスクで定義された「変数」または「パラメータ」へパラメータを渡すことができます。変数
項目が使用されている場合と、パラメータ項目が使用されている場合とでは、呼び出し側タスクの開発時に［パラメータ］テーブルの使用方法が変わります。

呼び出されるタスクでパラメータ項目を 1 つ以上定義している場合• ［パラメータ］テーブルの右側（［コール先パラメータ］のリスト）にパラメータを受け取ることができるパラメータ項目が表示されます。
• ［パラメータ］テーブルの左側（［#］欄、［項目］欄、［式］欄などのリスト）には、右側に表示されているパラメータの数分しか行を作成できません。
• パラメータを受け取る必要のない［コール先パラメータ］がある場合には、左側のリストの同じ行の［スキップ］欄のチェックボックスをオンにします（［項目］欄は「???」、［式］欄は「0」にしておきます）。
• 実行時、変数項目に対するパラメータの受け渡しは行われません。

呼び出されるタスクでパラメータ項目を 1 つも定義せず、変数項目を定義している場合• 使用方法は、前バージョンの Magic と互換性があります。

296

リファレンス
Magic eDeveloper V9 Plusコール
• ［パラメータ］テーブルの右側には何も表示されません。
• ［パラメータ］テーブルの左側には、必要なだけ行を作成できます。定義されている連番の順にしたがって、呼び出されるタスクへパラメータが渡されます。

Magic でのパラメータの受け渡し方法
Magic では、次のようにして実行時にパラメータのやりとりが行われます。
1. 実行時、［コールタスク］コマンドまたは［コール式］コマンドがあった場合、カレントのタスクの［パラメータ］テーブルに定義されているパラメータのカレントの値が、呼び出されたタスクの対応するパラメータ項目または変数項目にコピーされます。
2. パラメータ項目が呼び出されたプログラムまたはタスクで定義されていると、渡されたパラメータが順番にパラメータ項目にコピーされます。この場合、変数項目はいずれも無視されます。パラメータ項目が呼び出されたプログラムまたはタスクで設定されていない場合、パラメータは変数項目にコピーされます。
呼び出されたタスクのパラメータ項目または変数項目には、呼び出し側のタスクの情報（パラメータの値）のコピーが入ることになります。こうして渡された項目は、表示やエンドユーザによる入力など、呼び出されたタスクで任意に使用できます。
3. 呼び出されたタスクが終了すると、パラメータの値の格納に使われていたパラメー
タ項目または変数項目の内容が、再度、呼び出し側のタスクの［パラメータ］テー
ブルのパラメータにコピーされます。ただし、呼び出し側のタスクの［パラメータ］
テーブルで、［項目］欄ではなく［式］欄を使用していたときには、この戻りコピーは行われず、情報は一方通行になります。つまり、呼び出されたタスクでパラメータの値が変更されたときでも、その変更はいっさい、呼び出し側のタスクには伝えられません。
これを整理すると次のようになります。
•

項目渡し……呼び出し側のタスクでパラメータを［項目］で渡す場合。戻りコピーが行われます。呼び出されたタスクでパラメータの値が変更された場合、呼び出し側のタスクにも反映し、同じ値になります。

•

値渡し……呼び出し側のタスクで［式］欄を使用していた場合。戻りコピーは行われません。呼び出されたタスクでパラメータの値が変更されても、呼び出
し側のタスクには反映しません。

「項目渡し」の場合、呼び出されたタスクで変更されたパラメータは呼び出し側に転送されるため、その変更がきっかけで、呼び出し側のタスクで代入式やリンク式（リンク条件）の再計算が実行されることがあります。その場合の再計算は、［セレクト］コマンドや［リンク］コマンドの定義にしたがって行われます。呼び出されたタスクでは、パラメータの値の変更は、エンドユーザの入力や［項目更新］コマンドの実行によって発生します。呼び出し側のタスクでパラメータ項目が画面に表示されている場合、そのパラ
メータ項目の値が呼び出されたタスクで変更された後、制御が呼び出されたタスクから呼び出し側のタスクに戻ると同時に、呼び出し側のタスク画面の表示が更新されることになります。

［コール］コマンドの設定欄
コール、コールタイプ、コールされる処理の識別番号［コール］コマンドの［処理コマンド］欄は 3 つの領域に分かれており、それぞれ、「コール」という文字、コールタイプ（T ＝タスク、P ＝プログラム、E ＝式、B= 公開プログ
ラム、U ＝ユーザ PRC、C=COM、R ＝リモート、W=Web サービス）、コールされる処理を示す番号が表示されます。

リファレンス
Magic eDeveloper 9 Plus297

第 7 章 - 処理コマンド
1. ［コール］コマンドを選択すると、デフォルトでは、［コールタスク］コマンドが表示されます。
このデフォルトの［コールタスク］コマンドを変更したい場合、「T ＝タスク」という文字にカーソルを置きます。
2.［コールタイプ］の領域をクリックするとコンボボックスが開きます。ここで 8 種類の［コール］コマンドから任意のコマンドを選択できます。
3.［識別番号］の領域には、コールタイプに応じた番号が表示されます。

内容
この欄の内容は、指定しているコールタイプによって異なります（詳しくは後述の説明を参照してください）。

パラ
この欄はオプションです。ここには、呼び出されたタスクに渡されるパラメータの数が表示されます。
パラメータを渡したい場合、ここをズームします。
［パラメータ］テーブルが表示されますので、呼び出されるタスクに渡すパラメータを指定します。

フォーム
この欄はオプションです。ここには呼び出し側のタスクのフォームでの識別番号が表示されます。
デフォルトは「0」で、この値にしておくと、呼び出し側のタスクのメインウィンドウ
が、そのメインウィンドウの中に表示されます。一方、フォームの識別番号を指定しておくと、その識別番号のフォームの中に、呼び出されたタスクのメインウィンドウが表示されます。つまり、呼び出された子タスクやプログラムが実行されると、そのメインウィンドウが、このパラメータで指定したフォームのウィンドウの中に表示されます。
この欄で指定するフォームは、クラス =0 のフォームでなければなりません。フォームのサイズや位置は自由に設定できますが、テキストや項目は定義できません。
フォームについては、第 6 章「プログラム」の「フォームテーブル」を参照してください。

フロー［フロー］欄は、オンラインタスクの［レコードメイン］で［コール］コマンドを定義するときにだけ有効です。この欄では、タスクのメインウィンドウ上でのエンドユーザの操作に応じて［コール］コマンドを実行できます。
詳細については、本章の「［セレクト］コマンド」を参照してください。

条件
この欄には、論理条件を指定します。その論理条件から返る値を使用して、［コール］コ
マンドの実行を制御できます。

298

リファレンス
Magic eDeveloper V9 Plus

コール［コールタスク］コマンド目的
このコマンドは、親タスクから子タスクを呼び出して実行するとき使います。子タスク
では、親タスクのメインテーブルとは別個のメインテーブルを扱うことができます。子
タスクでも、その子タスクのウィンドウを表示できます。

用途• サブルーチンの呼び出しに利用できます。
• 1 対多のリレーションの処理が可能です。
• 選択または参照用のデータ一覧の表示に利用できます。
• エンドユーザに確認や入力を促す様々なウィンドウを表示できます。

設定欄［処理コマンド］欄にカーソルを合わせて、［編集］メニューの［特性］（Ctrl+P）を選択すると［コール特性］ダイアログが開きます。このダイアログの中に［ロック］、［同期］、［出力先フレーム］、［式］の設定欄があります。

ロック
タスクまたはプログラムが呼び出されると、カレントのレコードの処理が一時中断され、その後、そのタスクまたはプログラムが完了すると処理が再開されます。その間、呼び出されたタスクまたはプログラムからは、カレントのレコードの項目すべてに対してア
クセスが可能になります。コールプログラムの場合、項目へのアクセスはパラメータを介して行われます。一方、コールタスクの場合、アクセスは直接実行されます。タスク、
プログラムでは、どちらの場合も、カレントのレコードの項目に対して更新を行うことができます。
その場合、更新時のロックの状態が問題になります。エンドユーザによるレコードの変更では、ロック方式として「入力時」が設定されているときには（ロック方式は、［タス
ク特性］ダイアログの［拡張］タブで設定できます）、レコードの変更が始まると同時にロックがかけられるか、または項目の変更が完了したときにロックが設定されます。
同様に、タスクやプログラムを使用してカレントのレコードを変更する場合も、カレン
トのレコードをロックしておくのが重要です。つまり、子タスクもプログラムでは相応の処理が実行され、処理の完了に時間もかかります。このため、タスクやプログラムの実行中は、一般のエンドユーザにはカレントのレコードに対してアクセスや変更をできなくしておくことが必要になります。アクセスが可能な場合、エンドユーザによってレコードが操作されているため、タスクやプログラムの終了時に変更をディスクへ書き込
めないということも起こります。
以上の事情から、呼び出したタスクやプログラムでカレントのレコードを変更するときには、あらかじめレコードにロックを設定しておきます。ただし、タスクやプログラム
でレコードの更新を行わないときには、ロックは必要ありません。これで、一般のエンドユーザによるレコードの変更が可能になります。
タスクやプログラムでレコードの更新を行うときには、このパラメータを使用してレ
コードにロックをかけるかどうかを指定できます。指定できる値は、次の通りです。
• No……この値を指定しておくと、タスクやプログラムの実行時、カレントのレコードにはロックはかけられません。この場合、タスクやプログラムでは、呼び出し側のタ
スクのレコードの更新は行わないようにします。ロックが設定されていない状態でレ
コードの更新を行うと、タスクやプログラムの終了時にエンドユーザがレコードを変更していた場合、更新したレコードをディスクに書き込むことができず、そのため、更新した結果が失われることがあります。

リファレンス
Magic eDeveloper 9 Plus299

第 7 章 - 処理コマンド• Yes……この値にしておくと、呼び出されたタスクやプログラムが実行されると同時に、カレントのレコードにロックがかけられます。したがって、呼び出されたタスクやプログラムでカレントのレコードを更新するときには、「Yes」を指定します。また、
タスクやプログラムの処理で間接的にカレントのレコードが更新されるときも、「Yes」にしておきます。
• 式……［ロック］欄には式を指定することもできます。ズームすると［式］テーブルが表示されますので、ここで式を定義します。
なお、［ロック］欄に「Yes」を指定していても、次の場合にはカレントのデータビューのレコードにロックはかけられません。
• タスクのロック方式が、「B= 更新時」または「N= なし」のとき。この場合、この設定が［ロック］欄の設定より優先されます。
• 呼び出されたプログラムにパラメータが渡されないとき。または、パラメータがすべて、式で渡される（値渡し）場合。

同期
この設定は、レコードレベル（レコード前処理、レコードメイン、レコード後処理）で［コールタスク］コマンドを定義するときにだけ有効です。この設定により、次の指定が可能です。
• 番号を選択して、Magic にデータ操作ステートメントの実行順序を制御させることができます。
• 「Yes」か「No」に評価される論理式を定義できます。

出力先フレーム
この設定は、ブラウザ形式プログラムに関連し、フレームセット内の指定されたフレー
ムでタスクを開くのに使用されます。

式
この欄は、ブラウザ形式のプログラムやタスクを、フレームセット内の特定のフレームに宛てて動的に送信するのに使用されます。

使用の際の注意• ［コールタスク］コマンドは、通常、子タスクを使用してズーム可能ウィンドウを表示したいときに使います。ズーム可能ウィンドウを表示する場合、［フロー］欄の値をズームモードにします。
ズームモードについては、第 5 章「Magic アプリケーションエンジン」の「［フロー］欄」を参照してください。
• ［コールタスク］コマンドで指定した子タスクからは、その上位のタスク（親、そのまた親など）の項目に対してアクセスが可能で、項目の内容の更新も行えます。このため、通常は、子タスクにはパラメータを渡す必要はありません。ただし、場合によっては、タスクの実行中に繰り返し子タスクを呼び出し、その都度、別々の値を渡したいこともあります。そのときには、パラメータを使用して異なる値を渡さなければなりません。
• ［コールタスク］コマンドで指定した子タスクからは、その上位のタスク（親、そのまた親など）で開かれている入出力ファイル（テキストファイルなど）にアクセスが可能です。たとえば、子タスクで出力を行いたい場合、入出力ファイルが親タスクですでに開かれている場合、そのファイルを子タスクで定義する必要はありません。

300

リファレンス
Magic eDeveloper V9 Plusコール
• ［コールタスク］コマンドで指定した子タスクがオンラインタスクの場合、そのタス
クの［レコードメイン］の［処理テーブル］で、［セレクト］コマンドを使用してパー
ク可能項目を少なくても 1 つは選択し、メインウィンドウ上にパーク可能項目が表示されるように設定しておかなければなりません。そうでない場合、子タスクは実行されません。

ファントムタスクの呼び出し
ファントムタスクとは、ウィンドウが表示された状態で処理が終了しているタスクのことです。ハンドラで定義されたコールコマンドで起動することで、このタスクをオープンすることができます。ファントムタスクは、プログラムや公開プログラム、プログラ
ム式から呼び出すこともできます。
ファントムタスクのウィンドウをクリックすると、Magic エンジンは親やその上位のタ
スクのハンドラのコール処理コマンドを探します。そして、該当するコマンド処理に移ります。
エンジンは以下のハンドラを検索します。
• コントロール前処理• コントロール検証処理• コントロール後処理• ［システム］イベントハンドラ• ［ユーザ］イベントハンドラ• ［内部］イベントハンドラ
システム、ユーザー、および内部イベントは、コントロール定義の有無にかかわらず検索されます。
Magic エンジンは、ファントムタスクの親またはその上位タスクのハンドラを下から上に検索します。該当するハンドラを見つけるには、以下の３つの条件が満たされる必要があります。
• ハンドラの［有効］特性が「True」の場合• コール処理コマンドがファントムタスクを呼び出している場合• ブロック処理コマンドのオプションが「Loop」でない場合
ブロック Loop は、常に「False」と評価されます。

有効なコールコマンドが見つからない場合、Magic エンジンは最後に選択されたコント
ロールにパークし、ファントムタスクをオープンしません。
対応するコールコマンドが、指定されたコントロール以外のハンドラの中で見つかった
場合、エンジンは、ファントムタスク用のコールコマンドを実行するイベントを起動させるだけです。
ファントムタスクが実行された後、［イベント］テーブルに定義された現在のイベントを
通常通り再開されます。
コントロールハンドラ内のコールコマンドの実行条件が「True」と評価された場合、エンジンはそのコントロールに移動し、ファントムタスクを呼び出すコールコマンドが実行されます。
コールコマンドがコントロール前処理にある場合、エンジンはコマンドを実行し、コントロールにパークします。コントロール検証処理やコントロール後処理にある場合は、
コールコマンドを実行後、次のントロールにパークします。
ファントムタスクの動作を V9Plus SP1x 以前と同じにするためには、Magic.ini を以下のように設定にしてください。
[MAGIC_SPECIALS]
SpecialAccessPhantomByHandler=N
リファレンス
Magic eDeveloper 9 Plus301

第 7 章 - 処理コマンド［コールプログラム］コマンドと［コール式］コマンド
目的［コールプログラム］コマンドと［コール式］コマンドでは、どちらも、［プログラム］リ
ポジトリのプログラムの実行が可能です。また、この 2 つのコマンドは、［コールタスク］
コマンドに似ています。以下は、その相違点です。
• ［コールプログラム］コマンドと［コール式］コマンドの場合、データはパラメータを介して渡しますが、［コールタスク］コマンドでは、その上位のタスクの項目がすべて自動的に継承されます。
• ［コールプログラム］コマンドと［コール式］コマンドの場合、呼び出すプログラムは独立しており、そのため、どのタスクからでもプログラムを呼び出すことができます。
一方、［コールタスク］コマンドでは、呼び出す子タスクは親タスクに付属しており、したがって、別のタスクから呼び出すことはできません。
• ［コール式］コマンドでは、実行時に、式を使用して動的にプログラムを呼び出すことができます。

用途［コールプログラム］コマンドと［コール式］コマンドを使用して、必要に応じてサブルーチンを呼び出すことができます。

［コールプログラム］コマンドの設定欄
以下は、［コールプログラム］コマンドの特有の設定欄です。
［コール］コマンドに共通の設定欄については、前述の「［コール］コマンド」を参照してください。
［コールプログラム］コマンドと［コール式］コマンドの機能や使い方はほとんど同じで、異なるのはプログラムの呼び出し方法だけです

コールタイプ［コールプログラム］コマンドを指定したい場合、「T ＝タスク」が表示されている設定
欄で「P ＝プログラム」を指定してください。コンボボックスをクリックすると 8 種類のコールタイプが表示されますので、ここから「P ＝プログラム」を選択します。

プログラム識別番号［プログラム識別番号］欄は、必ず指定してください。番号は、［プログラム］リポジト
リの番号を指定します。
番号は、ズームして［プログラム一覧］を表示し、ここから選択しても結構ですし、直接番号を入力しても結構です。

内容
プログラムを選択すると、ここに、そのプログラムの名前が表示されます。

戻
この欄はオプションです。呼び出したプログラムからの戻り値が返ります。
戻り値として、タスク特性の［戻り値］欄で指定された値が返ります。ここで指定された値の型と同じデータ型の変数を指定する必要があります。

［コール式］コマンドの設定欄
以下は、［コール式］コマンドの特有の設定欄です。
［コール］コマンドに共通の設定欄については、前述の「［コール］コマンド」を参照してください。

302

リファレンス
Magic eDeveloper V9 Plusコール［コールプログラム］コマンドと［コール式］コマンドの機能や使い方はほとんど同じで、異なるのはプログラムの呼び出し方法だけです

コールタイプ［コール式］コマンドを指定したい場合、「T ＝タスク」が表示されている設定欄で「E ＝式」を指定してください。コンボボックスをクリックすると 8 種類のコールタイプが表示されますので、ここから「E ＝式」を選択します。

プログラム識別番号［プログラム識別番号］欄は、必ず指定してください。番号は、［式］テーブルの番号を指定します。
［式］テーブルの式は、実行時この［コール式］コマンドにより実行されるプログラムの番号が返るような式にします。
［プログラム］リポジトリでプログラムを追加したり削除したりすると、追加や削除を行ったプログラムの行以降の番号が変わります。この［呼び出される式の識別番号］として、そういった番号が返る式を指定していた場合、式も変更しなければなりません。その場合、PROG リテラルを使うことで自動的に番号が更新されるようにすることができます。たとえば、論理項目「AB」を使い、その値に応じて「プログラム 3」または「プログラム 4」のどちらかが実行されるように指定していたとします。このときには、「IF（BA, 3 PROG, 4 PROG）」という式を作成します。
PROG リテラルについては、第 8 章「関数」の「リテラル」を参照してください。

内容
式の識別番号を指定すると、ここに式の最初の部分が表示されます。この欄は、表示専用です。

使用の際の注意• ［コールプログラム］コマンドは、通常、ズーム可能ウィンドウを表示したいときに使います。ズーム可能ウィンドウを表示する場合、［フロー］欄の値をズームモードにします。ズームモードについては、第 5 章「Magic アプリケーションエンジン」の「［フロー］欄」を参照してください。
• プログラムは、［コールプログラム］コマンドのほか、メニューを使用して独立したプログラムとして起動させる方法と CallProg 関数を使用する方法があります。メニューによる起動の場合、渡されるパラメータにはすべて NULL 値が割当てられます。
• Magic のプログラムでは、その内部で、そのプログラム自体を呼び出すこともできま
すし、パラメータを渡すこともできます。つまり、Magic のプログラムは、ネストを使用して有効範囲の中で再帰呼び出しが可能です。

［コール公開プログラム］コマンド［コール公開プログラム］コマンドは、Magic アプリケーションが実行時にのみ認識できるコンポーネントを呼び出します。

例：• まだ作成されていなかったり、手元にまだない Magic アプリケーションをコンポーネントとしたい場合• 動的に起動プログラムを指定したい場合
処理カラムでズームすると［コール公開プログラム］ダイアログが開きます。

リファレンス
Magic eDeveloper 9 Plus303

第 7 章 - 処理コマンド

図 7-1［コール公開プログラム］ダイアログ

起動する公開プログラムを指定するには以下のようにします。
• 呼び出すアプリケーションが MCF の場合、［公開プログラム名］、［MCF ファイル名］、［データベース名］を式で指定します。
• 呼び出すアプリケーションが MFF の場合、［公開プログラム名］、［MFF ファイル名］
を式で指定します。
• ローカルアプリケーション内のプログラムを呼び出す場合は、［公開プログラム名］のみ式で指定します。Magic は、現在のアプリケーションやロードされたコンポーネン
トや内のプログラムを検索します。最初に検索されたプログラムが実行されます。プ
ログラムが見つからない場合は、処理は失敗します。
式には、公開プログラム名などを文字列で指定してください。ダイアログの各設定欄には、式の番号を指定します。式の番号を指定すると式の内容が表示されます。

実行時の動作
データベース名が指定されている場合：• 現在の Magic のセッションで定義されているデータベースと照合されます。
• 1 番目の設定欄の内容を MCF ファイル名と見なします。
• 2 番目の設定欄の内容をアプリケーション内の公開プログラム名と見なします。

データベース名が指定されていない場合：• 1 番目の設定欄の内容を MFF ファイル名と見なします。
• 2 番目の設定欄の内容をアプリケーション内の公開プログラム名と見なします。
データベース名や CTL ファイル名 ( MCF/MFF )、公開プログラム名が正しい場合は、以下のように動作します。
• アプリケーションが読み込まれます。
• メインプログラムの タスク前処理が実行されます。
• 指定された公開プログラム名に対応するプログラムが実行され、指定されたパラメー
タがプログラムに渡されます。
• メインプログラムのタスク後処理実行されます。
• 呼ばれたプログラムが終了するとコマンド処理は完了し、パラメータや戻り値として指定された項目が更新されます。

304

リファレンス
Magic eDeveloper V9 Plus

コール

読み込まれたアプリケーション
読み込まれたアプリケーションは、ホストアプリケーションが終了するまで常駐され、Magic コンポーネントアプリケーションとしての状態を維持します。このため、呼び出
したアプリケーションにグローバルハンドラとして定義されたイベントが発生した場
合、このハンドラが実行されます。
アプリケーションを呼び出す前は、このハンドラが実行されないことに注意してください。
すべての公開プログラムは、コールリモートや、コール Web サービス、コール EJB、イ
ンターネットリクエトを使用しても呼び出すことができます。

ホストアプリケーションの終了処理時
ホストアプリケーションが終了した場合、読み込まれたアプリケーションの タスク後処理が実行されます。
タスク後処理の実行手順は以下の通りです。
1. ホストアプリケーションのタスク後
2. コンポーネントアプリケーションのタスク後
3. 外部アプリケーションのタスク後

例外処理
以下の場合、処理が失敗します。
• 指定された MCF ファイル名が、有効なアプリケーションファイルでない場合• 指定された MFF ファイル名が、有効な アプリケーションファイルでない場合• 異なるバージョンの CTL ファイルが指定された場合• 指定したアプリケーション内に、指定した公開プログラムが存在しない場合
フローモニタは、例外処理を検知することができます。

［コールユーザ PRC］コマンド目的［コールユーザ PRC］コマンドは、第 3 世代言語（C など）によるプログラムを実行した
いときに使います。必要であれば、パラメータを渡すこともできます。このコマンドでプログラムを呼び出す場合、C の呼び出し規則が使われます。また、呼び出しはメモリ上で実行され、したがって、ユーザプロシージャは Magic の内部ルーチンとして扱われます。
この場合の呼び出しには、マシンのコールまたはジャンプ命令のうち一番簡単なものが使
われます。

用途
• このコマンドを使用して、Magic の機能を拡張できます。たとえば、ユーザが作成したルーチンを呼び出して、Magic ではサポートされていないタスクや機能の実現が可能です。
• Magic 以外の環境で作成されたコードを Magic 上で利用できます。
• 外部プロシージャを使用して、特殊な計算を高速で処理できます。

リファレンス
Magic eDeveloper 9 Plus305

第 7 章 - 処理コマンド［コールユーザ PRC］コマンドの設定欄
以下は、［コールユーザ PRC］コマンド特有の設定欄です。［コール］コマンドに共通の設定欄については、前述の「［コール］コマンド」を参照してください。

コールタイプ［コールユーザ PRC］コマンドを指定したい場合、「T ＝タスク」が表示されている設定
欄で「U ＝ユーザ PRC」を指定してください。コンボボックスをクリックすると 8 種類のコールタイプが表示されますので、ここから「U ＝ユーザ PRC」を選択します。

ユーザ PRC の識別番号［ユーザ PRC の識別番号］の欄は、必ず指定しなければなりません。ここには、呼び出されるユーザ PRC を示す式の番号を指定します。番号は、［式］テーブルの番号を指定します。［式］テーブルの式は、実行時、このコマンドにより実行されるユーザ PRC の名前（文字列）が返るような式にします。
呼び出す関数は以下のように指定します。
• UDP 用に作成された モジュールの場合<Dll ファイル名 >. 関数名• Windows の API を呼び出すような場合@<Dll ファイル名 >. 関数名
例えば、kernel32.dll（このファイルは、Windows で提供されています。）の GetSystemTimeという関数を呼び出す場合、以下のようになります。
@kernel32.GetSytemTime

内容式の番号を指定すると、ここに式の内容の最初の部分が表示されます。この欄は、表示
専用です。

パラ
ここからズームしてパラメータテーブルに以下の書式でパラメータを指定します。
• １番目……パラメータの書式を引数型文字列で指定します。引数型文字列とは、一つ一つの文字が引数の型を意味する文字列で、最後の一文字が関数の戻り値の型を意味します。引数型文字と意味する型は次のとおりです。
•

1…char•2…short•

4…long•F…float•

8…double•D…double pointer•

E…float pointer•

L…long pointer•A…null で終了する文字列 pointer•

V…void pointer•

0…void•T…StrucTrue(Buffer)

例えば、入力パラメータとして StrucTrue（構造体）を渡し、戻りが long 型の関数を呼び出す場合は、’T4’ と指定します。

306

リファレンス
Magic eDeveloper V9 Plusコール
• ２番目以降……実際に渡すパラメータを指定します。構造体の場合、バッファ関数で値が格納された Blob 項目を渡します。
• 最後……関数からの戻り値を格納する項目を指定します。関数が Void 定義の場合、指定する必要はありません。

規C 言語での呼び出し規約を指定します。デフォルトは、「STDCALL」です。
• CDECL…… _cdecl を使用しているプログラムを Magic から起動する場合は、これを指定します。
• STDCALL……_stdcall を使用しているプログラムを Magic から起動する場は、これを指定します。Windows の API を呼ぶ場合は、STDCALL を指定してください。
• FASTCALL……_fastcall を使用しているプログラムを Magic から起動する場合は、これを指定します。

Call UDP のパラメータ例• SetForegroundWindow 関数を呼び出したい場合•

関数名……@user32.setForegroundWindow

パラメータは以下のように指定します。
•

44…… 各文字は、パラメータのタイプを表します。最後の文字は、戻り値のデー
タタイプを表します。

•

WINHWIN……Magic のウィンドウのウィンドウハンドラを取得する関数•

RETUDL……戻り値が返る変数項目

使用の際の注意
Magic の開発版には、C 言語によるサンプルプログラムがいくつか用意されています。サンプルプログラムは、［コールユーザ PRC］コマンドを使用して呼び出すことができます。また、関数のリンクに必要なライブラリも、収められています。

［コール COM］コマンド［コール COM］コマンドは、Magic プログラムから ActiveX や OLE COM オブジェクトを呼ぶことができます。これは、全ての利用可能な COM オブジェクトを Magic アプリケー
ションからアクセスできるということです。
COM オブジェクトの呼び出しについては、第 15 章「COM オブジェクトサポート」
を参照してください。

［コールリモート］コマンド
目的［コールリモート］コマンドでは、サービス、プログラム、引数、パラメータを指定します。このコマンドを実行することでサービスで定義されている、リモートサーバ側のア
プリケーションが実行されます。SOAP サーバや J2EE サーバが定義されているサービスを実行することはできません。
詳細は、第 20 章「分散アプリケーション アーキテクチャ」を参照してください。
リファレンス
Magic eDeveloper 9 Plus

307

第 7 章 - 処理コマンド［コールリモート］コマンドの設定欄
以下は、［コールリモート］コマンド特有の設定欄です。

ウェイト
実行時、
［コールリモート］コマンドがあった場合、エンジンによりサーバが有効かどうかチェックされます。有効であれば、要求されたコマンドが Magic のリクエスタに送られます。
• Yes……リクエスト処理が完了するまでウェイト状態に入り、リクエスト処理が完了した時点でプログラムが継続されます。
• No……リクエスト処理の完了をチェックは行われずに処理が継続されます。
• 式……定義式で動的に変更できます。
Microsoft の制限により、大きなファイル（3MB や 4MB）を送信しようとしたときに、Winsock のエラー 10055 が発生して、正しくファイルを送信できない場合があります。
そのため、コールリモートコマンド、ファイルのアップロードなどにおいて BLOB
項目にファイルのデータを入れて、パラメータとしてやりとりする場合、ファイルサ
イズは 1MB 以内にされることを推奨します 。ファイルサイズが大きくなる場合、FTP などの代替手段を使用されることをご検討ください。
大きな BLOB 項目を転送する場合、ファイルサイズに応じて MGREQ.INI のCommTimeout を設定する必要があります。この値は、あらかじめ FTP などでファイルの転送にかかる時間を計測して、その値 にプラスアルファを加えた値に設定してください。
しかし、この値は、内部的な通信のリトライの間隔となるため、あまり大きな値を設定することは推奨できかねます。そのため、特に通信回線が細い場合など、この値が60 秒以内で転送できるサイズにとどめることを推奨します。

［コール Web サービス］コマンド
目的
Call Web サービスは SOAP プロトコルを使用して Web サービスを呼びます。

コールタイプ［コール Web サービス］コマンドを指定したい場合、「T ＝タスク」が表示されている設定欄で「W ＝ Web サービス」を指定してください。コンボボックスをクリックすると 8
種類のコールタイプが表示されますので、ここから「W ＝ Web サービス」を選択します。

［コール Web サービス］コマンドの設定欄「コール Web サービス」を指定した場合、［サービス］テーブルで「SOAP」タイプのサーバを定義したサービスのみ指定できます。
Web サービスと表示されている右側の欄でズームすると［Web サービス］ダイアログがオープンします。

308

リファレンス
Magic eDeveloper V9 Plusコール

図 7-2［Web サービス］ダイアログ［Web サービス］ダイアログでのパラメータは以下の通りです。

サービス
SOAP タイプのサーバが定義されたサービスを指定します。

SOAP アクション
Web サービスプロバイダが提供する WSDL ファイルの “soapAction” の値を指定します。

スタイル
以下のどちらかを指定します。
• R=RPC……Magic は、起動するタスクで定義されているパラメータタイプに基づいてパラメータを渡します。開発者は、Web サービスプロバイダで定義されているパラ
メータに合わせて開発する必要があります。”Remote Process Call” の略です。
• D= ドキュメント……Magic は XML ドキュメントとして 1 つのパラメータを送り、戻り値も XML で受け取ります。開発者は、Web サービスプロバイダが提供する WSDLに記述されているように、容認された XML のスキーマに基づいてドキュメントを作成する必要があります。

処理［スタイル］欄で「R=RPC」と指定された場合に有効です。WSDL の ”operation name” に記述されているメソッド名を指定します。

ネームスペース［スタイル］欄で「R=RPC」と指定された場合に有効です。WSDL の ”namespace” に記述されているユニークな識別名を指定します。

入力 XSD［スタイル］欄で「D= ドキュメント」と指定された場合に有効です。プロバイダに送信する XML ファイル名が表示されます。

リファレンス
Magic eDeveloper 9 Plus309

第 7 章 - 処理コマンド

出力 XSD［スタイル］欄で「D= ドキュメント」と指定された場合に有効です。プロバイダから受信する XML ファイル名が表示されます。

戻り値
Web サービスからの戻り値を格納する項目を定義式に指定します。書式は、プロバイダ側に合わせる必要があります。

正常終了
論理型の項目を指定してください。ここには、処理が正常に終了したか否かの結果が返
ります。

エラー情報
文字型項目を指定してください。Web サービス処理が失敗した場合、エラー情報が文字列で返ります。
［アシスト］ボタンをクリックすると、［WSDL アシスト］ダイアログが表示されます。

WSDL アシスト［WSDL アシスト］ダイアログは、WSDL のファイルを指定することで［コール Web サー
ビス］に必要なパラメータの大部分を自動的に設定することができます。

図 7-3［WSDL アシスト］ダイアログ

URL 欄に WSDL ファイル名を入力します。F5 キーを押すと［ファイルを開く］ダイア
ログで選択できます。また、インターネット上にある場合は、その URL を指定することができます。WSDL ファイルを指定して Tab キーを押すと使用できる処理がテーブルに表示されます。
• # …… Magic が自動的に採番する識別番号です。
• 名前……WSDL ファイルに記述されている処理名が表示されます。
［履歴］ボタンをクリックすることで、過去に指定した WSDL ファイルの一覧が表示されます。
実行させる処理にカーソルを置いた状態で、［選択］ボタンを押すことで ［Web サービス］ダイアログボックス戻り、パラメータが入力されます。また、［サービステーブル］にもサービスが追加されます。

310

リファレンス
Magic eDeveloper V9 Plus

アクション

WSDL パラメータ［パラ］欄からズームすると WSDL のパラメータテーブルが表示されます。ここには以下の指定カラムを指定します。
• 項目……ここからズームして［項目一覧］からパラメータにする項目を指定します。
• 式……ここからズームしてパラメータとなる［式］を指定できます。
• 説明 …… WSDL パラメータの内容が表示されます。
• リモート名 ……リモートサーバを指定できます。
• ネームスペース…… WSDL のネームスペース ID を指定できます。
• Xsd タイプ …… XML のデータタイプを指定できます。
• モード ……WSDL パラメータのタイプを指定します。
•

I= 入力…… サーバに渡すだけ•

N= 入出力……双方向•

O= 出力……サーバからの戻りのみ• ヘッダ……このチェックボックスを選択すると、SOAP ヘッダにパラメータ含めます。
SOAP ヘッダを送信しない場合は、F3 キーで SOPA ヘッダに含まれるパラメータを削除してください。

使用の際の注意• 処理は１つだけしか選択できません。選択されない場合は先頭の処理が読み込まれます。
• ［Web サービス］ダイアログの設定を変更したり、WSDL アシストで別の処理に変更した場合、上書き確認のメッセージダイアログを表示します。
• パラメータの書式とサポートされるのは以下のものです。
•

string

•

byte

•

int

•

short

•

double•boolean

アクション
目的［アクション］コマンドを使用して、アクション関数を実行できます。関数は、式を使用して指定します。実行時、この式が評価され、アクション関数が実行されることになります。アクション関数は、入出力に関連する特殊な関数です。アクション関数の実行後、［戻り］欄に論理値が返ります。この論理値で、アクション関数が正常に実行されたかど
うかが分かります。

用途指定できるアクション関数は、次の通りです。
• Blb2File…BLOB オブジェクトをファイルとして保存します。
• BufSetAlpha…バッファに文字データを格納します。
• BufSetBit…バッファにビットデータを格納します。
リファレンス
Magic eDeveloper 9 Plus311

第 7 章 - 処理コマンド• BufSetBlob…バッファに Blob データを格納します。
• BufSetDate…バッファに日付データを格納します。
• BufSetLog…バッファに論理データを格納します。
• BufSetNum…バッファに数値データを格納します。
• BufSetTime…バッファに時刻データを格納します。
• BufSetVariant…バッファに Variant データを格納します。
• BufSetVector…バッファにベクトルデータを格納します。
• ClipAdd…クリップボードに追加する値を定義します。
• ClipWrite…クリップボードに書込みます。
• ClrCashe…現在のタスクのキャッシュをクリアします。
• CtxClose…コンテキストをクローズします。
• CtxKill…コンテキストを中断します。
• CtxSetName…コンテキストへの名前を指定します。
• DbCopy…データベースファイルをコピーします。
• DbDel…データベースファイルを削除します。
• DbDiscnt…現在のデータベース接続を切断します。
• DbReload…実行時に常駐テーブルを読み込みます。
• DDEBegin…DDE サーバとのセッションを開始します。
• DDEEnd…DDE サーバとのセッションを終了します。
• DDEPoke…DDE サーバへ文字列を転送します。
• DDExec…Magic から DDE サーバへコマンド文字列を転送します。
• Delay…処理を遅延させます。
• DiscSrvr…不必要なサーバ接続を切断します。
• DragSetCrsr…ドラッグ時のカーソルを定義します。
• DragSetData…ドラッグデータを設定します。
• EditSet…コントロールに値を設定します。
• File2OLE…ファイルを BLOB オブジェクトに変換します。
• File2Req…リクエスタにファイルを送ります。
• FlwMtr…フローモニタにメッセージを表示します。
• FlwMtrVars…フローモニタでの項目を表示します。
• GroupAdd…セキュリティファイルに定義されているユーザグループに対して、ユーザをアプリケーション上で割当てます。
• INIPut…MAGIC.INI ファイルのパラメータを設定します。詳細については、第 8 章「関数」を参照してください。
• IOCopy…入出力ファイルをコピーします。
• IODel…入出力ファイルを削除します。
• IORen…入出力ファイル . のファイル名を変更します。
• JSet…Java のインスタンス変数を更新します。
• JSetStatic…Java のスタティック変数を更新します。
• KbPut…キーボードからの入力（ショートカットを含む）をシミュレートします。
• Logon……現在のアプリケーションにユーザとしてログオンさせます。
• MAXMagic…Magic のウィンドウを最大化します。
• MINMagic…Magic のウィンドウを最小化します。
• MMClear…マーク行をクリアします。
• MMStop…現在のマルチマークハンドラの処理を中断します。

312

リファレンス
Magic eDeveloper V9 Plus

アクション• MnuCheck…メニュー項目の前に付加されるチェックマークを非表示にしたり表示したりします。
• MnuEnabl…メニュー項目の有効、無効の切替を行います。
• MnuName…メニュー名を変更します。
• MnuShow…メニュー項目の表示、非表示の切替を行います。
• ParamsUnPack…パッケージ化されたグローバル変数を取り出します。
• ResMagic…Magic のウィンドウを通常のサイズに戻します。
• RightAdd…セキュリティファイルに定義されているユーザに対して、アプリケーショ
ン上で権利を割当てます。
• Rollback…ネスト上のセーブポイントを指定して、トランザクションをロールバック
します。
• RqCtxTrm…コンテキストを終了します。
• RqExe…リモートエンジンをロードします。
• RqHTTPHeader…HTTP リクエストのヘッダ情報を設定します。
• RqQueDel…リクエスタのキューを削除します。
• RqQuePrl…リクエスタのキューの優先順位を変更します。
• RqRtTrm…実行エンジンを終了します。
• RqRtTrmEx…アプリケーションサーバを終了します。
• SetBufCnvParam…変換パラメータを設定します。
• SetCrsr…カーソル形状を指定します。
• SetLang…使用する言語を設定します。
• SetParam…グローバル変数を設定します。
• SharedValueSet…共有値を作成します。
• SNMPNotify…SNMP メッセージを送信します。
• TreeNodeGoto…ノードを移動します。
• UDF…ユーザ定義関数を呼び出します。
• UserAdd…セキュリティファイルにユーザを追加します。
• UserDel…セキュリティファイルからユーザを削除します。
• VarSet…項目に値を設定します。
• VecSet…ベクトル項目にデータを格納します。

［アクション］コマンドの設定欄
式の識別番号式の識別番号は、必ず指定しなければなりません。ズームすると［式］テーブルが表示されますので、ここでアクション関数を選択するか、定義します。

内容
アクション関数を指定すると、ここに、関数の最初の部分が表示されます。表示専用です。

範囲［範囲］欄は、［アクション］コマンドでは使いません。カーソルは、止まりません。

リファレンス
Magic eDeveloper 9 Plus313

第 7 章 - 処理コマンド

戻（戻りコード）［戻］欄はオプションです。ここに項目を指定しておくと、その項目に関数からの戻り
コードが格納されます。この戻りコードにより、関数の実行が成功したか失敗したかが分かります。関数の実行後、この欄で指定した項目に「True」が返れば、関数は成功したことになります。「False」では、関数の実行が失敗したことを示します。
［戻］欄には、通常、実データ項目ではなく変数項目を指定します。また、論理型の変数
項目を使います。変数項目は、［変数項目］テーブルで定義できます。

フロー
この欄は、オンラインタスクの［レコードメイン］の［処理テーブル］に［アクション］
コマンドを定義するときにだけ使用します。この［フロー］欄を使用して、タスクのメ
インウィンドウ上でエンドユーザがどのようにカーソルを動かしたか、その操作に応じてアクション関数を実行させることができます。
詳細については、本章の「［セレクト］コマンド」を参照してください。

条件
この欄には、論理条件を指定します。その論理条件から返る値を使用して、［アクション］
コマンドの実行を制御できます。
詳細については、本章の「［エラー］コマンド」を参照してください。

使用の際の注意• ［アクション］コマンドは、式で実際にアクション関数を指定しているときにだけ有効です。アクション関数を指定していない場合、コマンドはダミーとして扱われます。
• 式では、アクション関数を複数指定することもできます。複数指定したときには、す
べてのアクション関数が成功したときに限って、戻りコードとして「True」が返ります。

項目更新
目的
項目に値を代入して更新します。

用途• 項目に値を代入します。
• 帳票印刷処理やオンラインタスクで、値の合計処理を行うことができます。
• バッチタスクで更新処理を行う場合、この［項目更新］コマンドを使用して項目の更新を行うことができます。
• 異なるテーブル間で、レコードのコピーを行います。
• 取消不可に設定した加算モードで項目更新を行うことで、データの整合性を維持でき
ます。

314

リファレンス
Magic eDeveloper V9 Plus

項目更新

［項目更新］コマンドの設定欄
項目のシンボル名「項目更新」という文字の右には、項目を示す文字（シンボル名）を指定しなければなりません。項目を示すシンボル名は、［項目一覧］に表示される文字を指定します。なお、
以下、ここで指定した項目を「更新項目」と呼びます。更新項目としては、親タスクで使われている項目を指定することもできます。

内容項目を示すシンボル名を指定すると、ここに、その項目の名前が表示されます。

式の識別番号式の識別番号は、必ず指定しなければなりません。式は、［式］テーブルで定義します。
この式から返った値が、更新項目に代入されます。
［項目更新］コマンドでは、「代入更新」と「加算更新」の 2 種類の更新が可能です。どちらの更新を行うかは、［計］欄（後述）で指定できます。代入更新と加算更新では、式（更新式）の作成方法が異なります。

代入更新の場合の更新式
代入更新の場合、更新式から返った値が更新項目に入れられます。たとえば、項目 B の値を累計し、その結果を項目 A に入れたい場合、更新式は「A+B」となります。

加算更新の場合の更新式
加算更新は、リンクテーブルを扱っている場合、データの整合性を維持したいときに使います。この方法では、更新項目のカレントの値が更新式の値の分だけ増加します。したがって、更新式には、加算する値だけを指定します。たとえば、更新項目 A の値を項
目 B の値の分だけ増加させたいときには、更新式は「A+B」ではなく「B」となります。

計：N= 代入（デフォルト）
この欄に指定できる値は、次のいずれかです。
• N ＝代入……代入更新を行いたいときに指定します。この場合、更新式から返った値
が、更新項目に代入されます。項目の値の更新を行う場合、普通は、この方法を使います。
• I ＝加算……加算更新を行いたいとき、この値を指定します。加算更新は、オンライ
ンタスクでのみ有効です。この方法では、更新式から返った値が、更新項目の値に加算されます。または、減算されます。加算更新は、次の規則にしたがって実行されます。
1. タスクのカレントの処理モードが「登録モード」の場合、更新式の値が更新
項目の値に加算されます。
2. タスクのカレントの処理モードが「修正モード」の場合、まず、更新項目の値から更新式の以前の値（a）が差し引かれ、その後、更新式の新規の値（b）
が更新項目の値に加算されます。
上記の説明のうち、更新式の以前の値（a）とは、レコードが読み込まれた
後、更新式で指定されている項目に値が入ったときに更新式が評価され、その結果、返った値をいいます。また、更新式の新規の値（b）とは、［項目更新］コマンドが実行されたときに更新式が評価され、その結果、返った値をいいます。
3. タスクのカレントの処理モードが「削除」モードの場合、更新項目の値から更新式の値が差し引かれます。

リファレンス
Magic eDeveloper 9 Plus315

第 7 章 - 処理コマンド
4. 更新項目としてリンクテーブルの項目が指定されており、エンドユーザがレコードを操作している間にリンク条件が変更されたため、リンクレコードが新たに読み込まれた場合、次の処理が行われます。この処理は、データの整合性の維持のための処理です。まず、以前のリンクレコードの項目（更新項
目となっている項目）の値から更新式の以前の値が差し引かれ、その後、新規のレコードの項目（更新項目となっている項目）の値に更新式の新規の値が加算されます。

加算更新の例［仕入ファイル］と［商品ファイル］があり、［商品ファイル］は［仕入ファイル］にリンクされているとします。
［商品ファイル］には［在庫］項目があり、ここに在庫数が格納されます。また、［仕入ファイル］には［数量］項目があり、この［数量］項目を使用
して［在庫］項目の値を更新するとします。ここで、［在庫］項目を項目 A、［数量］項
目を項目 B とします。この場合、項目 A を項目 B で更新することになります。更新は、加算更新で行います。この設定では、処理モードによって処理は次のようになります。
［在庫］項目には、当初、「30」（A1）が入っているものとします。
• 登録モードで、［数量］項目に「5」（B1）を入力すると、［在庫］項目の値は「35」（A2）になります。
• 修正モードで、［数量］項目の現在の値が「5」（B1）で、その値を「7」（B2）に変更
すると、［在庫］項目の値は、「35 − 5 ＋ 7 ＝ 37」で「37」（A3）になります。つまり、（A2）−（B1）＋（B2）＝ A3 ということになります。
• 削除モードの場合、上で変更した仕入レコードを削除すると、［数量］項目の値はそのまま「7」（B2）が使われ、したがって、［在庫］項目の値は「37 − 7 ＝ 30」で「30」（A4）となります。つまり、この場合、（A3）−（B2）＝ A4 という計算が行われます。
• また、仕入レコードを削除せず（［数量］項目＝ 7、［在庫］項目の値＝ 37）、［在庫］項目の値が「50」のレコードに移動したとします。この場合、リンク条件が変更されたため新規のリンクレコードが読み込まれます。このときには、以前のリンクレコー
ドの［在庫］項目の値は「37 − 7 ＝ 30」、新規のリンクレコードの［在庫］項目の値
は「50 ＋ 7 ＝ 57」となります。
以上のように、加算更新では、自動的にデータの整合性が維持されるため、整合性維持のための処理はとくに必要ありません。

止：Yes（デフォルト）［止］欄を使用して、［項目更新］コマンドの実行後、［編集／取消］（F2）コマンドをエンドユーザに対して有効にするか、または無効にするかを指定できます。
• Yes……［項目更新］コマンドが完了したときに、エンドユーザが［編集／取消］（F2）
コマンドを使えるようになります。つまり、このコマンドを使用して、エンドユーザ
はカレントのデータビューの内容を元の状態に戻すことができます。この場合、それまでの更新は取り消されます。
• No……［項目更新］コマンドの実行後、エンドユーザは［編集／取消］（F2）コマンドを使えなくなります。したがって、エンドユーザは、データビュー（タスクで使われている更新項目）に対して加えられた変更を取り消すことはできません。

316•

タスクのレベルが［レコード後処理］の場合、通常、この欄は「No」にしておきます。このレベルでは、更新項目の値を元に戻すと、データの整合性が保てなくなることがあるためです。親タスクのレコードデータビューのデータを変更する処理では、一般に、エンドユーザによる更新の取消を禁止します。これで、子タスクのレコードがすでに書き込まれているのに、エンドユーザによって親タスクの更新が取り消されるという不都合を防ぐことができます。

•

複数の子タスクを使用して親タスクのデータビューの項目を更新する場合でも、いずれかの子タスクの［項目更新］コマンドの［止］欄を「No」にしておくだけで、エンドユーザによる更新の取消は防げます。

リファレンス
Magic eDeveloper V9 Plus

項目更新

フロー
この欄は、オンラインタスクの［レコードメイン］の［処理テーブル］に［項目更新］
コマンドを定義するときだけ使用できます。この［フロー］欄を使用して、タスクのメ
インウィンドウ上でエンドユーザがどのようにカーソルを動かしたか、その操作に応じて［項目更新］コマンドを実行させることができます。
詳細については、本章の「［セレクト］コマンド」を参照してください。

条件
この欄には、論理条件を指定します。その論理条件から返る値を使用して、［項目更新］コ
マンドの実行を制御できます。
詳細については、本章の「［エラー］コマンド」を参照してください。

使用の際の注意事項• ［項目更新］コマンドは、通常、タスクの非対話型レベルで使います。
［レコードメイン］では使用しないようにします。また、［止］欄はできるだけ「No」にしておきます。
• ［項目更新］コマンドは、実データ項目に対しては［レコード］レベルだけで使用できます。これ以外のレベルでは、［項目更新］コマンドではレコードデータの更新はできません。また、［レコード］レベル以外のレベルでは、データを直接更新しない
ようにします。
• 加算更新は、オンラインタスクでのみ有効です。バッチタスクでは、代入更新を行う
ようにします。
• 加算更新を行う場合、［項目更新］コマンドは［レコード後処理］の［処理テーブル］に置かなければなりません。これで、レコードの編集後、更新処理が 1 回だけ実行されます。
• 加算更新は、親タスクで累計を計算したい場合、またはリンクテーブルのレコードの項
目に累計を格納したいときに使います。また、その場合、［止］欄の値は「No」に設定
しておきます。この設定で、子タスクのレコードの確定後、エンドユーザにより、親タスクのレコードの変更が取り消されるのを防ぐことができます。
• ［項目更新］コマンドによる処理では、一般に、リンクテーブル中のリンクされている項目（［リンク］コマンドで指定している項目）は、メインテーブル中の指定されている項目（［セレクト］コマンドで指定している項目）と同じように扱われます。ただし、［項目更新］コマンドによる処理が加算更新で、タスクがオンラインタスク、処理モードが修正モードという状況の場合、レコードの操作によりリンク条件が変わったとき（新規のレコードが読み込まれた）には、リンクテーブル中のリンクされている項目に対する処理はメインテーブルの処理とは異なってきます。この場合、以前のレコード中のリンクされている項目の値から、［項目更新］コマンドの更新式の値が差し引かれます。また、新規のレコード中のリンクされている項目の値に、［項目更新］コマンドの更新式の値が加えられます。
たとえば、オンラインタスクの［受注登録］プログラムが修正モードで動作しており、プログラムでは、エンドユーザは顧客番号を変更し、別のレコードに移動できます。
顧客番号は、顧客ファイルにリンクされており、この顧客番号を使用して受注の累計が顧客ファイルに格納されます。エンドユーザが顧客番号を変更すると、［項目更新］
コマンドが実行され、以前の顧客レコード（番号を変更する前のレコード）の受注累計から現在の注文の値（修正済み）が差し引かれると同時に、新規の顧客レコード（番号を変更したため、新たに読み込まれてレコード）の累計に現在の注文の値が加算されます。この処理は、顧客レコードの累計が変更されていないときにも実行されます。

リファレンス
Magic eDeveloper 9 Plus317

第 7 章 - 処理コマンド• 加算更新の場合、原則として更新式には定数を使わないようにします。これは、タスクが修正モードの場合、加算と減算により定数が相殺されるためです。一方、タスクが登録モードまたは削除モードのときには、加算更新の更新式に定数を指定しても問題はありません。
たとえば、子タスクのデータビューのレコード数をカウントし、その値を親タスクで選択されている項目（［セレクト］コマンドで指定されている項目）、またはカレントのタスクのリンクテーブルで選択されている項目に格納したいときなど、加算更新で定数「1」を使うことができます。この場合、子タスクが修正モードのときには、カ
ウントは更新されませんが、子タスクのデータビューのレコードが削除（削除モード）
されたり、新規のレコードが作成された（登録モード）ときには、カウントは即時、更新されます。

［項目更新］コマンドの更新式と［セレクト］コマンドの代入式
項目の値は、［セレクト］コマンドの代入式を使用して割当てることができますが、このほか、［項目更新］コマンドの更新式を使用して項目の値を割当てることもできます。場合によっては、両者は同じ働きをします。
ただし、次のような相違点があります。
• ［項目更新］コマンドは、Magic により検出されると実行されます。ただし、実行の時
期は、［レコードメイン］と［レコード後処理］で異なります。つまり、［項目更新］コ
マンドが定義されているのが［レコードメイン］の［処理テーブル］の場合、エンド
ユーザがカーソルを動かすと［項目更新］コマンドが実行されます（カーソルとコマンドの実行については、第 5 章「Magic アプリケーションエンジン」を参照してください）。
一方、［項目更新］コマンドが定義されているのが［レコード後処理］の［処理テーブル］だったときには、ほかの［レコード後処理］の実行中に［項目更新］コマンドが実行されます。
［セレクト］コマンドの場合、これとは異なり、検出されると同時に実行され、したがって、代入式も必ず実行されて値が割当てられます。
• ［項目更新］コマンドによる更新が代入更新の場合、代入式の項目の値が変更されても、再計算は行われません（手続き型処理）。これに対して、［セレクト］コマンドの代入式は、その代入式に指定されている項目の値が変更されると同時に再計算が実行され、値が割当てられます（非手続き型処理）。
• ［動作環境］ダイアログの［システム］タブの［照会モードでの修正許可］欄が「Yes」に設定されているときには、登録モードと修正モードのほか、照会モードでも、［項目更新］コマンドの更新式が評価されます。一方、［セレクト］コマンドの代入式は、タスクが登録モードのときに限り、項目（実データ項目）への代入が実行されます。

データ出力
目的
［データ出力］コマンドを使用して、レコードをテキストファイルまたは出力デバイスに出力することができます。このコマンドでは、レコードは、フォームに定義されている
レイアウトにしたがって出力されます。Magic では、印刷帳票は出力テキストファイルに書き出すことで作成します。また、レイアウトは、フォームに定義できます。このコ
マンドは、通常、帳票の出力に使用します。
データ出力が HTML マージフォームである場合には、このコマンドはデータを独立した
インターネット HTML テンプレートファイルにマージします。
HTML マージについての詳細は、第 10 章「出力フォーム」を参照してください。

318

リファレンス
Magic eDeveloper V9 Plus

データ出力用途• 帳票の作成• データをテキスト形式で出力• タスクのデータを定義済み HTML テンプレートファイルにマージ［データ出力］コマンドの設定欄
出力フォーム識別番号［出力フォーム識別番号］欄は、必ず指定しなければなりません。この欄には、［フォー
ム一覧］でのフォームの識別番号を指定します。指定するフォームのクラスは、1 以上でなければなりません。ここにフォームを指定すると、そのフォームのフォーマットでレコードが出力されます。ここでフォーマットとは、テキストファイルのレイアウトまたはレポートの各部（ヘッダ、フッタ、ページヘッダ、ページフッタ、明細の各部）の形式をいいます。出力フォーム識別番号は、この欄をズームすると［フォーム一覧］が表示されますので、ここからフォームを選択して指定できます。
なお、新規のフォームを指定したい場合、まず、フォームを［フォーム］テーブルで定義しなければなりません。
［フォーム］テーブルは、［タスク／フォーム］を選択するか、
または［フォーム］ツールバーボタンをクリックすると開きます。

内容
出力フォーム識別番号を指定すると、ここにそのフォームの名前が表示されます。

ファイル［ファイル］欄は、必ず指定しなければなりません。ここには、［入出力ファイル］テー
ブルの番号を指定します。
［入出力ファイル一覧］で表示される番号が指定されます。ここで指定した出力ファイルにフォームが出力されます。デフォルトは、「1」です。
ここで指定したファイルは、その［アクセス］欄の値が［W ＝書出］または［A ＝追加］になっていなければなりません。フォームが HTML マージ形式の場合には、［アクセス］
欄の値は［W ＝書出］のものを指定します。
このファイルとしては、上位タスクで定義されている（開かれている）ファイルを指定することもできます。
この欄をズームすると［入出力ファイル一覧］が表示されますので、ここでファイルを指定します。新規のファイルを定義したい場合、［入出力ファイル一覧］をズームします。これで、［入出力ファイル］テーブルが開きますので、ここで新規のファイルを定義します。
入出力ファイルテーブルに関する詳細は、第 6 章「プログラム」を参照してください。

頁［頁］欄は、帳票をプリンタまたは画面に出力したいときに使います。この欄を使用して、ページ終了（EOP）状態が発生したときの動作を指定できます。ページ終了（EOP）
状態は、出力対象のフォームがカレントのページの残りのスペースより大きいときに発生します。ページ終了（EOP）状態の識別にはページサイズ（行数）が使われますが、このページサイズは論理ページサイズで、プリンタの物理ページサイズとは無関係です。
Magic の論理ページサイズとプリンタの物理ページサイズは、［プリンタ］テーブルで関係を指定できます。Magic の論理ページサイズは、次のどちらかの値により計算されます。

リファレンス
Magic eDeveloper 9 Plus319

第 7 章 - 処理コマンド• ［データ出力］コマンドで指定されている入出力ファイルの［行］欄の値（詳細については、第 6 章「プログラム」の「入出力ファイルテーブル」を参照してください）。
［行］欄に値が設定されていないときには、次の値が使われます。
• ［データ出力］コマンドで指定されている入出力ファイルが出力されるプリンタの［行］欄の値（詳細については、第 2 章「設定」を参照してください）。
ページ終了（EOP）状態は、次の［データ出力］コマンドで改ページが実行されるように設定されている場合、そのコマンドでクリアされます。つまり、次の［データ出力］
コマンドの［頁］欄の値が「A ＝自動」または「T ＝先頭」のときにクリアされます。
Magic では、複数の入出力ファイルや出力デバイスに対して同時に出力が可能ですが、この場合、ページ終了（EOP）状態は、入出力ファイルや出力デバイスごとに処理されます。つまり、特定の入出力ファイルでページ終了（EOP）状態が発生したときでも、別の入出力ファイルは通常どおり処理されます。
［頁］欄に指定できる値は、次の通りです。
• A ＝自動……デフォルトです。この設定では、ページ終了（EOP）状態が検出されると、改ページが実行されます。また、カレントの［データ出力］コマンドによって出力されるフォームと同じクラス番号を持ったヘッダフォームがすべて、もう１度出力されます。この場合、出力されるヘッダフォームは、［フォーム］テーブルで、カレントの［データ出力］コマンドによって出力されるフォームより前に定義されているものに限られます。したがって、［フォーム］テーブルで、カレントの［データ出力］
コマンドにより出力されるフォームより後に置かれているヘッダフォームは出力されません。レポートを出力する場合、通常は、この設定にしておきます。
• S ＝スキップ……この設定にしておくと、フォームが出力される前に、カレントのページにフォームを出力するスペースが十分あるかどうかがチェックされます。スペースがある場合、フォームが出力されます。スペースがないときには、そのフォームはス
キップされ、出力メディアには書き出しは行われません。その場合、ページ終了（EOP）
状態がオンになります。このオンのページ終了（EOP）状態は、EOP 関数を使用してチェックできます。
• T ＝先頭……この設定にしておくと、プリンタに対して改ページコードが送られ、その後、フォームデータがプリンタに送られます。この場合、次のページの先頭から印刷が始まります。つまり、強制改ページが実行されます。この処理では、ヘッダはもう１度出力されることはありません。
ページ終了（EOP）状態が発生したときの処理は、必要に応じて決めます。たとえば、ページ終了（EOP）状態が発生したとき、強制的に改ページして出力を続けた
いときは、［頁］欄の値を「T ＝先頭」にしておきます。
［頁］欄の値を「S ＝スキップ」にしておいたときには、ページ終了（EOP）状態が発生すると、その後の出力は無視されます。その後、ページ終了（EOP）状態がクリアされると、出力が再開されます。
このため、「S ＝スキップ」は、とくにアプリケーションで出力関連の処理を制御した
い場合に指定します。その場合、EOP 関数、Line 関数を使用して［データ出力］コマンドの実行を制御します。

フロー
この欄は、
［データ出力］コマンドをオンラインタスクの［レコードメイン］の［処理テーブル］に定義しているときに限って有効です。この［フロー］欄を使用して、タスクのメインウィンドウ上でエンドユーザがどのようにカーソルを動かしたか、その操作に応じて［データ出力］コマンドを実行させることができます。
詳細については、本章の「［セレクト］コマンド」を参照してください。

320

リファレンス
Magic eDeveloper V9 Plus

データ入力条件
この欄には、論理条件を指定します。その論理条件から返る値を使用して、［データ出力］コマンドの実行を制御できます。
詳細については、本章の「［エラー］コマンド」を参照してください。

使用の際の注意事項• データ出力プログラムは、APG を使用して自動的に作成できます。
• ［データ出力］コマンドは、外部テキストファイル（出力ファイル）用のコマンドで、
データテーブルの操作コマンドではありません。
• ［データ出力］コマンドでは、出力先を画面、ディスクファイル、プリンタ、デバイ
スドライバにリダイレクトすることができます。詳細については、第 6 章「プログラム」の「入出力ファイルテーブル」を参照してください。
• 帳票を出力する場合、帳票の構成要素（たとえば、ヘッダ、フッタ、明細行）ごとにそれぞれ、［データ出力］コマンドを定義します。その場合、帳票の構成要素をすべて、テキストファイルが定義されているタスク（［入出力ファイル］テーブルで定義
します）に一括して定義しても結構ですし、そのタスクの子タスクに定義することもできます。
• ページ終了（EOP）状態は、［頁］欄を「A ＝自動」または「T ＝先頭」に設定した［データ出力］コマンドを実行することでクリアできます。

データ入力
目的
［データ入力］コマンドは、テキストファイルからデータを読み取りたいときに使います。

用途［データ入力］コマンドは、テキストデータを読み込むことができます。

［データ入力］コマンドの設定欄
入力フォーム識別番号
この欄は、必ず設定してください。
［フォーム一覧］からフォームを選択すると、そのフォームの番号が、このパラメータに表示されます。指定するフォームのクラスは、1 以上でなければなりません。つまり、タスクのメインウィンドウのフォーム番号は指定できません。入力フォーム識別番号は、このパラメータをズームすると［フォーム一覧］が表示されますので、ここからフォームを選択して指定できます。
なお、新規のフォームを指定したい場合、まず、フォームを［フォーム］テーブルで定義しなければなりません。
［フォーム］テーブルについては、第 6 章「プログラム」の「フォームテーブル」参
照してください。

リファレンス
Magic eDeveloper 9 Plus

321

第 7 章 - 処理コマンド

内容
入力フォーム識別番号を指定すると、ここにそのフォームの名前が表示されます。

ファイル［ファイル］欄は、必ず指定しなければなりません。ここには入力ファイルの番号を指定します。
［入出力ファイル一覧］で表示された番号が指定できます。ここで指定したファ
イルからデータが読み込まれます。デフォルトは、「1」です。
ここで指定したファイルは、その［アクセス］欄の値が［R ＝読込］になっていなければなりません。
［アクセス］欄は、［入出力ファイル］テーブルで設定できます。
このファイルとしては、上位タスクで定義されている（開かれている）ファイルを指定することもできます。
新規のファイルを定義したい場合、［入出力ファイル一覧］をズームします。これで［入出力ファイル］テーブルが開きますので、ここで新規のファイルを定義します。
詳細については、第 6 章「プログラム」を参照してください。

形：C ＝固定長（デフォルト）
この［形］欄では、どのような方法でレコードのフィールドを区切って読み込むかを指定できます。指定できる値は、次の通りです。
• C ＝固定長……この設定の場合、フィールドは区切文字で区切られていないものとしてレコードが読み込まれます。つまり、レコードのフィールドは、実際の長さのまま読み込まれ、したがって、フォームのレイアウトは入力ファイルとまったく同じでな
ければなりません。フィールドに置かれているスペースもそのまま読み込まれます。
「C ＝固定長」にした場合、［記］欄は必要ありませんので、カーソルは止まりません。
• S ＝単区切……入力レコードのフィールドが何らかの区切文字で区切られている場合（各フィールドの値の右に何らかの文字が置かれている場合）、この設定にします。
たとえば、入力レコードが、「123, ABCDE, -23.57」というようにコンマ（,）で区切られているときには、この設定にします。また、［記］欄にコンマを指定します。この設定にした場合、フィールド間のスペースは無視されます。
• D ＝複区切……入力レコードのフィールドが何らかの区切文字で区切られており、その文字が 2 字の場合、つまり、データの前後（左側と右側）にそれぞれ区切文字が使われている場合、この設定にします。
たとえば、入力レコードのフィールドが、「 23 ABCDE 23.57 }」というように二重引用符（ }）で区切られているときには、この設定にします。また、［記］欄に二重
引用符を指定します。
この設定にした場合、レコードのフィールド間のスペースは無視されます。なお、入力
レコードのフィールドがコンマで区切られ、しかも、データの前後に二重引用符が付加されている場合、［形］欄の設定を「S ＝単区切」にした［データ入力］コマンドを実行すると、データの前後の二重引用符は削除されます。たとえば、入力レコードが次のようだったとします。
A , B ,

C

この場合、［データ入力］コマンドの実行後、データは「 A , B , C }」ではな
く「A,B,C」の形で読み込まれます。

記
この欄には、区切文字として使用する文字を指定します。この欄は、［形］欄に「S ＝単区切」または「D ＝複区切」を指定したときに使用します。

322

リファレンス
Magic eDeveloper V9 Plus

データ入力フロー
この欄は、［データ入力］コマンドをオンラインタスクの［レコードメイン］の［処理テーブル］に定義しているときに限って有効です。この［フロー］欄を使用して、タスクのメインウィンドウ上でエンドユーザがどのようにカーソルを動かしたか、その操作に応じて［データ入力］コマンドを実行させることができます。
詳細については、本章の「［セレクト］コマンド」を参照してください。

条件
この欄には、論理条件を指定します。その論理条件から返る値を使用して、［データ入力］コマンドの実行を制御できます。
詳細については、本章の「［エラー］コマンド」を参照してください。

使用の際の注意事項• データ入力プログラムは、APG を使用して自動的に作成できます。
• データの読込先の項目が代入式またはリンク式に指定されいる場合、再計算（非手続き型処理）が実行されます。
• 入力テキストファイルのレコードのレイアウトがレコードごとに異なる場合、各レ
コードごとに［データ入力］コマンドを指定しなければなりません。
• バッチタスクでスクラッチファイル（ファイル番号 0）を使う場合、［タスク制御］ダ
イアログの［タスク終了条件］欄で式を指定しなければなりません。式は、EOF（ファイル終了）関数を使用してファイルの終了をチェックし、ファイルが終了した場合、バッチタスクを終了するようなものにします。または、レコードの数を定義しておき、その数のレコードが処理されればバッチタスクを終了するという式でも結構です。
• ［データ入力］コマンドでは、複数行のフォームを使用して、その行の数だけのレコー
ドを入力ファイルから読み込むという処理もできます。この方法は、入力ファイルのデータをコピーして、データベーステーブルを作成するときに利用できます。この場
合、入力ファイルのレコードは、読み込まれた順番でデータベーステーブルの各行に置かれることになります。
• フォームの行のサイズは、それぞれ最大 9,999 バイトです。したがって、［データ入力］コマンドでは、最大で 9,999 バイトまでのレコードの読込が可能です。
• フォームの最大内容サイズ（フォームの行数と列数を掛けたサイズ）は、32KB です。
• 入力ファイルの数値フィールドには、マイナス記号、カンマ、小数点（編集後の数値）があってもかまいません。
• ［データ入力］コマンドの実行時、そのコマンドで使われているフォームの幅（サイズ）をもとに入力ファイルのレコードが読み込まれます。このフォームの幅の読み取りが完了する前に行の終止符（LF）が検出されると、その時点で［データ入力］コマ
ンドは終了します。
入力ファイルの行区切り文字に関する詳細は、第 6 章「プログラム」の「入出力ファ
イルテーブル」を参照してください。

リファレンス
Magic eDeveloper 9 Plus323

第 7 章 - 処理コマンド

エディット
目的
このコマンドを使用して、ポップアップウィンドウにテキストファイルを表示できます。
ウィンドウでは、エンドユーザがデータを表示したり編集したりすることできます。

用途• テキストファイルの内容の表示• テキストファイルの内容の編集［エディット］コマンドの設定欄
照会ファイル式の識別番号［照会ファイル式の識別番号］欄は、必ず指定しなければなりません。ここには、［式］テー
ブルの式の番号を指定します。式は、実行時、表示対象となるテキストファイルの名前が返るように作成します。テキストファイルの名前には、サーバと OS パスを付加することもできます。
［データ入力］コマンドや［データ出力］コマンドと違って、［エディット］コマンドでは、［入出力ファイル］テーブルに入力ファイルを定義しておく必要はありません。

内容
式の番号を指定すると、ここに、その式の内容が表示されます。

編集：S ＝参照（デフォルト）
この［編集］欄を使用して、テキストファイルの内容をエンドユーザが編集できるようにするか、または見るだけに限定するか指定できます。
• S ＝参照……この設定にしておくと、エンドユーザはテキストファイルの内容を見るだけで、編集はできません。
• E ＝編集……この設定では、エンドユーザはスクリーンエディタを使用して内容の編集ができるようになります。このスクリーンエディタは、［ヘルプ画面］の編集に使うものと同じです。
詳細については、第 12 章「エンドユーザメニュー & ヘルプ」の「ヘルプリポジト
リ」を参照してください。
「E ＝編集」にしておいた場合、実行時、テキストファイルが大きくフォームに収まらないときには、自動的に「E ＝編集」から「S ＝参照」に切り替えられます。また、エラー
メッセージも表示されます。これによって、エンドユーザが内容を変更してもサイズが大きいため保存されないという不都合を回避できます。

フォーム［フォーム］欄には、フォームの識別番号を指定します。
［フォーム一覧］で表示される番号が指定できます。ここで指定したフォームが、テキストファイルの表示に使われます。このフォームは、クラスが「0」のフォームでなければなりません。この欄が空白のときには、デフォルトとしてタスクのメインフォームが使われます。

324

リファレンス
Magic eDeveloper V9 PlusOS コマンドこの欄をズームすると［フォーム一覧］が開きますので、ここでフォームを選択します。
新規のフォームを作成したい場合、［フォーム一覧］をズームして［フォーム］テーブルを開き、ここで定義します。
詳細については、第 6 章「プログラム」の「フォームテーブル」を参照してください。

位置付
この欄は、［エディット］コマンドとは関係ないため、カーソルは止まりません。

フロー
この欄は、
［エディット］コマンドをオンラインタスクの［レコードメイン］の［処理テーブル］に定義しているときに限って有効です。この［フロー］欄を使用して、タスクのメインウィンドウ上でエンドユーザがどのようにカーソルを動かしたか、その操作に応じて［エディット］コマンドを実行させることができます。
詳細については、本章の「［セレクト］コマンド」を参照してください。

条件
この欄には、論理条件を指定します。その論理条件から返る値を使用して、［エディット］
コマンドの実行を制御できます。
詳細については、本章の「［エラー］コマンド」を参照してください。

使用の際の注意• このコマンドを使う場合、外部テキストファイルはディスクにおいておかなければなりません。他のデバイスのファイルは使えません。
• このコマンドの実行時、外部テキストファイルは閉じていなければなりません。つまり、他のアプリケーションやネットワーク上のエンドユーザ、タスクなどによって使われていない状態でなければなりません。
• ［エディット］コマンドは、デフォルトで対話型のコマンドです。バッチタスクの場
合も、エンドユーザは、フォームウィンドウで操作（表示または編集）が可能です。

OS コマンド目的
このコマンドは、オペレーティングシステム上で外部プログラムやバッチファイル、コ
マンドファイルを実行したいときに使います。Magic の動作中、このコマンドが検出されると、カレントのタスクの実行が一時中断されます。その後、外部プログラムやバッ
チファイル、コマンドファイルが終了すると、［OS コマンド］の次のコマンドからカレントのタスクが再開されます。

リファレンス
Magic eDeveloper 9 Plus325

第 7 章 - 処理コマンド

用途
このコマンドを使用して、一時的に別のプログラム（たとえば、表計算プログラムやワー
ドプロセッサ）に移り、その後、Magic に戻るという操作が可能になります。

［OS コマンド］コマンドの設定欄
式の識別番号［式の識別番号］欄には、コマンド式の識別番号を指定します。番号は、［式］テーブルのものを使用します。式は、［OS コマンド］の実行時に実行される外部プログラムの名前が返るように作成します。デフォルトとして「0」が入っており、この場合、［内容］欄に指定した外部プログラムが実行されます。

内容［式の識別番号］欄に番号を指定すると、その式の初めの部分がこの欄に表示されます。
また、カーソルは次の欄に移動します。
［式の識別番号］欄の値を「0」にしておいた場合、ここに実行する外部プログラムの名前を入力します。名前には、二重引用符は必要ありません。この名前は、通常はプログ
ラム名だけですが、オペレーティングシステムで許される長さ以内で（たとえば、DOSでは 128 文字）ディレクトリなどを指定することもできます。

ウェイト：No（デフォルト）［ウェイト］欄を使用して、呼び出したプログラムが完了してから Magic のプログラムを続行するかどうかを指定できます。
• No……Magic のプログラムは、呼び出したプログラムの完了を待たずに処理が続行されます。
• Yes……Magic のプログラムは、呼び出したプログラムの完了後、処理が続行されます。

画（画面）：N= 通常（デフォルト）
外部プログラムの表示形式を指定します。指定できる値は、「H ＝なし」、「N ＝通常」、「X ＝最大化」、「M ＝最小化」のいずれかです。
• H ＝なし……この設定にしておくと、外部プログラムは現在表示されているウィンド
ウの裏で動作します。したがって、外部プログラムのウィンドウは見えません。
• N ＝通常……この設定の場合、外部プログラムのウィンドウは、一番上に表示されます。
• X ＝最大化……この設定では、外部プログラムのウィンドウは一番上に表示されると同時に、そのサイズが最大になります。
• M ＝最小化……この設定では、外部プログラムのウィンドウは最小化されて実行しま
す。

戻（戻り）
この欄はオプションです。ここには、数値項目を指定します。ここで指定した項目に、
オペレーティングシステムから送られた外部プログラムの戻りコードが格納されます。
この戻りコードが「0」以上のときには、外部プログラムは Magic により正常に実行されたことになります。なお、戻りコードの値はプログラムによって異なります。一方、戻りコードが「-1」の場合、外部プログラムは正常に実行されなかったことを示します。原
因としては、外部プログラムの名前やパス名が間違っていることやメモリ不足が考えられます。また、コマンドプロセッサが見つからないときにも正常に実行されません。

326

リファレンス
Magic eDeveloper V9 Plus

イベント実行
この欄に指定する項目は、通常、実データ項目ではなく変数項目にします。また、その変数項目をあらかじめ［セレクト］コマンドで指定しておかなければなりません。変数
項目は［変数項目］テーブルで定義でき、このパラメータの変数項目は数値型でなければなりません。

フロー［フロー］欄は、［OS コマンド］をオンラインタスクの［レコードメイン］の［処理］テーブルに定義しているときに限って有効です。この［フロー］欄を使用して、タスクのメインウィンドウ上でエンドユーザがどのようにカーソルを動かしたか、その操作に応じて［OS コマンド］を実行させることができます。
詳細については、本章の「［セレクト］コマンド」を参照してください。

条件
この欄には、論理条件を指定します。その論理条件から返る値を使用して、［OS コマンド］の実行を制御できます。
詳細については、本章の「［エラー］コマンド」を参照してください。

イベント実行目的
このコマンドによりイベントを強制的に引き起こすことができます。そのイベントに対応するイベントハンドラが定義されていれば、そのハンドラが実行されます。実行されるイベントは、システムによって生成される他のイベントと同様に処理されます。
ホストアプリケーションでユーザイベントの公開名を指定することで、コンポーネントのイベントを起動することもできます。

用途
イベントに対して定義されたイベントハンドラを実行します。

［イベント実行］コマンドの設定欄
内容
この欄で、ズームすると［イベント実行］コマンドで使用されるイベントまたはトリガを指定するダイアログが表示され、ここで［イベントタイプ］と［イベント］を設定します。
イベントタイプには以下のものがあります。
• S= システム……キー操作の組み合わせをトリガとするイベント• I= 内部 ……アクション一覧に定義されている Magic の内部イベント• U= ユーザ……ユーザイベントテーブルに定義されているイベント• P= 公開イベント……ユーザイベントの公開名を定義した式を指定します。式は、文字列で指定します。
リファレンス
Magic eDeveloper 9 Plus327

第 7 章 - 処理コマンド
ホストアプリケーションのメインプログラムのユーザテーブルの［露出］特性を選択することで、コンポーネントからのイベント実行によりこのイベントをトリガとしたハンドラを実行させることができます。
詳細は、第 6 章「プログラム」の「ユーザイベント」を参照してください。

ウェイト［ウェイト］欄に、Yes、No、式のいずれかを入力することで、イベントハンドラが即座に実行されるか、イベントキューの最後に置かれるかを指定します。
• Yes……［ウェイト］欄の設定を「Yes」にして［イベント実行］コマンドを実行すると、［コール］コマンドと同様に、［イベント実行］コマンドに続くコマンドを実行する前にイベントハンドラが即座に検索・実行されます。この場合、タスクの状態は変更できません。したがって、生成されたイベントの［強制終了］欄の設定は無視されます。
• No……［ウェイト］欄の設定を「No」にして［イベント実行］コマンドを実行すると、呼び出されたイベントは即座には実行されず、イベントキューに登録されます。
先に登録されていたイベントハンドラが終了した後、［イベント実行］コマンドのイ
ベントに対応するイベントハンドラが検索・実行されます。
• 式……［ウェイト］欄に式を設定した場合、その式が「True」と評価されると、イベ
ントハンドラまたはトリガが即座に検索・実行されます。
「False」と評価されると、イ
ベントはイベントキューに登録されます。
指定したイベントのタイプが「I= 内部」の場合、デフォルトは「No」になり、それ以外
は、「Yes」になります。

パラメータ
この欄では、イベントハンドラやトリガの呼び出し後にイベントハンドラで定義された変数に渡されるパラメータを定義します。
この欄には選択したパラメータの数が表示されます。この欄からズームすると、［パラメータ］ダイアログが開き、［項目］または［式］により、パラメータを指定します。
パラメータは参照のみ可能です。従ってイベントプログラムでパラメータを変更しても、値は戻すことはできません。
［パラメータ］ダイアログには以下の内容が表示されます。
• # ……ここには、Magic によって生成された連番が表示されます。この欄にはカーソ
ルは置けません。
• 項目 …… この欄には「項目渡し」による受け渡しを行うパラメータを指定します。
［項目一覧］にズームしてデータ項目を選択するか、データ項目の文字コードを入力
して次のデータ項目に移動します。文字コードはこのカラムに表示されます。
パラメータとして定数値を渡す場合は、［項目］欄ではなく［式］欄で入力します。
式がすでに定義されている場合は、［項目］カラムはスキップされます。
• 式 …… この欄には「値渡し」による受け渡しを行うパラメータを指定します。また、
式によって定数をサブルーチンに受け渡すためにも使用します。
この欄には式番号が表示されます。［説明］欄には展開された式の最初の部分が表示されます。［式］テーブルにズームして既存の式を選択するか、新たな式を定義できます。
データ項目がパラメータとしてすでに定義されている場合、［式］欄はスキップされます。式をパラメータとして使用したい場合は、データ項目の識別子を削除します。
• 説明 …… 選択した項目または式の説明です。

328

リファレンス
Magic eDeveloper V9 Plus

イベント実行条件
この欄には、論理条件を指定します。その論理条件から返る値を使用して、［イベント実行］
コマンドの実行を制御できます。
詳細については、本章の「［エラー］コマンド」を参照してください［出力先コンテキスト名］特性
この特性によって、ハンドルされたイベントを使用してアプリケーションサーバー間との通信を実行することができます。指定されたコンテキストの中でイベントを実行するコンテキ
スト名を式で指定することができます。コンテキスト名は、CtxSetName 関数を使って定義されます。
コンテキストは、共有値とデータベースファイルを使ってリソースを共有することができます。この特性はバッチタスクでのみ利用可能です。

公開イベントの実行時の動作
公開イベントに対する［イベント実行］コマンドが実行されると、定義された式の内容
をイベントの公開名と評価します。
公開名は、大文字と小文字が区別されます。
Magic は、実行環境でのタスクツリー上において、指定された公開イベントを使用しているユーザイベントハンドラを検索します。指定した公開イベントハンドラが見つかれば実行します。見つからない場合は実行されません。
ホストアプリケーションのイベントをコンポーネントから実行する場合、イベントに［公開］特性が指定されていなかったり、ハンドラが［公開］特性を指定したイベントを使用していない場合は実行されません。
最初の一致するハンドラが見つかり実行されると、次にそのハンドらの［伝搬］特性を確認します。
［伝搬］特性が「False」であれば、イベント処理は終了し、「True 」であれ
ばイベントを伝搬します。
［伝搬］特性は、イベントの公開名の検索時には使用されませんが、ユーザイベントテーブルに定義されたイベントとして参照されます。

［ビュー再表示］イベントのパラメータ指定［イベント実行］コマンドによって［ビュー再表示］イベントを実行する場合、数値パラ
メータを指定することで、再表示後のレコードの位置付け方法を指定することができます。
パラメータとして指定できる値は以下の通りです。
• 0……最後にパークしたレコードに再位置付けされます（デフォルト）。パラメータが渡されなかったり、「1」か「2」以外の場合、「0」と見なされます。
• 1……タスクの位置付け指定に基づいて再位置付けされます。
• 2……位置付けされません。新しいビューの先頭のレコードに位置付けされます。

リファレンス
Magic eDeveloper 9 Plus329

第 7 章 - 処理コマンド［このページは意図的に空白にしています。］

330

リファレンス
Magic eDeveloper V9 Plus

8関数

Magic の式には、リテラル、演算子、項目、特殊関数を指定することができます。
本章では、次の内容について説明します。
• リテラル• 演算子• 項目のシンボル名• 関数• 関数一覧
• 関数の説明（アルファベット順）

リファレンス
Magic eDeveloper V9 Plus331

第 8 章 - 関数

リテラル
リテラルとは、特定の意味を持った定数のことをいいます。数値の場合、とくに識別子
を使用しなくても識別されます。たとえば、「123 」や「15.52 」はそのまま、数値リテ
ラルとして（それ自体がリテラルとして）解釈されます。
数値以外のリテラルは、文字列として扱われます。通常、文字列は単引用符（'）で囲みます。文字列のうち、テキスト以外の文字列にはすべて、その後ろにリテラルコードを付加します。このリテラルコードにより、単引用符（'）で囲まれた文 f 字列の種類を示すことができます。リテラルコード自体は単引用符で囲む必要はありません。たとえば、'abcd' はテキストとして、'95/01/01'DATE は日付として扱われます。
リテラルとしての文字列は、Magic の内部表現に変換されます。式に文字列が定義されている場合、その文字列は、Magic の内部表現を使用して解析されます。実行時の式の評価には、内部表現の値（内部値）が使用されます。内部値は、その変更がないかどうか常に Magic により追跡され、変更があったときには、内部値に対応するリテラルも変更されます。
たとえば、文字列「’1’FILE」は、［テーブル］リポジトリの最初のデータ（行）を表します。このデータの前に新しいデータを挿入すると、このデータは１つ繰り下がり、2 番目のデータになります。その場合、自動的にリテラル文字列が「’2'FILE」に更新されます。したがって、式でリテラルコード（この場合は FILE ）を使用して文字列を指定しておくことで、式を訂正しなくても済みます。
リテラルを使うことで、Magic のプログラムを別の言語に移植する作業も楽になります。
たとえば、タスクモードは「'MCDQLRUSFOE'」などと定義することで多言語に対応が可能になります。この場合、MODE リテラルを使用して「'MCDQLRUSFOE'MODE 」としておくと、文字列の中のタスクモードが自動的に変換先の言語を所定の値に変更されます。
リテラルコードを使うことで、式はより確実になり、アプリケーションを手直ししても式に影響が及ぶことが少なくなります。
以下は、Magic で使用できるリテラルコードです。

ACT

例：' 終了 'ACT
文字列は、Magic のアクションを示す文字列として解釈されます。アクションとは、ユー
ザの操作の結果、Magic に送られる命令をいいます。アクションは、ユーザにより［キーボード割付］テーブルで定義されているキー操作が行われたときに発生します。Magic のアクションは式で指定できます。これによりユーザによる操作をチェックしたり、マクロを作ったりといった作業が可能です。
アクションの名前は、［設定／キーボード割付］テーブルの［アクション］欄で確認できます。アクション文字列（この例では、「’ 終了 ’ACT 」）では、この欄に定義されているものを使わなければなりません。なお、アクションの名前は最初の数文字を入力すると、後は自動的に入ります。ただし、名前が長いときには、少し長めに入力することも必要になります。

DATE

例：'97/01/01'DATE
文字列は日付として解釈されます。日付の場合、Magic の内部表現は数値になります。このため、日付の算術計算が可能です。たとえば、「'97/01/01'DATE ＋ 14 」は有効な式で、結果は、「97/01/15 」になります。

332

リファレンス
Magic eDeveloper V9 Plus

リテラル
日付の西暦年は、［動作環境］ダイアログの［西暦基準年］パラメータの値によって変わってきます。たとえば、「'97/01/28'DATE 」の場合、［西暦基準年］パラメータに設定されている値が 1892 を超え、1997 以下のときには、日付の西暦年は 2097 年となります。
一方、［西暦基準年］パラメータに設定されている値が 1997 を超え、2097 以下のときには、日付の西暦年は 1997 年となります。なお、Magic では、西暦年は通常、4 桁で表示されます。
［西暦基準年］パラメータについては、第 2 章「設定」の「設定／動作環境」を参照
してください。

ERR

例：' 重複インデックス 'ERR
文字列は Magic エラーの名前として解釈されます。Magic エラーの名前は、発生したエラーのタイプを認識するときに式のなかで利用します。
ErrMagicName 関数は直前に発生したエラーの名前を戻り値として返すので、ERR リテラ
ルと比較することができます。直前に発生したエラーがリテラルで定義されたエラーと一致した場合、式は True を返します。ERR リテラルを使用する利点は、異なる言語環境
でアプリケーションをオープンするときにもその機能を同一に維持できるということです。

使用例：
直前のエラーが ' 重複インデックス ' のとき、次の式は 'True' を返します。
ErrMagicName（）=' 重複インデックス 'ERR

EXP

例：'A'EXP
文字列が式テーブルの式の番号として認識されます。このリテラルコードは、通常、
ExpCalc 関数で使用します。EXP リテラルコードを使うことで、別の項目が選択された
とき、EXP リテラルコードの前の文字列も自動的に更新されます。

FILE

例：'1'FILE
文字列が［テーブル］リポジトリのデータテーブルの番号（連番）であると解釈されます。
したがって、FILE リテラルコードを式で使うことで、［テーブル］リポジトリの行に変更が加えられたときでも、式で指定したテーブルの番号が自動的に更新されるようになります。たとえば、「'5'FILE 」は、［テーブル］リポジトリの 5 番目のデータテーブルであることを示し、「5 」という番号は、行の削除や追加に応じて自動的に更新されます。

FORM

例：'A'FORM
文字列がフォームテーブルの番号として認識されます。このリテラルコードは、通常、タスク特性の［メインフォーム］を定義する際に使用します。FORM リテラルコードを使うことで、別の項目が選択されたとき、FORM リテラルコードの前の文字列も自動的に更新されます。

KBD

例：'F2'KBD
文字列は、キーボード値として解釈されます。キーボード値とは、キーボードから入力された直接の値をいい、この値は、［キーボード割付］テーブルの設定にしたがってアクションに変換されます。同じキーに複数のアクションを設定することもでき、その場合、アクションはコンテキストによって別のものが実行されます。キーボード値は式で使用できます。これによりユーザによる入力のチェックやマクロの作成が可能です。
キーボード値の名前は、［設定／キーボード割付］テーブルの［キー］欄で確認できます。KBD リテラルの文字列には、このパラメータで定義されているものを使わなければなりません。

リファレンス
Magic eDeveloper V9 Plus333

第 8 章 - 関数

KEY

例：'5'KEY
文字列は、［インデックス］テーブルで定義されているインデックスの番号（連番）として解釈されます。この KEY リテラルを使うことで、［インデックス］テーブルの行の位置に変更があったときでも、KEY リテラルのインデックスが自動的に行使されます。たとえば、「'5'KEY 」は、［インデックス］テーブルの 5 番目のインデックスであることを示し、「5 」という番号は、行の削除や追加に応じて自動的に更新されます。

LOG

例：'True'LOG
文字列は論理値（「True」または「False」）であると解釈されます。つまり、LOG リテラ
ルコードの文字列は、「'True'LOG 」または「'False'LOG 」のいずれかとなります。
「True」
または「False」以外の文字の場合、自動的に「'False'LOG 」となります。

MODE

例：'MC'MODE
文字列は、タスク処理モードであると解釈されます。文字列としては、［タスク特性］ダ
イアログの［初期モード］欄に指定できるいずれかのモードが指定できます。

PROG

例：'5'PROG
文字列は、［プログラム］リポジトリに定義されているプログラムの番号（連番）として解釈されます。PROG リテラルを使用すると、［プログラム］リポジトリのプログラム行の位置が変わったとき、PROG リテラルの直前の文字列が自動的に更新されます。たとえば、「'5'PROG 」は、［プログラム］リポジトリで 5 行目に定義されているプログラムを示しますが、この「5」という文字は、［プログラム］リポジトリのプログラム行の位置が変わった場合、自動的に更新されます。

RIGHT

例：'RIGHT #4'RIGHT
文字列が、権利識別子として認識されます。この RIGHT リテラルコードは、通常、Rights
関数で使用します。開発者は、Rights 関数を使用して、ユーザに与えられている権利をチェックできます。
なお、Rights 関数を使用してユーザの権利を確認する場合、開発者に権利がないときには、そのリテラル（開発者のリテラル）が表示されます。

TIME

例：'14:30:15'TIME
文字列は、時刻として解釈されます。時刻の内部表現は数値であるため、算術演算に使用できます。
たとえば、'14:30:15'TIME+5 は式として有効です。この式では、「'14:30:15'TIME 」という値に「5 」が追加されます。この場合、「5 」は秒です。

VAR

例：'A'VAR
文字列が項目のシンボル名として認識されます。このリテラルコードは、通常、VarAttr 、
VarCurr 、VAR-MOD、VarName 、VarPrev 、VarSet の各関数で使用します。VAR リテラ
ルコードを使うことで、別の項目が選択されたとき、VAR リテラルコードの前の文字列も自動的に更新されます。

334

リファレンス
Magic eDeveloper V9 Plus

演算子

演算子
Magic の式には、算術演算子、論理演算子、文字列演算子が指定できます。

算術演算子
+

加算

-

減算

*

乗算

/

除算

^

指数

MOD

剰余：整数を除算したときの余りが返ります。

-（）

単項否定：数式の符号を変更できます。

論理演算子
式に論理演算子が定義されている場合、その式からは、論理値、つまり「True 」または
「False 」が返ります。
=

等しい

<>

等しくない

<=

以下

<

未満

>

より大きい

>=

以上

AND

論理積：両方のオペランドが「True」のときだけ、「True」
が返ります。

CASE

値の切り替えを行います。

IF

論理式を評価し、その結果で処理を切り替えます。

IN

文字列群の中から指定した文字列を検索します。

LIKE

文字列の一部をもとに文字列の検索を行います。

NOT

否定：オペランドの論理値が逆転されます。

OR

論理和：どちらかのオペランドが「True」の場合、「True」
が返ります。

文字列演算子& 記号を使用して、文字型文字列を連結します。たとえば、「'Tokyo'&'Japan'」とすると、「'TokyoJapan'」が返ります。

リファレンス
Magic eDeveloper V9 Plus335

第 8 章 - 関数

項目のシンボル名
式には、項目のシンボル名が定義できます。現在のタスク、およびその上位タスクで選択されている実データ項目または変数項目のシンボル名が指定できます。項目のシンボ
ル名は、プログラム階層での位置をもとにアルファベット順で識別されます。つまり、最初に選択されている項目が A 、2 番目に選択されている項目が B の場合、BA は 27 番
目の項目となります（つまり、最小の階層の Z が 26 番目、次の階層の A が 27 番目となります）。以下、同じ方法で識別されます。親タスクで定義されている項目のシンボル名
は、現在のタスクで定義されている項目のシンボル名よりも優先されます。項目のシン
ボル名は、［項目一覧］から選択できます。この一覧は、式を編集するときに表示できます。
式が評価される場合、項目のシンボル名はその項目の値と置き換えられます。つまり、項目のシンボル名は、式の評価時に値になります。式で指定されている項目のシンボル
名の定義位置が変わると、自動的に式の項目のシンボル名も更新されます。
式によっては、項目のシンボル名だけが必要で、値は不要な場合、VAR リテラルを付加します。これで、項目の値ではなく、そのシンボル名が Magic により使用されます。

関数関数を使うことで、条件の設定、データの変換や操作、Magic のパラメータへのアクセ
ス、結果の取り出し、アクションの実行などの処理が可能です。
次ページ以降に示す表は、Magic の関数をまとめたものです。関数は、アクション、文字／数値変換、文字列操作、アプリケーションパーティショニング、比較、日付、デー
タベースインタフェース、DDE（Dynamic Data Exchange）、DB テーブル管理、識別および環境、入出力機能、言語、算術および三角関数、メニュー、数値操作、特殊テスト、
時刻、ユーザ定義関数、項目値操作、ビューの各機能別に掲載しています。
また、「関数の説明（アルファベット順）」の節（355 ページ）には、Magic の関数をすべて ABC 順に説明しています。

DDE（Dynamic Data Exchange）
DDE とは、動作中の２ つのアプリケーション間でデータを交換する機能をいいます。
Magic で DDE を使用する場合、DDEML.DLL が必要になります。この DDEML.DLL は、
Windows に付属しています。DDEML.DLL は、Windows の SYSTEM または SYSTEM32
ディレクトリに置かれています。
DDE は、Magic の関数を使用して実行します。つまり、関数を使用して DDE 通信を開始
し、その後、通信を終了し、Magic に戻るという操作が必要です。Magic での DDE は「コールドリンク」です、必ず、Magic から DDE 通信を開始しなければなりません。また、DDE に関連するデータに対して、別のアプリケーションで変更が加えられても、その変更は自動的には Magic には伝えられません。また、そのデータが DDE を介して Magicに取り込まれたときにも、その変更は認識されません。
DDE サーバアプリケーションと Magic との間で通信が実行される場合、その DDE サー
バアプリケーションがオンラインで稼働している必要があります。DDE サーバがオンラインで動作していない状態で Magic から DDE サーバに対してアクセスが試みられたときには、サーバはロードされず、そのため DDE 処理は実行されません。
クライアントアプリケーションからアクセスが実行された場合、DDE サーバ上では、
フォーカスが発生することはありません。Magic の DDE 関数によりサーバアプリケー
ション上でエラーが引き起こされたときには、エラーダイアログが出力されますが、上記の理由から、このダイアログにはフォーカスは提供されません。したがって、Magic の
DDE 処理はタイムアウトになり処理は失敗します。

336

リファレンス
Magic eDeveloper V9 Plus

関数

バッファ管理バッファは、バイナリデータが連続して含まれている BLOB 項目です。Magic 以外のプ
ログラム（Dll）をコール PRC 処理コマンドで呼び出す際に構造体定義としてパラメータを渡すことができます。バッファ管理関数は、バッファでサポートされるデータの位置とサイズ、記憶形式やデータ長を処理します。
バッファは、文字や数値、日付というデータの集まりになります。全てのデータタイプ
は、正しい構造を作成するために、指定された記憶形式で指定された位置から始まるよ
うにしなければなりません。バッファの先頭は、「1」になります。
バッファを扱う前に SetBufCnvParam 関数を使用するようにしてください。これによって、プログラムやコンポーネントは、バッファ変換設定を変えることができます。
SetBufCnvParam 関数は、変換設定をこれらのデフォルト値にリセットします。
バッファの扱い方の具体的な例は、『開発者ガイド』の「バッファの処理」の章を参照してください。

ベクトルデータ
Magic でのベクトルとは、指定されたセルインデックスからデータを格納したり検索する事のできる配列です。ベクトル型は、セルモデル特性が追加された BLOB 型に基づいています。
ベクトルのセルは、モデルリポジトリで定義された項目モデルから指定しなければなりません。セルモデルには、あらゆる項目のデータ型（文字、数値、論理、時刻、日付、
メモ、BLOB、OLE 、ActiveX 、ベクトル）を指定できます。
ベクトルのインデックス付けは、1 から始まります。ベクトル型は、変数とパラメータ項
目でのみ指定できます。テーブルのカラムには指定できません。
再帰的ベクトル定義は、サポートされません。また、ベクトル型の項目を、フォームに配置できません。多量のデータをベクトルに格納しないようにしてください、この内容はメモリ上に格納されるためメモリを消費します。
ベクトル関数を使うことによってベクトルセルの内容を参照したり更新したりすることができます。

XML ネームスペース
XML関数をネームスペースモードと非ネームスペースモードの両方で使用することができます。
非ネームスペースモードでは、要素に対して接頭語を指定しません。
ネームスペースモードでは、要素に対するネームスペースのエイリアスとして接頭語を指定することができます。要素は、ネームスペース URI と要素名を元にアクセスされます。エイリアスと URI の間でマッピングされ、ネームスペース内部のテーブルが指定された各入出力ファイルに作成されます。XMLGetAlias と XMLSetNS 関数を使用して、この内部テーブルをオープンし、更新することができます。接頭語は、XML の URI の１つとして定義されたエイリアスと合わせる必要があります。XML デフォルトネームスペー
スに対して、エイリアスは空白の文字列になります。
Magic が XML の入出力ファイルを読み込む場合、この内部のテーブルは、XML ドキュ
メントの中の各ネームスペース URI で指定された内容を自動的更新します。
接頭語は、要素パスの各要素のために指定できます。接頭語が 1 つ以上の要素に指定された場合、Magic は、ネームスペースモードを開始します。ネームスペースモードの中で、接頭語が指定されていない要素はデフォルトのネームスペース URI をもとに比較されます。
例えば、要素パス a.al1：b.c.al2：d の場合• ルートの要素には、接頭語がありません。
リファレンス
Magic eDeveloper V9 Plus337

第 8 章 - 関数
• 要素「b」は、「al1」というエイリアスを持っています。
• 要素「c」には、接頭語がありません。
• 要素「d」は、「al2」というエイリアスを持っています。

例
XML の読込
次の XML ファイルを読み込みます。
<? xml version="1.0" encoding="UTF-8" ?><person ID="123" xmlns="http://server/person"><name>John Doe</name><gender>male</gender></person>XML 入出力ファイルをオープンした場合、ネームスペース内部テーブルは、１行分のデータをもって作成されます。
エイリアス

項目更新

URI

コメント

http://server/person

デフォルトネームスペース

項目 1 XMLGetAlias(0,1,'http://server/person')

項目１は空白になります。

XMLGet(0,1, 'person.name','')「John Doe」が返ります。

XMLGet(0,1, Trim( 項目 1) &':person.name','')「John Doe」が返ります。

XMLGet(0,1, 'person.'&Trim( 項目 1) &':name','')「John Doe」が返ります。

XMLGet(0,1, ':person.name','')「John Doe」が返ります。

新規 XML の作成
ここでは、XML 関数を使用してデフォルトネームスペースを持った XML ドキュメントを作成する方法を説明します。
<? xml version="1.0" encoding="UTF-8" ?><person ID="123" xmlns="http://server/person"><name>John Doe</name><gender>male</gender></person>
XMLSetNS(0,1, '','http://server/person')
XMLInsert(0,1,'person','','')XMLInsert(0,1,'person','ID','123')
XMLInsert(0,1,'person.name','','John Doe')XMLInsert(0,1,'person.gender','','male')参考：person を :person に置き換えても同じ結果になります。

XML ドキュメントの修正
名前を更新するには以下のようにします。
XMLModify(0,1,'person.name','','New name')338

リファレンス
Magic eDeveloper V9 Plus関数
または
項目更新 項目 1 XMLGetAlias(0,1,'http://server/person')
XMLModify(0,1,Trim( 項目 1) & ':person.name','','New name')
XMLSetNS(0,1,'al2',' http://server/another_person')
参考：

新しく入力した内容は、ネームスペース内部テーブルに追加されます。
XMLModify(0,1,'al2:person.name','','New name')
この関数は失敗し、「Element not found」というエラーを表示します。
XMLModify(0,1,'al3:person.name','','New name')
al3 が、ネームスペース内部テーブルのエイリアスと合わない場合、この関数は失敗し、「Namespace alias not defined 」というエラーを表示します。

XML 関数Magic の XML 関数には以下のものがあります。

更新系
入出力ファイルで定義された XML ファイルを更新します。この場合、以下のような注意点があります。
• 使用する入出力テーブルの［アクセス］欄は、「W= 書出」にしてください。
• ［項目］メディアを定義した入出力ファイルを指定する場合は、以下のように使用してください。
1. 親タスクで BLOB 項目と入出力ファイルを定義します。
2. XMLInsert を実行する子タスクを定義し、BLOB 型のパラメータ項目を定義します。
3. 親タスクから子タスクを呼ぶ際、パラメータで BLOB 項目を渡します。
XMLDelete

パスに基づいて XML 要素か XML 属性を削除します。この関数は、XML 要素か XML 属性の値かタグを削除します。

XMLInsert

XML 要素または属性値を指定されたパスに挿入します。

XMLModify

指定したパスに従って、XML 要素または属性を修正します。

XMLSetEncoding

指定したエンコード方法で XML データの内容をエンコード
し、ヘッダにエンコード指定を追加します。

XMLSetNS

ネームスペースとエイリアス URI を定義します。ネームス
ペースは、要素タイプや属性名を示すユニークな ID です。
URI はインターネットリソースを識別する場合に使用する文
字列です。

参照系
入出力ファイルで定義された XML ファイルの読込のみ行います。この場合、以下のような注意点があります。
• 使用する入出力テーブルの［アクセス］欄は、「R= 読込」にしてください。
XMLBlobGet

要素パスに基づいて XML 要素か XML 属性が返ります。

XMLCnt

パスに基づいて XML 要素か XML 属性の数が返ります。

XMLExist

XML 要素か XML 属性が XML 要素パスによって位置付けられている場合、「True」を返します。

リファレンス
Magic eDeveloper V9 Plus339

第 8 章 - 関数
XMLFind

指定した値が XML 要素か XML 属性にあればそのインデックスを返します。

XMLGet

要素パスに基づいて XML 要素か XML 属性が返ります。

XMLGetAlia

XML ファイルに定義されているネームスペース URI に対応したエイリアスを返します。ネームスペースは、要素タイプ
や属性名を示すユニークな ID です。URI はインターネット
リソースを識別する場合に使用する文字列です。

XMLGetEncoding

XML データのヘッダ部分のエンコード指定（encoding="XXXX"）の内容を返します。

その他
入出力ファイルで定義された XML ファイルをアクセスしません。
XMLStrXML データの標準文字列を予約語に変換します。

XMLValXML データの予約語を標準文字列に変換します。

XML 関数での一般的なエラー
XML 関数で発生するエラーには以下のものがあります。
エラーコード意味-1

入出力ファイルが正しくありません。

-2

挿入される要素やエイリアスが定義されていません。

-3

出力ファイルが書き込みモードでオープンされていません。

-4

要素パスが見つかりません。

-5

属性値が見つかりません。

-6

指定した属性値が指定した要素内にすでに存在しています。

-7

前置／後値フラグの文字が間違っています。

-8

参照要素が見つかりません。

-9

ドキュメントにルート要素が含まれています。複数のルート指定は
無効です。

-10

自動変換フラグが正しくありません。

-11

要素パスやインデックスが正しくありません。

-12

エイリアスがすでに使用されています。

-13

要素か属性の名前が正しくありません。

-14

パラメータのタイプが正しくありません。（オプションのパラメー
タに対して）-20

XML ファイルが正しくありません。（XML の解析に失敗しました。）

CDATA セクション
CDATA セクションには、XML で利用可能な文字を全て記述することができます。
（唯一
の例外は、
「]]>」という文字列です。この文字列を指定すると CDATA セクションの終了と解釈されます。）
CDATA セクションは、、「<![CDATA[」という文字列で始まり、「]]>」という文字列で終わります。
XML 関数で CDATA セクションを扱うことができます。
XML ファイルが以下の場合を想定します。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>340

リファレンス
Magic eDeveloper V9 Plus関数
<object><![CDATA[<?xml version="1.0"?><document>
Kitty on your lap &amp; Tokyo mew mew</document>]]></object>
以下の XML 関数を実行します。
XMLGet (0,1,'object')
この場合、以下のような結果が返ります。
<?xml version="1.0"?><document>
Kitty on your lap &amp; Tokyo mew mew</document>

要素パスの指定方法
XML の要素パスを指定するには２つの方法があります。以下の XML を例に指定方法を説明します。
<? xml version="1.0" encoding="UTF-8" ?><person ID="123" xmlns="http://server/person"><name>John Doe</name><gender>male</gender></person>• 区切り文字にドット（.）を使用する方法
XMLGet(0,1, 'person.name','')• 区切り文字にスラッシュ（/）を使用する方法
XMLGet(0,1, '/person/name','')
パスの先頭にもスラッシュを指定する必要があります。

リファレンス
Magic eDeveloper V9 Plus341

第 8 章 - 関数

関数一覧
基本関数
関数

説明

-

減算

&

文字列を連結する

*

乗算

/

除算

+

加算

<

より小さい

<=

より小さいまたは等しい

<>

等しくない

=

等しい

>

より大きい

>=

より大きいまたは等しい

AND

論理積

CASE

値による切り替えIF

条件付き評価LIKE

文字列の比較

MOD

剰余

NOT

否定

OR

論理和

動作環境関数

342

関数

説明

ANSI2OEMANSI コードから OEM コードに変換

INIGetMAGIC.INI ファイルの環境設定値を取得

INIGetLn

MAGIC.INI ファイルの値を取得

INIPutMAGIC.INI ファイルの環境設定値を更新

OEM2ANSI

OEM コードから ANSI コードに変換

OSEnvGet

OS の環境変数を取得

OSEnvSet

OS の環境変数を一時的に設定

Owner

オーナー名を取得

ParamsPack

グローバル変数のパッケージ化

ParamsUnPack

グローバル変数の取り出し

Pref

アプリケーションファイルの識別子を取得

SetLang

使用する言語を設定

Sys

アプリケーション名を取得

Term

端末番号を取得

リファレンス
Magic eDeveloper V9 Plus

関数一覧

文字列操作関数関数名

説明

ANSI2OEMANSI コードから OEM コード に変換

ASC

文字列の文字を ASCII コードへ変換

AStr

指定した書式に文字列を変換します。

CRC

CRC 方式による計算

Del

文字列中の文字を削除

DStr

日付を文字列に変換

Fill

文字列を繰り返す

Flip

文字列を逆転Han*

全角文字を半角に変換

Hval

16 進数から 10 進数に変換

Ins

文字列を別の文字列に挿入

InStr

文字列中で特定の文字列の最初の出現位置を検索

Left

文字列の左側の文字を取得

Len

文字列の長さを取得

Lower

大文字を小文字に変換

LTrim

文字列の左側にある空白を削除

MID , MIDV*

文字列から部分文字列を取り出す

MlsTrans

文字列を他の言語に変換

MVal

文字例（Magic 数字）を数値に変換（長さの指定が可能）

OEM2ANSI

OEM コードから ANSI コード に変換

Rep, RepV*

文字列内の部分文字列を置き換え

RepStr

文字列内にある特定の文字列を別の文字列で置き換え

Right

文字列の右側から文字を取り出す

RTrim

文字列の右側にある空白を削除

SoundX

文字の読み方（発音）の比較

StrToken

区切文字で区切られている文字列からトークンを取り出す

StrTokenCnt

トークン数の取得

StrTokenIdx

トークンインデックスの取得

Translate

論理名を実行名に変換します。シークレット名は対象外で
す。

Trim

文字列の左右にある空白を削除

TVal

文字列を時刻に変換

Upper

小文字を大文字に変換

Val

文字列を数値に変換

Zen*, ZenS*

半角文字を全角に変換

ZIMERead*

漢字の読みを取得

ZKana*

ひらがな・カタカナの変換* 日本語版でのみ使用可能

リファレンス
Magic eDeveloper V9 Plus343

第 8 章 - 関数

アプリケーションサーバ関数

344

関数

説明

Blob2Req

Blob 内容をリクエスタに送信

CtxGetAllNames

実行可能なコンテキストのリストを取得

CtxKill

コンテキストの中断

CtxLstUse

コンテキストの最終使用時間を取得

CtxNum

コンテキスト番号の取得

CtxProg

コンテキストのプログラム名を取得

CtxSetName

コンテキストへの名前の指定

CtxSize

コンテキストのサイズを取得

CtxStat

コンテキストの状態を取得

DiscSrvr

サーバとの接続を切断

File2Req

ファイルの内容をリクエスタに送信

RqCtxInf

コンテキスト情報の取得

RqCtxTrm

コンテキストの終了

RqExe

リモートエンジンのロード

RqHTTPHeader

バッチ・プログラムの HTTP 結果の戻り値に対する必要な
HTTP ヘッダー情報を設定します。

RqLoadリクエスタのロード

RqQueDel

リクエスタのキューの削除

RqQueLst

リクエスタのキュー一覧を取得

RqQuePri

リクエスタのキューの優先度を変更

RqReqInf

リクエスタのリクエスト ID 情報を取得

RqReqLst

リクエスタのリクエストエントリ数を取得

RqRtApp

リクエスタ対応アプリケーションの情報を取得

RqRtApps

リクエスタのアプリケーション数を取得

RqRtCtx

アプリケーションサーバのオープンされた全てのコンテキス
トの情報をロード

RqRtCtxs

コンテキストの情報を取得

RqRtInf

リクエスタの実行エンジンに関する情報を取得

RqRts

リクエスタの実行エンジンの数を取得

RqRtTrm

実行エンジンを終了

RqRtTrmEx

実行エンジンを終了（時間指定）

RqStatリクエストの状態を取得

RqTrmTimeout

実行エンジンの終了までの時間を取得

SharedValGet

共有値の取得SharedValSet

共有値の作成SharedValPack

SharedValueSet 関数で作成された複数の共有値をパッケージ
化

SharedValUnpack

SharedValuePack 関数でパッケージ化された値を元に戻す

WSAttachmentAdd

BLOB 項目を Web サービスメッセージに貼り付けます。

WSAttachmentGet

Web サービスに貼り付けた BLOB 項目を取り出します。

Text

サーバがバックグラウンドモードにあるか確認
リファレンス
Magic eDeveloper V9 Plus

関数一覧

権利関数
関数

説明

GroupAdd

ユーザをユーザグループに割当てます

LMChkIn

ライセンスのチェックイン

LMChkOut

ライセンスのチェックアウト

LMUVStr

ユーザライセンスの VENDOR_STRING の取得

LMVStrVENDOR_STRING の取得

Logon

カレントのアプリケーションへのログオン

PPD

プロテクションデバイスを読み込み

RightAdd

セキュリティファイル上のユーザに権利を割当て

Rights

ユーザに権利が付与されているかを照会

User

ユーザ情報を取得

UserAdd

セキュリティファイルにユーザを追加

UserDelセキュリティファイルからユーザー ID を削除

変換関数
関数

説明

ANSI2OEM

データの文字セットを ANSI から OEM に変換

AStr

文字列の書式を変換します。

Blb2File

BLOB オブジェクトをファイルに保存

DStr

日付を文字列に変換

DVal

文字列を数値（0001/01/01 を起点とする日数）に変換

EuroCnv

通貨換算（通貨テーブルのユーロ換算レートに基づく）

File2Blb

ファイルを BLOB オブジェクトに変換

File2OLE

ファイルを BLOB オブジェクトに変換し、リンクまたは埋め
込みを行う

Han

全角の文字を半角に変換

Hstr

10 進数から 16 進数に変換

Hval

16 進数から 10 進数に変換

Lower

大文字を小文字に変換

MStr

数値を文字列（Magic 数字）に変換（長さの指定が可能）

mTStr

時刻を文字列に変換（ミリ秒単位）

mTVal

文字列を時刻に変換（ミリ秒単位）

MVal

文字例（Magic 数字）を数値に変換（長さの指定が可能）

OEM2ANSI

データの文字セットを OEM から ANSI に変換する

TStr

時刻を文字列に変換

TVal

文字列を時刻に変換

Upper

小文字を大文字に変換

UTF8FromAnsi

UTF8 へのエンコード

UTF8ToAnsi

ANSI へのエンコード

Val

文字列を数値に変換

Zen*, ZenS*

半角文字を全角に変換

リファレンス
Magic eDeveloper V9 Plus345

第 8 章 - 関数
ZKana*
ひらがな・カタカナの変換* 日本語版でのみ使用可能

データベース関数
関数

説明

ClrCache

現在のタスクのキャッシュをクリア

CurrPosition

メインテーブルの現在の位置を取得

DbCacheキャッシュのヒット率を取得

DbCopyデータベーステーブルのコピー

DbDel

データベーステーブルの削除

DbDiscnt

現在のデータベース接続の切断

DbERR

データベースからのエラーメッセージの取り出しと削除

DbExist

ディスク上のデータテーブルの存在を確認

DbNameテータベーステーブル名を取得

DbRecs

データテーブルの行数を取得

DbReload

実行時の常駐テーブルの読込

DbRound

SQL 系 DB 用の四捨五入関数

DbSize

データテーブルのサイズを取得

ErrDatabaseName

エラーが発生したデータベースの名前を取得

ErrDbmsCode

エラーが発生したデータベースの DBMS のエラーコードを取得

ErrDbmsMessage

エラーが発生したデータベースの DBMS のエラーメッセージを取得

ErrMagicName

エラーが発生した Magic のリテラルを取得

ErrPosition

エラーが発生したレコードの位置を取得

ErrTableName

エラーが発生した DB テーブル名を取得

InTrans

トランザクションのチェック

MTblGet

メモリテーブルの BLOB 化

MTblSetBLOB の内容をメモリテーブル化

Rollback

トランザクションのロールバック

TransMode

トランザクション情報の取得

ViewMod

データビューのレコードが修正されたか確認

日付／時刻関数

346

関数

説明

AddDate

日付項目に関する計算

AddTime

時刻に関する計算

BOM

月の最初の日付を取得

BOY

年の最初の日付を取得

CDOW

週の曜日名（英語）を取得

CMonth月の名前（英語）を取得

Date

システムの日付を取得

Day

日付の日（1 〜 31 ）を取得

DOW

日付の曜日を示す番号を取得
リファレンス
Magic eDeveloper V9 Plus

関数一覧
日付／時刻関数
関数

説明

DStr

日付を文字列に変換

DVal

文字列を数値（0001/01/01 を起点とする日数）に変換

EOM

月の最後の日付を取得

EOY

年の最後の日付を取得

Hour

時刻の時間の値

JCDOW*

週の曜日名（日本語）を取得

JGengo*

元号名（日本語：平成、昭和、大正、明治）を取得

JMonth*月番号（1 〜 12 ）の月名（日本語）への変換

JNDOW*

曜日番号（1 〜 7）の曜日名（日本語）への変換

JYear*

日付の年を元号年に変換

MDate

Magic の日付を取得

Minute

時刻の分の値Month

日付の月（1 〜 12 ）を取得

mTime

システム時刻の取得（ミリ秒単位）

mTStr

時刻を文字列に変換（ミリ秒単位）

NDOW

曜日番号を曜日名（英語）に変換

NMonth月番号（1 〜 12 ）の月名（英語）への変換

Second

時刻の秒の値Time

システムの時刻を取得

TStr

時刻を文字列に変換

Year
日付の年を取得* 日本語版でのみ使用可能

インタフェース関数
関数

説明

CHeight

コントロールの高さを取得

CLeft

コントロールのフォーム内座標位置（X 座標）を取得

CLeftMDI

コントロールの左辺位置（Magic MDI 基準での X 座標）を取得

ClickCX

コントロール内のクリック位置（X 座標）を取得

ClickCY

コントロール内のクリック位置（Y 座標）を取得

ClickWX

ウィンドウ内のクリック位置（X 座標）を取得

ClickWY

ウィンドウ内のクリック位置（Y 座標）を取得

CtrlGoto

指定したコントロールにパークする

CTop

コントロールのフォーム内座標位置（Y 座標）を取得

CTopMDI

コントロールの左辺位置（Magic MDI 基準での Y 座標）を取得

CtrlHWND

コントロールのウィンドウハンドルを取得

CtrlName

コントロール名を取得

CurRow

テーブルコントロール上での現在の行番号を取得

CWidthコントロールの幅を取得

HitZOrdr

コントロールの Z オーダー値を取得

リファレンス
Magic eDeveloper V9 Plus347

第 8 章 - 関数
インタフェース関数
LastPark

最後にパークしたコントロールの名前を取得

MAXMagic

Magic のウィンドウを最大表示

MINMagic

Magic のウィンドウをアイコン化

ResMagic

Magic のウィンドウを通常サイズに戻します

SetCrsr

カーソル形状の指定

TreeNodeGoto

ノードの移動WINBox

ウィンドウの位置とサイズを取得

WINHWND

ウィンドウハンドルを取得

入出力関数
関数

説明

Blb2File

BLOB オブジェクトをファイルに保存

EOF

入出力ファイルの最後のレコードの処理が終了したか確認

EOP

出力ファイルの行数が１ページ分を超えたか確認

File2Blb

ファイルを BLOB オブジェクトに変換

File2OLE

ファイルを BLOB オブジェクトに変換し、リンクまたは埋め込みを行う

FileDLG［ファイルを開く］ダイアログを開く

FileListGet

指定したフォルダ内のファイル名の一覧を取得

IOCopyファイルのコピー（ディスク上）IOCurr

出力中の入出力ファイル番号を取得

IODel

ファイルの削除（ディスク上）

IOExist

ファイルの存在を確認（ディスク上）

IORen

ファイルの名前を変更（ディスク上）

IOSizeファイルの照会（ディスク上）Line

出力ファイルの行番号を取得

Page

出力ファイルのページ番号を取得

他アプリ連携関数

348

関数

説明

BlobFromBase64

BLOB データ内の文字列を BASE64 でデコードします。

BlobToBase64

BLOB データ内の文字列を BASE64 でエンコードします。

CallDLL

外部 DLL の関数の呼び出し

CallDLLF

外部 DLL の FASTCALL 規約関数の呼び出し

CallDLLS

外部 DLL の STDCALL 規約関数の呼び出し

CallJSJava スクリプトの呼び出し

CallOBJ

オブジェクトの呼び出し

CallProgURL

アプリケーションサーバ上の Magic プログラムを URL 形式
で呼び出します。

CallURL

ブラウザタスクのアクションコマンドによって URL を呼びだします。

Cipher

バッファの暗号化

ClipAdd

クリップボードに追加する値を定義する
リファレンス
Magic eDeveloper V9 Plus

関数一覧
ClientCertificateAdd

次のコール Web サービスや HTTP Post/Get の呼び出し時に送信する証明書を指定します。

ClientCertificateDiscard

証明書リストからクライアント側のデジタル証明書を削除します。クライアント側のデジタル証明書は、セキュア Web
アプリケーションでユーザーの ID を確認するために使用されます。

ClipRead

クリップボードの読込

ClipWrite

クリップボードへの書込

COMError

COM とのアクセスエラー情報の取得

COMHandleGet

COM オブジェクトのハンドルを取得

COMHandleSet

指定したハンドルのオブジェクトを参照

COMObjCreate

COM オブジェクトのインスタンスを作成

COMObjRelease

COM オブジェクトの解放

DDEBegin

DDE の開始

DDEEndDDE の終了

DDEGetDDE サーバから文字列を取得

DDEPoke

DDE サーバに対する文字列の転送

DDERR

DDE エラーの検出

DDExecDDE サーバに対するコマンド文字列の転送

DeCipher

バッファの複合化

DragSetCrsr

ドラッグ時のカーソル定義

DragSetData

ドラッグデータの設定

DropFormat

ドロップ操作の可否を確認

DropGetData

ドラッグデータを取得します。

DropMouseX

ドロップした X 座標の取得

DropMouseY

ドロップした Y 座標の取得

EncryptionError

暗号／複合化処理のエラー情報の取得

HTTPGetHTML の取得

HTTPLastHeader

HTTPGet または HTTPPost 関数によって取得されたヘッダ情報を元に、指定した名前から HTTP ヘッダーの値を取得します。

HTTPPost

HTTP メッセージ経由で情報を渡したり、HTTP リクエストの戻り値としての HTML/XML 結果を BLOB で受け取る

LDAPError

LDAP サーバのエラーの取得

LDAPGetLDAP サーバの検索

MailBoxSet

接続している IMAP サーバの別のメールボックスに切り替えます。

MailConnect

メールサーバへの接続

MailDisconnect

メールサーバとの切断

MailError

メール関数のエラーコードよりエラーメッセージを返す

MailFileSave

受信メールに添付されているファイルの保存

MailLastRC

メイル関数の使用によって発生した直近のエラーメッセージを取得します。

MailMsgBCC

BCC で指定したアドレスを返す

MailMsgCC

CC で指定したアドレスを返す

リファレンス
Magic eDeveloper V9 Plus349

第 8 章 - 関数
MailMsgDate

オリジナルのテーブルと項目を取得

MailMsgDel

サーバのメールボックスからメッセージを削除する

MailMsgFile

受信メールに添付されているファイル名を返す

MailMsgFiles

受信メールに添付されているファイルの数を返す

MailMsgFrom

メッセージの送信者のアドレスを返す

MailMsgHeader

受信メールのヘッダ情報を返す

MailMsgId

メールのメッセージ ID を返す

MailMsgReplayTo

Reply to で指定したアドレスを返す

MailMsgSubj

受信メールの件名を返す

MailMsgText

受信メールの内容を返す

MailMsgTo

TO で指定したアドレスを返す

MailSend

メールを送信する

UDF

ユーザ定義関数の呼び出し

WSAttachmentAdd

BLOB 項目を Web サービスメッセージに添付します。

WSAttachmentGet

Web サービスメッセージに添付された BLOB 項目を取り出します。

XMLBlobGet

XML エレメント／ XML 属性の値の取得

XMLCntXML 要素や XML 属性の数を返す

XMLDelete

指定したパスに従って XML 要素または属性を削除します。
関数は、要素または属性の値とタグを削除します。

XMLExist

XML 要素や、XML 属性の存在をチェックする

XMLFind

XML 要素の値と一致するデータのインデックス番号を取得します。

XMLGetXML 要素、または XML 属性の値を取得します。

XMLGetAlias

ネームスペース内部テーブルから、ネームスペース URI に対応したエイリアスを返します。ネームスペースは、要素タイ
プや属性名を示すユニークな ID です。URI はインターネッ
トリソースを識別する場合に使用する文字列です。

XMLInsert

XML 要素または属性値を指定されたパスに挿入します。

XMLModify

指定したパスに従って、XML 要素または属性を修正します。

XMLSetNS

ネームスペースとエイリアス URI を定義します。ネームス
ペースは、要素タイプや属性名を示すユニークな ID です。
URI はインターネットリソースを識別する場合に使用する文字列です。

XMLStrXML データの標準文字列を予約語に変換します。

XMLValXML データの予約語を標準文字列に変換します。

数値関数

350

関数

説明

-

減算

*

乗算

/

除算

^

指数

+

加算

ABS

絶対値

ACOS

逆余弦（アークコサイン）
リファレンス
Magic eDeveloper V9 Plus

関数一覧
数値関数
ASIN

逆正弦（アークサイン）

ATAN

逆正接（アークタンジェント）

ChkDgt

検査数字を作成

CHR

ASCII コードを文字に変換

COS

余弦（コサイン）

EXP

指数

Fix

数値の抽出（範囲外は切り捨て）

Hstr

10 進数から 16 進数に変換

LOG

自然対数

MAX

値を比較し、最大値を取り出す

MIN

値を比較し、最小値を取り出す

MOD

剰余

MStr

数値を文字列（Magic 数字）に変換（長さの指定が可能）

RAND

乱数を生成

Range

範囲チェックRound

数値の四捨五入SIN

正弦（サイン）三角関数

Str

数値を文字列に変換

TAN

正接（タンジェント）三角関数

タスク関数
関数

説明

CallProg

Magic プログラムの呼び出しCounter

繰り返しカウンタ

Delay

処理の一時停止Flow

フローモードのチェック

FlwMtr

フローモニタにメッセージを表示

FlwMtrVars

フローモニタに項目の内容を表示

GetLang

現在使用されている言語を取得

GetParam

パラメータの取得

HandledCtrl

コントロール名の取得

Idle

システムのアイドル時間をチェック

InTrans

トランザクションのチェック

IsComponent

コンポーネントプログラムのチェック

IsFirstRecordCycle

最初のレコード処理かどうかを判定

KbGet

直前のキー入力を取得

KbPut

キー入力のシミュレーション

Level

タスクの実行レベルを照会

Lock

リソースをロックします

LoopCounter

ブロックループ回数の取得

MainLevel

タスクの実行レベルを照会

Menu

メニュー経路を取得

MMClear

マーク行をクリアする

リファレンス
Magic eDeveloper V9 Plus351

第 8 章 - 関数
タスク関数
MMCount

マーク行数を取得

MMCurr

現在処理中のマーク行を取得

MMStop

マルチマークの中断

MnuCheck

メニュー項目のチェックマークの表示／非表示を設定

MnuEnabl

メニュー項目の有効／無効を設定

MnuName

指定したメニュー名を変更する

MnuShow

メニュー項目の表示／非表示を設定

Prog

タスクのパスを取得

ProgIdx

プログラム番号の取得

Rollback

トランザクションのロールバック

RunModeエンジンの実行モードに対応する数値コードを取得

SetLang

言語の設定

SetParam

パラメータの設定

SharedValGet

共有値の取得SharedValSet

共有値の作成Stat

タスクの処理モードをチェック

TDepthタスクの深さを照会

THIS

イベントが発生したデータ項目のインデックスまたはタスクの階層を表しますTransMode

現在有効なトランザクションについての情報を取得する

TreeLevel

ツリーレベルの取得

TreeNodeGoto

ノードの移動TreeValue

ノード ID の取得

Unlockリソースのロックを解除

ViewMod

データビューのレコードが修正されたか確認

項目関数

352

関数

説明

EditGet

項目の値を取得する

EditSet

ハンドラが実行されたときのカレントの項目の値を設定する

IsDefault

デフォルト値かどうかのチェック

ISNULLNULL 値かどうかのチェック

VarAttr

項目の型を照会

VarCurr

項目の値を取得

VarCurrN

項目の値を取得

VarDbName

指定した項目の DB カラム名を取得する

VarIndex

項目のシンボル名を取得

VarInp

最後の入力項目を照会

VarMod項目の値が変更されたか確認

VarNameオリジナルのテーブルと項目を取得

VarPic

指定した項目の書式を取得します

VarPrev［項目一覧］内のシンボル名で示す項目のオリジナル値を検索します

VarSet項目に値を設定
リファレンス
Magic eDeveloper V9 Plus

関数一覧

その他の関数関数名

説明

CndRange

条件を使用して項目に値を設定

EuroCnv

通貨換算（通貨テーブルのユーロ換算レートに基づく）

EuroDel

通貨データの削除

EuroGet基準通貨の取得

EuroSet基準通貨の設定EuroUpd

通貨テーブルの更新

EvalStr

文字列の評価ExpCalc

式の実行

IN

データの照合IsComponent

コンポーネントプログラムの検証

NULL

NULL に設定

WinHelp

Windows ヘルプを開く

配列関数
関数

説明

VecCellAttr

ベクトルセルの型を取得

VecGetベクトル項目からデータを取得

VecSetベクトル項目にデータを格納

VecSize

ベクトル項目のセル数を取得

バッファ保存関数
関数

説明

BlobSize

BLOB サイズの取得

BufGetAlpha

バッファから文字データを取得

BufGetBit

バッファからビットデータを取得

BufGetBlob

バッファから BLOB データを取得

BufGetDate

バッファから日付データを取得

BufGetLog

バッファから論理データを取得

BufGetNum

バッファから数値データを取得

BufGetTime

バッファから時刻データを取得

BufGetVariant

バッファから Variant データを取得

BufGetVector

バッファからベクトルデータを取得

BufSetAlpha

バッファに文字データを格納

BufSetBit

バッファにビットデータを格納

BufSetBlob

バッファに BLOB データを格納

BufSetDate

バッファに日付データを格納

BufSetLog

バッファに論理データを格納

BufSetNum

バッファに数値データを格納

BufSetTime

バッファに時刻データを格納

BufSetVariant

バッファに Variant データを格納

リファレンス
Magic eDeveloper V9 Plus353

第 8 章 - 関数
バッファ保存関数
BufSetVector

バッファにベクトルデータを格納

SetBufCnvParam

変換パラメータの設定

Java 関数

354

関数

説明

CodePage

コードページの指定

EJBCreate

EJB のインスタンスを作成

EJBExplore

EJB の参照

JCall

メソッドの呼出JCallStatic

スタティックメソッドの呼出JCreateインスタンスの作成

JException

Java の例外処理を返す

JExceptionOccurred

例外通知

JExceptionText

例外情報の参照

JExplore

クラスの表示

JGet

インスタンス変数の取得

JGetStatic

スタティック変数の値を取得

JInstanceOf

オブジェクトの確認

JSet

インスタンス変数の更新

JSetStatic

スタティック変数の更新

リファレンス
Magic eDeveloper V9 Plus関数の説明（アルファベット順）

関数の説明（アルファベット順）
ABS

絶対値
実数の絶対値が返ります。戻り値は必ず正の値です。

ACOS

構文：

ABS（数値）

パラメータ：

数値…数値

戻り値：

数値の絶対値例：

x=20 、y=30 の場合、ABS（x-y）では、「10」が返ります。

逆余弦（アークコサイン）
数値の逆余弦がラジアンで返ります。

AddDate

構文：

ACOS （数値）パラメータ：

数値…数値

戻り値：

数値（ラジアン）

例：

x=1 、y=0.5 の場合、ACOS（x-y）では、「1.04719755」が返りま
す。

関連項目：

COS 、SIN 、ASIN 、TAN 、ATAN

日付項目に関する計算
日付を指定し、その日付に年数、月数、日数を加算できます。結果は、常に有効な日付になります。
構文：

AddDate （日付 , 年数 , 月数 , 日数）パラメータ：

日付…日付
年数…この年数が日付に加算されます。「0」を指定することも可能です。
月数…この月数が日付に加算されます。「0」を指定することも可能です。
日数…この日数が日付に加算されます。「0」を指定することも可能です。

AddTime

戻り値：

日付値

例：

AddDate（'1992/01/01'DATE,1,2,2）では、「1993/03/03」が返りま
す。

関連項目：

DVal

時刻に関する計算
時刻を指定し、その時刻に時数、分数、秒数を加算できます。結果は、指定した時
刻に、時、分、秒を加えた時刻になります。
構文：

AddTime （時刻 , 時数 , 分数 , 秒数）

パラメータ：

時刻…時刻型
時数…この数値が時刻に加算されます。
分数…この数値が時刻に加算されます。
秒数…この数値が時刻に加算されます。

戻り値：
リファレンス
Magic eDeveloper V9 Plus

時刻値

355

第 8 章 - 関数

ANSI2OEM例：

AddTime（'12:00:00'TIME,1,2,3）では、「13:02:03」が返ります。

注意事項：

パラメータに「0」を指定した場合、その「0」は無視されます。

関連項目：

TVal

ANSI コードから OEM コード に変換
ANSI 文字セットの文字列を OEM 文字セットに変換します。

ASC

構文：

ANSI2OEM （文字列）パラメータ：

変換する文字列

戻り値：

変換された文字列

注意事項：

日本語環境においては、この関数を使用する必要はありません。

関連項目：

OEM2ANSI

文字列の文字を ASCII コードに変換
文字列（英数字）の左端の文字を ASCII コード値に変換します。

ASIN

構文：

ASC（' 文字列 '）パラメータ：

文字列…1 文字または文字列

戻り値：

数値…ASCII コード値

例：

ASC（'N'）、ASC（'New'）では、どちらも「78」が返ります。

関連項目：

CHR

逆正弦（アークサイン）
数値の逆正弦（アークサイン）がラジアンで返ります。

AStr

構文：

ASIN（数値）

パラメータ：

数値…数値

戻り値：

数値…指定した数値の逆正弦（ラジアン）

例：

x=1 、y=0.5 の場合、ASIN（x-y）では、「0.52359878」が返ります。

関連項目：

SIN 、COS 、ACOS 、TAN、ATAN

文字列の書式変換
文字列を指定した書式に変換します。
構文：

AStr（文字列 , 変換書式）

パラメータ：

文字列…変換される文字列
変換書式…変換する書式を表す文字列
下記の文字は位置指示記号および機能指示記号を表します。
• X… 任意の文字• H …任意の文字 ( ヘブライ語用 )• #… 任意の数字• U… 文字を大文字に変換します• L … 文字を小文字に変換しますA( オートスキップ ) は無視されます。

356

リファレンス
Magic eDeveloper V9 Plus関数の説明（アルファベット順）
数字はカウント値で、前に指定した記号が指定数を表します。
前に記号がない場合、X があるものとして動作します。
（例：2@3U5 は、XX@@@UUUUU と同じ意味です。）
エスケープ文字「¥」は、その直後の文字がマスク文字であることを指定します。指示記号を無効化できます。

ATAN

戻り値：

文字列…指定した書式に変換された文字列

例：

AStr('abcd','2@3A¥U¥5¥A') は、「ab@@@U5A」が返ります。

注意事項：

書式文字列の中で指定された位置指示記号の長さの合計が変換する文字列の長さより短い場合、残りの文字が切り詰められます。

逆正接（アークタンジェント）
数値の逆正接（アークタンジェント）がラジアンで返ります。

Blb2File

構文：

ATAN （数値）パラメータ：

数値…数値

戻り値：

数値…数値の逆正接（ラジアン）

例：

x=2 、y=1 の場合、ATAN（x-y）では、「0.78539816」が返ります。

関連項目：

TAN 、COS 、ACOS 、SIN 、ASIN

BLOB オブジェクトをファイルに保存
BLOB オブジェクトをファイルに保存します。

Blob2Req

構文：

Blb2File （BLOB 項目 , ファイル名）

パラメータ：BLOB 項目…BLOB 型項目のシンボル名
ファイル名…保存先のファイル名。文字列。

戻り値：

論理値

例：

• True …処理に成功した場合• False …処理に失敗した場合
Blb2File（BE, 'C:¥bfile.blb'）では、BLOB 項目である BE の内容
が、C ドライブの「bfile.bl」という名前のファイルに保存されます。

Blob オブジェクトをリクエストとして送信
BLOB 型項目のデータをリクエストとして送信します。
構文 :Blob2Req（BLOB 項目）

パラメータ :BLOB 項目…BLOB 型項目のシンボル名

戻り値 :

論理値

例:

• True …処理に成功した場合• False …処理に失敗した場合（指定した値が、BLOB 型でな
かったり、NULL であったり、Magic エンジンがアプリケー
ションサーバとして動作していない場合など）
Blob2Req(B) では、Blob 型の項目 B をリクエスタで送信します。

注意事項 :

リファレンス
Magic eDeveloper V9 Plus

データを送信する前に、RQHTTPHeader 関数を使用して HTTP
ヘッダー情報を定義することができます。

357

第 8 章 - 関数
関連項目 :BlobFromBase64

File2Req

BLOB データのデコード
BASE64 でエンコードされた BLOB データをデコードします。

BlobSize

構文：

BlobFromBase64（BLOB データ）

パラメータ：BLOB データ… BASE64 でエンコードされたデータ

戻り値：

BLOB データ…デコードされたデータ

BLOB サイズの取得
BLOB データのサイズ (Byte) を取得します。

BlobToBase64

構文：

BlobSize（BLOB データ）

パラメータ：BLOB データ… 対称となる BLOB データ

戻り値：

数値…BLOB のサイズを表す数値。NULL の場合は、「0」が返ります。

BLOB データのエンコード
BLOB データ内の文字列を BASE64 でエンコードします。

BOM

構文：

Base64ToBlob(BLOB データ )パラメータ：BLOB データ … エンコードする BLOB データ

戻り値：

BASE-64 でエンコードされた BLOB データを返します。

月の最初の日付を取得
指定した月の最初の日付が返ります。

BOY

構文：

BOM（日付）パラメータ：

日付または日付式

戻り値：

日付値

例：

BOM （'93/05/10'DATE）では、「93/05/01」が返ります。

関連項目：

BOY 、EOM、EOY 、AddDate 、CDOW 、Date

年の最初の日付を取得
指定した年の最初の日付が返ります。

BufGetAlpha構文：

BOY（日付）パラメータ：

日付または日付式

戻り値：

日付値

例：

BOY （'93/10/05'DATE）では、「93/05/01」が返ります。

関連項目：

BOM 、EOM 、EOY 、AddDate 、CDOW 、Date

バッファから文字データを取得
BLOB バッファの指定された位置の値を文字列に変換します。
構文：

BufGetAlpha ( 参照項目、位置、記憶形式、長さ、ポインタ値 )パラメータ：

358

リファレンス
Magic eDeveloper V9 Plus関数の説明（アルファベット順）
参照項目 … バッファとなる BLOB 項目。VAR リテラルが必要です。
位置 … 変換を開始する位置を表す数値。バッファの先頭は「1」です。
記憶形式 … Magic での記憶形式を表す数値。記憶形式について
は、359 ページを参照してください。
長さ … 記憶長を表す数値
ポインタ値 … 文字データ値が、直接バッファ書き込まれるか、
ポインタとして書かれるべきであるかどうかを示す論理値。
「True」の場合は、ポインタとして文字値を書き込みます。
戻り値：変換が成功した時は文字列が返ります。失敗した場合は空白が返ります。
以下の場合は失敗します。

注意事項：• ポジションパラメータに負数が指定された場合• ポジションや長さパラメータが、バッファの内容の範囲外を指定している場合• 記憶形式パラメータが正しくない場合• 長さパラメータが正しくない場合
記憶形式タイプとして「LString」または「ZString」を使用する
場合、取得する文字長と位置の関係に注意してください。文字
の末尾の Null を考慮する必要があります。
例えば、半角５桁（5 バイト）の文字が格納されている次の領域の位置は、６バイト分が加算され「7」になります。
BuffGetAlpha（'A'VAR,1,2,5,’TRUE’LOG）……’ABCDE’
BuffGetAlpha（'A'VAR,7,2,5,’TRUE’LOG）……’FGHIJ’

参考 :指定できる記憶形式タイプを以下に示します。

#

型

ID

記憶形式名

1

文字型

1

String − Null で終了しない

2

2

3

3

LString −記憶長を含んだ short int で圧縮されて 255
いる<32K
ZString − Null で終了する

4

1

Signed Integer

1,2,4

5

2

Unsigned Integ

1,2,4

6

3

Float

4,8

7

4

Float MS-Basic

4,8

8

5

Float Decimal

4,8

9

6

Packed Decimal（現在未サポート）

10

7

Numeric（現在未サポート）

11

8

Numeric Character（現在未サポート）

12

10

C-ISAM Decimal

13

11

Extended Float

1

Number containing 0,1

2

Dbase containingT,F

14

数値型

論理型

15
16

1

Integer Date 1/1/1 から開始

17

2

Integer Date 1901/1/1 から開始

18

3

YYMD

1

Integer

19
リファレンス
Magic eDeveloper V9 Plus

長さ
<32K

日付型

時刻型

4

4

359

第 8 章 - 関数
#

型

2

記憶形式名
HMSH

1

4Byte の記憶長 + バッファ (16 Byte)

22

2バッファ (16 Byte)

参照 :SetBufCnvParam

20
21

BufGetBit

ID

BLOB 型

長さ
4バッファからビットデータを取得する
BLOB バッファの指定された位置のビット値を返します。
構文：

BufGetBit ( 参照項目、位置、ビット番号 )パラメータ：

参照項目 … バイト値を含む BLOB 項目。VAR リテラルが必要です。
位置 … BLOB 項目のバイト位置を定義する数値。バッファの先頭は「1」です。
ビット番号 … バイト内のビット番号を表す 1 〜 8 からの値

戻り値：

論理値…指定したビットが On の場合「True」、Off の場合「False」が返ります。ビット番号が間違っている場合 Null を返します。

例：

BufSetNum( 'A'VAR, 1,3,2,1 ) は、最初のバイトのバイナリ値を
b‘00000011’ と設定します。
• BufGetBit('A'VAR,1,1) は、「False」を返します。
• BufGetBit( 'A'VAR 1,7 ) は、「True」を返します。
• BufGetBit( 'A'VAR 1,8 ) は、「True」を返します。

BufGetBlob

バッファから BLOB データを取得
BLOB バッファの指定された位置の値を BLOB 値に変換します。
構文：

BufGetBLOB（ 参照項目、位置、記憶形式、長さ、ポインタ値、
セル記憶形式 ）パラメータ：

参照項目 … バッファとなる BLOB 項目。VAR リテラルが必要です。
位置 … 変換を開始する位置を表す数値。バッファの先頭は「1」です。
記憶形式 … Magic での記憶形式を表す数値。記憶形式について
は、359 ページを参照してください。
長さ … 記憶長を表す数値
ポインタ値 … 文字データ値が、直接バッファ書き込まれるか、
ポインタとして書かれるべきであるかどうかを示す論理値。
「True」の場合は、ポインタとして文字値を書き込みます。
セル記憶形式 … ベクトル値がバッファに書き込まれた場合、セルの記憶形式を指定する必要があります。詳細は、第 3 章「モデル」を参照して下さい。

戻り値：変換が成功した場合、BLOB データが返ります。失敗した場合、空白が返ります。
以下の場合は失敗します。
• 参照項目が正しくない場合

360

リファレンス
Magic eDeveloper V9 Plus関数の説明（アルファベット順）

参照：

BufGetDate• 参照項目が BLOB でない場合• 位置パラメータが負数の場合• 位置や長さパラメータが、バッファの内容に合っていない場合• 記憶形式パラメータが正しくない場合
SetBufCnvParam

バッファから日付データを取得
BLOB バッファ内の指定された位置の値を日付データに変換します。
構文 :BufGetDate（ 参照項目、位置、記憶形式）

パラメータ：

参照項目 … バッファとなる BLOB 項目。VAR リテラルが必要です。
位置 … 変換を開始する位置を表す数値。バッファの先頭は「1」です。
記憶形式 … Magic での記憶形式を表す数値。記憶形式について
は、359 ページを参照してください。

戻り値：変換が成功した場合、日付データが返ります。失敗した場合「0」が返ります。
以下の場合は失敗します。

参照：

BufGetLog• 位置パラメータが負数の場合• 位置や長さパラメータが、バッファの内容と合っていない場合• 記憶形式パラメータが正しくない場合• 変換エラーが発生した場合
SetBufCnvParam

バッファから論理データを取得
BLOB バッファ内の指定された位置の値を論理データに変換します。
構文：

BufGetLog（ 参照項目、位置、記憶形式）

パラメータ：

参照項目 …バッファとなる BLOB 項目。VAR リテラルが必要です。
位置 … 変換を開始する位置を表す数値。バッファの先頭は「1」です。
記憶形式 … Magic での記憶形式を表す数値。記憶形式について
は、359 ページを参照してください。

戻り値：変換が成功した場合は論理値が返ります。失敗した場合は、Nullが返ります。
以下の場合は失敗します。

参照：

BufGetNum• 位置パラメータが負数の場合• 位置や長さパラメータが、バッファの内容に合っていない場合• 記憶形式パラメータが正しくない場合• 値が正しくない場合
SetBufCnvParam

バッファから数値データを取得
BLOB バッファ内の指定された位置の値を数値データに変換します。
構文：

BufGetNum（ 参照項目、位置、記憶形式、長さ）パラメータ：
リファレンス
Magic eDeveloper V9 Plus361

第 8 章 - 関数
参照項目 … バッファとなる BLOB 項目。VAR リテラルが必要です。
位置 … 変換を開始する位置を表す数値。バッファの先頭は「1」です。
記憶形式 … Magic での記憶形式を表す数値。記憶形式について
は、359 ページを参照してください。
長さ … 記憶長を表す数値
戻り値：

変換が成功した場合は数値が返ります。失敗した場合は、「0」が返ります。
以下の場合は失敗します。

参照：

BufGetTime• 位置パラメータが負数の場合• 位置や長さパラメータが、バッファの内容に合っていない場合• 記憶形式パラメータが正しくない場合• 長さパラメータが正しくない場合• 変換でオーバーフローが発生した場合
SetBufCnvParam

バッファから時刻データを取得
BLOB バッファ内の指定された位置の値を時刻データに変換します。
構文：

BufGetTime （参照項目、位置、記憶形式）

パラメータ：

参照項目 … バッファとなる BLOB 項目。VAR リテラルが必要です。
位置 … 変換を開始する位置を表す数値。バッファの先頭は「1」です。
記憶形式 … Magic での記憶形式を表す数値。記憶形式について
は、359 ページを参照してください。

戻り値：変換が成功した場合は時刻値が返ります。失敗した場合は、「0」が返ります。
以下の場合は失敗します。

参照：

BufGetVariant• 位置パラメータが負数の場合• 位置や長さパラメータが、バッファの内容に合っていない場合• 記憶形式パラメータが正しくない場合• 変換エラーが発生した場合
SetBufCnvParam

バッファから Variant データを取得
BLOB バッファ内の指定された位置の値を Variant 値に変換します。
構文：

BufGetVariant（参照項目、位置、ポインタ値）

パラメータ：

参照項目 … バッファとなる BLOB 項目。VAR リテラルが必要です。
位置 … 変換を開始する位置を表す数値。バッファの先頭は「1」です。
ポインタ値 … Variant データが、直接バッファ書き込まれるか、
ポインタとして書かれるべきであるかどうかを示す論理値。
「True」の場合は、ポインタとして書き込みます。

戻り値：

362

リファレンス
Magic eDeveloper V9 Plus関数の説明（アルファベット順）
変換が成功した場合は Variant データが返ります。失敗した場合
は、Null が返ります。
参照：

BufGetVector

SetBufCnvParam

バッファからベクトルデータを取得
BLOB バッファ内の指定された位置の値をベクトル値に変換します。
構文：

BufGetVector ( 参照項目、位置、ベクトル型、エレメント番号、ポインタ値、セル記憶形式、セル長 )パラメータ：

参照項目 … バッファとなる BLOB 項目。VAR リテラルが必要です。
位置 … 変換を開始する位置を表す数値。バッファの先頭は「1」です。
ベクトル型 … ベクトルのデータ型を表す数。以下のとおりです。
• 1 … 文字型
• 2 … 数値型
• 3 … 論理型
• 4 … 日付型
• 5 … 時刻型
• 6 … BLOB 型
エレメント番号 … ベクトル長を表す数値
ポインタ値 … ベクトル値データをバッファに直接書き込むか、
ポインタとして書き込むかを指定する論理値。「True」ならば、ポインタとして書き込みます。
セル記憶形式 … ベクトルセルの記憶形式。外部のベクトルがバッファから読み込まれた場合に指定します。このパラメータ
は、セルのデータ型に対応する記憶形式のうちのどれかを指定します。記憶形式については、359 ページを参照してください。
セル長 … ベクトルセルの記憶長タイプ。外部のベクトルがバッファから読み込まれた場合に指定します。このパラメータは、「セル記憶形式」に対応する長を指定します。

戻り値：変換が成功した場合はベクトルデータが返ります。失敗した場
合は、Null が返ります。
以下の場合は失敗します。

参照 :BufSetAlpha• 位置パラメータが負数の場合• 位置や長さパラメータが、バッファの内容に合っていない場合• 記憶形式パラメータが正しくない場合• セル長パラメータが正しくない場合
SetBufCnvParam

バッファに文字データを格納する
文字型、メモ型または RTF データを BLOB バッファの指定した位置に挿入します。
構文：

BufSetAlpha （参照項目、位置、値、記憶形式、長さ、ポインタ
値）

パラメータ：

参照項目 … バッファとなる BLOB 項目。VAR リテラルが必要です。
位置 … データの挿入位置を表す数値。バッファの先頭は「1」です。

リファレンス
Magic eDeveloper V9 Plus363

第 8 章 - 関数
値 … 挿入される文字データ
記憶形式 … Magic での記憶形式を表す数値。記憶形式について
は、359 ページを参照してください。
長さ … 文字の長さを表す数値
ポインタ値 … 文字データが直接バッファ書き込まれるか、ポイ
ンタとして書かれるべきであるかどうかを示す論理値。「True」の場合は、ポインタとして 書き込みます。
戻り値：

論理値
• True…処理が成功した場合• False…処理が失敗した場合
以下の場合は失敗します。

例：• 参照項目が正しくない場合• 参照項目が BLOB でない場合• 位置パラメータが負数の場合
BufSetAlpha('A'VAR,1,’filler’,1,6,'FALSE'LOG)
1 桁目から 6 桁分「filler」という文字列を挿入します。

注意事項：

記憶形式タイプとして「LString」または「ZString」を使用する
場合、取得する文字長と位置の関係に注意してください。文字
の末尾の Null を考慮する必要があります。
例えば、半角５桁（5 バイト）の文字が格納されている次の領域の位置は、６バイト分が加算され「7」になります。
BuffSetAlpha（'A'VAR,1,’ABCDE’,2,5,’TRUE’LOG）
BuffSetAlpha（'A'VAR,7,’FGHIJ’,2,5,’TRUE’LOG）

参照 :BufSetBit

SetBufCnvParam

バッファにビットデータを格納する
1 バイトの内容をビットレベルで値を指定し、BLOB バッファの指定した位置に挿
入します。
構文：

BufSetBit （ 参照項目、位置、ビット番号、論理値）

パラメータ：

参照項目 … バッファとなる BLOB 項目。VAR リテラルが必要です。
位置 … データの挿入位置を表す数値。バッファの先頭は「1」です。
ビット番号 … １バイト内のビット番号を表す 1 〜 8 の値
論理値 … 指定されたビットをセットするための論理値

戻り値：

論理値
• True…ビット番号が設定された場合• False…ビット番号が正しくない場合

BufSetBlob

バッファに BLOB データを格納する
BLOB データを BLOB バッファ指定した位置に挿入します。

364

構文：

BufSetBLOB ( 参照項目、位置、値、記憶形式、ポインタ値 )パラメータ：

参照項目 … バッファとなる BLOB 項目。VAR リテラルが必要です。
リファレンス
Magic eDeveloper V9 Plus関数の説明（アルファベット順）
位置 … データの挿入位置を表す数値。バッファの先頭は「1」です。
値 … 挿入される BLOB データ
記憶形式 … Magic での記憶形式を表す数値。記憶形式について
は、359 ページを参照してください。
ポインタ値 … BLOB データをバッファに直接書き込むか、ポイ
ンタとして書き込むかを指定する論理値。「True」ならば、ポインタとして書き込みます。
戻り値：

論理値
• True…処理が成功した場合• False…処理が失敗した場合
以下の場合は失敗します。

参照 :BufSetDate• 参照項目が正しくない場合• 参照項目が BLOB でない場合• 位置パラメータが負数の場合• 記憶形式パラメータが正しくない場合
SetBufCnvParam

バッファに日付データを格納する
日付データを BLOB バッファ指定した位置に挿入します。
構文 :BufSetDate ( 参照項目、位置、値、記憶形式 )パラメータ：

参照項目 … バッファとなる BLOB 項目。VAR リテラルが必要です。
位置 … データの挿入位置を表す数値。バッファの先頭は「1」です。
値 … 挿入される日付データ
記憶形式 … Magic での記憶形式を表す数値。記憶形式について
は、359 ページを参照してください。

戻り値：

論理値
• True…処理が成功した場合• False…処理が失敗した場合
以下の場合は失敗します。

例：• 参照項目が正しくない場合• 参照項目が BLOB でない場合• 位置パラメータが負数の場合• 記憶形式パラメータが正しくない場合
BufSetDate ('A'VAR,1,Date(),1)
項目 'A' の 1 バイト目に 現在の日付を挿入します。

参照：

BufSetLog

SetBufCnvParam

バッファに論理データを格納する
論理データを BLOB バッファ指定した位置に挿入します。
構文：

BufSetLog ( 参照項目、位置、値、記憶形式 )パラメータ：

参照項目 … バッファとなる BLOB 項目。VAR リテラルが必要です。

リファレンス
Magic eDeveloper V9 Plus365

第 8 章 - 関数
位置 … データの挿入位置を表す数値。バッファの先頭は「1」です。
値 … 挿入される論理データ
記憶形式 … Magic での記憶形式を表す数値。記憶形式について
は、359 ページを参照してください。
戻り値：

論理値
• True…処理が成功した場合• False…処理が失敗した場合
以下の場合は失敗します。

参照：

BufSetNum• 参照項目が正しくない場合• 参照項目が BLOB でない場合• 位置パラメータが負数の場合• 記憶形式パラメータが正しくない場合
SetBufCnvParam

バッファに数値データを格納する
数値データを BLOB バッファ指定した位置に挿入します。
構文：

BufSetNum （参照項目、位置、値、記憶形式、長さ）パラメータ：

参照項目 … バッファとなる BLOB 項目。VAR リテラルが必要です。
位置 … データの挿入位置を表す数値。バッファの先頭は「1」です。
値 … 挿入される数値データ
記憶形式 … Magic での記憶形式を表す数値。記憶形式について
は、359 ページを参照してください。
長さ … 数値の長さを表す数値

戻り値：

論理値
• True…処理が成功した場合• False…処理が失敗した場合
以下の場合は失敗します。

参照：

BufSetTime• 参照項目が正しくない場合• 参照項目が BLOB でない場合• 位置パラメータが負数の場合• 記憶形式パラメータが正しくない場合• 長さパラメータが正しくない場合• 変換時にオーバーフローが発生した場合
SetBufCnvParam

バッファに時刻データを格納する
時刻データを BLOB バッファ指定した位置に挿入します。
構文 :BufSetDate ( 参照項目、位置、値、記憶形式 )パラメータ：

参照項目 … バッファとなる BLOB 項目。VAR リテラルが必要です。
位置 … データの挿入位置を表す数値。バッファの先頭は「1」です。
値 … 挿入される時刻データ

366

リファレンス
Magic eDeveloper V9 Plus関数の説明（アルファベット順）
記憶形式 … Magic での記憶形式を表す数値。記憶形式について
は、359 ページを参照してください。
戻り値：

論理値
• True…処理が成功した場合• False…処理が失敗した場合
以下の場合は失敗します。

参照：

BufSetVariant• 参照項目が正しくない場合• 参照項目が BLOB でない場合• 位置パラメータが負数の場合• 記憶形式パラメータが正しくない場合
SetBufCnvParam

バッファに Variant データを格納する
Variant データを BLOB バッファ指定した位置に挿入します。
構文：

BufSetVariant ( 参照項目、位置、値、ポインタ値 )パラメータ：

参照項目 … バッファとなる BLOB 項目。VAR リテラルが必要です。
位置 … データの挿入位置を表す数値。バッファの先頭は「1」です。
値 … 挿入される Variant データ
ポインタ値 … Variant データをバッファに直接書き込むか、ポイ
ンタとして書き込むかを指定する論理値。「True」ならば、ポインタとして書き込みます。

BufSetVector

戻り値：

論理値

参照 :

• True…処理が成功した場合• False…処理が失敗した場合
SetBufCnvParam

バッファにベクトルデータを格納する
ベクトルデータを BLOB バッファ指定した位置に挿入します。
構文：

BufSetVector( 参照項目、位置、値、セル記憶形式、セル長、ポインタ値 )

パラメータ：

参照項目 … バッファとなる BLOB 項目。VAR リテラルが必要です。
位置 … データの挿入位置を表す数値。バッファの先頭は「1」です。
値 … 挿入されるベクトルデータ
セル記憶形式 … ベクトルセルの記憶形式。このパラメータは、
セルのデータ型に対応する記憶形式のうちのどれかを指定します。Magic での記憶形式を表す数値を指定します。記憶形式については、359 ページを参照してください。
セル長 … ベクトルセルの記憶長タイプ。外部のベクトルがバッファから読み込まれた場合に指定します。このパラメータは、「セル記憶形式」に対応する長を指定します。
ポインタ値 … ベクトル値データをバッファに直接書き込むか、
ポインタとして書き込むかを指定する論理値。「True」ならば、ポインタとして書き込みます。

リファレンス
Magic eDeveloper V9 Plus367

第 8 章 - 関数
戻り値：

論理値
• True…処理が成功した場合• False…処理が失敗した場合
以下の場合は失敗します。

参照 :CallDLL• 参照項目が正しくない場合• 参照項目が BLOB でない場合• 位置パラメータが負数の場合• 記憶形式パラメータが正しくない場合
SetBufCnvParam外部 DLL の CDECL 規約関数の呼び出し
Magic の内部から DLL を呼びだします。CDECL 呼び出し規約の関数専用です。
構文：

CallDLL （モジュール名 . 関数名 , 引数型文字列 , パラメータ１ ,パラメータ２ ,...）

パラメータ：

モジュール名 . 関数名…DLL のモジュール名と使用する関数名
引数型文字列…一つ一つの文字が引数の型を意味する文字列
最後の一文字が関数の戻り値の型を意味します。引数型文字と意味する型は次のとおりです。
• 1…char• 2…short• 4…long• F…float• 8…double• D…double pointer• E…float pointer• L…long pointer• A…null で終了する文字列 pointer• V…void pointer• T…A pointer to a buffer• 0…void
パラメータ …DLL への引数

戻り値：

DLL 内の指定した関数が返す値

例：

CallDLL（'mydll.lmath','1L44',action,a,b）
対応する C 関数は、long lmath（char action, long *a, long b）とな
り、DLL 内の関数である lmath からの戻り値が返ります。
CallDLL（'mydll.add str','AAA',a,b）
対応する C 関数は char *add str（char *a, char *b）となり、DLL 内の関数の add str からの戻り値が返ります。

注意事項：

CallDLLF

パラメータで関数の結果を受け取る関数を実行しても、結果を受けることはできません。

外部 DLL の FASTCALL 規約関数の呼び出し
Magic の内部から DLL を呼びだします。FASTCALL 呼び出し規約の関数専用です。

368

構文：

CallDLLF （モジュール名 . 関数名 , 引数型文字列 , パラメータ１, パラメータ２ ,...）

パラメータ：

CallDLL と同じ

戻り値：

DLL 内の指定した関数が返す値
リファレンス
Magic eDeveloper V9 Plus関数の説明（アルファベット順）
例：

CallDLL と同様

注意事項：

FASTCALL は、DLL をコンパイルする際の呼び出し規約で、
fastcall と指定されているものです。
パラメータで関数の結果を受け取る関数を実行しても、結果を受けることはできません。

CallDLLS

外部 DLL の STDCALL 規約関数の呼び出し
Magic の内部から DLL を呼び出します。STDCALL 呼び出し規約の関数専用です。
構文：

CallDLLS （モジュール名 . 関数名 , 引数型文字列 , パラメータ１, パラメータ２ ,...）

パラメータ：

CallDLL と同じ

戻り値：

DLL 内の指定した関数が返す値

例：

CallDLL と同様

注意事項：

STDCALL とは、DLL をコンパイルする際の呼び出し規約で、
stdcall と指定されているものです。
Windows の API を起動する場合、通常はこの関数を使用します。
パラメータで関数の結果を受け取る関数を実行しても、結果を受けることはできません。

CallJSJava スクリプトの呼び出し
ブラウザタスクにおいて使用する HTML ファイル内に埋め込まれている Java スク
リプトを呼び出します。
構文：

CallJS （関数名 , パラメータ１ , パラメータ２ ,...）

パラメータ：

関数名…Java スクリプトの関数の名前
パラメータ…Java スクリプト関数に渡すパラメータをカンマ区切りで指定します。

戻り値：

文字列…Java スクリプト関数からの戻り値

注意事項：

関数名は、パラメータがある場合とない場合で書式が異なります。
• パラメータがある場合…CallJS（'my function','A',3）
上記は文字と数を渡し、その文字を数の分だけ繰り返した文字列を返す Java スクリプトを呼び出す例です。
この関数の戻り値は、'AAA' という文字列になります。
• パラメータがない場合…CallJS（'my function()'
関数名の後に ‘()’ を付加してください。

CallOBJ

ActiveX オブジェクトの呼び出し
ブラウザタスクにおいて使用する HTML ファイル内に埋め込まれている ActiveX オ
ブジェクトを呼び出します。
構文：

CallOBJ （オブジェクト名 , パラメータ名１ , 値１ , パラメータ名
２ , 値２ ,...）

パラメータ：

オブジェクト名…HTML ファイルに埋め込まれているオブジェ
クトの ID
object タグ内の 「id」の値（ActiveX コントロールのプロパティ
上では、［オブジェクトタグ］タブの［名前］の値として表示されます。）

リファレンス
Magic eDeveloper V9 Plus369

第 8 章 - 関数
パラメータ名…オブジェクトに設定するパラメータの名前
値…パラメータに設定する値
パラメータ名と値の組み合わせで複数のパラメータを指定できます。
パラメータ名と値には、param タグの「name」と「value」の組
み合わせで指定された内容を参考にしてください。（ActiveX コ
ントロールのプロパティ上では、［パラメータ］タブの［属性］と「値」として表示されます。)

CallProg

戻り値：

オブジェクトからの戻り値例：

CallOBJ（Calendar1','Year’,’2005’）
CallOBJ（Calendar1','Month’,’12’）
CallOBJ（Calendar1','Day’,’25’）
上記は、カレンダーコントロールを配置した HTML ページを使用して、指定した日付（2005/12/25）を表示させる例です。
この関数の戻り値は、処理が成功すると「True」、失敗すると、「False」になります。

注意事項：

パラメータを複数指定する場合、パラメータ名と値を１つの関数の中で指定できますが、ActiveX オブジェクトによっては、正しく渡らない場合があります。このような時は、パラメータを個別に指定した CallOBJ 関数を実行させるようにしてください。

Magic プログラムの呼び出し
Magic のプログラムを呼び出します。
構文：

CallProg （プログラム番号 , パラメータ 1, パラメータ２ ,...）

パラメータ：

プログラム番号…プログラムリポジトリ上の番号
パラメータ…プログラムに渡す引数戻り値：呼ばれたプログラムが返す戻り値（タスク特性で定義された戻り値）

例：' 値引き価格は、'&Str（CallProg（'23'prog,A,FG,'Preferd',23）,'2P0'）
この場合、23 番のプログラム呼び出され、数値が返ります。

注意事項：

CallProgURL

アクションコマンドで CallProg 関数の式を指定した場合、アクションコマンドの戻り値には「False」が返ります（呼び出されたプログラムの戻り値ではありません）。引数として NULL 値を渡すことはできません。

アプリケーションサーバ上の Magic プログラムの起動
ブラウザタスクから同一アプリケーションサーバ上の Magic プログラムを、HTTP
リクエスタ経由で呼び出すことができます。
構文：

CallProgURL( アプリケーション名 , プログラム名 , 出力先 , パラ
メータ 1, パラメータ 2,…)

パラメータ：

アプリケーション名…起動されるアプリケーションの名前
プログラム名… 実行するプログラム（の公開 ) 名
出力先…表示したいフレーム名
パラメータ n…プログラムに渡すパラメータ

370

戻り値：

論理値
リファレンス
Magic eDeveloper V9 Plus関数の説明（アルファベット順）

例：• True …処理に成功した場合• False …処理に失敗した場合
CallProgURL('My App','My Prog','','A',5)
同じ処理を URL で指定した場合、以下のようになります。
[HTTP Requester]?Appname=My App&Prgname=My
Prog&Argument=A,-N5

注意事項：

CallURL

フレーム名が空白の場合は、新しいウィンドウをオープンします。

URL の呼び出し
ブラウザタスクからアクション処理コマンドを使って URL を呼ぶことができます。
構文：

CallURL(URL, 出力先 )パラメータ：

URL… 呼び出したい URL を表す文字列
出力先 …表示したいフレーム名

戻り値：

論理値

例：

• True …処理に成功した場合• False …処理に失敗した場合
CallURL('http://magicsoftware.com','Magic')
フレーム名「Magic」に指定した URL を表示します。

注意事項：

CASE

フレーム名が空白の場合は、新しいウィンドウをオープンします。

値による切り替え指定された条件に基づいて、値の切り替えを行います。If 文のネストが不要になります。
構文：

CASE （条件式 , ケース 1, 値 1, ケース 2, 値 2,... デフォルト値）

パラメータ：

条件式…値を切り替えるための条件式
ケース n …条件によって指定される値。条件式の結果がケース nで指定したものと一致した場合、値 n が関数の戻り値になります。
値 n …関数の戻り値
デフォルト値…条件式の結果がケース n に当てはまらない場合
の戻り値

注意事項：

n の最大値は「14」です。

戻り値：

条件式に当てはまるケースに対応する戻り値が返ります。どのケースとも一致しない場合は、デフォルト値が返ります。

例：'CASE（A,1,' 赤 ',2,' 緑 ',3,' 青 ',' 黒 '）A が「1」の場合「赤」が返ります。
A が「2」の場合「緑」が返ります。
A が「3」の場合「青」が返ります。
A が 1 〜 3 以外の場合「黒」が返ります。

CDOW

週の曜日名（英語）を取得
指定した日付または日付式に対応する、英語の曜日名（Sunday 、Monday など）が返ります。

リファレンス
Magic eDeveloper V9 Plus371

第 8 章 - 関数
構文：

CDOW（日付）

パラメータ：

日付…日付または日付式

戻り値：

文字列で表した曜日

例：

CDOW（'92/01/28'DATE）では、「Tuesday」が返ります。
また、x が 92/01/28 （Tuesday ）の場合、CDOW（x+1）では「Wednesday」が返ります。

関連項目：

リテラル、DAY 、DOW 、NDOW
曜日名を日本語で求める場合は、JCDOW を使用します。

注意事項：

CHeight'92/01/28' の右の DATE はリテラルコードです。この場合、DATEの直前の日付は文字列として認識されます。
曜日の名前の長さは、その曜日が入る項目（文字型）のサイズを調節することで変更できます。たとえば、曜日の最初の 3 文
字だけ（たとえば、「Mon」、「Tue」など）を項目に表示したい場
合、その項目のサイズを 3 文字にします。

コントロールの高さを取得指定したコントロール、またはカーソルが最後にパークしたコントロールの高さを
返します。
構文：

CHeight（コントロール名 , タスク番号）

パラメータ：

コントロール名…指定するコントロールの名前。
ヌル文字列（''）を指定した場合、カーソルが最後にパークしているコントロールが対象となります。
タスク番号…タスクツリー表示における、タスクの階層的位置を示す数値です。
たとえば、「0」0 はそのタスク自身であり、「1」はすぐ上位の親
タスクを意味します。

ChkDgt

戻り値：

フォームの寸法単位での値

注意事項：

パーク可能コントロールだけが有効な値を返します。パーク可能コントロールとは、データを持つコントロールやアクションを返すコントロールのことで、具体的には次のものがあります。
チェックボックス，コンボボックス，エディットコントロール，
イメージコントロール，リストボックス，OLE コントロール，
プッシュボタン，ラジオボタン，リッチエディットコントロー
ル，スライダ，タブコントロール

検査数字を作成
検査数字（チェックディジット）を作成します。チェックデジットは、前後に数が追加された数値で、数値の整合性を高めるために使用されます。簡単なアルゴリズ
ムが、チェックデジットを算出する数値の他の数値に適用されます。アルゴリズムを実行し、チェックデジットを比較することで数値が正しいかどうかを判定できます。チェックデジットは、クレジットカードや ID 番号の照合などに使用されます。
構文：

ChkDgt（文字列 , 数値）

パラメータ：

文字列…数値を文字列として指定します。この文字列について、検査数字が作成されます（処理対象の数値は、あらかじめ文字列に変換しておかなければなりません）。
数値…係数（モジュラス）が 10 または 11 を表す数値

戻り値：

372

• 0…モジュラス 10• 1…モジュラス 11
数値
リファレンス
Magic eDeveloper V9 Plus関数の説明（アルファベット順）

CHR

例：

ChkDgt（'6789',0）では、「2」が返ります。
x が文字列 '6789' の場合、ChkDgt（x,0）では「2」が返ります。
ChkDgt（'6789',1）では、「1」が返ります。

関連項目：

CRC

ASCII コードを文字に変換
ASCII コード（数値）を、そのコードに対応する ASCII 文字に変換します。

Cipher

構文：

CHR（数値）

パラメータ：

数値…数値

戻り値：

文字

例：

CHR（78）では、「N」（ASCII コード 78 に対応する文字）が返ります。
変数 X の値が「77」の場合、CHR（X+1）でも同じく「N」が返
ります。

関連項目：

ASC

注意事項：

この関数は、1 以上のクラスのフォームでキーボードを使用して入力できない文字、また、その文字が Windows の画面でも表示できない文字の場合に使います。こういった文字としては、たとえば、右矢印文字があり、この文字は CHR（26）を使うことで表示できます。

バッファの暗号化
文字列 または、BLOB を含むバッファを暗号化します。
構文：

Cipher( 暗号 ID 、バッファ、キー [ , モード , IV ])パラメータ：

暗号 ID … 指定された暗号のアルゴリズムを表す数値
バッファ … 暗号化対象の文字列や BLOB を含んだ BLOB バッ
ファ
キー … 暗号化キーを含む BLOB 文字列
モード … 暗号 ID によって指定された暗号化方法によって選択されたモードを含む文字列。暗号化方法に対応したモードが指定されない場合、デフォルト値として CBC が使用されます。
モードテーブルは次を参照してください。
IV … 初期化ベクトルを含む BLOB 文字列。このパラメータは任意です。
暗号化された BLOB バッファ

戻り値：

暗号 ID が正しくなかったり、キー長が 暗号 ID に合わない場合
は、Null 値を返します。
参考：

リファレンス
Magic eDeveloper V9 Plus

サポートする暗号化方法とモードは以下の通りです。

暗号 ID

暗号名

サポートされるモード

1

BLOWFISH

2

CAST

3

キー長

対称

ECB, CBC, CFB, OFB

128 bits

対称

ECB, CBC, CFB, OFB

64 bits

対称DES

ECB, CBC, CFB, OFB,
ECP3, CBC3

64 bits

対称

4

IDEA

ECB, CFB, OFB

128 bits

対称

5

RC2

ECB, CBC, CFB, OFB

128 bits

対称

6

RC4

128 bits

対称373

第 8 章 - 関数
暗号 ID

暗号名

サポートされるモード

キー長

対称

7

RC5

ECB, CBC, CFB, OFB

128 bits

対称

8

DES3

CBC3,ECB3

128bits
192bits

対称

9

RSA

1024 bits

非対称

参照 :

CLeft

DeCipher 、EncryptionError

コントロールのフォーム内左位置（X 座標）を取得
指定したコントロール、またはカーソルが最後にパークしたコントロールのフォー
ム内での X 座標値を返します。

CLeftMDI

構文：

CLeft（コントロール名 , タスク番号）

パラメータ：

コントロール名…指定するコントロールの名前。
ヌル文字列（''）を指定した場合、カーソルが最後にパークしているコントロールが対象となります。
タスク番号…タスクツリー表示における、タスクの階層的位置を示す数値です。
たとえば、「0」はそのタスク自身であり、「1」はすぐ上位の親
タスクを意味します。

戻り値：

フォームの寸法単位での値

注意事項：

可能コントロールだけが有効な値を返します。パーク可能コン
トロールとは、データを持つコントロールやアクションを返す
コントロールのことで、具体的には次のものがあります。
チェックボックス，コンボボックス，エディットコントロール，
イメージコントロール，リストボックス，OLE コントロール，
プッシュボタン，ラジオボタン，リッチエディットコントロー
ル，スライダ，タブコントロール

コントロールの左辺位置（Magic MDI 基準での X 座標値）を取得
指定したコントロール、またはカーソルが最後にパークしたコントロールの、Magic
MDI 基準での X 座標値を返します。

ClickCX

構文：

CLeftMDI（コントロール名 , タスク番号）

パラメータ：

コントロール名…指定するコントロールの名前。
ヌル文字列（''）を指定した場合、カーソルが最後にパークしているコントロールが対象となります。
タスク番号…タスクツリー表示における、タスクの階層的位置を示す数値です。
たとえば、「0」はそのタスク自身であり、「1」はすぐ上位の親
タスクを意味します。

戻り値：

フォームの寸法単位での値

注意事項：

パーク可能コントロールだけが有効な値を返します。パーク可能コントロールとは、データを持つコントロールやアクションを返すコントロールのことで、具体的には次のものがあります。
チェックボックス，コンボボックス，エディットコントロール，
イメージコントロール，リストボックス，OLE コントロール，
プッシュボタン，ラジオボタン，リッチエディットコントロー
ル，スライダ，タブコントロール

コントロール内のクリック位置（X 座標）を取得
最後にクリックしたコントロールのクリック位置（X 座標）をコントロール上の座
標で返します。

374

リファレンス
Magic eDeveloper V9 Plus関数の説明（アルファベット順）

ClickCY構文：

ClickCX（）

パラメータ：

なし

戻り値：

数値

参考：

コントロール上の座標は、コントロールの左上の座標が（0,0）となり、右下の座標が（水平精度×幅、垂直精度×高さ）となります。
「水平精度」、「垂直精度」はそれぞれ［フォーム特性］ダイアロ
グの［水平精度］欄、［垂直精度］欄の値を示し、「幅」、「高さ」、はそれぞれ［コントロール特性］ダイアログの［幅］欄、［高さ］欄の値を示します。

関連項目：

ClickCY 、ClickWX 、ClickWY

注意事項：

タブコントロールではレイヤ番号を返します。

コントロール内のクリック位置（Y 座標）を取得
最後にクリックしたコントロールのクリック位置（Y 座標）をコントロール上の座
標で返します。

ClickWX

構文：

ClickCY（）

パラメータ：

なし

戻り値：

数値

参考：

コントロール上の座標は、コントロールの左上の座標が（0,0）となり、右下の座標が（水平精度×幅、垂直精度×高さ）となります。
「水平精度」、「垂直精度」はそれぞれ［フォーム特性］ダイアロ
グの［水平精度］欄、［垂直精度］欄の値を示し、「幅」、「高さ」、はそれぞれ［コントロール特性］ダイアログの［幅］欄、［高さ］欄の値を示します。

関連事項：

ClickCX 、ClickWX 、ClickWY

注意事項：

タブコントロールでは（-1）を返します。

ウィンドウ内のクリック位置（X 座標）を取得
最後にクリックしたウィンドウ（フォーム）のクリック位置（X 座標）を返します。

ClickWY構文：

ClickWX（）

パラメータ：

なし

戻り値：

数値

関連項目：

ClickCX 、ClickCY 、ClickWY

注意事項：

正確には、ウィンドウ内に表示されているフォームのクリック
位置（座標）が返されます。

ウィンドウ内のクリック位置（Y 座標）を取得
最後にクリックしたウィンドウ（フォーム）のクリック位置（Y 座標）を返します。
構文：

ClickWY（）

パラメータ：

なし

戻り値：

数値

関連項目：

ClickCX 、ClickCY 、ClickWY

注意事項：
リファレンス
Magic eDeveloper V9 Plus375

第 8 章 - 関数
正確には、ウィンドウ内に表示されているフォームのクリック
位置（座標）が返されます。

ClientCertificateAdd 証明書の指定
動作環境の［SSL クライアント証明書ファイル］に設定されたクライアント証明書
以外の証明書を指定する場合に使用します。
コール Web サービスや HTTP Post/Get 関数を呼び出す前に実行します。
構文：

ClientCertificateAdd (PKCS12 証明書 , パスワード )パラメータ：

PKCS12 証明書… 証明書の URL（またはパスを含んだファイル名）。PKCS12(Public Key Cryptography Standard #12 ) の書式で作成された証明書ファイルを指定してください。
パスワード… 証明書ファイルのエクスポート用パスワード。パスワードなしで出力されている場合は、Null になります。

戻り値：

論理値

例：

• True…有効で、認証済みの PKCS12 証明書が指定された場合• False…以下の場合に返ります。
• 同じ認証局が複数指定された場合• 証明書が存在しない場合• 証明書が PKCS12 フォーマットでない場合• パスワードが正しくない場合
ClientCertificateAdd (my.pfx, %MY_PASS%)
パラメータは以下の通りです。

注意事項：

関連項目：

ClientCertificateDiscard• My.pfx… PKCS12 証明書• %MY_PASS%… パスワードの論理名• 動作環境の［SSL CA 証明書ファイル］で指定された CA をもとに認証されます。ここに指定されていない CA 用の証明書が指定された場合はエラーになります。
• 証明書が、ClientCertificateDiscard 関数を使用して現在のコンテ
キストから削除されるまで、すべてのクライアント証明書は、
現在のコンテキスト上では以降の呼び出し処理でも有効になります。
• 複数のクライアント証明書を追加する場合は、その都度ClientCertificateAdd 関数を実行してください。ただし、同じクライアント証明書を追加することはできません。
• 秘密キーを出力しないで作成された証明書では認証できません。
HTTPGet, HTTPPost, ［コール Web サービス］コマンド

証明書の破棄証明書のリストからクライアント証明書を破棄します。
クライアント証明書は、セキュア Web アプリケーションにアクセスする際にユーザーの確認のために使用されます。
構文：

ClientCertificateDiscard （PKCS12 証明書 )パラメータ：

PKCS12 証明書… クライアント証明書ファイルを指定する URL（またはパスを含んだファイル名）。英数文字で指定してくださ
い。

戻り値：

論理値
• True…証明書が破棄された場合• False…証明書が破棄されなかった場合

376

リファレンス
Magic eDeveloper V9 Plus関数の説明（アルファベット順）
クライアント証明書の URL が、ClientCertificateAdd 関数によって同じ URL で追加されされた場合か、動作環境の［SSL クライ
アント証明書ファイル］で指定された名前と合っている場合のみ、証明書は破棄されます。

ClipAdd

例：

ClientCertificateDiscard (My.pfx)

注意事項：

証明書がこの関数で実行中に破棄された場合でも、環境設定において指定された証明書は、実行モードから開発モードに切り換える時に再発行されます。

クリップボードに追加する値の定義
OS のクリップボードに追加する値と型を定義してバッファに追加します。
構文：

ClipAdd （値 , 書式 , ［値 , 型 ,］）パラメータ：

１対のパラメータの組み合わせで複数の値を指定できます。
値…BLOB を除く Magic の項目
書式…項目の書式

戻り値：

論理値

関連項目：

• True…OS がクリップボードに対応している場合• False…対応していない場合
ClipRead 、ClipWrite

注意事項：

ClipRead

この関数は、クリップボードのバッファに値を置きます。値の間にタブを挿入します。文字列の末尾に改行コードを入れます。

クリップボードの読込
OS のクリップボードの内容を返します。

ClipWrite

構文：

ClipRead（）

パラメータ：なし

戻り値：

BLOB 値…クリップボードの内容が CF_TEXT 形式で返ります。
処理が実行されなかった場合やクリップボードが空の場合は、
NULL が返ります。

関連項目：

ClipAdd 、ClipWrite

クリップボードの書込
ClipAdd 関数で定義した内容を OS のクリップボードに書き込みます。

ClrCache

構文：

ClipWrite（）

パラメータ：

なし

戻り値：

論理値

関連項目：

• True …処理が成功した場合• False…処理が失敗した場合
ClipAdd 、ClipRead

現在のタスクのキャッシュをクリア
現在のタスクのデータキャッシュをクリアし、Magic が直接データベースからレ
コードを読むようにします。この関数はオンラインタスクでのみ有効です。
構文：

リファレンス
Magic eDeveloper V9 Plus

ClrCache（）377

第 8 章 - 関数
パラメータ：

なし

戻り値：

論理値
• True …処理が成功した場合• False …処理が失敗した場合

CMonth月の名前（英語）を取得
指定した日付または日付式の月の名前（英語）が返ります。

CndRange

構文：

CMonth（日付）パラメータ：

日付…日付または日付式

戻り値：

文字列

例：

CMonth（'97/01/28'DATE）では、'January' が返ります。
また、X が 97/01/28 の場合、CMonth（X+30）では 'February' が
返ります。

関連項目：

リテラル、Month 、NMonth

注意事項：'92/01/28' の右の DATE はリテラルコードです。この場合、DATEの直前の日付は文字列として認識されます。
月の名前の長さは、その月が入る項目（文字型）のサイズを調節することで変更できます。たとえば、月の最初の 3 文字だけ
（たとえば、「Jan」、「Feb」など）を項目に表示したい場合、その項目のサイズを 3 文字にします。

条件を使用して項目に値を設定
項目の値に関する条件付き範囲を指定します。
構文：

CndRange （条件 , 値）

パラメータ：

条件…実行時に評価される論理式
値…条件が「True」のときに戻り値として返される値

CodePage

戻り値：

指定した値

例：

CndRange （' True 'LOG,10 ）は、「10」が返ります。
CndRange （'False'LOG, 20）は、実行されません。

注意事項：

この関数は［セレクト］コマンドの位置付と範囲にのみ使用できます。また、この関数は他の式の一部としては使用できません。CndRange（条件 , 値）を範囲の小大に指定すると、範囲小にIF（条件 , 値 , 最小値）を設定し、範囲大に IF（条件 , 値 , 最大値）を設定した場合とほぼ同等の動作をします。項目特性の
NULL 値許可の設定に関わらず同一の式を使用できます。また、
SQL ではより適切な WHERE 句が発行できます。これによって、範囲処理に関わる SQL 文が出力されなくなるため、処理の高速化が図れます。
たとえば、［範囲］欄の大の欄に CndRange（A<>0,A）とした場
合、A に「0」以外の数値が設定されている場合、A を最大値とした範囲値となりますが、A が「0」の場合、この指定は範囲条
件としては処理されません。

コードページの指定
Magic がデータの入出力時に使用するコードページを指定します。
Magic がデータを受ける場合、指定されたコードページを元に Magic の内部書式に変換されます。また Magic がデータを送る場合も、Magic の内部書式から指定され

378

リファレンス
Magic eDeveloper V9 Plus関数の説明（アルファベット順）
たコードページを元に変換します。コードページは、現在のコンテキストによって次のコードページが指定されるまで、現在のコンテキストのみに対して有効です。
デフォルトコードページは、OS に依存します。
（日本語 OS では、Shift-JIS）この関数は、Java 関数や Web サービスの処理で使用します。

COMError

構文：

CodePage （コードページ）

パラメータ：

コードページ…コードページを表す数値。「0」の場合、コード
ページを OS のデフォルト値にします。

戻り値：

論理値… 処理が成功した場合 「True」が返ります。

例：

CodePage(932) は、コードページを 「Shift-JIS」に設定します。

参考：コードページの一覧は、第 16 章「Java との連携」の「コードページ」を参照してください。

COM とのアクセスエラー情報の取得
Magic が COM オブジェクトをアクセスしたときに発生した最後のエラー情報を取
得します。
構文 :

COMError ( 情報タイプ )パラメータ：

情報タイプ … 取得する情報を指定する数値。以下の通りです。

戻り値：

COMHandleGet• 1 … エラー内容• 2 … エラーが発生した COM オブジェクト• 3 … エラーが発生したインデックス番号• 4 … エラーに関するヘルプファイル• 5 … エラーに関するヘルプトピックのコンテキスト番号• 0 … 実際のエラー番号を示す HRESULT 値。16 進コードで返ります。
情報タイプパラメータによって定義された文字列。引数インデッ
クスのような数値も文字列で返ります。エラーがないときや、情報タイプの値が正しくない場合は空白が返ります。

COM オブジェクトのハンドルを取得
ロードされた COM オブジェクトのハンドルを取得します。ハンドルは、数値で返
ります。
構文 :

COMHandleGet ( オブジェクト )パラメータ：

オブジェクト … COM オブジェクトが定義された BLOB 項目。

戻り値：

オブジェクトのハンドルを表す正数値
処理が失敗した場合は 以下の負数が返ります。

注意事項：

COMHandleSet• -1 … 項目の型が、ActiveX か OLE でない場合• -3 … オブジェクトがロードされない場合
COMHandleGet や COMHandleSet 関数の扱いには十分注意してください。間違ったハンドルを誤ったオブジェクトに割り当てると、予期しない動作を実行する場合があります。

指定したハンドルのオブジェクトを参照
COMHandleGet 関数によって返されたハンドル番号と、COM オブジェクト項目から以前にロードされたオブジェクトを参照します。
構文：

COMHandleSet ( 参照項目、ハンドル )パラメータ：
リファレンス
Magic eDeveloper V9 Plus379

第 8 章 - 関数
参照項目 … COM オブジェクトが定義された変数項目。VAR リ
テラルが必要です。
ハンドル … 数値：COMHandleGet 関数で取得されたハンドル値
戻り値：

数値…処理が成功すると「0」が返ります。
失敗した場合は、以下のような負数が返ります。

注意事項：

COMObjCreate• -1 … 項目の型が、ActiveX か OLE でない場合• -2 … 項目の［保存データ］が「O= オブジェクト」と設定されている場合• -3 … オブジェクトは、定義された項目によってロードされていない場合• -4 … 項目によって提供されたハンドルが正しくない場合
COMHandleGet や COMHandleSet 関数の扱いには十分注意してください。間違ったハンドルを誤ったオブジェクトに割り当てると、予期しない動作を実行する場合があります。

COM オブジェクトのインスタンスを作成
オブジェクトが定義された変数項目をもとに COM オブジェクトのインスタンスを作成します。COMObjCreate 関数は、［保存データ］特性が「R= 参照」に設定された ActiveX か OLE 項目のみ有効です。
構文：

COMObjCreate ( 項目 )パラメータ：

項目 … COM オブジェクトが定義された変数項目。VAR リテラ
ルが必要です。

戻り値：

数値 … ロードされたオブジェクトのハンドル数
処理が失敗した場合は、以下のような負数が返ります。

注意事項：

COMObjRelease• -1 … 項目の型が、ActiveX か OLE ではない場合• -2 … 定義された項目の［保存データ］特性が、「O= オブジェ
クト」の場合• -3 … オブジェクトは、定義された項目によって既にロードされていた場合• -4 … 原因不明のエラー
手動でロードされた COM オブジェクトは、手動で解放してください。Magic エンジンは、この関数でロードされたオブジェクトを自動的に解放しません。手動でロードされたオブジェクトを解放する場合は、COMObjRelease 関数を使用します。

COM オブジェクトの解放
COMObjCreate関数や自動インスタンス化設定によってロードされたCOM オブジェ
クトを解放します。
構文：

COMObjRelease ( 項目 )パラメータ：

項目 … COM オブジェクトが定義された変数項目。VAR リテラ
ルが必要です。

戻り値：

数値…処理が成功すると「0」が返ります。
失敗した場合は、以下のような負数が返ります。
• -1 … 項目の型が、ActiveX か OLE ではない場合• -2 … 定義された項目の［保存データ］特性が、「O= オブジェ
クト」の場合• -3 … オブジェクトは、定義された項目によってロードされて
いない場合

380

リファレンス
Magic eDeveloper V9 Plus関数の説明（アルファベット順）

COS

余弦（コサイン）
指定した角度の余弦（コサイン）が返ります。角度は、ラジアンで指定します。

Counter構文：

COS（数値）

パラメータ：

数値…ラジアンで示した角度

戻り値：

数値

例：

COS（0.7854）では、「0.70711」が返ります。

関連項目：

ACOS 、SIN 、ASIN 、TAN 、ATAN

バッチ繰り返しカウンタ
バッチタスクで、レコードレベルの処理が何回行われたか、その回数をカウントし
ます。

CRC

構文：

Counter（タスク番号）

パラメータ：

タスク番号…タスクの階層を示す値で、カレントのタスクが「0」、親タスクが「1」、その親タスクが「2」などとなります。

戻り値：

数値

例：

［タスク終了条件］欄に式として Counter（0）=5 を指定し、［チェック時期］を「後置」にした場合、カレントのタスク（タスク番号は「0」）は、レコードレベルの処理が 5 回実行されると終了します。

CRC 方式による計算
文字列に対して、CRC 方式で計算を実行します。
構文：

CRC（文字列 , 数値）

パラメータ：

文字列…この文字列に対して CRC が実行されます。
数値…CRC アルゴリズムを示す数値。Magic では、「0」を指定すると CRC-16 が実行されます。

戻り値：

CRC 値が入った 2 バイト文字列

例：

ABC&CRC（'ABC',0）を送信したとします。ここで、ABC&CRC（'ABC',0）は、「文字列」と呼びます。
受信側で、CRC（Left（文字列 ,3）,0）=Right（文字列 ,1）という処理（比較）を行い、値が一致すれば、データは正常に転送されたことになります。

注意事項：

CRC は、主にデータストリームの検証に使用します。CRC 関数
では、すべての入力データ（文字列）を使用して検証が可能です。このため、送信後の文字列が途中で変更されていないか、かなりの精度でチェックすることができます。
CRC は、一般に 2 つのコンピュータ間でデータをやりとりする
ときのデータのチェックに使います。その場合、送信側でデー
タの CRC 値（2 バイト）を算出し、その CRC 値をデータに追加
した後、データと CRC 値を別のコンピュータに送ります。受信側では、このデータ全体から CRC 値を取り出し、残りのデータの CRC 値を計算します。ここで、取り出した CRC 値と残りのデータから算出した CRC 値が合致すれば、送信中にデータが変更されていないことが分かります。合致しなければ、データは何らかの理由により転送中に変更されたことになります。

リファレンス
Magic eDeveloper V9 Plus381

第 8 章 - 関数
文字列に項目を指定する場合は、Trim 関数を使用してトリミングする必要があります。
関連項目：

CTop

ChkDgtコントロールの上辺位置指定したコントロール、または最後にパークしていたコントロールの、フォーム基準の Y 座標値を返す。
構文：

CTop（コントロール名 , タスク番号）

パラメータ：

コントロール名…指定するコントロールの名前。
ヌル文字列（''）を指定した場合、カーソルが最後にパークしているコントロールが対象となります。
タスク番号…タスクツリー表示における、タスクの階層的位置を示す数値です。たとえば、「0」はそのタスク自身であり、「1」はすぐ上位の親タスクを意味します。

CTopMDI

戻り値：

数値…フォームで設定した寸法単位での値

注意事項：

パーク可能コントロールだけが有効な値を返します。パーク可能コントロールとは、データを持つコントロールやアクションを返すコントロールのことで、具体的には次のものがあります。
チェックボックス，コンボボックス，エディットコントロール，
イメージコントロール，リストボックス，OLE コントロール，
プッシュボタン，ラジオボタン，リッチエディットコントロー
ル，スライダ，タブコントロール

コントロール上辺位置 MDI
指定したコントロール、または最後にパークしていたコントロールの、MAGIC MDI
基準の Y 座標値を返す。

CtrlGoto構文：

CTopMDI（コントロール名 , タスク番号）

パラメータ：

コントロール名…指定するコントロールの名前。
ヌル文字列（''）を指定した場合、カーソルが最後にパークしているコントロールが対象となります。
タスク番号…タスクツリー表示における、タスクの階層的位置を示す数値です。たとえば、「0」はそのタスク自身であり、「1」はすぐ上位の親タスクを意味します。

戻り値：

数値…フォームで設定した寸法単位での値

注意事項：

パーク可能コントロールだけが有効な値を返します。パーク可能コントロールとは、データを持つコントロールやアクションを返すコントロールのことで、具体的には次のものがあります。
チェックボックス，コンボボックス，エディットコントロール，
イメージコントロール，リストボックス，OLE コントロール，
プッシュボタン，ラジオボタン，リッチエディットコントロー
ル，スライダ，タブコントロール

カーソルを移動する
カーソルを指定したコントロールに移動します。
構文：

CtrlGoto（コントロール名、行番号、タスク番号）

パラメータ：

コントロール名…フォームにレイアウトしたコントロールのコ
ントロール名
行番号…コントロールがテーブル内にある場合の行番号。「0」の場合は、現在の行。テーブルに１つしかコントロールがない

382

リファレンス
Magic eDeveloper V9 Plus関数の説明（アルファベット順）
場合は無視されます。
タスク番号…タスクの階層を示す値で、カレントのタスクが「0」、親タスクが「1」、その親タスクが「2」などとなります。
戻り値：

注意事項：

論理値
• True …処理が成功した場合• False…処理が失敗した場合（指定しかコントロールが見つからない、無効、タスクにウィンドウが存在しないなど）
関数の実行後、アプリケーションがアイドル状態になった時に、フォーカスが切り替わります。
ブラウザクライアントでは無効です。

補足事項：

フローモードは以下のようになります。
C1,C2,C3 の順でテーブルにカラムがあると仮定します。
1. 同一行で C1 から C3 へは、順方向に高速モードで移動します。
2. 同一行で C3 から C1 へは、逆方向に高速モードで移動します。
3. 1 行目の C1 から、2 行目の C3 へ移動する場合は、• データが修正されていれば、1 行目の最後まで高速移動 →レコード後処理 → 2 行目の C3 まで高速移動になります。
• データが修正されていなければ、2 行目の最初から C3 まで
高速移動します。
4. 1 行目の C3 から、2 行目の C1 へは、#3 と同じになります。
パーキング条件 =No のコントロールを指定すると、指定したコントロールの次にパーク可能なコントロールに移動し、戻り値は「True」になります。ただし、移動方法によっては、前のコントロールに移動する場合もあります。

CtrlHWND

コントロールのウィンドウハンドルを取得
コントロールのウィンドウハンドル値を返します。外部 DLL のユーザ関数内でこのハンドルを使用して、コントロールの表示形式や動作を指定することができます。

CtrlName

構文：

CtrlHWND（コントロール名）

パラメータ：

コントロール名…フォームエディタで指定されるコントロール
名

戻り値：

ウィンドウハンドル値（4 バイトの long 値）。この値はユーザ関数（UDF ）またはユーザプロシージャ（UDP ）に渡すことがで
きます。

例：

CtrlHWND（'Olecontrol'）
Olecontrol はフォーム（クラス 1 以上）上のコントロール名です。
関数はこのコントロールのウィンドウズハンドル値を返します。

注意事項：

以下のコントロールで利用できます。
ラジオボタン，リストボックス，OLE コントロール，プッシュ
ボタン，コンボボックス，スライダ，リッチエディットコント
ロール，テキストコントロール，チェックボックス

コントロール名を取得
最後にクリックされたコントロールの名前を返します。
構文：

CtrlName（）

パラメータ：

なし

リファレンス
Magic eDeveloper V9 Plus383

第 8 章 - 関数
戻り値：

CtxClose

最後にクリックされたコントロールの名前が返ります。名前は、［コントロール特性］ダイアログの［コントロール名］欄の値が使われます。

コンテキストのクローズ
コンテキストを正常にクローズします。
コンテキストをクローズする際、エンジンが処理している全てのプログラムを終了
させます。
構文：

CtxClose ( コンテキスト ID)

パラメータ：

コンテキスト ID…コンテキストを表す数値。
この値は、現在のコンテキストリストの中のコンテキスト番号
か実際のコンテキスト ID のどちらかです。

戻り値：

論理値

注意事項：

• True…コンテキストがクローズされた場合• False…コンテキストが見つからない場合、この関数は失敗して「False」を返します。
ペンディング中のコンテキストのみ削除できます。
RqCTxTrm 関数は、CtxClose 関数と同じ仕様です。従って、
CtxClose 機能を実行する前に、CtxNum 関数を実行してコンテキ
ストリストを読み込むようにしてください。

CtxGetAllNames

実行可能なコンテキストのリストを取得
アクティブになっているか実行可能な全コンテキストのリストを返します。

CtxGetId

構文：

CtxGetAllNames()

パラメータ：

なし

戻り値：

ベクトル値 … 全てのコンテキストを含んだ文字型のベクトル値。
コンテキストが指定された名前を持っている場合は、その名前が含まれます。持っていない場合は、コンテキスト ID が含まれます。Magic エンジンが［アプリケーションサーバとして動作］設定が「No」の場合、空白のベクトル値が返ります。

注意事項：

この関数は、サーバエンジンでない場合、空のベクトルデータ
が返ります。

コンテキスト ID の取得
コンテキスト名よりコンテキスト ID を取り出します。
CtxSetName 関数を使用することで、コンテキスト ID に対応したコンテキスト名を割り当てることができます。
構文：

CtxGetId( コンテキスト名 )パラメータ：

コンテキスト名 … コンテキストの名前を表す文字列

戻り値：

数値…コンテキスト ID を表す数値

例：

CtxGetId('Dispatcher') は、「Dispatcher」というコンテキスト名に対するコンテキスト ID を返します。

注意事項：

コンテキスト名が空白の場合、現在のコンテキストの ID が返ります。
指定されたコンテキスト名が見つからない場合、「0」が返ります。

384

リファレンス
Magic eDeveloper V9 Plus関数の説明（アルファベット順）

CtxKill

コンテキストの中断
コンテキストテーブルに存在する任意のコンテキストを削除します。

CtxLstUse

構文：

CtxKill （エントリ）

パラメータ：

エントリ…コンテキストテーブル上の番号

戻り値：

論理値

注意事項：

• True …処理に成功した場合• False …処理に失敗した場合
ペンディング中のコンテキストのみ削除できます。

コンテキストの最終使用時間を取得
コンテキストテーブルに存在する任意のコンテキストが最後に有効になってからの経過時間を秒単位で返します。
構文：

CtxLstUse （エントリ）

パラメータ：

エントリ…コンテキストテーブル上の番号

戻り値：

数値
• 0 …動作中• 数値…ペンディング中の場合、コンテキストが最後に有効になってからの経過時間を返します。
• -1 …終了済• -2 …不正なエントリ

CtxNum

コンテキスト番号を取得
アプリケーションサーバ上で有効なコンテキストの数を返します。

CtxProg

構文：

CtxNum（ ）パラメータ：なし

戻り値：

数値…アプリケーションサーバ上で有効なコンテキストの数

コンテキストのプログラム名を取得
コンテキストテーブルに存在する任意のコンテキストの最上位レベルのプログラ
ム名を返します。
構文：

CtxProg （エントリ）

パラメータ：

エントリ…コンテキストテーブル上の番号

戻り値：

文字列…プログラム名
終了済、または不正なエントリを指定した場合、空白が返ります。

CtxSetName

コンテキストへの名前の指定
現在のコンテキストの名前を設定します。この名前は、コンテキストに対するログ
インやメッセージのポストで使用されます。
構文：

CtxSetName ( 名前 )パラメータ：

名前 … コンテキストの名前を表す文字列（最大、128 桁）

戻り値：

論理値
• True … 処理が成功した場合• False … 処理が失敗した場合

リファレンス
Magic eDeveloper V9 Plus385

第 8 章 - 関数
以下のような場合失敗します。
• Null 値が渡されたとき• 空白が渡されたとき• 指定した名前を持つコンテキストがすでに存在している場合

CtxSize

コンテキストのサイズを取得
コンテキストテーブルに存在する任意のコンテキストのサイズ（バイト単位）を返します。

CtxStat

構文：

CtxSize （エントリ）

パラメータ：

エントリ … コンテキストテーブル上の番号

戻り値：

数値 … コンテキストのサイズ
終了済、または不正なエントリを指定した場合は、「0」が返ります。

コンテキストの状態を取得
コンテキストテーブルに存在する任意のコンテキストの状態を返します。
構文：

CtxStat （エントリ）

パラメータ：

エントリ…コンテキストテーブル上の番号

戻り値：

コンテキストの状態を表す文字• E …動作中• P …ペンディング中• T …終了済• I …不正なエントリ

CurRow

テーブルコントロール上での現在の行番号を取得
テーブルコントロール上での現在の行番号を返します。

CurrPosition

構文：

CurRow（ タスク番号 ）パラメータ：

タスク番号…タスクツリー表示における、タスクの階層的位置を示す数値です。
たとえば、「0」はそのタスク自身であり、「1」はすぐ上位の親
タスクを意味します。

戻り値：

現在の行番号が返ります。

注意事項：

テーブルコントロールがない場合、常に「0」が返ります。

メインテーブルの現在の位置を取得
現在のタスクのメインテーブルのレコードの位置を返します。
同じメインテーブルを使用するタスクにて、タスク環境の［範囲／位置付］タブのポジションの項目に、この関数で取得した BLOB 型変数を代入することにより、本
関数発行時の位置に位置付けできます。

386

構文：

CurrPosition（ タスク番号）

パラメータ：

タスク番号…タスクツリー表示における、タスクの階層的位置を示す数値です。
たとえば、「0」はそのタスク自身であり、「1」はすぐ上位の親
タスクを意味します。

戻り値：

BLOB データ

リファレンス
Magic eDeveloper V9 Plus関数の説明（アルファベット順）

CWidthコントロールの幅を取得指定したコントロールまたはカーソルが最後にパークしたコントロールの幅の値
を返す。
構文：

CWidth（コントロール名 , タスク番号）

パラメータ：

コントロール名…指定するコントロールの名前。
ヌル文字列（''）を指定した場合、カーソルが最後にパークしているコントロールが対象となります。
タスク番号…タスクツリー表示における、タスクの階層的位置を示す数値です。
たとえば、「0」はそのタスク自身であり、「1」はすぐ上位の親
タスクを意味します。

戻り値：

Date

フォームで設定した寸法単位での値

システムの日付を取得
システム日付が返ります。

Day

構文：

Date（）

パラメータ：

なし

戻り値：

日付

例：

システム日付が 97/01/28 の場合、Date（）では「97/01/28」が返ります。
また、Date（）+5 では、「97/02/02」が返ります。

関連項目：

MDate 、DStr 、DVal

注意事項：

システム日付は、MAGIC.INI で設定されている日付形式、または、日付が格納される項目に設定されている書式にしたがって表示されます。したがって、システム日付の形式が「E」に設定されている場合、MAGIC.INI の DateMode パラメータの値を「A」に設定することで、日付をアメリカ形式で表示できます。
または、書式を使用して日付をアメリカ形式（MM/DD/YY ）にすることもできます。

日付の日（1 〜 31）を取得
日付の日（1 〜 31）が返ります。

DbCache構文：

Day（日付）パラメータ：

日付…日付または日付式

戻り値：

数値

例：

Day（'96/01/28'DATE）では、28 が返ります。
また、IF（Day（Date（））>15,' 延滞 ',''）という日付式では、シ
ステムの日付が 15 日より遅い（16 日以後の）場合、「延滞」という文字が表示されます。

関連項目：

CDOW 、DOW 、NDOW

キャッシュのヒット率を取得
この関数を使用して、キャッシュのヒット率（整数）を取得できます。キャッシュのヒット率とは、キャッシュの検索でレコードが見つかった回数をキャッシュが検索された合計回数で割った値です。
つまり、この値が大きいほどキャッシュの効率が高いことになります。
構文：

リファレンス
Magic eDeveloper V9 Plus

DbCache （番号 , タスク番号）387

第 8 章 - 関数
パラメータ：

番号…［テーブル］リポジトリに定義されているテーブルを示
す番号（連番）です。このパラメータは、必ず指定しなければなりません。
タスク番号…タスクの実行レベルを指す番号です。カレントのタスクが「0」、親タスクが「1」、その親タスクが「2」などとなります。

DbCopy

戻り値：

ヒット率。0 〜 100 の整数。

例：

DbCache （'1' FILE, 0）では、［テーブル］リポジトリの最初のテーブルに関するヒット率が返ります。この関数では、リテラ
ルコードの「FILE」が使用できます。
キャッシュについては、詳しくは、第 11 章「データ管理」の「Magic キャッシュ」を参照してください。

データベーステーブルのコピー
この関数を使用して、既存のデータテーブルのコピーが可能です。データのほか、定義もコピーされます。この DbCopy は、ISAM と SQL の両方のファイルに使用で
きます。
構文：

DbCopy （番号 , 元テーブル , 新テーブル）

パラメータ：

番号…［テーブル］リポジトリに定義されているテーブルを示
す番号（連番）です。
元テーブル…コピー元のテーブル名です。［テーブル］リポジト
リの［DB テーブル］欄に指定された名前と違う名前を指定する
場合に使用するオプション。
新テーブル…コピー先のテーブル名です。

戻り値：

論理値

注意事項：

• True …処理に成功した場合• False …処理に失敗した場合
次の場合、DbCopy 関数からは「False」が返ります。
• 元テーブルが現在オープン中• 元テーブルが常駐テーブルである• 元テーブルが存在しない…このときには、「テーブルがみつか
り ません . ： テーブル名」というエラーメッセージが表示されます。
• 新テーブルがすでに存在している…このときには、「目的のテーブルは既に存在 し ています . 作成に失敗 し ま し た ： テー
ブル名」というエラーメッセージが表示されます。
• 元テーブルがビューの場合…このときには、「ビ ュ ーの作成／
移動／複写はで き ません . ビ ュ ー : テーブル名」というエ
ラーメッセージが表示されます。
• 上記以外のエラーの場合…このときには、「テーブルの複写に失敗 し ま し た . テーブル ： 元テーブル」というエラーメッ
セージが表示されます。

DbDel

データベーステーブルを削除［テーブル］リポジトリに定義されているデータテーブルを削除できます。削除に成功したときには「True」が、失敗したときに「False」が返ります。指定したテーブルが常駐テーブルの場合、そのテーブルの行はすべて削除されます。ただし、その後、そのデータテーブルの読込を行うと、元のデータベースから再度、レコードが読み込まれます。

388

構文：

DbDel（番号 , テーブル名）

パラメータ：

番号…［テーブル］リポジトリに定義されているテーブルを示
す番号です。
リファレンス
Magic eDeveloper V9 Plus関数の説明（アルファベット順）
テーブル名…上記の［番号］パラメータの代わりに、ここにテーブルの名前を指定することもできます。指定しない場合、「''」を入力しておきます。パスを指定することもでき、パスを指定していない場合、ディレクトリはカレントのディレクトリと解釈されます。
戻り値：

例：

注意事項：

論理値
• True …処理に成功した場合• False …処理に失敗した場合
DbDel（1,"）または DbDel（'1'FILE,''）では、［テーブル］リポジ
トリの最初のテーブルが削除されます。処理に成功すると、「True」が返ります。
また、DbDel （1,'FSTFIL.DAT'）では、カレントのディレクトリ
の「FSTFIL」というテーブル名使用して［テーブル］リポジト
リの最初のテーブルの行が削除されます。
リテラルコードの「FILE」を使用してテーブルを指定しておくと、［テーブル］リポジトリのテーブルの順番が変わったときには自動的にテーブルの番号が更新されます。このため、いつでも、指定したテーブルの名前を正しく取り出すことができます。
一方、リテラルコードを使用しない場合、必ず指定した番号のテーブルの名前が取り出されます。
［テーブル］リポジトリについては、第 4 章「テーブル」の「テーブルリポジトリ」を参照
してください。
パラメータとして常駐テーブルが指定されると、DbDel 関数は常駐テーブルからすべての行を削除します。このテーブルを次にオープンするときには、そのデータベースから行が再度読み込
まれます。

関連項目：

DbDiscnt

DbRecs 、DbExist 、DbSize

現在のデータベース接続を切断
パラメータでデータベースを指定し、そのデータベースの現在の接続を切断します。DbDiscnt は SQL データベースに関連した関数です。現在接続しているデータ
ベースにおいて、オープンしているカーソルが存在しない場合にのみ、その切断を行うことが許されます。カーソルがオープンされている状態で DbDiscnt 関数が起動された場合には、エラーメッセージが表示されます。
現在のデータベース接続の切断は、アプリケーションで必要のなくなったデータ
ベースからユーザを切断したり、あるいは別のユーザをそのデータベースに接続するために既接続ユーザを切断したりする目的で行われます。
構文：

DbDiscnt （文字列）パラメータ：

文字列…データベース名を意味する英文字列

戻り値：

論理値

例：

DbERR

• True …切断に成功した場合• False …切断に失敗したか、あるいは接続そのものが存在しな
い場合
DbDiscnt （'MSSQL'）
このとき、MSSQL はデータベーステーブルで定義されている
データベース名を指定します。

データベースからのエラーメッセージの取り出しと削除
データベースエラーメッセージを取り出します。取り出されるのは、内部処理エ
ラーを引き起こすようなエラーのうちの最初のエラーメッセージ、または、複数のエラーが連鎖して発生するようなエラーの最初のエラーメッセージです。この関数
では、データベースエラーメッセージまたはデータベースエラーコードの取得のほ

リファレンス
Magic eDeveloper V9 Plus389

第 8 章 - 関数
か、ユーザにメッセージを表示することもできます。また、この関数では、エラー
メッセージの消去も可能です。
構文：

DbERR（文字列）パラメータ

文字列…文字列または文字列式で、データベースの名前を指定
します。

戻り値：

• SQL の場合…エラーメッセージが返ります。
• ISAM の場合…エラーコマンドを指す数値が返ります。
エラーチェックの直後、DbERR 関数を［アクション］コマンドで使うことで、直前のエラーを消去することができます。

例：

DbExist

ディスク上のデータテーブルの存在を確認
データテーブルを指定し、そのテーブルがディスクに存在するかどうかを確認できます。成功すると「True」が、失敗すると「False」が返ります。
構文：

DbExist（番号 , テーブル名）

パラメータ：

番号…［テーブル］リポジトリに定義されているデータテーブ
ルの番号（連番）。
テーブル名…上の［番号］パラメータの代わりに、ここにテーブルの名前を指定することもできます。指定しない場合、「''」を入力しておきます。パスを指定することもでき、パスを指定していない場合、ディレクトリはカレントのディレクトリと解釈
されます。

戻り値：

例：

論理値
• True …処理に成功した場合• False …処理に失敗した場合
DbExist（1,''）または DbExist（'1'FILE,''）では、指定したテーブ
ルが存在していた場合、「True」が返ります。
DbExist （1,'FSTFIL.DAT'）では、カレントのディレクトリの「FSTFIL」というテーブル名を使用して［テーブル］リポジトリの最初のテーブルが検索されます。

注意事項：

リテラルコードの「FILE」を使用してテーブルを指定しておくと、［テーブル］リポジトリのテーブルの順番が変わったときには自動的にテーブルの番号が更新されます。このため、いつでも、指定したテーブルの名前を正しく取り出すことができます。
一方、リテラルコードを使用しない場合、必ず指定した番号のテーブルの名前が取り出されます。［テーブル］リポジトリについては、第 4 章「テーブル」の「テーブルリポジトリ」を参照
してください。
［番号］パラメータに「0 」を指定した場合や、［テーブル］リポ
ジトリの最大の番号より大きい番号を指定した場合、「False」が
返ります。

関連項目：

DbNameDbDel 、DbRecs 、DbSize

データベーステーブル名を取得［テーブル］リポジトリのデータテーブルの名前を取り出します。

390

構文：

DbName（番号）パラメータ：

番号…［テーブル］リポジトリの行（データテーブル）の番号です。この番号のデータテーブルの名前が取り出されます。

戻り値：［テーブル］リポジトリの行（データテーブル）の名前。
リファレンス
Magic eDeveloper V9 Plus関数の説明（アルファベット順）

DbRecs例：

DbName（3）または DbName（'3'FILE）では、どちらも、［テーブル］リポジトリの 3 番目のデータテーブルの名前が返ります。

注意事項：

リテラルコードの「FILE」を使用してテーブルを指定しておくと、［テーブル］リポジトリのテーブルの順番が変わったときには自動的にテーブルの番号が更新されます。このため、いつでも、指定したテーブルの名前を正しく取り出すことができます。
一方、リテラルコードを使用しない場合、必ず指定した番号のテーブルの名前が取り出されます。［テーブル］リポジトリについては、第 4 章「テーブル」の「テーブルリポジトリ」を参照
してください。

データテーブルの行数を取得
データテーブルにある行（レコード）の数をカウントできます。
構文：

DbRecs（番号 , テーブル名）

パラメータ：

番号…［テーブル］リポジトリに定義されているデータテーブ
ルの番号（連番）。
テーブル名…上記の［番号］パラメータの代わりに、ここにテーブルの名前を指定することもできます。指定しない場合、「''」を入力しておきます。パスを指定することもでき、パスを指定していない場合、ディレクトリはカレントのディレクトリと解釈されます。

DbReload

戻り値：

レコードの数（レコードがないときには 0 ）例：

DbRecs（1,''）または DbRecs（'1'FILE,''）では、どちらも、［テーブル］リポジトリの最初のデータテーブルに置かれているレ
コードの数が返ります。
DbRecs（1,'FSTFIL.DAT'）では、カレントのディレクトリの「FSTFIL.DAT 」という名前のテーブルのレコードの数が返りま
す。

注意事項：

リテラルコードの「FILE」を使用してテーブルを指定しておくと、［テーブル］リポジトリのテーブルの順番が変わったときには自動的にテーブルの番号が更新されます。このため、いつでも、指定したテーブルの名前を正しく取り出すことができます。
一方、リテラルコードを使用しない場合、必ず指定した番号のテーブルの名前が取り出されます。［テーブル］リポジトリについては、第 4 章「テーブル」の「テーブルリポジトリ」を参照
してください。

関連項目：

DbDel 、DbExist 、DbSize

実行時の常駐テーブルの読込
この関数を使用して、実行時に常駐テーブルを読み込むことができます。処理に成功したときには「True」が、失敗したときには「False」が返ります。
第 2 パラメータにデータテーブルのパスを指定しておくこともでき、その場合、それまでのパスは削除され、指定したパスのデータテーブルが読み込まれます。
構文：

DbReload （番号 , テーブル名）

パラメータ：

番号…［テーブル］リポジトリに定義されているデータテーブ
ルの番号（連番）。
テーブル名…上の［番号］パラメータの代わりに、ここにテーブルの名前を指定することもできます。指定しない場合、「"」を入力しておきます。パスを指定することもでき、パスを指定していない場合、ディレクトリはカレントのディレクトリと解釈されます。

リファレンス
Magic eDeveloper V9 Plus391

第 8 章 - 関数
戻り値：

論理値

例：

• True …処理に成功した場合• False …処理に失敗した場合
DbReload（3,"）
DbReload は現在のコンテキストの常駐テーブルのみを読み込み
ます。

注意事項：

DbRound

SQL 系 DB 用の四捨五入関数
指定した小数点で数値を四捨五入します。この関数は、SQL 系の DBMS の動作に依存します。戻り値は、Round 関数と異なる場合があります。
構文：

DbRound（数値 , 小数部桁数）

パラメータ：

数値…数値が返る式か、固定の数値
小数部桁数…四捨五入する小数点の位置。正数の場合は小数点以下として四捨五入されますが、負数の場合は小数点以上の桁数として処理されます。

戻り値：

数値

例：
例

注意事項：

DbSizeDbRound（657.4545,2）

結果
657.45

DbRound（657.4552,2）

657.46

DbRound（657.37,-4）

0

DbRound（657.37,-1）

660

DbRound（657.37,-2）

700

DbRound（657.37,-3）

1000

DbRound は必ず値が返ります。もしも、小数部の桁数が負数で、整数部の桁数よりも大きな値にすると、「0」が返ります。

データテーブルのサイズを取得
データテーブルのサイズを取り出すことができます。
構文：

DbSize（数値 , テーブル名）

パラメータ：

番号…［テーブル］リポジトリに定義されているデータテーブ
ルの番号（連番）
テーブル名…上の［番号］パラメータの代わりに、ここにテーブルの名前を指定することもできます。指定しない場合、「"」を入力しておきます。パスを指定することもでき、パスを指定していない場合、ディレクトリはカレントのディレクトリと解釈
されます。

戻り値：

テーブルサイズ（データテーブルがないときには「0」）例：

DbSize（1,"）または DbSize（'1'FILE,"）では、［テーブル］リポジ
トリの最初のデータテーブルのデータのサイズ（バイト数）が返ります。なお、ディスク上の実際のデータテーブルのサイズは、
これより大きいことがあります。
DbSize （1,'FSTFIL.DAT'）では、カレントのディレクトリの「FSTFIL.DAT」という名前のデータテーブルのサイズが返ります。

注意事項：

392

リファレンス
Magic eDeveloper V9 Plus関数の説明（アルファベット順）
リテラルコードの「FILE」を使用してテーブルを指定しておくと、［テーブル］リポジトリのテーブルの順番が変わったときには自動的にテーブルの番号が更新されます。このため、いつでも、指定したテーブルの名前を正しく取り出すことができます。
一方、リテラルコードを使用しない場合、必ず指定した番号のテーブルの名前が取り出されます。
［テーブル］リポジトリについては、第 4 章「テーブル」の「テーブルリポジトリ」を参照
してください。
関連項目：

DDEBegin

DbDel 、DbExist 、DbRecs

DDE の開始
DDE サーバとのセッションの確立を明示的に開始します。
構文：

DDEBegin （サービス , トピック）

パラメータ：

サービス…DDE サービスの主な識別子です。通常は、WinWord（Microsoft Word）、Excel （Microsoft Excel）など、アプリケー
ションの名前を指定します。
トピック…文字列で、DDE サービスによって異なります。

DDEEnd

戻り値：

論理値

例：

• True …DDE サーバがすでに接続されている場合、または、接続が完了した場合• False …DDE の初期化や接続に失敗した場合
DDEBegin（'Excel','c:¥docs¥budget.xls'）では、Excel に関連する
DDE セッションが開始されます。この DDE セッションはユーザによるもので、DDE プロセスとは無関係です。このセッション
は、ユーザにより DDEEnd 関数が実行されるまで続きます。

関連項目：

DDEEnd 、DDEGet 、DDEPoke 、DDERR 、DDExec

補足事項：

DDEBegin/DDEEnd 関数を使用しなくても、DDExec など他のDDE 関数は使用可能です。
同一アプリケーションが DDE サーバとして複数起動されている
場合、DDE 関数を発行するとどのサーバに対してセッションを確立するのかが確定できませんでした。これを解決する手段として本関数を使用します。DDEBegin 関数が発行された時点で、同一アプリケーションが複数起動されている場合、もっとも最近起動されたものに対してセッションを確立します。この後、DDE 関数を発行した場合は必ずこのアプリケーションに対して通信を行うようになります。
このセッションは DDEEnd 関数が発行された時点 Magic を終わらせた時点対象となる DDE サーバが終了した時点まで有効になります。

DDE の終了
DDE サーバとのセッションを明示的に終了させます。
構文：

DDEEnd（サービス , トピック）

パラメータ：

サービス…DDE サービスの主な識別子です。通常は、WinWord（Microsoft Word）、Excel （Microsoft Excel）など、アプリケー
ションの名前を指定します。
トピック…文字列で、DDE サービスによって異なります。

戻り値：

論理値
• True …DDE セッションの終了に成功した場合

リファレンス
Magic eDeveloper V9 Plus393

第 8 章 - 関数

DDEGet例：• False …サービスやトピックが DDEBegin 関数で開始されていない場合
DDEEnd（'Excel','c:¥docs¥budget.xls'）

関連項目：

DDEBegin 、DDEGet 、DDEPoke 、DDERR 、DDExec

DDE サーバから文字列を取得指定した DDE サービスから文字列を取り出せます。取り出す文字列のサイズも指定できます。文字列の取り出し元は、［サービス］、［トピック］、［項目］の 3 つのパラメータを使用して指定します。この 3 つのパラメータで、取り出す文字列の場
所を特定できます。
構文：

DDEGet （サービス , トピック , 項目 , 文字列長）

パラメータ：

サービス…DDE サービスの主な識別子です。通常は、WinWord（Microsoft Word）、Excel （Microsoft Excel）など、アプリケー
ションの名前を指定します。
トピック…データの取り出し元となる場所で、［サービス］パラ
メータで指定したサーバアプリケーションの中の領域です。
WinWord や Excel の場合、トピックとしてはファイル名を指定できます。
DDE サーバアプリケーションとして、標準で、System トピックが用意されており、この System トピックにより、アプリケー
ションやトピックに関する情報が提供されます。この情報により、アプリケーションやトピックに対して DDE アクセスが可能になります。
また、System トピックの中には各種項目（［項目］パラメータで指定）があり、この項目を介して要求を実行できます。たとえば、Microsoft Excel の System トピックには、アプリケーション
がサポートする System トピックのリストを返す「System」があります。これを利用して DDEGet（'Excel','System','SysItems',2000）という DDEGet 関数を発行すると、Microsoft Excel の System ト
ピックで使用できる項目名を取得できます。System トピックによって返される情報のフォーマットはサーバアプリケーション
によって異なります。
項目…このパラメータを使用して、サーバアプリケーションの中のデータ取り出し元をさらに厳密に指定します。つまり、サービ
ス、トピック、項目の 3 つのパラメータにより、取り出すデータを特定できます。
たとえば、Microsoft Word のファイル中の特定の段落を取り出した
い場合、サーバアプリケーションとして WinWord 、トピックとして、その段落が置かれているファイル名、項目として、その段落を指すブックマークを指定します。
文字列長…このパラメータには、取り出すデータの最大サイズを指定します。取り出されたデータが、このサイズより小さい
ときには、残りの部分は空白（スペース）で埋められます。

394

戻り値：

［文字列長］パラメータで指定したサイズの文字列が返ります。処理に失敗したときには、空白の文字列が返ります。返る文字列は、［サービス］、［トピック］、［項目］の 3 つのパラメータで指定されたデータです。

例：• DDEGet （'WinWord', 'c:¥docs¥ddetest.doc','toMagic', 2000 ）Microsoft Word のドキュメンからブックマークが設定された特定の項目を読み込みます。
「c:¥docs¥ddetest.doc」はドキュメントファイル名、「toMagic」
はブックマーク名、そして、「2000」は、関数によって返されるパラグラフの最大長（バイト単位）です。
リファレンス
Magic eDeveloper V9 Plus関数の説明（アルファベット順）

関連項目：

DDEPoke• DDEGet （'Excel', 'c:¥docs¥budget.xls','R19C1:R22C7', 2000 ）Microsoft Excel のスプレッドシートから、一定の範囲のセルを読み込みます。
「c:¥docs¥budget.xls」はスプレッドシートのファイル名、「R19C1:R22C7」はセルの範囲、「2000」は関数によって返されるデータの最大長（バイト単位）です。
この例では、各セル内のデータの間にタブコード（X'09'）が入ります。例に示したように、Magic には、項目を文字列と識別させるための単引用符（'）が必要です。取り出されるデー
タは、最大で 2000 バイトです。
DDEBegin 、DDEEnd 、DDEPoke 、DDERR 、DDExec

DDE サーバに対する文字列の転送
DDEPoke 関数を使用して、Magic から DDE サーバアプリケーションに対して文字列を転送できます。文字列の送り先は、［サービス］、［トピック］、［項目］の 3 つのパラメータを使用して指定します。この 3 つのパラメータにより転送先が特定され、ここに文字列が送られることになります。
構文：

DDEPoke （サービス , トピック , 項目 , 転送データ）

パラメータ：

サービス…DDE サービスの主な識別子です。通常は、WinWord（Microsoft Word）、Excel （Microsoft Excel）など、アプリケー
ションの名前を指定します。
トピック…データの送り先となる場所で、［サービス］パラメー
タで指定したサーバアプリケーションの中の領域です。
WinWord や Excel の場合、トピックとしてはファイル名を指定できます。
項目…このパラメータを使用して、サーバアプリケーションの中のデータの送り先をさらに厳密に指定します。つまり、サービス、トピック、項目の 3 つのパラメータにより、データの送り先を特定できます。たとえば、Microsoft Word のファイル中の特定の段落にデータを送りたい場合、サーバアプリケーション
として WinWord 、トピックとして、その段落が置かれている
ファイル名、項目として、その段落を指すブックマークを指定します。
データ…文字列で、この文字列がサーバアプリケーションに送
られます。

戻り値：

論理値

注意事項：

• True …データの転送に成功した場合• False …データの転送に失敗した場合
サーバアプリケーションによっては、あらかじめデータを所定の形式にしておかなければならないこともあります。データの形式については、サーバアプリケーションのマニュアルを参照
してください。

例：

関連項目：
リファレンス
Magic eDeveloper V9 Plus

• DDEPoke （'WinWord', 'c:¥docs¥ddetest.doc', 'fromMagic', 'This
paragraph wasplanted by Magic using DDE'）
Microsoft Word のドキュメントの特定のブックマークに項目を書き込みます。「c:¥docs¥ddetest.doc」はドキュメントファイル
名、「fromMagic」はブックマーク名、「This paragraph wasplanted by Magic using DDE」は関数によってサーバアプリケー
ションに転送されるデータです。
• DDEPoke （'Excel', 'c:¥dos¥budget.xls', 'R1C1', '100'）
Microsoft Excel スプレッドシートのセルに数値（100 ）を書き込みます。「c:¥docs¥budget.xls」はスプレッドシートのファイ
ル名、「R1C1」は関数によって渡される情報を受け取るスプ
レッドシートのセル番号です。例に示したように、項目を文字列と判断させるための単引用符（'）が必要です。
DDEBegin 、DDEEnd 、DDEGet、DDERR 、DDExec395

第 8 章 - 関数

DDERR

DDE エラーの検出
DDERR 関数を使用して、Magic の DDE 処理の際に発生したエラーを取得できます。
また、この関数をもう１度呼び出すと、直前の DDERR 関数で取り出されたエラー
コードが消去されるとともに、戻り値がリセットされます。この関数は、デバッグに有効です。

DDExec構文：

DDERR （ ）パラメータ：なし

戻り値：

0 〜 15 の数値で、それぞれ次の意味です。

関連項目：• 0 …直前の DDE 処理でエラーが発生しなかったことを示します。また、DDERR 関数の呼び出し後、もう１度、DDERR 関
数を呼び出したときには、戻り値がリセットされたことを表します。
• 1 …DDEML システムの初期化に失敗したとき、この値が返ります。
• 2 …サーバへの接続に失敗したとき、この値が返ります（原因としては、先行の DDE 呼び出しで［サービス］パラメータの設定が不適当だったか、指定していなかったことが考えられます）。
• 3 …DDE 呼び出しの際、サーバが使用中で処理不可能だったと
き、この値が返ります。
• 4 …サーバにより必要な DDE サービスが実行されなかったと
き、この値が返ります（パラメータの設定が不適当、パラメー
タの組み合わせが無効、必要なサービスが無効などが理由として考えられます）。
• 5 …直前の DDEGet 関数が処理に失敗したとき（サーバ上で［項目］パラメータに指定されている項目が使用できなかったとき）、この値が返ります。
• 6 …DDEGet または DDEPoke で、［項目］パラメータが指定されていなかった場合、この値が返ります。
• 7 …DDEEXEC で、［コマンド］パラメータが指定されていなかった場合、この値が返ります。
• 14 …特定不能のエラー。
• 15 …Windows 以外のオペレーティングシステムで DDE 処理が実行された場合、この値が返ります。
DDEBegin 、DDEEnd 、DDEGet 、DDExec 、DDEPoke

DDE サーバに対するコマンド文字列の転送
Magic から、この関数のパラメータで指定された DDE サーバへ、コマンド文字列を転送します。３ つの識別子「サービス」、「トピック」、「項目」を組み合わせて、各
DDE サーバアプリケーションにアクセスできます。この３ つの識別子によってア
クセス対象を特定できます。
Magic によって転送されたコマンド文字列はサーバアプリケーションに転送され、サーバアプリケーションがそのコマンドを実行します。コマンド文字列は、DDE
フォーマットについての厳しい規則に従う必要があります。コマンドの内容は、
サーバアプリケーションのコマンドに対して有効でなければなりません。コマンドの文字列がサーバアプリケーションに無効な場合には、コマンドは失敗します。
構文：

DDExec （サービス , トピック , 項目 , コマンド）

パラメータ：

サービス…DDE サーバがサポートするサービス名です。通常、
このパラメータには、WinWord （MS Word for Windows ）や
Excel （Microsoft Excel）などのアプリケーション名を指定します。
トピック…System トピックによって表されるサーバアプリケー
ションが、サーバアプリケーション内にあるデータオブジェクト
ではなくデータ交換に対して責任がある場合には、「トピック」には通常、'System' を指定します。

396

リファレンス
Magic eDeveloper V9 Plus関数の説明（アルファベット順）
項目…データ項目をさらに詳しく定義します。DDExec 関数の場
合は、ほとんどが空です。
コマンド…サーバアプリケーションに渡されるコマンド文字列を指定します（サーバアプリケーションはこのコマンドを実行します）。DDE コマンドは角括弧（［］）で囲みます。
１ 個のコマンド文字列には、それぞれを角括弧で囲んだ、または空白で区切った複数のコマンドが含まれます。以下に、例を示します。
［コマンド１］［コマンド２ （パラメータ１ ）］［コマンド３ （パラメータ１ , パラメータ２ , パラメータ３ ）］［コマンド１］［コマンド３ （パラメータ１ , パラメータ２ , パラ
メータ３ ）］
コマンド文字列は、有効なサーバアプリケーションのコマンドでなければなりません。コマンドの構文についての詳細は、サーバアプリケーションのマニュアルを参照してください。
戻り値：

例：

論理値
• True…処理が成功した場合• False…処理が失敗した場合• DDExec （'WinWord', 'System', ' ','［FileOpen"c:¥docs¥ddetest.doc"］'）Microsoft Word のドキュメントファイルをオープンします。'［FileOpen"c:¥docs¥ddetest.doc"］' は関数によってサーバアプリ
ケーションに転送されるコマンドです。
• DDExec （'Excel', 'System', ' ', ［run（"MACROS.XLM!FormatCells"）］）Microsoft Excel マクロ（FormatCells ）を実行します。
• DDExec （'Excel', 'System', ' ', ［Open（"c:¥docs¥test.xls"）］）Microsoft Excel のスプレッドシートをオープンします。例に示したように、Magic には、項目を文字列と識 Del 別させるための単引用符（'）が必要です。コマンドのパラメータには、二重引用符（"）が必要です。

関連項目：

DeCipher

DDEBegin 、DDEEnd 、DDEGet、DDERR 、DDExec

バッファの複合化
暗号化されたバッファを 文字列や BLOB を含むバッファに変換します。
構文：

Decipher( 暗号 ID 、バッファ、キー [ , モード , IV ])パラメータ：

暗号 ID … 指定された暗号のアルゴリズムを表す数値
バッファ … 暗号化された BLOB バッファキー … 暗号化キーを含む BLOB 文字列
モード … 暗号 ID によって指定された暗号化方法によって選択されたモードを含む文字列。暗号化方法に対応したモードが指定されない場合、デフォルト値として CBC が使用されます。
モードテーブルは次を参照してください。
IV … 初期化ベクトルを含む BLOB 文字列。このパラメータは任
意です。

戻り値：

復号化されたバッファを含む BLOB データ
暗号 ID が正しくなかったり、キー長が 暗号 ID に合わない場合
は、Null 値を返します。

リファレンス
Magic eDeveloper V9 Plus397

第 8 章 - 関数
参照：

Del

Cipher 、EncryptionError

文字列中の文字の削除
文字列中の文字を削除できます。
構文：

Del（文字列 , 開始位置 , 文字数）

パラメータ：

文字列…文字列または文字式
開始位置…文字列中の文字の位置（先頭から何番目か）で、この文字から右に向かって削除が始まります。
文字数…削除する文字の数を指定します。［開始位置］で指定した位置から、右に向かって、この数の文字が削除されます。

戻り値：

文字列…削除後の文字列が返ります。

例：

Del（'ABCD',2,1）では、先頭から 2 番目の文字だけが削除され、「ACD」が返ります。
また、X に 2 字以上の文字が入っていると仮定すると、下の式では、Y の値が負のときには X の文字列のうち最初の文字が、Yが正の場合は X の文字列のうち 2 番目の文字が削除されます。Y
が「0」のときには、削除は行われません。
IF （Y<0,Del（X,1,1）,IF（Y>0,Del（X,2,1）,X））

関連項目：

Delay

Ins 、Fill 、Rep

処理の一時停止（単位 10 分の 1 秒）
この関数を使用して、時間の長さを指定して、現在の処理を一時的に中断させることができます。
処理は、指定した時間の経過後、または、ユーザがいずれかのキーを押したときに再開されます。

DiscSrvr

構文：

Delay（数値）パラメータ：

数値…処理を中断させる長さ。10 分の 1 秒を単位として指定し
ます。

戻り値：

論理値…常に True が返ります。

例：

Delay（10）では、処理が 1 秒間中断します。1 秒経過後、処理が再開されます。また、1 秒以内にユーザがいずれかのキーを押すと、その時点で処理が再開されます。

不必要なサーバ接続の切断
この関数は、不必要なサーバ接続を開放します。
構文：

DiscSrvr（文字列）パラメータ：

文字列…サーバテーブルで定義されたサーバ名称

戻り値：

論理値
• True …指定したサーバとの接続が正常に解除されたとき• False …切断が以下の理由のどれかにより失敗したとき• サーバテーブルにない名称でサーバ指定した• 該当サーバへの接続がなされていなかった• Magic はそのサーバとの接続がまだ必要な状態にある• 切断処理そのものに失敗した

DOW

398

日付の曜日を示す番号を取得
リファレンス
Magic eDeveloper V9 Plus関数の説明（アルファベット順）
日付から曜日番号を返します。以下に、曜日番号を示します。
日…１ 、月…２ 、火…３ 、水…４ 、木…５ 、金…６ 、土…７
構文：

DOW（日付）パラメータ：

日付…特定の日付

戻り値：

数値（1 〜 7 ）例：

DOW（'96/01/28'DATE）では、この日は水曜日なので「4」が返ります。
また、以下の式では、システム日付が日曜日の場合、指定したメッセージが表示されます。
IF（DOW（Date（））=1,'Never on Sunday',"）

関連項目：

DragSetCrsr

CDOW 、DAY 、NDOW

ドラッグ時のカーソル定義
指定したカーソルファイルがドラッグ操作によってコピー可か否かのモードとして定義します。
構文：

DragSetCrsr ( モード、カーソルファイル )パラメータ：

モード … カーソルモードを表す数値。指定できる値は、以下の通りです。
• 1 … カーソルファイルは、「コピー可」モードとして設定されます。1 つのオブジェクトが別のオブジェクトに対して複写をを許し、最初のオブジェクトが他方のオブジェクトの上にドラッグされた時、「コピー可」モードが有効になります。
• 2 … カーソルファイルは、「コピー不可」モードとして設定されます。1 つのオブジェクトが別のオブジェクトに対して複写を許可しない場合に、そのオブジェクトがもう一方のオブジェ
クト上にドラッグされた時、「コピー不可」モードが有効になります。
カーソルファイル … カーソルファイル名とファイルパス (*.cur)を表す文字列

戻り値：

論理値…カーソルファイルのロードに成功した場合 「True」が返
ります。

例：

DragSetCrsr(1,c:¥images¥dragcopy.cur)「コピー可」モードで表示されるカーソルファイルを指定してい
ます。

注意事項

DragSetData

カーソルモード番号が指定された値以外の場合、カーソルファ
イルは、「コピー可」モードに設定されます。

ドラッグデータの設定
自動的にドラッグ処理されないコントロールのデータ内容やフォーマットを定義ます。また、異なるデータフォーマットにデータ内容を割り当てます。
構文：

DragSetData ( データ内容、データフォーマット、ユーザ定義
フォーマット )パラメータ：

データ内容 … ドラッグ処理データを表す文字列
データフォーマット… OS によって格納されるデータフォーマッ
トを表す数値。指定できる値は、以下の通りです。
• 0 … ユーザ定義• 1 … テキスト
• 2 … OEM テキスト

リファレンス
Magic eDeveloper V9 Plus399

第 8 章 - 関数
• 3 … リッチテキスト• 4 … HTML• 5 … ハイパーリンク
ユーザ定義フォーマット …ユーザ定義フォーマットを表す文字列。［データフォーマット］パラメータが「0」の時のみ有効です。
戻り値：

論理値…「ドラッグ開始」イベントの範囲内で評価された時のみ、「True」を返します。

例：

DragSetData ( 'ABC',1)…「ドラッグ開始 」イベント発行時、「ABC」という文字列をテキスト形式のドラッグ処理データとします。
DragSetData ( 'DEF',0,'My Format')…「ドラッグ開始 」イベント発
行時、「DEF」という文字列をユーザ定義形式のドラッグ処理
データとします。

注意事項

DropFormat• DragSetData 関数は、異なるタイプのデータフォーマットのデータを定義する場合は、複数回実行することができます。
• 各データフォーマットは、1 回のドラッグ処理でのデータに対し、1 回設定されます。同じドラッグ処理に対して同じデータ
フォーマットで 2 回関数が実行された場合、2 回目の内容が反映されます。また、DropGetData 関数で同じフォーマットを指定しなければ、処理されません。

ドロップ操作の可否を確認
定義されたデータフォーマットが Magic の Drop 関数でサポートされているかどうかを確認します。
構文：

DropFormat ( データフォーマット , ユーザ定義フォーマット )パラメータ：

データフォーマット … OS に格納されるデータフォーマットを表す数値。指定できる値は、以下の通りです。
• 0 … ユーザ定義• 1 … テキスト
• 2 … OEM テキスト
• 3 … リッチテキスト• 4 … HTML• 5 … ハイパーリンク• 6 … ファイル名
ユーザ定義フォーマット …ユーザ定義フォーマットを表す文字列。［データフォーマット］パラメータが「0」の時のみ有効です。

DropGetData

戻り値：

データフォーマットがサポートされていれば、「True」を返します。

例：

環境設定ダイアログに、「My Format」が定義されている場合、
DropFormat(0,'My Format') は、「True」を返します。

注意事項：

ユーザ定義フォーマットのドロップデータを扱うためには、事前に、［動作環境］ダイアログの［外部参照］タブの［ドロップデータサポート・ユーザフォーマット］にユーザ定義フォー
マットの名前を設定する必要があります。

ドラッグデータを取得します。
定義されたフォーマットでドラッグしたデータを取り出します。
構文：

400

DropGetData ( データフォーマット , ユーザ定義フォーマット )リファレンス
Magic eDeveloper V9 Plus関数の説明（アルファベット順）
パラメータ：

データフォーマット … OS に格納されるデータフォーマットを表す数値。指定できる値は、以下の通りです。
• 0 … ユーザ定義• 1 … テキスト
• 2 … OEM テキスト
• 3 … リッチテキスト• 4 … HTML• 5 … ハイパーリンク• 6 … ファイル名
ユーザ定義フォーマット … ユーザ定義フォーマットを表す文字列。［データフォーマット］パラメータが「0」の時のみ有効で
す。

戻り値：

取得したデータとしての文字列。フォーマットがサポートされな
い場合、NULL を返します。

例：• DropGetData(0,'My format') は、ユーザ定義フォーマットデータの文字列を返します。
• DropGetData(1) は、テキストフォーマットデータの文字列を返します。
• DropGetData(4) は、HTML フォーマットデータの文字列を返します。
• DropGetData(6) は、ファイル名を返します。
ユーザ定義フォーマットのドロップデータを扱うためには、事前に、［動作環境］ダイアログの［外部参照］タブの［ドロップデータサポート・ユーザフォーマット］にユーザ定義フォー
マットの名前を設定する必要があります。また、DragSetData 関
数で指定されたフォーマットと同じにする必要があります。

注意事項：

ユーザ定義フォーマットを使用してファイル名を取得するとDBCS を使用したファイル名の取得が正しく行えなくなる場合があります。

DropMouseX

ドロップした X 座標の取得
ドラッグしたデータをドロップした時のフォームの X 座標（フォームの寸法単位）
値を返します。

DropMouseY

構文：

DropMouseX()

パラメータ：

なし

戻り値：

数値…マウスカーソルの X 座標

注意事項 :

Magic のフォーム外をドロップした場合（例：フォームタイトル）、負数が返ります。

ドロップした Y 座標の取得
ドラッグしたデータをドロップした時のフォームの Y 座標（フォームの寸法単位）
値を返します。
構文：

DropMouseY()

パラメータ：

なし

戻り値：

数値…マウスカーソルの Y 座標

注意事項 :

Magic のフォーム外をドロップした場合（例：フォームタイトル）、負数が返ります。

リファレンス
Magic eDeveloper V9 Plus401

第 8 章 - 関数

DStr

日付を文字列に変換
この関数では、日付または日付式を文字列に変換できます。変換で使われる書式も指定できます。
構文：

DStr（日付 , 書式）

パラメータ：

日付…日付
書式…ここで指定した書式にしたがって、日付が文字列に変換されます。書式については、第 3 章「モデル」の「書式」を参照してください。

戻り値：

文字列

例：

DStr （'96/01/
28'DATE,'WWWWWWWW,MMMMMMMMDD,YYYY'）では、「'Tuesday, January 28, 1996」が返ります。
また、DStr（'96/01/28'DATE,'DD/MM/YY'）では、「97/01/28」が
返ります。

DVal

注意事項：

「92/01/28」の右の ’DATE’ はリテラルコードです。この場合、’DATE’ の直前の日付は文字列として認識されます。

関連項目：

リテラル、DVal

文字列を日付型に変換
この関数を使用して、文字列として入力された日付、または文字列として保存されている日付を日付型に変換することができます。変換後の内部の値は、西暦元年の最初の日（0001/01/01 ）を起点とした日数です。
構文：

DVal（日付文字列 , 書式）

パラメータ：

日付文字列…日付を文字列または文字列式で指定します。たと
えば、'97/01/01'、'1997,Jan,1' とします。
書式…［日付文字列］で指定した日付の書式を指定します。［日付文字列］パラメータの日付は、この書式を使用して解釈され
ます。

戻り値：

日付型（数値型の場合は日数）例：• DVal（'97/01/01','YY/MM/DD'）または DVal（'1997,Jan,1','YYYY,MMM,DD'）では、どちらも '1997/01/
01'DATE（内部では 729025 の数値）が返ります。
• A が '1997,January,1' の場合、DVal（A,'YYYY,MMMMMMMMM,DD'）でも、同じく '1997/01/
01'DATE（内部では 729025 の数値）が返ります。
DStr

関連項目：
注意事項：

EditGet

書式が日付文字列の書式と合っていない場合には、「0」が返ります。

コントロールの値を取得
ハンドラを起動したコントロールの値を取得します。
構文：

EditGet（）

戻り値：

ハンドラを起動した項目の入力値が返ります。

注意事項：

ハンドラによる処理でのみ有効です。
ハンドラを起動した最後のコントロールの項目において入力されている値が返ります。

402

戻り値の型は、対象となる項目の型と同じになります。
リファレンス
Magic eDeveloper V9 Plus関数の説明（アルファベット順）
エディットコントロール以外で、編集モードにならないコント
ロールの場合は、そのコントロールの現在値か、変数値が返ります。
どのコントロールにもパークしないような処理フローのなかで関数が実行された場合、NULL が返ります。
コントロールから起動されるハンドラの設定において、イベン
トの強制終了の設定が［R= レコード］の場合、NULL が返りま
す。
関連項目：

EditSetEditSetコントロールに値を設定
ハンドラを起動したコントロールに値を設定します。
構文：

EditSet（値）パラメータ：

値…コントロールに設定する値

戻り値：

論理値

注意事項：

• True…処理が成功した場合• False…処理が失敗した場合ハンドラによる処理でのみ有効です。
設定する値の型は、コントロールに関連付けられた項目の型と一致していなければいけません。異なる場合は、「False」が返ります。
エディットコントロール以外のコントロールでは、そのコントロールに対応した変数項目の値を更新します。
どのコントロールにもパークしないような処理フローのなかで関数が実行された場合、「False」が返ります。
コントロールから起動されるハンドラの設定において、イベン
トの強制終了の設定が［R= レコード］の場合、「False」が返り
ます。

関連項目：

EJBCreate

EditGetEJB のインスタンスを作成
EJB(Enterprise Java Bean) の新しいインスタンスを作成します。
構文：

EJBCreate(JNDI 名 [,JNDI プロパティ ])パラメータ：JNDI 名 … JNDI 名を表す文字列
JNDI プロパティ … JNDI プロパティを表す文字列

EJBExplore

戻り値：

BLOB データ …作成されたインスタンスの疑似参照が返ります。

例：

EJBCreate('JNDI_ejb1')

EJB の参照EJB の記述を取得します。
構文：

EJBExplore(JNDI 名 '[,'JNDI プロパティ '])パラメータ：JNDI 名 … JNDI 名を表す文字列
JNDI プロパティ … JNDI プロパティを表す文字列

戻り値：
リファレンス
Magic eDeveloper V9 PlusEJB の XML 記述を表す文字列403

第 8 章 - 関数

EncryptionError

暗号／複合化処理のエラー情報の取得
Cipher/Decipher 関数の直近のエラーメッセージを返します。この関数は、コンテキ
ストごとに対応します。

EOF

構文 :

EncryptionError()

パラメータ：なし

戻り値：

文字列…Cipher/Decipher 関数処理の直近のエラーメッセージ

入出力ファイルの最後のレコードの処理が終了したかの確認
この関数を使用して、入出力ファイルに置かれているデータが終わったかどうかをチェックできます。入出力ファイルのデータが終わった場合、EOF フラグが立てられますが、この関数を使用して EOF フラグを検索できます。
構文：

EOF（タスク番号 , ファイル番号）

パラメータ：

タスク番号…タスクの階層位置を表す番号。カレントのタスク
が 0 、親タスクが 1 、その親タスクが 2 などとなります。
ファイル番号…カレントのタスクの入出力ファイルを示す番号。

EOM

戻り値：

論理値

例：

EOF（0,1）では、カレントのタスクでの最初の入出力ファイルで最後のレコードが処理されると、「True」が返ります。

注意事項：

EOF 関数は入力ファイルに使います。オペレーティングシステ
ムのテキストファイル（入出力ファイル）のデータを読み込む
タスクでは、EOF 関数を条件として使用できます。たとえば、EOF（0,1）を指定しておくことで、ファイルの最後のレコードの読込が完了すると同時にタスクを終了できます。

関連項目：

EOP 、Line 、Page

月の最後の日付
日付を指定された月の最後の日付を返します。

EOP

構文：

EOM（日付）パラメータ：

日付または日付式

戻り値：

日付値

例：

EOM （'97/05/05'DATE）では、「97/05/31」が返ります。

関連項目：

BOY 、BOM 、EOY 、AddDate 、CDOW 、その他の日付関数

出力ファイルの行数が１ページ分を超えたか確認
出力ファイルを指定し、そのファイルでのカレントのページで行カウンタの値が、［行］欄に設定されている行数を超えたかどうか（EOP 状態）をチェックできます。
［行］欄の設定が「0 」の場合、そのファイルに関連しているプリンタに設定されている行数が使われます。
構文：

EOP（タスク番号 , ファイル番号）

パラメータ：

タスク番号…タスクの階層位置を示す番号。カレントのタスクが「0」、カレントの親タスクが「1」、カレントの親の親タスクが「2」となります。
ファイル番号…カレントのタスクの出力ファイルを示す番号

戻り値：

404

論理値
• True …指定した出力ファイルが EOP 状態の場合
リファレンス
Magic eDeveloper V9 Plus関数の説明（アルファベット順）

EOY

例：

• False …EOP 状態でない場合
EOP（0,1）では、カレントのタスクでの最初の出力ファイルでEOP 状態が検出されると、「True 」が返ります。

関連項目：

EOF 、Line 、Page

年の最後の日付
日付を指定された年の最後の日付を返します。

ErrDatabaseName

構文：

EOY（日付）パラメータ：

日付または日付式

戻り値：

日付または日付式

例：

EOY （'97/11/17'DATE）では、「97/12/31」が返ります。

関連項目：

BOY 、BOM 、EOM 、AddDate 、CDOW 、その他の日付関数

エラーデータベース名の取得
エラーが発生したデータベースの名前を取得します。

ErrDbmsCode

構文：

ErrDatabaseName（）

パラメータ：なし

戻り値：

文字列…エラーが発生したデータベースの名前

データベースエラーコード名の取得
エラーが発生した DBMS のオリジナルのエラーコードを取得します。

ErrDbmsMessage

構文：

ErrDbmsCode（ ）パラメータ：

なし

戻り値：

数値…DBMS のオリジナルのエラーコード

注意事項：

この関数は、致命的で予測できないエラーに対して使用できます。このエラーコードをもとに開発者が DBMS のエラー原因を追求できます。

データベースエラーメッセージの取得
エラーが発生した DBMS のオリジナルのエラーメッセージを取得します。

ErrMagicName

構文：

ErrDbmsMessage （ ）パラメータ：

なし

戻り値：

DBMS のオリジナルのエラーメッセージ

注意事項：

この関数は、致命的で予測できないエラーに対して使用できます。Magic は、DBMS から内部メッセージを取得して表示します。

エラー情報の取得直前に発生した Magic のエラーメッセージが返ります。エラー一覧に表示されている文字列で返ります。
返されるエラーメッセージと ERR リテラルを比較することで、発生したエラー内容を判断させることができます。
構文：

リファレンス
Magic eDeveloper V9 Plus

ErrMagicName （ ）405第 8 章 - 関数

ErrPosition

パラメータ：なし

戻り値：

文字…Magic のエラーメッセージ

注意事項：

この関数は、「任意」タイプのエラーハンドラ内でエラー内容を判別する場合に使用します。

エラー情報：位置
エラーが発生したレコードの位置を取得します。

ErrTableName

構文：

ErrPosition （ ）パラメータ：なし

戻り値：

BLOB データ …エラーが発生したレコードの位置が含まれてい
ます。

注意事項：

エラーのスコープの外にある場合、この間数は空白を返します。
エラーが発生したレコードを表示させるときに使用します。タ
スク環境の［範囲／位置付］タブ内のポジションの項目に、本関数で取得した BLOB 型変数を代入することにより、エラー発
生時のレコードに位置付けできます。

エラー情報：DB テーブル名
エラーが発生した DB テーブル名を取得します。
構文：

ErrTableName （ ）パラメータ：なし

戻り値：

文字…エラーが発生した DB テーブル名
関数が正常に処理されなかった場合は、空白が返ります。

参考：

エラーがメインテーブルで発生したのかリンクテーブルのどれかで発生したのかを調べるような場合に使用できます。
エラーハンドラが特定のテーブルに対して定義されている場合
この関数は必要ありません。

EuroCnv

通貨換算
通貨換算テーブル（ECCT）に登録された基準通貨（ユーロ）への換算率に基づく、通貨間の換算結果を返します。
構文：

EuroCnv（From,To, 値）

パラメータ：

From …換算元となる通貨（文字型）
To …換算後の通貨（文字型）
値…換算元の通貨単位で示される換算対象となる数値（数値型）

戻り値：

換算後の通貨単位で示される数値

例：• EuroCnv （'ITL'，'DEM'，A ）… A 値をイタリアリラからドイ
ツマルクに換算します。
• EuroCnv （'ITL'，'EURO'，50*B ）… B 値を 50 倍し、イタリア
リラからユーロに換算します。
• EuroCnv （A ，B ，C ）… C 値を通貨 A から通貨 B の値に換算します。
パラメータ（通貨コード）は４ 桁固定長で使用してください。

注意事項：

406

リファレンス
Magic eDeveloper V9 Plus関数の説明（アルファベット順）
通貨の設定値の追加、変更、削除の有効範囲はプログラム稼動中のみです。プログラム終了時にはもとの設定値に戻ります。
設定値を保存する場合は、通貨変換ファイルをエディタなどで編集してください。
通貨変換ファイルは、１ ユーロに対する比率で設定します。

EuroDel

通貨データの削除
通貨換算テーブル（ECCT）から、通貨コードを削除します。
構文：

EuroDel（通貨名）

パラメータ：

通貨名…通貨換算テーブル（ECCT ）に登録されている通貨コー
ド名称

戻り値：

数値
• 0 …指定された通貨コードの削除が成功した場合• 1 …指定した通貨コードが存在しない場合• 5 …指定した通貨コードが「EURO」の場合• 9 …通貨コードが設定されたいない場合

例：

EuroDel（'FRF'）
ECCT からフランスフランの通貨データを削除します。

注意事項：

パラメータ（通貨コード）は４ 桁固定長で使用してください。
通貨の設定値の追加、変更、削除の有効範囲はプログラム稼動中のみです。プログラム終了時にはもとの設定値に戻ります。
設定値を保存する場合は、通貨変換ファイルをエディタなどで編集してください。

EuroGet基準通貨の取得現在の基準通貨コードを取得します。

EuroSet構文：

EuroGet （ ）パラメータ：なし

戻り値：

文字…基準通貨コード例：

CTL 特性の基準通貨特性が「EURO」の場合、EuroGet（）は、「EURO」を返します。

基準通貨の設定
基準通貨を変更します。
構文：

EuroSet（通貨コード）

パラメータ：

通貨コード…通貨コードに対応した文字列

戻り値：

数値

例：
注意事項：

• 0 …基準通貨が正常に変更された場合• 1 …指定した通貨コードが存在しない場合
EuroSet（'FRF'）の実行により、基準通貨はフランスフランになる。
アプリケーションの基準通貨特性を変更することにより、通貨値として表示されている。データベース値も自動的に修正されます。
パラメータ（通貨コード）は４ 桁固定長で使用してください。

リファレンス
Magic eDeveloper V9 Plus407

第 8 章 - 関数
通貨の設定値の追加、変更、削除の有効範囲はプログラム稼動中のみです。プログラム終了時にはもとの設定値に戻ります。
設定値を保存する場合は、通貨変換ファイルをエディタなどで編集してください。
通貨変換ファイルは、１ユーロに対する比率で設定します。

EuroUpd

通貨換算テーブルの更新
通貨換算テーブル（ECCT）の登録内容を更新します。
構文：

EuroUpd（通貨コード , 通貨名称 , 換算精度 , 基準換算率）

パラメータ：

通貨コード…4 バイト以内の通貨コード
通貨名称…20 バイト以内の通貨名称
換算精度…換算後の小数点以下の桁数を示す数値で 0,1,2 で指定。
換算結果は四捨五入。
基準換算率…基準通貨１ 単位に対するその通貨の換算値

戻り値：

注意事項：

数値
• 0 …内容の登録・修正が正常に行われた場合• 1 …正常に更新できない場合• 2 …基準換算率が 0 の場合• 3 …通貨コードが「EURO」で基準換算率が 1 以外の場合• 4 …換算精度が 0,1,2 以外の場合• 9 …通貨コードが設定されたいない場合• 10 …通貨名称が指定されていない場合指定した通貨コードが存在しないときは、通貨換算テーブルに追加登録されます。
パラメータ（通貨コード）は４ 桁固定長で使用してください。
通貨の設定値の追加、変更、削除の有効範囲はプログラム稼動中のみです。プログラム終了時にはもとの設定値に戻ります。
設定値を保存する場合は、通貨変換ファイルをエディタなどで編集してください。
通貨変換ファイルは、１ ユーロに対する比率で設定します。

EvalStr

文字列の評価文字列を定義式として実行します。
構文：

EvalStr（文字列 , デフォルト値）

パラメータ：

文字列… Magic の定義式として評価される文字列
デフォルト値…式が正しくない場合に返される値。型は、評価式が返す値の型に合わせる必要があります。
例：1 + EvalStr（string, default value）
この場合、default value は、数値にしなければいけません。

戻り値：式の評価によって返される値。もしこの式が正しくない場合は、
デフォルト値が返ります。

例：

EvalStr（A,0）A='3 + 2の場合、戻り値は、「5」になります。

EvalStr（A,0）, A='3 + ' の場合、戻り値は、「0」になります。
注意事項：

408

• 式にシングルクオーテーションを含んだ文字列が含まれる場合（文字列やリテラル）は、各クオーテーションに対して２つのシングルクオーテーションを設定する必要があります。
リファレンス
Magic eDeveloper V9 Plus関数の説明（アルファベット順）
例： EvalStr（'DbDel（''1''FILE,''MYFILE.DAT''）'）.
または
EvalStr（'''A''&''B'''）='AB'• もし文字列がクオーテーションで囲まれていない場合は、項目のシンボル名と見なします。
例： EvalStr（'A & B'）= 項目 A & 項目 B.
• 項目のシンボル名が間違っている場合、参照内容は無効になります。VarCurrN 関数 や VarIndex 関数 を使用して参照するようにしてください例：
EvalStr（'VarCurrN（''NAME''）または
VarCurrN（''LAST_NAME''）'）• CallProg 関数でコールされたプログラムの戻り値に設定すると動作しないことがあります。コールコマンドで使用してください。

EvalStrInfo

EvalStr 関数の評価情報を取得
EvalStr 関数 を使用して評価される 式に関する情報を返します。
構文 :EvalStrInfo( 式 , オプション )パラメータ :

式 …… EvalStr 関数を使用した式を表す文字列
オプション …… 取得する情報のタイプを表す数値

戻り値：• 1 ……戻り値のデータ型• 2 …… 実行時に発生するエラー内容（正常処理の場合は空白が返ります。）• 3 …… 式の内容（EvalStr で指定した内容がそのまま返ります。）
指定したオプションに基づく情報を表す文字列• オプショ =1（戻り値のデータ型）の場合
式が正しければ、その式の戻り値のデータ型を返します .
• A …… 文字型• N …… 数値型• L …… 論理型• B …… BLOB 型 .（ベクタ型、OLE 型、ActiveX 型を含みます）• M ……メモ型• D ……日付型• T ……時刻型• * ……未定義の型• Error ……式に誤りがある場合注意事項 :

日付型と時刻型の場合は、式の内容が、Date() のように日付や時刻に関した簡単なものの場合や、日付項目や時刻項目の簡単な組み合わせの時のみ戻り値が返ります。複雑な式の場合は、数値型で返ります。
メモ型の場合も、式がメモ項目の簡単な組み合わせの時のみ返ります。複雑な式の場合は、文字型で返ります。
式が、数値だけの指定の場合は、数値型で返ります。（例：EvalStrInfo(`123`,1) は、「N」が返ります。）

リファレンス
Magic eDeveloper V9 Plus409

第 8 章 - 関数
式に誤りがある場合は、「Error」という文字列が返ります。
（例：
EvalStrInfo(`123+`,1) は、「Error」が返ります。）

EXP

指数
指数を計算します。

ExpCalc

構文：

EXP（数値）

パラメータ：

数値…指数関数の ex の x 値

戻り値：

数値… ex の値

例：

EXP（5）は、e5 の値を返します。

関連項目：

LOG

式の実行
指定された式番号の定義式を実行します。
構文：

ExpCalc （式番号）パラメータ：

式番号…実行する式の番号

戻り値：

指定した式の評価後の値

例：

ExpCalc（'2'EXP）では、［式］テーブルの 2 番目の式が実行されます。
ExpCalc（BA）では、位置 2 （BA ）の式が実行されます。

注意事項：

式としては、次のいずれかを指定できます。
• EXP リテラル
• 定数値
• 変数項目
ExpCalc 関数が参照する式の結果が小数になる場合、関数を含む
計算式が期待する値と異なることがあります。この場合、式に対して Round 関数を使用してください。

File2Blb

ファイルを BLOB オブジェクトに変換
ファイルを BLOB オブジェクトに変換して保存します。

File2OLE

構文：

File2Blb （ファイル名）

パラメータ：

ファイル名…ファイル名（文字列）

戻り値：

BLOB データ …BLOB オブジェクトとして格納されたファイル

例：

File2Blb（'C:¥att1.rtf'）では、ファイル「att1.rtf 」が BLOB 項目に格納されます。

ファイルを BLOB オブジェクトに変換し、リンクまたは埋め込みを行う
ファイルを BLOB オブジェクトに変換できます。この関数では、リンクまたは埋め込みの指定が可能です。
構文：

File2OLE （ファイル名 , リンク）

パラメータ：

ファイル名…変換するファイルの名前
リンク…論理値• True…ファイルにリンクが設定されます。
• False…ファイルが埋め込まれます。

410

リファレンス
Magic eDeveloper V9 Plus関数の説明（アルファベット順）

File2Req

戻り値：

BLOB データ…BLOB が NULL の場合、この関数では変換は実行されません。

例：

File2OLE（'C:¥att1.doc','TRUE'LOG）
OLE2 の BLOB 型変数に、「att1.doc」（Word ファイル）へのリンクが対応付けられます。

ファイルの内容をリクエスタに送信指定されたファイルの内容を MRB に送信します。
構文：

File2Req （ファイル名）

パラメータ：

ファイル名…ファイル名（文字列）

戻り値：

論理値

例：
注意事項：

FileDLG• True …処理に成功した場合• False …処理に失敗した場合
File2Req（'C:¥att1.doc）では、リクエスタに「file att1.doc」というファイルが送られます。
リモートコールで起動されたプログラムで実行することで、同期型で起動した起動元のプログラムの［結果ファイル］に保存されます。

［ファイルを開く］ダイアログのオープン
Windows の［ファイルを開く］ダイアログをオープンします。
構文：

FileDLG（ファイルタイプ , グループ）

パラメータ：

ファイルタイプ…［ファイルの種類］ボックスに表示される
ファイル名
グループ…ファイル名のグループ。ワールドカードの使用可能。
セミコロン（;）で複数指定可

戻り値：

文字列…「ファイルを開く」ダイアログで選択したファイル名

例：

FileDLG（'DataFile',' *.dat;*.txt'）
FileDLG（'MyFiles',' *.*'）

FileListGet

ディレクトリ内のファイル名一覧取得
指定したディレクトリ内のファイル名一覧を取得します。フィルタを指定することもできます。
構文 :FileListGet（ディレクトリ名 , フィルタ , サブディレクトリの検索）パラメータ :

ディレクトリ名 … ディレクトリ名を表す文字列。論理名が使用できます。
フィルタ … 取得するファイル名を絞るためのフィルタを表す文字列。ワイルドカードが使用できます。区切り文字として、「|」を使用することで複数のフィルタを指定できます。
例：「*.xml|*.xsd’」
フィルタが指定されない場合は、全てのファイル名が取得されます。
サブディレクトリの検索 … サブディレクトリを検索するかどうかを指定する論理値。「True」の場合は、指定されたディレクト
リの全てのサブディレクトリを含めた検索されます。

リファレンス
Magic eDeveloper V9 Plus411

第 8 章 - 関数
戻り値 :文字がセルを含んだベクトルデータ
各セルには、ファイル名と相対的パス（例：「dir1¥po.xml」）でが格納されています。
ファイルが 1 つも見つからない場合は、Null が返ります。

例:

FileListGet(‘c:¥temp','*.xml￨*.xsd','True'Log)
ファイル名が含まれるベクトルデータが返ります。各セルには、「c:¥temp」ディレクトリとそのサブディレクトリに含まれるファイル名の一覧が入っています。.

Fill

文字列を繰り返す
文字列または文字列式を繰り返すことができます。繰り返し回数（n ）も指定できます。
構文：

Fill（文字列 , 回数）

パラメータ：

文字列…文字列または文字列式
回数…文字列を繰り返す回数

Fix

戻り値：

文字列

例：

Fill（'*',5）では、'*' が 5 回繰り返され、'*****' という文字列が作成されます。

注意事項：

この機能の上限は、32K バイトまでです。

関連項目：

Ins 、Del 、Rep

数値の抽出（範囲外は切り捨て）
数値（実数または整数）を指定し、その一部を切り取ることができます。
構文：

Fix（数値 , 整数部桁数 , 小数部桁数）

パラメータ：

数値…処理対象の数値
整数部桁数…指定した数値の整数部で切り取り後の桁数を指定します。整数部の場合、切り取りは左側から行われます。
小数部桁数…指定した数値の小数部で切り取り後の桁数を指定します。小数部の場合、切り取りは右側から行われます。

戻り値：

数値

例：

Fix（12345.6789,3,3）では、「345.678」が返ります。
また、IF（Fix（M,2,0）=99,N+1,N）では、数値 M がチェックされ、M の整数部で右側の 2 桁が「99」であった場合、N が「1」だけ増加します。

関連項目：

Flip

Round

文字列を反転文字列または文字列式の結果を反転させることができます。文字列は鏡字イメージとなります。

412

構文：

Flip（文字列）

パラメータ：

文字列…文字列または文字列式

戻り値：

文字列

例：

Flip（'Good'）では、「dooG」が返ります。
リファレンス
Magic eDeveloper V9 Plus関数の説明（アルファベット順）

Flow

フローモードのチェック
操作のフローモードをチェックします。
• N……順方向通常モード• F……順方向高速モード• P……逆方向通常モード• R……逆方向高速モード• S……選択終了（選択操作後に終了）• C……取消終了（選択操作なしで終了）
構文：

Flow（文字列）

パラメータ：

文字列…フローモードを表す文字（N 、F 、P 、R 、C 、S のい
ずれか）

戻り値：

論理値

例：

FlwMtr• True …カレントの処理モードが指定した処理モードの場合• False …指定した処理モードでない場合
Flow（'N'）では、通常モードでカーソルが次の項目に移動した
場合、「True 」が返ります。

関連項目：

ViewMod 、VarMod

注意事項：

Flow(‘C’) は、（オンラインタスクの）タスク終了条件かタスク後処理のみ有効です。

フローモニタにメッセージを表示
Magic フローモニタにメッセージを表示させます。
構文：

FlwMtr（文字列 , 論理ブレイク）

パラメータ：

文字列…Magic フローモニタに表示させる文字列
論理ブレイク…「True 」を指定すると、フロー処理の実行が中断されます（ブレイクポイントと同じ働きをします）。以降は、フローモニタのステップイン、ステップオーバ、継続によってフロー処理の実行が制御されます。

戻り値：

論理値
• True …次のフロー処理で実行が中断された場合• False …中断されない場合

FlwMtrVars

フローモニタでの項目表示
フローモニタの現在の位置に項目の内容表示を追加するように指定します。
構文：

FlwMtrVars()

パラメータ：

なし

戻り値：

論理値

注意事項：

GetLang• True…項目の内容がフローモニタ表示に追加された場合• False…表示処理を受け付けなかった場合
ベクトル項目は、拡張モード（セルの内容を表示する）で追加されます。

現在使用されている言語を取得

言語は、［動作環境］テーブルの［デフォルト言語］欄に設定されている言語が返413
リファレンス
Magic eDeveloper V9 Plus

第 8 章 - 関数
ります。

GetParam

構文：

GetLang（）

パラメータ：なし

戻り値：

文字列または空白

例：

GetLang（）

関連項目：

SetLang

パラメータの取得プログラムにグローバルパラメータとして渡されているパラメータの値を取得します。
構文：

GetParam （パラメータ名）

パラメータ：

パラメータ名…グローバルパラメータの名前
パラメータが SetParam 関数で設定された場合は、この関数のパラメータ名を SetParam 関数で使用されたものと同じにする必要があります。
［コールリモート］コマンドのパラメータを取得する場合にも使用できます。関数のパラメータ名を「MGARG##」とすることで「##」で指定された番号のパラメータ値を取得することができます。「MGARG0」とと指定した場合は渡されたパラメータの数が返ります。
ハイパーリンクのパラメータとして渡された場合、この関数のパラメータ名は、［コールリモート］コマンドと同じように「MGARG##」にするか、ハイパーリンクか送信処理で指定されたパラメータの名前を指定することができます。

戻り値：

データ…データ型は、［パラメータ名］で指定したパラメータのデータ型になります。

例：• GetParam（'MyArgument'）… 「MyArgument」というパラメー
タ名が SetParam 関数で設定されたりハイパーリンクで渡された場合、このパラメータの値が返ります。
• GetParam（'MGARG0'）… ［コールプログラム］コマンドまたはハイパーリンクで渡されたパラメータの数が返ります。
• GetParam（'MGARG1'）… ［コールプログラム］コマンドまたはハイパーリンクで渡された、最初のパラメータの値が返ります。
戻り値を受け取る項目のデータ型がパラメータのデータ型と異なる場合、表示が化けるなどの結果になります。

注意事項：

パラメータ名を指定しなかったり、指定されたパラメータ名に対する値の設定が行われていない場合は、NULL が返ります。
ハイパーリンクで呼び出される Magic プログラムでは、以下のような場合にも使用できます。

関連項目：

GroupAdd414• インターネットプログラムでグローバルパラメータとしてHTTP 環境変数が渡されたときにも、この関数を使用して値を取得することができます。
• HTML フォームかハイパーリンクで「ARGUMENTS」値が指定されており、カンマで区切られた引数名が含まれている場合に限って、「MGARG##」を使用して引数を順番に取り出すことができます。
SetParam

ユーザをグループに割当てる
リファレンス
Magic eDeveloper V9 Plus関数の説明（アルファベット順）
アプリケーション上で、セキュリティファイル（管理ファイル）のユーザグループにユーザを追加できます。
構文：

GroupAdd（ユーザ , ユーザグループ）

パラメータ：

ユーザ…ユーザのユーザ ID を指定します。このユーザが、ユー
ザグループに割当てられます。
グループ…ユーザが追加されるユーザグループ

戻り値：

論理値

例：

• True …処理が成功した場合• False …処理が失敗した場合GroupAdd（'Accountant', 'Accounting'）では、「Accountant」というユーザが「Account-ing」というグループに追加されます。これで、「Accountant」には、「Accounting」に定義されている権利がすべて与えられます。

注意事項：

Han

この関数は、SUPERVISOR ユーザだけが使用できます。ほかのユーザの場合、この関数を使用しても無視されます。

全角文字を半角に変換
全角文字（英数字、またはカタカナ）を 1 バイトの半角文字に変換します。
構文：

Han （文字列）

パラメータ：

文字列…変換する文字列（全角）

戻り値：

変換された文字列（半角）例：

Han（' １６ ＫＢ'）＝ '16KB'
Han（' カタカナ '）=' ｶﾀｶﾅ '関連項目：

HandledCtrl

Zen、ZenS

コントロール名の取得
ハンドラが起動されたコントロールの名前を返します。

HitZOrdr

構文：

HandledCtrl（）

戻り値：

文字列…現在のハンドラが起動されたコントロールの名前

注意事項：• 特定のコントロール（タスクやレコードレベルハンドラ、バッ
チタスクのハンドラ）から起動された場合は、空白が返ります。
• この関数は、パークしていなくてもイベントを起動したコント
ロールの名前を返します。例えば、マウスオーバやマウスアウ
トイベントなどです。
• コントロールレベルで実行しても値は返りません。

コントロールの Z オーダ値を取得
コントロールの Z オーダ値を返します。ウィンドウ単位で機能します。

Hour

構文：

HitZOrdr（）

パラメータ：なし

戻り値：

1 〜 n の整数…コントロールヒットイベントが発生したフォーム
上のコントロールの Z オーダ値

時刻の時間の値

時刻または時刻式の時間を返します。
リファレンス
Magic eDeveloper V9 Plus415

第 8 章 - 関数
構文：

Hour（時刻）パラメータ：

時刻…時刻または時刻式

戻り値：

数値（1 〜 99 ）例：

Hour（'12:00:00'TIME）では、「12」が返ります。
項目 A の時刻値が「14:00:00」の場合、Hour（A）+2 では「16」が返ります。

関連項目：

HStr

Minute 、Second

10 進数から 16 進数に変換
10 進数を 16 進数に変換します。
構文：

HStr（数値）

パラメータ：

数値…10 進数、または 10 進数を表す数式

戻り値：

文字列（16 進数）

例：

HStr（15）では、「F」が返ります。
また、HStr（16）では、「10」が返ります。

HTTPGet

関連項目：

Hval

注意事項：

結果は、左寄せの形式で返ります。

HTML の取得
HTTP リクエストの結果として返される HTML を BLOB として返します。
構文：

HTTPGet（URL, ヘッダ行 1, ヘッダ行 2, …）

パラメータ：

URL…取得したいページまたはファイルの HTTP アドレス
ヘッダ行 n …文字列 : 追加したいリクエストヘッダ情報。
必要な数のヘッダ情報文字列を指定できます。

戻り値：

BLOB データ… URL で取得した実ファイル。接続に失敗した場
合は、NULL が返ります。

例：

HTTPGet（'http://www.magicsoftware.com/index.html','if-ModifiedSince: Tue 7 Aug 12:00:00 2001','User-Agent: Mozilla/4.0（compatible; MSIE 5.5; Windows NT 4.0）'）
この例では、最初のパラメータ (URL) で指定されたファイルを取得します。
２番目のパラメータは、追加リクエストヘッダ情報のサンプルです。もし、ページが指定された日以降に変更された場合のみ、ページの受信要求を行います。
３番目のパラメータは、このリクエストをシミュレートする
ユーザエージェントのサーバタイプを指定します。

注意事項：

HTTPGet 関数は、Proxy サーバを通して接続できます。
MAGIC.INI または、動作環境ダイアログで Proxy サーバの指定を行ってください。
Proxy サーバ経由でアクセスする際にユーザ認証を必要とする場
合は、以下の形式で Proxy サーバに対するユーザ ID とパスワードを指定してください。
http://UserID:Password@URL

416

リファレンス
Magic eDeveloper V9 Plus関数の説明（アルファベット順）
ユーザ ID やパスワードには、シークレット名を使用することができます。この場合以下のように指定します。
http://%UserID%:%Password%@URL
関数の取得処理に対するタイムアウトは、MAGIC.INI または、
動作環境ダイアログ の「HTTP タイムアウト」で指定できます。
受け取った、HTML ファイルまたは、テキストファイルは、文字列操作関数を使用して内容を表示することができます。
Blob2File 関数で、ファイルに保存することができます。

HTTPLastHeader

直近の HTTP リクエストのヘッダ情報を取得
HTTPGet/HTTPPost 関数で取得した 直近の HTTP リクエストのヘッダ情報を取得します。ヘッダ名を指定することで、該当する HTTP ヘッダの値が取得できます。
構文：

HTTPLastHeader( ヘッダタイトル )パラメータ：

ヘッダタイトル…ヘッダタイトルを表す文字列
例：「Content-Type」または、「Expires」、「Content-Length」など

戻り値：

文字列…ヘッダとして定義された文字列
ヘッダタイトルが空白の場合、ヘッダ全てが返ります。

例：

HTTPGet 関数実行後、HTTPLastHeader('Context-Type') を実行すると 「text/thml」が返ります。
HTTPLastHeader('') を実行するとHTTP/1.1 200 OK
Server: Microsoft-IIS/5.0
Date: Thu, 13 July 2000 05:46:53 GMT
Content-Length:2291
Content-Type: text/html
Cache-control: privateなどという文字列が返ります。

注意事項：

HTTPGet/HTTPPost 関数が実行されないと空白が返ります。
ヘッダタイトルが見つからない場合も空白が返ります。

HTTPPost

HTML データの送信
HTTPPost 関数は、HTTP メッセージ経由で情報を渡したり、HTTP リクエストの戻り値としての HTML/XML 結果を BLOB で受け取ることができます。
構文：

HTTPPost（URL, 内容 , ヘッダ行 1, ヘッダ行 2, …）

パラメータ：

URL…アクセスする HTTP アドレス
内容…指定した URL に POST するテキスト情報を含んだ BLOB
項目（例：var1=100&VAR2=200 ）ヘッダ行…HTTP リクエスタに追加するヘッダ情報。必要な情報を追加できます。

戻り値：

BLOB データ… 指定した URL に POST した結果を含んだデー
タ。失敗した場合は、NULL が返る。

例：

HTTPPost（ http://www.magicsoftware.com/Scripts/MGrqispi9x.dll,Appnme=ApplicationName&Prgname=ProgramName’）

リファレンス
Magic eDeveloper V9 Plus417

第 8 章 - 関数
この例では、アプリケーションサーバ上の Magic アプリケー
ション（ApplicationName）を起動します。起動されたアプリ
ケーション内でリクエストに対してデータ出力した場合、出力内容が戻り値として返ります。
注意事項：

HTTPPost 関数は、Proxy サーバを通して接続できます。
MAGIC.INI または、動作環境ダイアログで Proxy サーバの指定を行ってください。
Proxy サーバ経由でアクセスする際にユーザ認証を必要とする場
合は、以下の形式で Proxy サーバに対するユーザ ID とパスワードを指定してください。
http://UserID:Password@URL
ユーザ ID やパスワードには、シークレット名を使用することができます。この場合以下のように指定します。
http://%UserID%:%Password%@URL
関数の取得処理に対するタイムアウトは、MAGIC.INI または、
動作環境ダイアログ の「HTTP タイムアウト」で指定できます。
受け取った、HTML ファイルまたは、テキストファイルは、文字列操作関数を使用して内容を表示することができます。
File2Blb 関数で、ファイルに保存することができます。

Hval

16 進数の 10 進数への変換
16 進数を 10 進数に変換します。

Idle

構文：

Hval（文字列）

パラメータ：

文字列…16 進数を表す文字列

戻り値：

数値

例：

Hval（'FF'）では、「255」が返ります。
Hval（'10'）では、「16」が返ります。

関連項目：

Hstr

システムのアイドル時間をチェック
Magic 上でキー操作が実行され、その後、操作が行われていない時間を返します。
なお、この関数は、［動作環境］テーブルの［キーボード休止秒数］欄の値と関連しており、この［キーボード休止秒数］欄に設定されている時間（単位秒）が経過したときに限って、0 以外の値が返ります。
また、結果は、［キーボード休止秒数］欄の値の 10 分の 1 をしきい値として算出されます。さらに、結果は、［キーボード休止秒数］欄の値を 10 倍したものの累積値として返ります。
構文：

Idle（）

パラメータ：

なし

戻り値：

数値
• 0 …［キーボード休止秒数］欄の秒数の経過後、その秒数の 10
分の 1 の時間が経過していないときには、0 が返ります。
• 休止秒数の倍数…［キーボード休止秒数］欄の秒数の経過後、ユーザによる操作がないまま、その秒数の 10 分の 1 の時間が経過すると、時間が［キーボード休止秒数］欄の秒数の 10 倍の累積（つまり、5 、10 ，15 など）として返ります。

例：

418

リファレンス
Magic eDeveloper V9 Plus関数の説明（アルファベット順）［キーボード休止秒数］欄の秒数が「5 」で、その 5 秒が経過したときには、Idle（）関数からは、経過した時間に応じて次の値が返ります。
• 1 秒が経過したときは…0• 2 秒が経過したときは…0• 4 秒が経過したときは…0• 5 秒が経過したときは…5• 8 秒が経過したときは…5• 10 秒が経過したときは…10IF

条件付き評価（IF-THEN-ELSE ）条件を指定し、その条件から返る論理値（「True」または「False」）に応じて、処理を分岐させることができます。If はネストして使用できます。
構文：

IF（論理式 , 値 1, 値 2）

パラメータ：

論理式…論理値が返る式

戻り値：• 値 1 …True が返ったときに使われる値• 値 2 …False が返ったときに使われる値
値（パラメータで指定した 値 1 か値 2 のどちらか）

例：

IN

IF（A=1,'Blue','Green'）では、A=1 （「True」）の場合、「Blue」が返ります。A=1 でない（False ）場合、「Green」が返ります。

データの照合カンマ区切りのデータ列内に指定したデータが存在するかどうかを照合します。
構文：

IN（検索データ、検索対象データ列）

パラメータ：

検索データ…検索したいデータ。指定できるデータ型は、文字、数値、メモ、日付、時刻。
検索対象データ列…検索されるデータをカンマ区切りで複数指定します。日付と時刻の場合は、リテラルを付けて指定してく
ださい。

戻り値：

論理値

例：

• True…検索データ列内に検索データが存在する場合• False…検索データが存在しない場合
IN(‘abcd’,’aa’,’abcd’,’bbb’) では「True」が返ります。
IN(‘abcd’,’aa’,’bb’,’cc’) では「False」が返ります。
IN(5,1,2,3,5) では「True」が返ります。
IN(A,'2003/01/01’DATE,’03/03/04’DATE) の場合、A が ‘2003/01/
01’DATE ならば、「True」が返ります。

注意事項：

INIGetこの関数は、iSeries の SQL ゲートウェイでは無効です。

MAGIC.INI ファイルの環境設定値を取得
MAGIC.INI ファイルの環境設定値を返します。
構文：

INIGet（MAGIC.INI ファイルのエントリ）

パラメータ：MAGIC.INI ファイルのエントリ…文字列で、MAGIC.INI ファイ
ルのセクションとパラメータ（'［セクション］パラメータ ' の形式）を指定します。

リファレンス
Magic eDeveloper V9 Plus419

第 8 章 - 関数
戻り値：指定したパラメータの値…そのパラメータに値が指定されていないときには、空白が返ります。

例：

INIGet（'Owner'）では、現在のオーナーの値が返ります。
また、INIGet（'［MYAPPL］LAST CUST'）は、［MYAPPL］セクションの LAST CUST パラメータの値が返ります。

注意事項：

この関数でセクションを指定しなかったときには、デフォルトの［MAGIC ENV］セクションのパラメータとして処理されます。この関数のパラメータは、大文字と小文字が区別されます。
この関数を使用して、Magic の項目を操作できます。また、アプ
リケーションのグローバルデータの取り出しも可能です。取り出すアプリケーションのデータが更新できる場合、ユーザごとに MAGIC.INI ファイルを用意します。一方、グローバルデータとカウンタを複数のユーザで共有する場合、標準の DB テーブルを使うようにします。
［動作環境］テーブルの［MAGIC.INI 常駐］欄を「Yes」にしておくと、処理速度が向上します。詳しくは、第 2 章「設定」の「MAGIC.INI ファイル」と「コマンドラインオプション」を参照
してください。

関連項目：

INIGetLn

INIPutMAGIC.INI ファイルの値の取得
セクションと行番号を指定し、MAGIC.INI ファイル内のパラメータ名と値を取り出すことができます。
構文：

INIGetLn （セクション名 , 行番号）

パラメータ：

セクション名…内容を取得するパラメータが置かれているセクションの名前
行番号…内容を取得するパラメータの行番号（セクション行を基点とする）

戻り値：

指定した行のパラメータ名と値（文字列）例：

IINIGetLn （'［MAGIC ENV］',3）では、MAGIC.INI ファイルのMAGIC ENV セクションで 3 番目の行の内容が返ります。

注意事項：

指定した行番号が 1 より小さい場合、空白の文字列が返ります。
最初の空白の行を指定すると、空白の文字列が返ります。
Magic の起動時にコマンドラインでパラメータを指定している場
合は、［MAGIC］セクションの１行目としてその値が返ります。

INIPutMAGIC.INI ファイルの環境設定値を更新
MAGIC.INI ファイルの環境値を更新します。

420

構文：

INIPut（ファイルのエントリ , 強制書込）

パラメータ：

ファイルのエントリ…文字列で、MAGIC.INI ファイルのセク
ションとパラメータと値を指定（'［セクション］パラメータ =値 ' の形式）します。
パラメータの値は、指定した値に更新されます。

リファレンス
Magic eDeveloper V9 Plus関数の説明（アルファベット順）
強制書込 … 論理値。マルチスレッドで動作する Magic アプリ
ケーションサーバでは、MAGIC.INI ファイルは、別々のメモリ領域内にあるそれぞれのコンテキストに格納されます。このパラメータを「False」にすると、更新した内容は、MAGIC.INI の
ローカルコピーのみに書き込まれます。マルチスレッドサーバ
では、実行中スレッドのみに変更内容が反映されます。
このフラグを「True」に設定すると、INI 更新は、物理的なMAGIC.INI ファイルに書き込まれます。新しくロードされたス
レッドでは、MAGIC.INI コピー内に新しい修正が反映されます。
戻り値：

例：

論理値
• True …処理が成功した場合• False …処理が失敗した場合
INIPut（'Owner=John, Century=1920','FALSE'LOG）では、現在のオーナーが「John 」に、西暦基準年が「1920 」に設定されます。

関連項目：

INIGet

注意事項：

セクションを指定しなかったときには、デフォルトの［MAGIC
ENV］セクションのパラメータとして処理されます。
INI ファイルを常駐に設定している場合、常に強制書込パラメー
タの値が「False」であると見なされます。
［ファイルのエントリ］パラメータは、大文字と小文字が区別されます。指定したエントリがなかったときには、そのエントリが挿入されます。
この関数を使用して、Magic の項目を操作できます。また、アプ
リケーションのグローバルデータの取り出しも可能です。アプ
リケーションのデータを更新する場合、ユーザごとにMAGIC.INI ファイルを用意します。一方、複数のユーザで共有
すると同時に更新を行うグローバルデータやカウンタの場合は、この関数でなく標準のデータベースに格納します。
［動作環境］テーブルの［MAGIC.INI 常駐］欄を「Yes」にしておくと、処理速度が向上します。詳しくは、第 2 章「設定」の「MAGIC.INI ファイル」を参照してください。
この関数を使用して更新された Filter キーワードは、ローカルエ
ンジンがまだ MRB に登録されていない場合のみ、現在のセッションで MRB に送信されます。例えば、Magic の起動によって開始アプリケーショントがオープンされ、メインプログラムのレコード前処理で Iniput 関数が実行された場合です。これ以外の場合は、次のセッションで有効になります。

Ins

文字列を別の文字列に挿入
文字列を別の文字列に挿入します。
構文：

Ins（文字列 1, 文字列 2, 位置 , 文字数）

パラメータ：

文字列 1 …文字列の挿入先となる文字列
文字列 2 …挿入する文字列
位置…文字列が挿入される位置で、先頭からの位置を番号で示します。
文字数…挿入する文字列の文字のうち、実際に挿入する文字を数を指定します。

戻り値：例：
リファレンス
Magic eDeveloper V9 Plus

文字列
Ins（'abcde','xxx',3,1）では、「abxcd」が返ります。

421

第 8 章 - 関数
関連項目：

InStr

Del 、Rep 、Fill

文字列中で特定の文字列の最初の出現位置を検索
文字を指定し、その文字が文字列または文字列式の中で何番目の文字であるかをチェックします。
構文：

InStr（文字列 , 検索文字列）

パラメータ：

文字列…文字列または文字列式で、この文字列または文字列式に対して検索が実行されます。
検索文字列…検索対象となる文字

InTrans

戻り値：

検索対象の文字の位置を示す番号が返ります。文字が見つからなかったときには、「0」が返ります。

例：

InStr（'abcd','b'）では、「2」が返ります。
InStr（'ABCDEF','DE'）では、「4」が返ります。

トランザクションのチェック
トランザクションが現在オープンしているかどうかをチェックします。

IOCopy構文：

InTrans （ ）パラメータ：

なし

戻り値：

論理値

ファイルのコピー（ディスク上）ファイルをコピーします。
構文：

IOCopy（元ファイル , 新ファイル）

パラメータ：

元ファイル…コピー元となる既存のファイルの名前
新ファイル…コピー先となる新規のファイルの名前

IOCurr

戻り値：

論理値

例：

• True …処理が成功した場合• False …処理が失敗した場合
IOCopy（'MAGIC.FIL','MAGIC.SAV'）では、「MAGIC.FIL」という名前のファイルの内容が、「MAGIC.SAV」という新規のファ
イルにコピーされます。

関連項目：

IODel 、IOExist 、IORen 、IOSize

注意事項：

2 つのパラメータにはそれぞれ、パスを指定することもできます。パスを省略した場合、カレントのディレクトリと解釈されます。

出力中の入出力ファイル番号を取得
現在、出力中の入出力ファイル番号が返ります。［入出力ファイル］テーブルの入出力ファイルの番号が返ります。

422

構文：

IOCurr（ ）パラメータ：なし

戻り値：

数値 …［入出力ファイル］テーブルの入出力ファイルの番号が
返ります。

例：

IOCurr（）
リファレンス
Magic eDeveloper V9 Plus関数の説明（アルファベット順）
注意事項：

IODel

この関数は、実際に入出力ファイルが処理されているときに実行されます。この関数は、［イベント］テーブルの［式］欄で定義します。または、［タスクイベント］テーブルの［アクション］欄で指定しているアクションが「ページヘッダ」または「ページフッタ」の場合に使用します。なお、ページヘッダやページフッタのフォームを、［メディア］欄が［G=GUI 形式プリント］に設定された入出力ファイルに割当てられている場合に限って、この関数から入出力ファイルの番号が返ります。これ以外の場合、この関数からは「0」が返ります。

ファイルの削除（ディスク上）
ディスク上のファイルを削除します。実行後、処理の成功、失敗に応じて、論理値（「True」または「False」）が返ります。
構文：

IODel（ファイル名）

パラメータ：

ファイル名…削除するファイルの名前。このパラメータにはパスを指定することもできます。パスを指定しなかった場合、カレントのディレクトリが使われます。

戻り値：

論理値

例：

• True …処理が成功した場合• False …処理が失敗した場合
IODel（'c:¥MAGIC¥MAGIC.FIL'）では、ドライブ C の「Magic」
ディレクトリにある「MAGIC.FIL」が削除されます。

関連項目：

IOCopy 、IOExist 、IORen 、IOSize

注意事項：

ファイルは、［OS コマンド］処理コマンドを使用して削除することもできますが、できるだけ、この関数を使うようにしてください。
ワイルドカード「*」は使用できません。

IOExist

ファイルの存在の確認（ディスク上）
ドライブとディレクトリを指定し、そのディレクトリにファイルがあるかどうかをチェックします。処理に成功すると「True」、失敗すると「False」が返ります。
構文：

IOExist（ファイル名）

パラメータ：

ファイル名…検索するファイルの名前。パスを指定することもできます。パスを指定しなかった場合、カレントのディレクト
リに対して検索が行われます。

戻り値：

論理値

例：
関連項目：

IORen

• True …ファイルが存在する場合• False …ファイルが存在しない場合
IOExist（'c:¥Magic¥magic.ini'）では、C ドライブの「Magic」ディレクトリに「magic.ini」ファイルがあれば、「True 」が返ります。
IOCopy 、IODel 、IORen 、IOSize

ファイルの名前の変更（ディスク上）
ディスク上のファイルの名前を変更します。
構文：

IORen（元ファイル , 新ファイル）

パラメータ：

元ファイル…名前を変更するファイルの名前
新ファイル…変更後の名前

リファレンス
Magic eDeveloper V9 Plus423

第 8 章 - 関数
戻り値：

例：

IOSize

論理値• True …処理が成功した場合• False …処理が失敗した場合
IORen（'MAGIC.FIL','MAGIC.SAV'）では、「MAGIC.FIL」という名前が「MAGIC.SAV」に変更されます。

関連項目：

IOCopy 、IOExist 、IODel 、IOSize

注意事項：

2 つのパラメータにはそれぞれ、パスを指定することもできます。パスを省略した場合、ディレクトリはカレントのディレク
トリと解釈されます。

ファイルサイズの照会（ディスク上）
ディスク上のファイルのサイズ（バイト数）を返します。

IsComponent

構文：

IOSize（ファイル名）

パラメータ：

ファイル名 … サイズを取り出すファイルの名前。パスを指定することもできます。パスを指定しなかった場合、カレントのディレクトリに対して検索が行われます。

戻り値：

数値

例：

IOSize（'c:¥Magic¥magic.ini'）では、C ドライブの「Magic」ディレクトリの「magic.ini」ファイルのサイズ（バイト数）が返りま
す。

関連項目：

IOCopy 、IODel 、IOExist 、IORen

コンポーネントプログラムのチェック実行されたプログラムやハンドラがコンポーネントアプリケーションのものかホ
ストアプリケーションのものかをチェックします。
構文：

IsComponent ()パラメータ：

なし

戻り値：

論理値

例：

• True … 関数を実行したプログラム（またはハンドラ）がコン
ポーネントアプリケーション内の場合• False … ホストアプリケーションの場合
以下のような場合、「True」が返ります。
• コンポーネントプログラムでこの関数を実行した場合• コンポーネントのタスク前／後でこの関数を実行した場合• ホストアプリケーション側のイベント実行によって、コンポー
ネントアプリケーションのグローバルハンドラが実行され、この関数を実行した場合
以下のような場合、「False」が返ります。
• ホストアプリケーションのプログラムでこの関数を実行した場
合• コンポーネントアプリケーション側のイベント実行によって、ホストアプリケーションのハンドラが実行され、この関数を実行した場合

IsDefault

デフォルト値かどうかのチェック項目の値が、デフォルト値であるかどうかをチェックします。
構文：

IsDefault （項目のシンボル名）

パラメータ：

424

リファレンス
Magic eDeveloper V9 Plus関数の説明（アルファベット順）
項目のシンボル名…デフォルト値であるかどうかをチェックする項目のシンボル名。［項目一覧］で表示される値を指定しま
す。
戻り値：

論理値

例：

• True …項目の値がデフォルト値である場合• False …項目の値がデフォルト値でない場合
IsDefault （'C'VAR）では、項目 C の値がデフォルト値（［カラム特性］ダイアログで指定した値）であるかどうかがチェックさ
れます。

注意事項：

シンボル名には必ず VAR リテラルコードを付加してください。
付加しない場合は正常に動作しません。

IsFirstRecordCycle タスクの最初のレコードサイクルをチェック
タスクの中で最初のレコードサイクルをチェックします。この情報は、タスク前処理の直後にフェッチされたデータの処理や、タスク実行時に一度だけ実行される処
理を行う場合に利用できます。
構文 :IsFirstRecordCycle（タスク番号）

パラメータ :

タスク番号…タスクツリーで示されるタスクの階層的位置を示す数値。「0」はそのタスク自身を、「1」はそのすぐ上位の親タ
スクを指定します。

戻り値 :

論理値
• True …現在のレコードサイクルが最初のものか、タスク前処
理レベルで実行中の場合• False …上記外の場合注意事項 :ISNULL

再表示イベント（ビュー再表示、画面再表示、再表示または、
ユーザー指定やソート処理後の再表示）は、この関数に影響しません。

NULL 値かどうかのチェック
値が NULL 値であるかどうかをチェックします。
構文：

ISNULL（項目のシンボル名）

パラメータ：

項目のシンボル名…チェックする項目のシンボル名。この関数
では、項目のシンボル名にリテラルが使用できません。

戻り値：

論理値

例：
関連項目：

JCall

• True …指定した項目が NULL 値 の場合• False …指定した項目が NULL 値 以外の場合
ISNULL（BE）では、項目 BE の値が NULL のとき「True」が返
ります。
NULL

Java のメソッド呼出Java のインスタンスメソッドを呼び出します。
構文：

JCall ( 疑似参照、メソッド名 , シグニチャ , パラメータ )パラメータ：

疑似参照 … JCreate 関数で取得した疑似参照
メソッド名 … 呼び出すメソッド名
シグニチャ … メソッドに渡すパラメータの型のシグニチャ

リファレンス
Magic eDeveloper V9 Plus425

第 8 章 - 関数
パラメータ … メソッドに渡すパラメータの値
戻り値：

メソッドからの戻り値

例：

JCreate(‘pkg.CLS_A’,’(I)V’,1000) → 変数 A に代入
JCall(A,'increament','(I)Lpkg.CLS_B;',200) → 変数 B に代入'pkg.CLS_A' クラスの 'increment' メソッドは、パラメータ (I) として「200」が渡されます。この戻り値として、新しい疑似参照が
pkg.CLS_B(Lpkg.CLS_B:) クラスに返されます。

JCallStatic

Java のスタティックメソッド呼出Java のスタティックメソッドを呼び出します。
構文：

JCallStatic ( クラス名 . メソッド名 , メソッドのシグニチャ , パラ
メータ )パラメータ：

クラス名 . メソッド名 … 呼び出すメソッド名をクラス名を含めて指定するメソッドのシグニチャ … メソッドに渡すパラメータの型のシグ
ニチャ
パラメータ … メソッドに渡すパラメータの値

戻り値：

メソッドからの戻り値例：

JcallStatic('pkg.A.increament_count','(I)Lpkg.CLS_B;',200) →'pkg.CLS_A' クラスの 'increment_count' メソッド は、パラメータ(I) として 「200」が渡され起動されます。この戻り値として、、
新しい疑似参照が 'pkg.CLS_B' Lpkg.CLS_B; に返されます。

JCDOW

週の曜日名（日本語）を取得
日付から日本語の曜日名（日曜日、月曜日など）を求めます。
構文：

JCDOW（日付）パラメータ：

日付…日付

戻り値：

文字列

例：

JCDOW（'97/11/01'DATE）=' 土曜日 'システム日付が 97/11/03 （YY/MM/DD ）の場合
JCDOW（Date（））=' 月曜日 '補足事項：

JCreate

曜日名を英語で求める場合は、「CDOW」を使用します。

Java のインスタンス作成
Java クラスの新しいインスタンスを作成します。
構文：

JCreate ( クラス名 , コンストラクタのシグニチャ , パラメータ )パラメータ：

クラス名 … インスタンスを作成するクラス
コンストラクタのシグニチャ … コンストラクタに渡すパラメー
タの型のシグニチャ
パラメータ … コンストラクタに渡すパラメータの値

426

戻り値：

新しいインスタンスの疑似参照

例：

Jcreate('pkg.CLS_A','(I)V',1000)
リファレンス
Magic eDeveloper V9 Plus関数の説明（アルファベット順）'pkg.CLS_A' クラスのインスタンスを作成します。

JException

Java の例外処理を返す
現在のコンテキストの最後の例外の疑似参照を返します。
構文：

JException ()パラメータ：なし

戻り値：

BLOB データ…最後の、Java 関数 か EJB 関数の処理中にスローされた最後の例外に対する疑似参照。アクティブにされた場合
は、例外をクリアします。

JExceptionOccurred Java の例外通知
最後の、Java 関数か EJB 関数が例外をスローしたことを通知します。

JExceptionText

構文：

JExceptionOccurred()

パラメータ：

なし

戻り値：

論理値…最後に実行した関数が例外をスローした場合のみ「True」を返します。

例：

JExceptionText() の実行条件に JExceptionOccurred() を指定できます。

Java の例外情報の参照
最後に発生した例外やスタックの任意のバックトレースの内容をテキストで返します。この関数は、最後に実行した Java 関数や EJB 関数の実行中にスローした例
外を参照する場合に使用します。

JExplore

構文：

JExceptionText ( 摘要フラグ )パラメータ：

摘要フラグ … 論理値

戻り値：• True … メッセージとスタックトレースを出力します。
• False … メッセージのみ出力します。
文字列 … エラーメッセージ ( ステータス行にも表示されます。)

Java のクラス表示
Java のクラスを表示します。

JGengo構文：

JExplore( クラス名 )パラメータ：

クラス名 … 表示するクラス名

戻り値：

BLOB データ … クラスの XML 記述

元号名（日本語：平成、昭和、大正、明治）を取得
日付から元号名を求めます。文字数に「1 」が指定されると、元号のシンボル名を返し、「2 」または「4 」が指定されると漢字名を返します。
構文：

JGengo（日付 , 文字数）

パラメータ：

日付…日付
文字数…数値（1,2,4）

戻り値：

文字列

例：
リファレンス
Magic eDeveloper V9 Plus427

第 8 章 - 関数
文字数の指定が「4 」の場合
JGengo（'97/11/01'DATE,4）=' 平成 '文字数の指定が「1 」の場合
JGengo（'97/11/01'DATE,1）='H'

JGet

Java のインスタンス変数を取得
Java のインスタンス変数の値を返します。
構文：

JGet ( 疑似参照、変数名 , 変数のシグニチャ )パラメータ：

疑似参照 … JCreate 関数で取得した疑似参照
変数名 … インスタンス変数名
変数のシグニチャ … 変数の型のシグニチャ

戻り値：

JGetStatic

変数の値。型は、インスタンス変数の書式に依存します。

Java のスタティック変数の値を取得
Java のクラスのスタティック変数の値を返します。
構文：

JGetSstatic( クラス名 . 変数名 , 変数のシグニチャ )パラメータ：

クラス名 . 変数名 … クラス変数の名前
変数のシグニチャ … 変数の型のシグニチャ

戻り値：

JInstanceOf

変数の値。型は、インスタンス変数の書式に依存します。

Java のオブジェクト確認
Java の instanceof 演算子と同じような動作をします。オブジェクトが、特定のクラスのインスタンスを含んでいるかどうかを確認します。
構文：

JInstanceOf ( 疑似参照 , クラス名 )パラメータ：

疑似参照 … 疑似参照を表す BLOB データ
クラス名 … 参照するクラス名を表す文字列

JMonth

戻り値：

論理値…オブジェクトが Null でなく、例外を発生せずにクラスの CAST ができる場合 「True」が返ります。

例：

JInstanceOf(A, 'javax.jms.Message').

月番号の月名（日本語）への変換
月番号（1 〜 12 ）を、対応する月名（1 月〜 12 月）に変換します。

JNDOW

構文：

JMonth（月番号）

パラメータ：

月番号…数値（1 〜 12 ）

戻り値：

文字列

例：

JMonth（5）='_5 月 '（_ は半角スペースを表す）

補足事項：

月名を英語で求める場合は、NMonth 関数を使用します。

関連事項：

NMonth

曜日番号の曜日名（日本語）への変換
週の曜日番号（1 、2 など）を、対応する曜日名（日曜日、月曜日など）に変換します。

428

リファレンス
Magic eDeveloper V9 Plus関数の説明（アルファベット順）

JSet

構文：

JNDOW（曜日番号）

パラメータ：

曜日番号…数値（1 〜 7 ）

戻り値：

文字列

例：

JNDOW（1）=' 日曜日 '補足事項：

曜日名を英語で求める場合は、NDOW 関数を使用します。

関連事項：

NDOW

Java のインスタンス変数の更新
Java のインスタンス変数を更新します。
構文：

JSet ( 疑似参照 , 変数名 , 変数のシグニチャ , 値 )パラメータ：

疑似参照 … JCreate 関数で取得した疑似参照
変数名 … 更新する変数名
変数のシグニチャ … 変数の型のシグニチャ
値 … 更新する値

戻り値：

論理値
• True … 更新が成功した場合• False … 以下の場合に返ります。
• 疑似参照が現在のコンテキストの一部でない場合• 指定した変数が見つからない場合• 値が、シグニチャに基づいて変換できなかった場合

JSetStatic

Java のスタティック変数の更新
Java のスタティック変数を更新します。
構文：

JSetStatic( クラス名 . 変数名 , 変数のシグニチャ , 値 )パラメータ：

クラス名 . 変数名 … クラス変数の名前
変数のシグニチャ … 変数の型のシグニチャ
値 … 更新する値

戻り値：

論理値
• True … 更新が成功した場合• False … 以下の場合に返ります。
• 指定した変数が見つからない場合• 値が、シグニチャに基づいて変換できなかった場合

JYear

日付の年を元号年に変換
日付から元号年を求めます。

KbGet

構文：

JYear（日付）パラメータ：

日付…日付

戻り値：

数値

例：

JYear（'97/09/01'DATE）=9
1997 年は平成９ 年に対応するため、「9 」が出力されます。

直前のキー入力を取得

リファレンス
Magic eDeveloper V9 Plus429

第 8 章 - 関数
直前のキー入力、または、直前のアクション（［キーボード割付］テーブルに定義されているアクション）を文字列で返します。

KbPut

構文：

KbGet（数値）パラメータ：

数値…「0」または「1」。アクションのときは「1」、キーのときは「0」を指定します。

戻り値：

文字列

例：

KbGet（0）では、F2 キーが押されていれば「F2 」という文字列が返ります。

キー入力のシミュレーション
アクションまたはキー操作をシミュレートします。
構文：

KbPut（文字列）パラメータ：

文字列…文字列、キーボードリテラル（KBD ）、アクションリテ
ラル（ACT ）を組み合わせて指定できます。

戻り値：

論理値

例：

• True …処理に成功した場合• False …処理に失敗した場合
KbPut（'F2'KBD&'Exit'ACT&'abcd'）では、まず、F2 キーが押され（シミュレート）、［キーボード割付］テーブルの［アクション］欄に定義されてアクションが実行され、最後に、「abcd」という文字列が入力されます。

注意事項：

KBD と ACT の各リテラルコードを使用して、キーボード値とア
クション値を表すことができます。したがって、KBD と ACT を使うことで、複数のキーボード値とアクション値を指定できます。また、リテラルを使えば、別の言語への移植も便利になります。
この関数で指定した値は、内部キーボードバッファの最後に格納され、値は、その入力が必要になったときに取り出され使われます。このため、この関数を使う場合、タイミングが大切になります。
以上のような理由から、この関数は、［アクション］コマンドで使うようにします。
NumLock 、CapsLock 、ScrollLock などの操作はサポートしてい
ません。

関連項目：

LastPark

リテラル、KbGet

最後にパークしたコントロールの名前を取得
指定タスクのフォーム内で、最後にカーソルがパークしていたコントロール名を返
します。

430

構文：

LastPark（タスク番号）

パラメータ：

タスク番号…タスクツリーで示されるタスクの階層的位置を示す数値。「0」はそのタスク自身を、「1」はそのすぐ上位の親タ
スクを指定します。

戻り値：

ユーザが最後にカーソルをパークしていたコントロール名例：

LastPark（1）親タスクで最後にカーソルがパークしていたコントロール名を返します。
リファレンス
Magic eDeveloper V9 Plus関数の説明（アルファベット順）
関連項目：

LDAPError

CTop 、CLeft 、CTopMDI 、CWidth 、CHeight、CLeftMDI

LDAP サーバのエラーの取得
LDAP サーバの直近のエラーメッセージを返します。関数の有効範囲は、コンテキ
ストごとです。

LDAPGet構文：

LDAPError()

パラメータ：なし

戻り値：

LDAP サーバから直近に返されたエラーメッセージLDAP サーバの検索
LDAP サーバのディレクトリに格納されているユーザー情報を返します。
構文：

LDAPGet( 検索ベース、検索レベル、検索フィルタ、属性、区切り)

パラメータ：

検索ベース…検索の開始点を指定した文字列。空白の場合は、ドメインコンテキストの値が使用されます。
検索レベル…以下に示した検索レベルを指定します。
• B…基本検索 ( 検索ベースで指定したエントリのみ検索します。
)• T…サブツリー検索 ( 検索ベースを含んだサブツリー全体を検索します。)• O…１階層検索 ( 検索ベースの一番直接のサブツリーのみを検索します。)
検索フィルタ…LDAP の検索フィルタを含む文字列 ( 演算子が指定できます。空白を含めないでください。)
属性…必要とされる情報タイプを定義する文字列
区切り…戻り値の値が複数の場合、値と値の間を区切る文字列を指定します。

戻り値：

文字列…要求された情報

例：

LDAP サーバのデータベースに以下のようなデータがあるものとします。
dn: uid=kvaughan, ou=People, o=airius.com
cn: Kirsten Vaughan
sn: Vaughan
givenname: Kirsten
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Human Resources
ou: People
l: Sunnyvale
uid: kvaughan
mail: kvaughan@airius.com
telephonenumber: +1 408 555 5625
facsimiletelephonenumber: +1 408 555 3372
roomnumber: 2871
userpassword: bribery........
LDAPGet('uid=kvaughan,
ou=People,o=airius.com','B','objectclass=person','ou','$$$') は以下の値を返します。
Human Resources,People

リファレンス
Magic eDeveloper V9 Plus

431

第 8 章 - 関数
LDAPGet('ou=People, o=airius.com','O','ou=Human
Resources','mail','$$$') は以下の値を返します。
kvaughan@airius.com$$$........

Left

文字列の左側の文字を取得
文字列の左側にある文字を返します。
構文：

Left（文字列 , 文字数）

パラメータ：

文字列…文字を取り出す文字列
文字数…取り出す文字の数を指定します。この数の文字が、文字列の左側から取り出されます。

Len

戻り値：

文字列

例：

Left（'abcdefg',3）では、「abc」が返ります。

関連項目：

Right 、MID

文字列の長さを取得
文字列の長さ（文字数）を返します。

Level

構文：

Len（文字列）

パラメータ：

文字列…長さを取り出す文字列

戻り値：

長さ（文字数）例：

Len （'abcdefg'）では、「7」が返ります。

注意事項：

文字型の項目に格納されている文字列の長さを取り出したい場
合、Len（RTrim（項目））とします。これで、空白は計算されず、文字の数だけが取り出されます。たとえば、項目のサイズ
が 20 文字で、「John」が格納されていたとします。この場合、Len（RTrim（項目））では、「4」が返ります。

関連項目：

Trim 、RTrim 、LTrim

タスクの実行レベルを照会
タスクの実行レベルをチェックします。
構文：

Level（タスク番号）

パラメータ：

タスク番号…タスクの階層位置を表す番号。カレントのタスクが「0」、親タスクが「1」、その親タスクが「2」などとなりま
す。

戻り値：

文字列…この文字列の意味は次の通りです。
• MP…［メインプログラム］• TP…［タスク前処理］• TS…［タスク後処理］• RP…［レコード前処理］• RM…［レコードメイン］• RS…［レコード後処理］• CP_< コントロール名 >…［コントロール < コントロール名 >前処理 ］• CS_< コントロール名 >…［コントロール < コントロール名 >後処理 ］• GP_< 項目名 > …［グループ < 変数名 > 前処理 ］• GS_< 項目名 >…［グループ < 変数名 > 後処理 ］

432

リファレンス
Magic eDeveloper V9 Plus関数の説明（アルファベット順）

例：• HS_< システムイベント名 >…システムイベントによるハンドラ• HI_< 内部イベント名 >…内部イベントによるハンドラ• HU_< ユーザイベント名 >…ユーザイベントによるハンドラ• HT_< タイマイベント名 >…タイマイベントによるハンドラ• HE_< 式イベント名 >…式イベントによるハンドラ• HR_< エラーイベント名 >…エラーイベントによるハンドラ• NULL または空白…タスクが見つからなかった
Level（x）で、x （タスク番号）が 0 、1 などの場合、Level（1）で 'RP' が返った場合、親タスクのカレントの実行レベ
ルが［レコード前処理］であることが分かります。
また、IF（Level（1）=",' 親タスクが見つかりませんでした ',"）
では、カレントのタスクに親タスクがなかった場合、「親タスクが見つかりませんでした」というメッセージが出力されます。

LIKE

関連項目：

TDepth

注意事項：

同期の 1 対多のタスクでは、［タスク制御］ダイアログの［タスク終了条件］欄に「Level （1）<>’RM’」を指定します。

文字列の比較（パターンマッチング）
文字列が指定したパターンに一致するかどうかを判断し、論理値を返します。
パターンには、通常の文字とワイルドカード文字を含めることができます。次の文字がワイルドカードに使用されます。
• * … 0 個以上の文字列• ? … 1 個の文字
ワイルドカードを通常の文字として比較させる場合には、「¥」をワイルドカードの前に追加する必要があります。
構文：

文字列 LIKE パターン

パラメータ：

文字列…比較の対象となる文字列
パターン…パターンの指定

戻り値：

注意事項：

Line

論理値
• True …パターンに一致する場合• False …パターンに一致しない場合
LIKE を使用して文字列の比較を実行するとき、先頭の空白や末尾の空白も対象となります。

出力ファイルのカレントの行番号を取得
出力ファイルの現在処理中の行番号を返します。
構文：

Line（タスク番号 , ファイル番号）

パラメータ：

タスク番号…タスクの階層位置を表す番号。カレントのタスクが「0」、親タスクが「1」、その親タスクが「2」などとなります。
ファイル番号…指定したタスクの中の入出力テーブルの通し番号

戻り値：

現在の出力行数。出力がテキスト形式の場合、テキストの行が返ります。GUI 出力の場合、出力フォームの寸法単位を使用して現在の出力位置が返ります。

例：
リファレンス
Magic eDeveloper V9 Plus433

第 8 章 - 関数
Line（1,1）では、すぐ上の親タスクの最初の出力ファイルの現在の出力行数が返ります。
関連項目：

LMChkIn

Page

ライセンスのチェックイン
Magic の開発者が、指定されたライセンスのユーザインスタンスの中でチェックイ
ンします。

LMChkOut

構文：

LMChkIn （フィーチャ名）

パラメータ：

フィーチャ名…チェックアウトされたインスタンスの名前を示
す文字列

戻り値：

処理結果を表す数値

関連項目：• 0…成功• 8 …ライセンスのユーザインスタンスのチェックインに失敗しました
LMChkOut

ライセンスのチェックアウト
ユーザが指定されたフィーチャライセンスのユーザインスタンスをチェックアウ
トします。関数の処理が成功した場合、1 ユーザ分のインスタンスがカウントアッ
プされます。インスタンスが最大値に達した場合、以後の関数に対して「7」（チェックアウト失敗）が返ります。
構文：

LMChkOut （ライセンスファイル名 , フィーチャ名 , バージョン）

パラメータ：

ライセンスファイル名…ライセンスファイルあるいはライセン
スサーバの位置を示す文字列ライセンス位置は、アプリケー
ション全体にわたってこの関数を最初に発行した時点で設定されます。
フィーチャ名…フィーチャの名前を指定する文字列
バージョン…指定されたフィーチャのバージョンを指定する文字列

LMUVStr

戻り値：

処理結果を表す数値

関連項目：• 0…成功• 1…ライセンスサーバへの接続の初期化の失敗• 2 …ライセンスファイルが破損しているか存在しません• 3 …フィーチャ名が指定されていません• 4 …指定されたフィーチャは、ライセンスファイル中で存在しません• 5 …フィーチャの有効期限は過ぎました• 6 …指定したフィーチャは、ライセンスサーバのライセンス
ファイル中に存在しません• 7 …ライセンスのユーザインスタンスのチェックアウトに失敗しました
LMChkIn

ユーザライセンスの VENDOR_STRING を取得
LMChkOut関数でユーザによってチェックアウトしたライセンスの
VENDOR_STRING の値を返します。
VENDOR_STRING は、ライセンスファイル内のライセンス項目の一部です。
構文：

434

LMUVStr （）リファレンス
Magic eDeveloper V9 Plus関数の説明（アルファベット順）

LMVStr

パラメータ：なし

戻り値：

文字列…ユーザによってチェックアウトされたライセンスの
VENDOR_STRING が返ります。

例：

LMUVStr（）は、PRODUCT=30,TRANS=50 といったような値が
返ります。

関連項目：

LMVStr、LMChkIn、LMChkOut

VENDOR_STRING を取得
Magic エンジンがチェックアウトしたライセンスの VENDOR_STRING 列を返します。
VENDOR_STRING は、ライセンスファイル内の制限値などのライセンス項目の一
部です。
構文：

LMVStr （）パラメータ：なし

戻り値：

文字列…Magic エンジンによってチェックアウトされたライセン
スの VENDOR_STRING が返ります。

例：

ライセンス名が “MGDEMO“ で動作している場合は、LMVStr（）は、以下のような値が返ります。
PT=MGCSRT,C=3FFFFFF,P=N,MR=300,MC=1\DUP_GROUP=NONE ISSUER="Magic Demonstration"
ck=59 SN=612345675

関連項目：

Lock

LMUVStr、LMChkIn、LMChkOut

リソースをロックする
一定の時間内に一人のユーザのみによって占有される仮想的な要素（リソース）を作成し、テーブルの行やタスクをロックします。
構文：

Lock （リソース , タイムアウト）

パラメータ：

リソース…任意の文字列。長さは 0 〜 128。リソース名はユニー
クでなければいけません。
タイムアウト…リソースが別のユーザによりロックされている場合の待ち時間（秒）。負の値を指定したときは、無制限に待ち
ます。

戻り値：

数値…処理結果を表します。

関連項目：• 0…ロックが成功• 1…同一セッションで同じリソースに既にロックがかかっている場合• 2…別のセッションで同じリソースにロックがかかっていて、待ち時間がタイムアウトを越えた場合（ロックは失敗）
Unlock

注意事項：

通常項目更新の式で設定します。
Lock したリソースは必ず Unlock して解放する必要があります。

LOG

自然対数
指定した数値の自然対数を返します。
構文：

LOG（数値）

パラメータ：

数値…入力数値

リファレンス
Magic eDeveloper V9 Plus435

第 8 章 - 関数

Logon

戻り値：

数値…対数

例：

LOG（2.71828）では、「1」が返ります。

関連項目：

EXP

アプリケーションへのログオン
一時的に指定されたユーザとして現在のアプリケーションにアクセスできます。プ
ログラム終了時には以前のユーザに戻ります。
構文：

Logon （ユーザ ID, パスワード）

パラメータ：

ユーザ ID …ログオンさせるユーザ ID
パスワード…ユーザ ID に対応したパスワード

戻り値：

論理値

例：

• True …処理に成功した場合• False …処理が失敗した場合
Logon （'CARL', 'PASS321'）
この関数は、「設定／ログオン」と同様の動作をします。ただし、Logon 関数ではユーザ名とパスワードをバッチモードで処理します。

LoopCounter

ブロックループ回数の取得
ブロックループ処理時の現在のループ回数を返します。
構文：

LoopCounter( )戻り値：

数値 … 現在のブロックループ回数

例：

ブロックループの 7 回目に LoopCounter() を実行した場合、7 が
返ります。

注意事項：

ブロックループの最初にこの関数が評価された場合、「1」が返ります。ブロックループの外で評価された場合は、「0」が返ります。
ブロックループの中にエラーコマンドを定義する場合は、ブロックループが定義されるハンドラから抜け出せるように考慮
してください。
ブロックループがネストしている場合に実行されると、現在のブロックループ （内側のブロック）のループ回数を返します。
ブロックループの中の既存のブロックオプション ( IF ／ ELSE )で評価されたときは、その時のブロックループのカウンタを返
します。

Lower

大文字を小文字に変換
大文字を小文字に変換します。（全角英文字を含む）

LTrim

436

構文：

Lower（文字列）パラメータ：

文字列…変換する文字列または文字列式（大文字）

戻り値：変換された文字列（小文字）例：

Lower 'JOHN' では、「john」が返ります。

関連項目：

Upper

文字列の左側にある空白を削除
リファレンス
Magic eDeveloper V9 Plus関数の説明（アルファベット順）
文字列の左側の空白（スペース）を削除します。

MailBoxSet

構文：

LTrim（文字列）パラメータ：

文字列…編集対象となる文字列

戻り値：

空白が取り除かれた文字列

例：

LTrim（’ John'）では、「John」が返ります。

関連項目：

RTrim 、Trim

IMAP メールサーバのメールボックス（フォルダ）の切替
現在接続している IMAP メールサーバのメールボックス（フォルダ）を切り替えます
構文：

MailBoxSet（メールボックス名）

パラメータ：

メールボックス名…切り替えたい（既存の）メールボックス（フォルダ）の名前

戻り値：

数値… 指定したメールボックス内にある文書数。処理が失敗した場合は、エラーコードである負数が返ります。

例：

MailBoxSet('Deleted')
実行中のメールボックスとして、「Deleted」を設定します。この関数が発行されたあとに他のメール関数でアクセスする場合は、'Deleted' のメールボックスをアクセスします。

注意事項：

メールボックス名に DBCS コードは使用できません。
また、メールボックスがネストしている場合指定できません。

MailConnect

メールサーバへの接続
この関数でメールサーバに接続します。SMTP サーバは、メールの送信に使用され、（通常は）ユーザ ID やパスワードを必要としません。この関数が、POP3 または、
IMAP サーバに接続される場合は、ユーザ ID やパスワードが必要です。Magic は、
ユーザ ID に対応したサーバのメールボックスに接続され、メールを受け取ります。
接続後にメールサーバが受信したメールは、次に接続処理を行うまで無効です。接
続処理は、送受信のどちらかしか有効になりません。もし、接続処理を２回発行した場合、２回目の接続処理が有効になります。
構文：

MailConnect（タイプ , サーバ , ユーザ ID, パスワード）

パラメータ：

タイプ…数値• 1…SMTP サーバ• 2…POP3 サーバ• 3…IMAP サーバ
サーバ…文字列 メールサーバのアドレス（ポート番号がデフォルトでない場合は、「アドレス：ポート番号」という書式でポー
ト番号を指定します。）
デフォルトのポート番号は以下の通りです。
• SMTP…25• POP3…110• IMAP…220（IMAP3）
ユーザ ID, パスワード…文字列 メールボックスの ID とパスワー
ド

戻り値：

SMTP サーバに接続する場合• 0 … 接続に成功しました。

リファレンス
Magic eDeveloper V9 Plus

437

第 8 章 - 関数
• 負数… 接続に失敗しました。（エラーコード）
POP3/IMAP サーバに接続する場合注意事項：• 0 または正数値…接続に成功しました。正数値の場合、メール
ボックスのメールの数を表します。
• 負数…接続に失敗しました。（エラーコード）
POP3 サーバに接続する場合は、新しいメールのみ受信します。
IMAP サーバの場合は、存在する全てのメッセージを受信します。
ユーザ ID とパスワードの両方が入力されている場合、CRAMMD5 方式 または LOGIN 方式によるユーザ認証を行います。接続しようとする SMTP サーバがこれらのユーザ認証をサポートしていない場合には、「-1」のエラーを返します（この場合、認証は行われません）。
上記ユーザ認証をサポートしていない SMTP サーバに接続しようとする場合、ユーザ ID とパスワードを省略するか戻り値を無視するようにプログラムに組み込む必要があります。

MailDisconnect

メールサーバとの接続を切断
メールサーバとの接続を切断します。
構文：

MailDisconnect（タイプ , 削除フラグ）

パラメータ：

タイプ…数値• 1…メール送信サーバ• 2…メール受信サーバ
削除フラグ…メールボックスのメールを全て削除するかどうかを指定する論理値

戻り値：

数値

注意事項：

• 0 …切断に成功しました。
• 負数…切断に失敗しました。（エラーコード）
POP3 サーバに接続していて、削除フラグ =True で切断した場
合、POP3 サーバに接続したときに受信したメールのみ削除されます。
IMAP サーバの場合は、メールの削除は行われません。
存在しないメールの index を指定して他のメール関数を実行した
場合、メールは削除されません。

MailError

メール関数のエラーメッセージを取得
メール関数から戻されたエラーコードをエラーメッセージに変換します。

MailFileSave

構文：

MailError（エラーコード）

パラメータ：

エラーコード… 数値 メール関数から返されるエラーコード

戻り値：

文字列…エラーメッセージ

添付ファイルの保存
受信メールに添付されているファイルを保存します。

438

構文：

MailFileSave（インデックス , ファイルインデックス , 保存先パス
名 , 上書きフラグ）

パラメータ：

インデックス …メールボックス内のメールのインデックス番号
リファレンス
Magic eDeveloper V9 Plus関数の説明（アルファベット順）
ファイルインデックス…受信メッセージに添付されているファ
イルのインデックス番号
保存先パス名…文字列 ファイル名とパス または パス名のみ
上書きフラグ…同じファイル名が存在する場合に上書きするかどうかを指定する
戻り値：

数値

注意事項：

• 0 … 保存に成功しました。
• 負数… 保存に失敗しました。（エラーコード）
パス名のみ指定した場合、添付時のファイル名で保存されます。
ファイルインデックス = 0 の場合、添付された全てのファイルを指定されたパスに保存します。

MailLastRC

直近のメール関数のエラーを取得
他のメール関数が失敗した場合の最後のエラーを返します。

MailMsgBCC

構文：

MailLastRC()

パラメータ：なし

戻り値：

数値…最後に発生したメール関数でのエラーコード

注意事項：

MailError 関数を使用することで、エラーコードからエラーメッ
セージを取得できます。

BCC アドレスの取得
受信メールの BCC で指定されたアドレスがカンマ区切りの文字列で返されます。

MailMsgCC

構文：

MailMsgBCC（インデックス）

パラメータ：

インデックス …メールボックス内のメールのインデックス番号

戻り値：

文字列…受信メールの BCC で指定されたアドレス

注意事項：

メールヘッダに BCC の記述がある場合に値が返りますが、通常は空白しか返りません。

CC アドレスの取得
受信メールの CC で指定されたアドレスがカンマ区切りの文字列で返されます。

MailMsgDate

構文：

MailMsgCC（インデックス）

パラメータ：

インデックス …メールボックス内のメールのインデックス番号

戻り値：

文字列…受信メールの CC で指定されたアドレス

日付／時刻の取得
受信メールのの日付と時刻の情報を取得します。日付と時刻は文字列で返ります。

MailMsgDel

構文：

MailMsgDate（インデックス）

パラメータ：

インデックス …メールボックス内のメールのインデックス番号

戻り値：

文字列…メールの日付と時刻が組み合わさっています。

メッセージの削除
メールボックスからメッセージを削除します。

リファレンス
Magic eDeveloper V9 Plus439

第 8 章 - 関数
構文：

MailMsgDel（インデックス）

パラメータ：

インデックス …メールボックス内のメールのインデックス番号

戻り値：

数値

注意事項

• 0 … 削除に成功しました。
• 負数… 削除に失敗しました。（エラーコード）
IMAP サーバに対しては即削除されます。
POP3 サーバに対しては、メールサーバから切断した時点で削除されます。

MailMsgFile

添付ファイル名の取得
受信メールに添付されているファイル名を返します。
構文：

MailMsgFile（インデックス , ファイルインデックス）

パラメータ：

インデックス …メールボックス内のメールのインデックス番号
ファイルインデックス …受信メッセージに添付されているファ
イルのインデックス番号

戻り値：

MailMsgFiles

文字列… 受信メールに添付されているファイル名

添付ファイル数の取得
受信メールに添付されているファイルの数を返します。

MailMsgFrom

構文：

MailMsgFiles（インデックス）

パラメータ：

インデックス …メールボックス内のメールのインデックス番号

戻り値：

数値… 受信メールに添付されているファイルの数

FROM アドレスの取得
受信メールの FROM で指定されたアドレスがカンマ区切りの文字列で返されます。

MailMsgHeader

構文：

MailMsgFrom（インデックス）

パラメータ：

インデックス …メールボックス内のメールのインデックス番号

戻り値：

文字列…受信メールの FROM で指定されたアドレス

ヘッダ情報の取得
受信メールのヘッダ情報を取得します。
構文：

MailMsgHeader （インデックス , ヘッダキー）

パラメータ：

インデックス …メールボックス内のメールのインデックス番号
ヘッダキー…ヘッダ情報セグメントに対応した文字列

戻り値：

文字列
• ヘッダキーが空白の場合、ヘッダ情報が含まれた文字列が返ります。
• ヘッダキーが空白でない場合、header-key によって定義されたヘッダセグメントの値が返ります。

MailMsgId

メッセージ ID の取得
受信メールのメッセージ ID を返します。

440

構文：

MailMsgId（インデックス）
リファレンス
Magic eDeveloper V9 Plus関数の説明（アルファベット順）

MailMsgReplayTo

パラメータ：

インデックス …メールボックス内のメールのインデックス番号

戻り値：

文字列…メッセージ ID

REPLAY TO アドレスの取得
受信メールの REPLAY TO アドレスを返します。

MailMsgSubj

構文：

MailMsgReplyTo （インデックス）

パラメータ：

インデックス …メールボックス内のメールのインデックス番号

戻り値：

文字列…受信メールの REPLAY TO で指定されたアドレス

件名の取得
受信メールの件名を返します。

MailMsgText

構文：

MailMsgSubj（インデックス）

パラメータ：

インデックス …メールボックス内のメールのインデックス番号

戻り値：

文字列…受信メールの件名

内容の取得
受信メールの内容を返します。

MailMsgTo

構文：

MailMsgText（インデックス）

パラメータ：

インデックス …メールボックス内のメールのインデックス番号

戻り値：

文字列…受信メールの本文の内容

TO アドレスの取得
受信メールの TO アドレスを返します。

MailSend

構文：

MailMsgTo （インデックス）

パラメータ：

インデックス …メールボックス内のメールのインデックス番号

戻り値：

文字列…受信メールの TO で指定されたアドレス

メールの送信
メールの送信を行います。送信するために必要な全ての情報を指定する必要があります。
構文：

MailSend（From, To, CC, BCC, 件名 , メッッセージ , ファイル ,…）パラメータ：

From… 文字列：送信元のメールアドレス
To…文字列：送信するメールアドレスをカンマ区切りの文字列として指定します。
CC…文字列：CC で送信するメールアドレスをカンマ区切りの文字列で指定します。
BCC…文字列 ：BCC で送信するメールアドレスをカンマ区切りの文字列で指定します。
件名…文字列：メッセージのタイトル。451 文字まで指定できます。

リファレンス
Magic eDeveloper V9 Plus441

第 8 章 - 関数
メッセージ…文字列：メッセージの内容。一行は SBCS だけの場
合は、最大 979 桁です。これを超えると自動的に改行コードを挿入して送信します。DBCS が混在するとそれ以下の桁数で改行されます。
ファイル…文字列：メールに貼り付けるファイルのパスとファイル名。カンマで区切ることで複数のファイル名を指定できます。

MainLevel

戻り値：

数値

注意事項：

• 0 …送信に成功しました。
• 負数…送信に失敗しました。（エラーコード）
半角カタカナは全角に変更して送信します。

タスクの実行レベルを取得
タスクレベルを取得します。Level 関数との違いは、イベントハンドラから実行されたり、イベントハンドラから起動されたタスクから親タスクの実行レベルを参照
した場合の戻り値が異なることです。（Level 関数は、ハンドラ名が返ります。）イ
ベントが非同期か同期化によっても戻り値が異なります。
同期モードのイベントの場合
イベント実行処理コマンドが実行されたタスクレベルが返ります。
例えば、タスク前処理で起動されたイベントよってハンドラが実行されそこで関数が実行されると「TP」が返ります。
非同期モードのイベントの場合
オンラインタスクやブラウザタスクの場合は、「RM」が返ります。バッチタスクの場合は、「RS」が返ります。
構文 :MainLevel（タスク番号）

パラメータ :

タスク番号…タスクの階層位置を表す番号。カレントのタスクが「0」、親タスクが「1」、その親タスクが「2」などとなりま
す。 .

戻り値 :

タスクレベルに応じて以下の文字が返ります。
• RP … レコード前• RM … レコードメイン• RS … レコード後• GP_<Group depth> … グループ前• GS_<Group depth> … グループ後• TP … タスク前
• TS … タスク後

MAX

値を比較し、最大値を取得
複数の値を指定し、その中の最大値を返します。値のデータ型は同じでなければな
りません。
構文：

MAX（値 1, 値 2,... 値 n）

パラメータ：

値 1 …数値、文字列、論理値のいずれか
値 2 …値 1 と同じデータ型の値：：
値 n …値 1 と同じデータ型の値

442

リファレンス
Magic eDeveloper V9 Plus関数の説明（アルファベット順）
戻り値：

最大値

例：

MAX（8,9.2,5,4）では、「9」が返ります。
MAX（'ABC', 'ACD'）では、「ACD」が返ります。

注意事項：

パラメータの数は、最大で 30 個です。
［式］テーブルの式は、展開表示では最後にエリプシス（'...'）が示されますが、このエリプシスはパラメータの数を表しています。
BLOB データは、バイナリデータを数値として比較します。

関連項目：

MAXMagic

MIN 、IF

Magic のウィンドウを最大表示
Magic のウィンドウを最大表示します。

MDate

構文：

MAXMagic（）

パラメータ：

なし

戻り値：

論理値

例：

• True …処理に成功した場合• False …処理に失敗した場合
MAXMagic（）

Magic の日付を取得
Magic の日付（ログオンウィンドウで入力された日付）を返します。
構文：

MDate（）パラメータ：

なし

戻り値：

日付

例：

MDate（）MDate（）+5 では、Magic の日付の 5 日後の日付が返ります。加算または減算する数値は、日数です。

関連項目：

Menu

Date

メニュー経路を取得
カレントのプログラムに至るまでのメニュー経路を返します。カレントのプログラ
ムのメニュー名のほか、それまでのメニュー名も取り出されます。メニュー名は、セミコロン（;）で区切られます。

MenuIdx

構文：

Menu（）

パラメータ：

なし

戻り値：

文字列

例：

Menu（）では、メニュー名がセミコロンで区切られて出力され
ます。

注意事項：

プログラムが開発モードで呼び出されている場合、NULL が返り
ます。

関連項目：

Prog

メニュー番号を取得

リファレンス
Magic eDeveloper V9 Plus443

第 8 章 - 関数
メニュ名からメニュリポジトリ上の（テーブル）番号を返します。ショートカット
メニューを式で動的に指定する場合、メニュー名で指定する必要がある場合は、この関数を利用してください。
構文：

MenuIdx（メニュー名 , 論理値）

パラメータ：

メニュー名…メニューリポジトリに登録された名前
論理値…False（このパラメータは予約値です。必ず「False」を指定してください。）

戻り値：

数値…指定されたメニュー名が登録されているメニューリポジ
トリ上の番号例：

メニューリポジトリに、以下のようにメニューが登録されているものとします。
#1 Default Pulldown menu
#2 Default Context menu
#3 Sample menu

MenuIdx（’Sample’,’False’LOG）では、「3」が返ります。

MID

注意事項：

小野関数は、現在 β 機能です。

関連項目：

タスク特性の［ショートカットメニュー］

文字列中から部分文字列を取り出す
文字列を指定し、その文字列の中の文字を取り出します。取り出す文字の数も指定
できます。
構文：

MID（文字列 , 開始位置 , 文字数）

パラメータ：

文字列…文字を取り出す文字列。
開始位置…文字を取り出す位置。この位置から文字が取り出されます。
文字数…取り出す文字の数を指定します。

MIDV

戻り値

取り出した文字列例：

MID（'John',3,2）では、「hn」が返ります。

関連項目：

Left 、Right、MIDV

文字列中から部分文字列を取り出す
機能は MID 関数と同じですが、全角文字を２分する場合でも半角スペースに置き換えません。
関連項目：

MIN

MID、RepV値を比較し、最小値を取り出す
複数の値を指定し、その中の最小値を返します。値のデータ型は同じでなければな
りません。
構文：

MIN（値 1, 値 2,... 値 n）

パラメータ：

値 1 …数値、文字列、論理値のいずれか
値 2 …値 1 と同じデータ型の値

444

：
：
リファレンス
Magic eDeveloper V9 Plus関数の説明（アルファベット順）
値 n …値 1 と同じデータ型の値
戻り値：

最小値

例：

MIN（8,9.2,5,4）では、「2」が返ります。
MAX（'ABC', 'ACD'）では、「ABC」が返ります。

注意事項：

パラメータの数は、最大で 30 個です。
［式］テーブルの式は、展開表示では最後にエリプシス（'...'）が示されますが、このエリプシスはパラメータの数を表しています。
BLOB データは、バイナリデータを数値として比較します。

関連項目：

MINMagic

MAX、IF

Magic のウィンドウをアイコン化
Magic のウィンドウをアイコン化します。

Minute構文：

MINMagic（）

パラメータ：

なし

戻り値：

論理値

例：

• True …処理に成功した場合• False …処理に失敗した場合
MINMagic（）

時刻の分の値
時刻または時刻式の分が数値で返ります。
構文：

Minute （時刻）パラメータ：

時刻…時刻または時刻式

戻り値：

数値（0 〜 59 ）例：

Minute（'12:15:00'TIME）では、「15」が返ります。
項目 A の値が '12:15:00' の場合、Minute（A）+2 では「17」が返ります。

MlsTrans

注意事項：‘12:15:00' の後の TIME はリテラルコードです。

関連項目：

リテラル、Second 、Hour 、Time

文字列を他の言語に変換
多言語環境で、言語の変換を行います。［言語］テーブルの設定にしたがって変換されます。

MMClear

構文：

MlsTrans （文字列）パラメータ：

文字列…変換する文字列。最大で 32000 文字まで指定できます。

戻り値：

変換された文字列例：

MlsTrans （'Cancel'）

マーク行のクリア
マルチマークされた行をクリアします。
構文：

リファレンス
Magic eDeveloper V9 Plus

MMClear()445

第 8 章 - 関数
パラメータ：

なし

戻り値：

論理値
• True …処理に成功した場合• False …処理に失敗した場合

注意事項：

MMCount

関数が、マークされた行の処理中に実行されると、処理が終了した後にクリアされます。

マーク行数を取得
マルチマークされた行数を取得します。

MMCurr

構文：

MMCount（タスク番号 ）パラメータ：

タスク番号…タスクツリーで示されるタスクの階層的位置を示す数値。「0」はそのタスク自身を、「1」はそのすぐ上位の親タ
スクを表します。

戻り値：

数値…マークされた行数

現在処理中のマーク行を取得
マークされた行の中の現在処理中の行を取得します。

MMStop

構文：

MMCurr（0）パラメータ：

数値…数値…現在のタスクを表す「0」を指定します。

戻り値：

数値…マークされた行の中の現在処理中の行

マルチマークの中断
マルチマークハンドラを中断します。

MnuCheck

構文：

MMStop（）

パラメータ：

なし

戻り値：

論理値

注意事項：

• True …処理に成功した場合• False …処理に失敗した場合
MM イベント内で MMStop の評価後の処理は実行されません。

メニュー項目のチェックマークの表示／非表示を設定
メニュー項目の前のチェックマークの表示／非表示を設定します。
構文：

MnuCheck（論理メニュー名 , 論理値）

パラメータ：

論理メニュー名…［メニュー定義］テーブルの［論理メニュー名］欄の論理メニュー名
論理値…チェックマークの有効／無効を指定します。

戻り値：• True …チェックマークが表示されます。
• False…チェックマークは表示されません。
論理値

例：• True …処理に成功した場合• False …処理に失敗した場合
MnuCheck（'ENTRY','True'）

注意事項：

446

この関数は、トップレベルのプルダウンメニューには使用できません。
リファレンス
Magic eDeveloper V9 Plus関数の説明（アルファベット順）
メニューの階層の検索が行われた後、検索された項目に対して処理が実行されます。

MnuEnabl

メニュー項目の有効／無効を設定
メニュー項目の有効／無効を設定します。
構文：

MnuEnabl（論理メニュー名 , 論理値）

パラメータ：

論理メニュー名…［メニュー定義］テーブルの［論理メニュー名］欄の論理メニュー名
論理値…メニュー項目の有効／無効を指定します。

戻り値：• True …メニュー項目が有効になります。
• False …メニュー項目は無効になります。
論理値例：• True …処理に成功した場合• False …処理に失敗した場合
MnuEnabl（'PROG1','True'）

注意事項：

この関数は、Magic の内部アクションには使用できません。ユー
ザアクションでのみ使用できます。
メニューの階層の検索が行われた後、検索された項目に対して処理が実行されます。

MnuName

メニュー名の変更
指定したメニューのユーザメニュー名を変更します。
構文：

MnuName（論理メニュー名、ユーザメニュー名）

パラメータ：

論理メニュー名…変更したいメニューの論理メニュー名
ユーザメニュー名…置き換えるメニュー名

戻り値：

論理値

例：

• True …処理に成功した場合• False …処理が失敗した場合
MnuName(‘entry_list’,’&Customer list’)•「Customer list」は、変更するメニュー名です。
• 先頭の「&」は、先頭の文字がショートカットキーであることを示します。
•「entry_list」は、論理メニュー名です。

MnuShow

メニュー項目の表示／非表示を設定
メニュー項目の表示／非表示を設定します。
構文：

MnuShow （論理メニュー名 , 論理値）

パラメータ：

論理メニュー名…［メニュー定義］テーブルの［論理メニュー名］欄の論理メニュー名
論理値 …メニュー項目を表示するか否かを指定します。

戻り値：• True …メニュー項目が表示されます。
• False …メニュー項目は表示されません。
論理値• True …処理に成功した場合• False …処理に失敗した場合

リファレンス
Magic eDeveloper V9 Plus447

第 8 章 - 関数
例：

MnuShow（'MENU','True'）

注意事項：

メニューが表示されていないときには、ショートカットキーを使用できるメニュー項目であっても無効になります。
メニューの階層の検索が行われた後、検索された項目に対して処理が実行されます。

Month

日付の月（1 〜 12）を取得
日付の月（1 〜 12）が返ります。

MStr

構文：

Month（日付）パラメータ：

日付…日付

戻り値：

数値（1 〜 12）

例：Month（'1992/01/28'DATE）では、1 が返ります。

注意事項：「1992/01/28」の右の DATE はリテラルコードで、Date（）関数とは異なります。

関連項目：

Day 、Year

数値を文字列（Magic 数字）に変換（長さの指定が可能）
数値を指定された長さ（バイト数）の Magic 数字に変換します。
構文：

MStr（数値 , バイト数）

パラメータ：

数値…文字列に変換される数値
バイト数…変換後の文字列の長さ（バイト数）

MTblGet

戻り値：

Magic 数字に変換された文字列例：

MStr（123456,4）では、数値「123456」が 4 バイトの文字列に変換されます。

注意事項：

この関数は、データを配列で格納したいときに使います。最大
精度は、データ型［数字］（Magic の内部コード）の精度によって決まります。

関連項目：

MVal

メモリテーブルの BLOB 化
メモリテーブルの内容を BLOB データに変換します。
構文：

MTblGet( テーブル番号 , DB テーブル名 )パラメータ：

テーブル番号 … テーブルリポジトリ内のメモリテーブルのテー
ブル番号
DB テーブル名 … （指定された場合）同じテーブル構成の異なるインスタンスを参照します。

戻り値：

メモリテーブルの内容が取り込まれた BLOB データ。メモリ
データベース以外のテーブル上で行われた場合、Null 値を返し
ます。

注意事項：

BLOB データ項目の内容は、テーブルの最後にコミットされたト
ランザクションの前に存在するメモリテーブル内容です。
DB テーブル名前パラメータ ( これによって別のテーブルを参照
することが可能です ) で指定されたテーブルが、実行中のタスク
でオープンされていると処理できません。

448

リファレンス
Magic eDeveloper V9 Plus関数の説明（アルファベット順）

MTblSetBLOB の内容をメモリテーブル化（MTblGet で作成された）BLOB 項目の内容をメモリテーブルに展開します。
構文：

MTblSet ( BLOB データ、テーブル番号、DB テーブル名、モード)

パラメータ：BLOB データ … メモリテーブルの内容を含んだ BLOB データ
テーブル番号 … テーブルリポジトリでのメモリテーブルの番号
DB テーブル名 … （指定された場合）同じテーブル構成の異なる内容を参照します。
モード … メモリテーブルを更新する場合のモードを指定します。
以下のモードがあります。
• 0 … 重複レコードがある場合、アボートします。BLOB データ
から新規レコードを追加しますが、重複レコードが見つかった
場合、処理が中断され全ての追加レコードは破棄されます。
• 1 … 重複レコードがある場合、スキップします。BLOB データ
から新規レコードを追加し、重複レコードが見つかった場合、次のレコードの処理に移ります。
• 2 … 重複レコードがある場合、上書きします。BLOB データから新規レコードを追加し、重複レコードが見つかった場合、最新のデータで更新します。
• 3 … 既存のテーブルを初期化します。既存のテーブルの内容が削除され新しく作り直されます。
上記以外の値が指定された場合は、「0」と見なされます。

戻り値：

注意事項：

数値 … 正常に終了した場合は 0 が返ります。それ以外の場合、
以下のような負数が返ります。
• -1 … 重複インデックスが発生した（モードが「0」の場合）• -2 … メモリテーブル構造が パラメータの BLOB データによって供給されたテーブル構造と合っていない• -3 … 指定したテーブルがメモリテーブルではない• -4 … メモリテーブルが他の理由で更新できなかった• -5… 既存のテーブルが削除できなかった（モードが「3」の場
合）関数の実行中に発生した全ての DB エラーは、テーブル内容の終りまでスキップされます。
現在のタスクのトランザクション設定に関係なく、ネストトラ
ンザクションとして、メモリテーブルが更新実行されます。これは、関数が終了したとき、全ての追加レコードがコミットされることを意味します。
この関数は、メモリテーブル構造と BLOB データの内容の構造の整合性を確認します。テーブル構造は、カラムの順番、数、型のみ比較され、インデックスや外部キーはチェックされません。
DB テーブル名前パラメータ ( これによって別のテーブルを参照
することが可能です ) で指定されたテーブルが、実行中のタスク
でオープンされていると処理できません。

mTime

システム時刻の取得（ミリ秒単位）
現在の時間をミリ秒単位で返します。
構文：

mTime()

パラメータ：なし

戻り値

数値 … 現在の時刻を表す数値をミリ秒単位で返します。

リファレンス
Magic eDeveloper V9 Plus449

第 8 章 - 関数

mTStr

例：

時刻が、02:30:21.5am の時に mTime() を実行すると「9021500」を返します。

注意事項：

戻り値は、時刻型ではなく数値型の項目で行ってください。

時刻を文字列に変換（ミリ秒単位）
書式に基づいてミリ秒の時間値を文字列に変換します。
構文：

mTStr( 時間値、書式 )パラメータ：

時間値 … ミリ秒数を表す数値
書式 … 変換する書式。この書式に基づいて、文字列に変換しま
す。

戻り値：

文字列 … 指定した書式に基づいた時間値

例：

mTStr(52221123, 'HH:MM:SS.mmm' ) は、文字列「14:30:21.123」
を返します。
mTStr(52221123, 'HH:MM:S) は、文字列「14:30:21」を返します。

mTVal

文字列を時刻に変換（ミリ秒単位）
書式に基づいて文字で表されたミリ秒値を数値に変換します。
構文：

mTVal( 文字列、書式 )パラメータ :

文字列 … 変換する文字列。例：'02:30:00.123 PM'
書式 … 変換する書式。この書式に基づいて変換されます。

戻り値：

数値 … 時間値を表す数値（ミリ秒単位）

例：

mTVal('14:30:21.123','HH:MM:SS.mmm' ) は、14:30:21.123 のミリ秒数である数値「 52221123」を返します。
mTVal('14:30:21.123', 'HH:MM:S) は、「52221000」を返します。

注意事項：

MVal

戻り値は、時刻型ではなく数値型の項目で行ってください。

文字例（Magic 数字）を数値に変換（長さの指定が可能）
Magic 数字（内部コード）を数値に変換します。

NDOW

構文：

MVal（文字列）

パラメータ：

文字列…Magic 数字形式の文字列

戻り値：

数値

例：

MVal（MStr（1234,4））では、「1234」が返ります。

関連項目：

MStr

曜日番号の曜日名（英語）への変換
曜日番号（1 、2 など）を曜日名（Sunday 、Monday など）に変換します。

450

構文：

NDOW（曜日番号）

パラメータ：

曜日番号…曜日を示す番号

戻り値：

文字列…曜日名例：

NDOW（1）では、「Sunday」が返ります。

リファレンス
Magic eDeveloper V9 Plus関数の説明（アルファベット順）
NDOW（DOW（'1992/01/28'DATE））では、「Tuesday」が返ります。

NMonth注意事項：

曜日番号として「7」より大きい番号を指定した場合、7 が差し引かれます（たとえば、0 、7 ，14 ではすべて、「Sunday」が返
ります）。

補足事項：

曜日名を日本語で求める場合は、JNDOW 関数を使用します。

関連項目：

DOW 、CDOW、JNDOW

月番号の月名（英語）への変換
月番号（1 、2 など）を月名（January 、February など）に変換します。
構文：

NMonth（月番号）

パラメータ：

月番号…月を示す番号（1 〜 12）

戻り値：

文字列…月名例：

NMonth（1）では、「January」が返ります。
NMonth（Month（'1992/01/28'DATE））では、「January」が返りま
す。

NULL

補足事項：

月名を日本語で求める場合は、JMonth 関数を使用します。

関連項目：

Month 、CMonth 、NDOW、JMonth

NULL に設定
項目の値を NULL に設定できます。
構文：

NULL（ ）

注意事項：

この関数にパラメータはなく、必要に応じて実行し、項目の値
を NULL 値にすることができます。なお、データベースゲート
ウェイで NULL 値がサポートされていない場合、この関数は使用できません。
この関数は、NULL 値に関連する算術計算を行うときに使います。たとえば、項目（列）レベルまたはアプリケーションレベ
ルで NULL 値を使った計算を行う場合に利用できますし、また、計算結果を NULL 値にするときにも使用できます。
NULL 値が許可されていない場合、項目（列）の値は NULL にできません。NULL 値の許可については、第 4 章「テーブル」の「カラム特性」を参照してください。

OEM2ANSI

OEM コードから ANSI コードに変換
OEM 文字セットの文字列を ANSI 文字セットに変換します。

OSEnvGet

構文：

OEM2ANSI （文字列）パラメータ：

文字列…変換する文字列

戻り値：

変換された文字列

注意事項：

日本語環境においては、この関数を使用する必要はありません。

関連項目：

ANSI2OEMOS の環境変数の取得
OS の環境変数の値を取得します。

リファレンス
Magic eDeveloper V9 Plus451

第 8 章 - 関数

OSEnvSet

構文 :OSEnvGet（環境変数名）

パラメータ :

環境変数名 … OS の環境変数名を表す文字列

戻り値 :

文字列 … 指定した環境変数の値。環境変数が指定されていない
場合、空白が返ります。

例:

OSEnvGet（‘PATH’）… 「PATH」という環境変数の値が返りま
す。

関連項目：

OSEnvSet

OS の環境変数の設定
OS の環境変数を設定します。この設定内容は、Magic のプロセスを終了するまで有
効です。
構文 :

OSEnvSet（環境変数名 , 値）

パラメータ :

環境変数名 … OS の環境変数名を表す文字列
値 … 環境変数として設定する値

戻り値 :

論理値 … 「True」が返ります。

例:

OSEnvSet（‘PATH’,’C:¥Program Files¥Dev;C:¥winnt¥system32’）「PATH」という環境変数に「C:¥Program
Files¥Dev;C:¥winnt¥system32」という値を設定します。

関連項目：

Owner

OSEnvGet

オーナー名を取得［動作環境］ダイアログの［オーナー名］欄に設定されている現在の値を取り出します。取り出される文字列のサイズは 30 文字です。

Page

構文：

Owner（）パラメータ：

なし

戻り値：

文字列

例：

Owner（）では、オーナー名（文字列）が返ります。

注意事項：

オーナー名は、この関数のほか、INIGet 関数を使用して取り出すこともできます。ただし、INIGet 関数ではオーナー名はディ
スクから取り出されるのに対して、この Owner 関数ではメモリ上のオーナー名が返ります。このため、Owner 関数のほうが処理速度は高速です。

関連項目：

INIGet

出力ファイルのページ番号を取得
入出力ファイルのカレントのページ番号を取り出します。
構文：

Page（タスク番号 , 出力ファイル番号）

パラメータ：

タスク番号 … タスクの階層位置を表す番号。カレントのタスクが「0」、親タスクが「1」、その親タスクが「2」などとなります。
出力ファイル番号 … 指定したタスクの出力ファイルの番号

戻り値：

数値…ページ番号例：452

リファレンス
Magic eDeveloper V9 Plus関数の説明（アルファベット順）
Page（1,1）では、すぐ上の親タスクで最初の出力ファイルのページ番号が返ります。
関連項目：

ParamsPack

Line

グローバル変数のパッケージ化（SetParam 関数で設定された）グローバル変数を BLOB データにパッケージ化します。BLOB データは、他のコンテキストやプロセスでParamsUnpack 関数を使ってグローバル変数に変換できます。

ParamsUnPack

構文 :ParamsPack ()パラメータ：

なし

戻り値：

パッケージ化した BLOB データを返します。

関連項目：

ParamsUnPack（パッケージ化された）グローバル変数の取り出し
ParamsPack 関数で作成された BLOB データをグローバル変数に変換します。グロー
バル変数の値は、GetParam 関数で参照できます。

PPD

構文：

ParamsUnpack ( パッケージ )パラメータ：

パッケージ … ParamsPack 関数で作成された BLOB データ

戻り値：

論理値 … 常に「True」を返します。

例：ParamsUnpack(A) は、項目 A という BLOB データをグローバル変数に変換します。

注意事項：

現在のコンテキストに同じ名前のグローバル変数がすでに存在している場合は、変換する値で上書きされます。

関連項目：

ParamsPack

プロテクションデバイスを読み込む
プロテクションデバイスを使用する場合に、アプリケーション内でプログラムされたプロテクションデバイスコードを読み込みます。

Pref

構文：

PPD（）

パラメータ：なし

例：

PPD（）では、PPD コードを含む、10 文字の文字列が返されま
す。

注意事項：

この機能は日本語版ではサポートされていません。

アプリケーションの識別子を取得
アプリケーションの識別子（前付符号）が返ります。この識別子は、［アプリケー
ション］テーブルに定義されているもので、パスが定義されていれば、そのパスも取り出されます。
構文：

Pref（）

パラメータ：

なし

戻り値：

アプリケーションの識別子（文字列）例：

アプリケーションの識別子が「AP 」で、そのアプリケーションが C:¥APPL に置かれている場合、Pref（）からは「C:¥APPL¥AP」が返ります。

リファレンス
Magic eDeveloper V9 Plus453

第 8 章 - 関数
関連項目：

Prog

Sys

タスクのパスを取得
カレントのタスクのパスを取り出せます。実行後、そのタスクのパスとタスク名が文字列で返ります。パスのタスク名はセミコロン（;）で区切られます。

ProgIdx

構文：

Prog（）

パラメータ：なし

戻り値：

タスクの実行パス（文字列）例：

Prog（）では、たとえば「販売受注書（顧客別）; 顧客（ヘッダ）; 受注行」というような名前が返ります。

関連項目：

Menu

プログラム番号の取得
コール式コマンドで使用されるプログラムリポジトリ番号を取得します。
構文：

ProgIdx （プログラム名 , 種別）

パラメータ：

プログラム名…プログラムリポジトリ上のプログラム名
種別…プログラム名の種別（論理値）

戻り値：• True …公開プログラム名を示します• False …プログラム名を示します
数値…プログラムリポジトリ上の番号

例：

ProgIdx（' 計算 ','False'LOG）
ProgIdx（A,'True'LOG）：A は文字項目です。

RAND

乱数を生成
乱数を生成できます。

Range

構文：

RAND（開始番号）

パラメータ：

開始番号…乱数の生成に使われるシード値

戻り値：

乱数…1 未満の小数値で返ります。

例：• 開始番号が「-1 」の場合、シード値自体が乱数となります。
• 開始番号が「n 」の場合（n は、0 または -1 以外）、シード値がn になります。
• 開始番号が「0 」の場合、既存のシード値をもとに次の乱数が生成されます。
したがって、既存のシード値をもとに乱数を生成したい場合、RAND（0）を使います。

範囲チェック
値と範囲を指定し、その値が指定した範囲にあるかどうかをチェックできます。結果は、論理値で返ります。
構文：

Range（値 , 下限値 , 上限値）

パラメータ：

値…チェックの対象
下限値…範囲の下限となる値
上限値…範囲の上限となる値

戻り値：

454

論理値
リファレンス
Magic eDeveloper V9 Plus関数の説明（アルファベット順）

Rep

例：

• True …値が指定した範囲内にある場合（境界値を含む）• False …値が指定した範囲内にない場合
Range（10,5,15）では、「True」が返ります。

関連項目：

MIN、MAX

注意事項：

MIN や MAX と同じく、この関数でも、任意のデータ型の値が指定できます。ただし、値、下限値、上限値の各パラメータのデータ型はすべて同じでなければなりません。BLOB データは、すべて「False」が返ります。

文字列内の部分文字列の置き換え
文字列中の位置と文字数を指定し、その部分を別の文字列に置き換えます。
構文：

Rep（文字列 1, 文字列 2, 位置 , 文字数）

パラメータ：

文字列 1 …文字列または文字列式で、この文字列の中の文字列が置き換えられることになります。
文字列 2 …文字列または文字列式で、この文字列が挿入されます。
位置…［文字列 1 ］上の位置で、この位置から置き換えが始まります。
文字数…置き換えられる文字の数で、この数の文字が置き換えの対象となります。
置き換えは、［位置］パラメータで指定された位置から始まりま
す。

RepV

戻り値：

置き換え後の文字列例：

Rep（'12345','abcde',3,2）では、「12ab5」が返ります。

関連項目：

RepV

文字列内の部分文字列の置き換え
機能は Rep 関数と同じですが、全角文字を 2 分しても半角スペースに置き換えませ
ん。
関連項目：

RepStr

Rep、MIDV

文字列内の特定文字列を検索して置き換え
文字列内にある特定の部分文字列を検索し、別の文字列に置き換えます。
構文：

RepStr（ 文字列 , 検索文字列 , 置換文字列）

パラメータ：

文字列…対象となる文字列
検索文字列…この文字列で検索します。
置換文字列…この文字列で置き換えます。

戻り値：

置き換え後の文字列

例：

RepStr（'BB//CC//DD//EE','//','==',）では、'BB==CC==DD==EE' が
返ります。

注意事項：

元の部分文字列と新しい部分文字列は文字列の長さが異なっていても構いません。
新しい文字列が元の文字列より短い場合には、置き換え後の文字列は置き換え前よりも短くなります。
逆に、新しい文字列が元の文字列よりも長い場合には、置き換
え後の文字列は置き換え前よりも長くなります。

リファレンス
Magic eDeveloper V9 Plus455

第 8 章 - 関数

ResMagic

Magic ウィンドウのサイズを通常サイズに戻す
Magic のウィンドウを通常サイズに変更できます。
構文：

ResMagic（）

パラメータ：

なし

戻り値：

論理値
• True …処理に成功した場合• False …処理に失敗した場合

Right

文字列の右側から文字を取り出す
文字列の右側にある文字を取り出します。
構文：

Right（文字列 , 文字数）

パラメータ：

文字列…文字を取り出す文字列
文字数…取り出す文字の数を指定します。この数の文字が、文字列の右側から取り出されます。

RightAdd

戻り値：

文字列

例：

Right（'abcdefg',3）では、「efg」が返ります。

注意事項：

この関数では、文字列として文字列項目を指定した場合、その項目の長さ全体に対して働きます。たとえば、項目 A の長さが20 文字で、この項目に「abcdefg」という文字列が入っていた場
合、Right（A,3）では '' が返ります（20 文字のうち、「abcdefg」の右側はすべて空白のためです）。このため、実際の文字列の右側から文字を取り出したいときには、Right（RTrim（A）,3）と
します。

関連項目：

Left、MID、RTrim

セキュリティファイル上のユーザに権利を割当てる
セキュリティファイルに定義されているユーザに対して権利を割当てることがで
きます。
構文：

RightAdd（ユーザ , 権利）

パラメータ：

ユーザ…ユーザを指定します。このユーザに、［権利］パラメー
タで指定した権利が割当てられます。
権利…ユーザに割当てる権利を指定します。

戻り値：

例：
注意事項：

Rights

論理値• True …処理に成功した場合• False …処理に失敗した場合
RightAdd（'Accountant', 'Issue Invoice'）では、「Accountant」というユーザに対して「Issue Invoice」という権利が付与されます。
この関数は、SUPERVISOR ユーザだけが使用できます。

ユーザに権利が付与されているかどうかの照会
権利を指定し、その権利がユーザに与えられているかどうかをチェックできます。
指定した権利が与えられていない場合、「False」が返ります。

456

構文：

Rights（' 文字列 'RIGHT）

パラメータ：

文字列…権利の名前で、RIGHT リテラルコマンドを付加します。

戻り値：

論理値
リファレンス
Magic eDeveloper V9 Plus関数の説明（アルファベット順）

例：

Rollback• True …指定した権利が付与されている場合• False …権利が付与されていない場合
Rights（'right #4'RIGHT）では、ユーザに「right #4」という権利が与えられていれば、「True」が返ります。

注意事項：‘RIGHT’ はリテラルコードです。

関連項目：

リテラル、RightAdd 、User

トランザクションのロールバック
ネストレベルを指定し、その位置までトランザクションをロールバックできます。
構文：

Rollback（論理値 , ネストレベル）

パラメータ：

論理値…確認メッセージの表示の有無を指定します。
• True…ロールバックの際に「トランザクションをロールバッ
クしますか？」という確認メッセージが表示されます。
• False…ロールバックの際に確認のメッセージは表示されません。
ネストレベル…数値。ネストレベルとは、どのレベルのセーブ
ポイントまでロールバックするかを示す以下の数値です。

戻り値• 1…最も内側のセーブポイントまでロールバックします。
• 2…最も内側のセーブポイントとすぐ上位のセーブポイントまでロールバックします。
• 0…最も外側のセーブポイントまでロールバックします。
論理値例：• True…トランザクションがロールバックされた時• False…トランザクションがアボートされた時
Rollback（'True'LOG,0）

注意事項：

この関数は、物理トランザクションモードの場合、使用するDBMS に対してトランザクションの破棄を行います。遅延トラ
ンザクションモードの場合、Magic エンジンのデータ処理内でトランザクションの破棄を行います。
ネストレベルは、遅延トランザクションの場合はネスト遅延を設定したレベルで制御できます。一方、物理トランザクションの場合は、もっとも外側のレベルのみサポートしています。
ロールバック先に指定できるセーブポイントはプログラム内にあるものに限られます。現在のプログラム外のレベルにロールバックする数は指定しないでください。
通常、「トランザクションロールバック」は、データベースエ
ラーまたはシステムクラッシュのために用意されていますが、
アプリケーションに関連する例外状況の処理にも役立ちます。
たとえば、財務トランザクションを処理するバッチプログラムがあり、現在、マスターレコードの残高の更新が行われていたとします。更新時、カレントのトランザクションレコードの読込後、通常は ¥5,000 から ¥100,000 までの間にある残高が¥10,000,000 を超えていました。この場合、数字が余りにも大きく、間違いである可能性もあることから、マスターレコードや関連レコードを更新しない場合があります。こういったときには、残高をチェックする条件付きの［アクション］コマンドで
Rollback 関数を使うことで、このような状況に対して対処が可能になります。

Round

数値の四捨五入リファレンス
Magic eDeveloper V9 Plus457

第 8 章 - 関数
数値の一部を取り出し、その結果を四捨五入します。
構文：

Round（数値 , 整数部桁数 , 小数部桁数）

パラメータ：

数値…処理の対象となる数値
整数部桁数…整数のうち、取り出したい桁の数を指定します。
指定した数の桁は、小数点から左に向かって取り出されます。
小数部桁数…小数のうち、取り出したい桁の数を指定します。
指定した数の桁は、小数点から右に向かって取り出されます。

RqCtxInf

戻り値：

数値…取り出される小数部で一番右の次の桁が四捨五入され、その結果が返ります。

例：

Round（345.995,2,2）では、「46.00」が返ります。

関連項目：

Fix

コンテキスト情報の取得
コンテキスト ID に対応したコンテキストの情報を返します。
構文：

RqCtxInf（サービス / サーバ名 , コンテキスト ID, Password
Query）

パラメータ：

サービス / サーバ名…サービス名またはサーバ名を表す文字列
コンテキスト ID…コンテキスト ID を表す文字列
Password Query…Mgrb.ini ファイルに設定された Password Query

戻り値：

文字列…以下の情報が、カンマ区切りの文字列で返ります。

例：• アプリケーションサーバ…このコンテキストを処理しているア
プリケーションサーバのホスト名とポート番号• アプリケーション名…コンテキストがオープンしているアプリ
ケーション名• プログラム名…コンテキストが実行したプログラム名
RqCtxInf（'My Service','1324543108','MY PASS'）
この例では、指定されたコンテキストの情報が以下のように返ります。
machine1/1607,My Application,My Program

注意事項：

RqCtxTrm

RqCtxInf 関数は、ブラウザタスクのリクエストのみ有効です。
ブラウザタスクでオープンされたコンテキストのみがリクエス
トを保存するからです。他のタイプのリクエストのコンテキス
トはリクエストが処理された時点で終了してしまいます。

コンテキストの終了
コンテキストを終了させます。コンテキストは、RqRtCtxs 関数によって取得した番号を指定します。
構文：

RqCtxTrm（サービス / サーバ名 , コンテキスト番号 , Supervisor
パスワード）

パラメータ：

サービス / サーバ名…サービス名またはサーバ名を表す文字列
コンテキスト番号…RqRtCtxs 関数で取得したコンテキスト番号（RqRts 関数をまず呼ぶ必要があります。）
Supervisor パスワード…MRB のスーパーバイザパスワードを定義する文字列（MGRB.INI の「PasswordSupervisor」の指定内容）

戻り値：

458

論理値
リファレンス
Magic eDeveloper V9 Plus関数の説明（アルファベット順）

例：• True…処理に成功した場合• False…処理に失敗した場合
RqCtxTrm （'My Service',14,'MY PASS'）
この例では、RqRtCtxs 関数で取得した 14 番目のコンテキストを終了させます。

RqExe

リモートエンジンのロード
MRB が起動しているコンピュータにリクエストを送り、指定された実行可能エン
ジンをロードするように指示します。
構文：

RqExe （サービス / サーバ名 , 実行登録名 , 引数 ,Supervisor パス
ワード）

パラメータ：

サービス / サーバ名…［サービス／サーバ］テーブルに登録されている［サーバ／サービス］名
実行登録名…MGRB.INI ファイル内の［MRB EXECUTABLES LIST］または［MRB REMOTE EXECUTABLES LIST］セクションに設定された実行ファイルリストを表す文字列。
引数…ロードする実行ファイルのオプションの引数（例 : /Star-tApplication=5 ）。
Supervisor パスワード…MRB のスーパーバイザパスワードを定義する文字列（MGRB.INI の「PasswordSupervisor」の指定内容）

戻り値：

論理値

例

• True …処理に成功した場合• False …処理に失敗した場合
RqExe （'Default Broker','Online','/StartApplication=5','Secret'）

注意事項：

RqHTTPHeader

MRB は、実行可能ファイルを非同期コールでロードします。このため、MRB に対するアクセスが許可され、実行可能ファイル
が読み込み可能の状態になったときに、戻り値が返ります。

HTTP リクエストのヘッダ情報を設定
バッチプログラムが HTTP リクエスタを送信する際の HTTP ヘッダ情報を設定します。
構文：

RqHTTPHeader( ヘッダ文字列 ,[ ヘッダ文字列 ]…)パラメータ：

ヘッダ文字列… HTTP ヘッダー情報を表わす文字列
次のような書式にしてください。
[ タイプ ]:[ 値 ]（例 :「Content-type: application/pdf」は、リクエスタの出力が PDF
フォーマットでのデータであることを示しています。）

戻り値：

論理値

例

• True …処理に成功した場合• False …処理に失敗した場合（書式が間違っている場合）
File2Req 関数を使用して PDF ファイルを POST するためには、送信するリクエストの HTTP ヘッダーを RqHTTPHeader('Contenttype: application/pdf') として定義してください。

注意事項：

リファレンス
Magic eDeveloper V9 Plus459

第 8 章 - 関数
リクエストが完了直後で、出力がリクエスタに返される時点でリクエストの HTTP ヘッダが設定されます。これは、リクエス
トの処理フローのどの段階でも RqHTTPHeader 関数が実行できることを意味します。
最後に実行された RqHTTPHeader 関数が有効になります。次のリクエストは、前のリクエストでのこの関数の実行結果に影響されることはありません。

RqLoadリクエスタのロードサービスの起動に関する統計情報を提供します。
構文：

RqLoad （サービス / サーバ名 , 参照用パスワード）

パラメータ：

サービス / サーバ名…［サービス／サーバ］テーブルに登録されている［サーバ／サービス］名
参照用パスワード…MRB の参照用パスワードを定義する文字列（MGRB.INI の「PasswordQuery」の指定内容）

戻り値：

例：
注意事項：

RqQueDel

文字列…情報がカンマで区切られた文字列で返ります。情報の種類と形式は次のとおりです。
• 平均待ち時間…小数点以下が 2 桁の浮動小数点数値• リクエストの合計数…数値• 保留 / 待ち行列内のリクエスト数…数値• 処理中のリクエスト数（実行時）…数値• 実行済みのリクエスト数…数値• 実行に失敗したリクエスト数…数値
RqLoad（'Default Broker','Secret'）
サービス名が不適当な場合、処理に失敗するとともに空白の文字列が返ります。また、パスワードが参照用のパスワードでなかったときには、処理に失敗します。

リクエスタのキューの削除
サービスキューのエントリを削除します。
構文：

RqQueDel （サービス / サーバ名 , リクエスト ID,Supervisor パス
ワード）

パラメータ：

サービス / サーバ名…［サービス／サーバ］テーブルに登録されている［サーバ／サービス］名リクエスト ID …キュー上のエントリを示す文字型の数値
Supervisor パスワード…MRB のスーパーバイザパスワードを定義する文字列（MGRB.INI の「PasswordSupervisor」の指定内容）

戻り値：

論理値

例

• True …処理に成功した場合• False …処理に失敗した場合
RqQueDel （'Default Service', BA, 'Secret'）
上記の場合、変数項目 BA のリクエスト ID を使用して、削除が実行されます。

注意事項：

460

サービス名やリクエスト ID が不適当な場合、処理に失敗するとともに「False 」が返ります。スーパーバイザパスワードを空白の文字列にしたときには、カレントのユーザに関連するエント
リだけが削除されます。パスワードがスーパーバイザのパス
ワードでなかったときには、処理に失敗します。
リファレンス
Magic eDeveloper V9 Plus関数の説明（アルファベット順）

RqQueLst

リクエスタのキュー一覧を取得
キューで待機状態にあるエントリの数を取得します。
構文：

RqQueLst （サービス / サーバ名 ,Supervisor パスワード）

パラメータ：

サービス / サーバ名…［サービス／サーバ］テーブルに登録されている［サーバ／サービス］名Supervisor パスワード…MRB のスーパーバイザパスワードを定義する文字列（MGRB.INI の 'PasswordSupervisor' の指定内容）

RqQuePri

戻り値：

指定したサービスのキューで待機状態にあるキューの数例：

RqQueLst（'Default Broker'，'Secret'）

リクエスタのキューの優先順位を変更
キューで待機状態にあるリクエストの優先順位を変更します。
構文：

RqQuePri（サービス / サーバ名 , リクエスト ID, 新優先順位,Supervisor パスワード）

パラメータ：

サービス / サーバ名…［サービス／サーバ］テーブルに登録されている［サーバ／サービス］名リクエスト ID …キュー上のエントリを示す数値
新優先順位…新規（変更後）の優先順位を示す数値（0 〜 9）Supervisor パスワード…MRB のスーパーバイザパスワードを定義する文字列（MGRB.INI の「PasswordSupervisor」の指定内容）

戻り値：

論理値

例：

• True …処理に成功した場合• False …処理に失敗した場合
RqQuePri（'Default Broker', BA, C）
上記では、変数項目のリクエスト ID を使用して処理が行われます。このリクエスト ID は、［コールリモート］コマンドで返っ
た値です。

注意事項：

RqReqInf

サービス名やリクエスト ID 、新優先順位が不適当な場合、処理に失敗するとともに「False 」が返ります。パスワードがスーパーバイザのパスワードでなかったときには、処理に失敗します。

リクエスタのリクエスト ID 情報を取得
キューまたは MRB の履歴ログから作られるリストによって、リクエスト ID 情報を取得します。この関数を呼ぶ前に、RqQueLst または RqReqLst が呼ばれている必要が
あります。
構文：

RqReqInf （サービス / サーバ名 , 登録番号）

パラメータ：

サービス / サーバ名…［サービス／サーバ］テーブルに登録されている［サーバ／サービス］名
登録番号…キューのエントリを示す数値。この値は、1 から、
RqQueLst か RqReqLst のどちらかが返すエントリ数までにする必要があります。

戻り値：

文字列…カンマで区切られた、以下の情報が返ります。
• アプリケーション名…リクエストに関連するアプリケーションの名前• プログラム名…実行されるプログラムの公開プログラム名

リファレンス
Magic eDeveloper V9 Plus461

第 8 章 - 関数

例：

注意事項：

• ユーザ名…アプリケーションにアクセスを行うユーザの名前• 優先順位…実行の優先順位• 送信ホスト…リクエストの送り先のホスト• PID …リクエストを提出したクライアントのプロセス ID• 送信時刻…要求が送られたときの時刻（HH:MM:SS）• 実行経過時間…リクエストが実行された秒数• リクエスト ID …リクエストにつけられたリクエスト ID• ステータス…リクエストのステータス• 1…待機• 2…実行中• 3…実行完了• 4…失敗• 5…クリア• リクエスタ戻り値…実行時の戻り値• エンジン戻り値…実行時の戻り値• DBMS 戻り値…実行時の戻り値（たとえば、エラー発生の際の戻りコード）RqReqInf （'Default Broker', C）
上記では、変数項目「C 」に RqReqLst 関数の実行によって取得されたキューの数をもとにエントリ番号を設定することで、
RqReqLst 関数が実行させることができます。
この関数の前に呼ばれた RqQueLst または RqReqLst での Supervisor パスワードのパラメータ設定が空の場合、現在のユーザが提出したリクエストに関する情報のみが返されます。
サービス / サーバ名，エントリ番号，スーパーバイザパスワード
が不正な場合、何も返されません。

RqReqLst

リクエスタのリクエストエントリ数を取得
MRB のログ情報から、リクエスト ID の範囲により指定されるリクエストエントリの数を返します。
構文：

RqReqLst （サービス / サーバ名 , 最小リクエスト ID, 最大リクエ
スト ID,Supervisor パスワード）

パラメータ：

サービス / サーバ名 …［サービス／サーバ］テーブルに登録されている［サーバ／サービス］名
最小リクエスト ID …リクエスト ID の最小値
最大リクエスト ID …リクエスト ID の最大値
Supervisor パスワード … MRB のスーパーバイザパスワードを定義する文字列（MGRB.INI の「PasswordSupervisor」の指定内容）

RqRtApp

戻り値：

数値 … 指定した範囲に該当するリクエストエントリの数

例：

RqReqLst（'Default Broker', BA, BB,'Secret'）

注意事項：

パスワードを空白の文字列にしたときには、カレントのユーザが提出したリクエストに関する情報だけが表示されます。サービス / サーバ名、最小リクエスト ID 、最大リクエスト ID 、スーパーバイザパスワードのいずれかが不適当だった場合、空白の文字列が返ります。

リクエスタ対応アプリケーションの情報を取得
MRB に登録された１つまたは複数の実行エンジンがサポートする、ある１つのア
プリケーションに関する情報を返します。

462

リファレンス
Magic eDeveloper V9 Plus関数の説明（アルファベット順）
構文：

RqRtApp （サービス / サーバ名 , アプリケーション番号）

パラメータ：

サービス / サーバ名 …［サービス／サーバ］テーブルに登録されている［サーバ／サービス］名
アプリケーション番号 …アプリケーションの内部番号を示す数
値。ここで指定するアプリケーションは、RqRtApps 関数で検索したもののいずれかでなければなりません（したがって、この関数は、RqRtApps 関数の後で使います）。

戻り値：

文字列 … カンマで区切られた、以下の文字列情報が返ります。

例：• アプリケーション名…アプリケーションの名前。すべてのアプ
リケーションを要求した場合（RqRtApps 関数で、［実行エンジン番号］パラメータを「0 」にした場合）、次の情報も返ります。
• ホスト名…実行エンジンが起動されるホストの名前• ポート番号…実行エンジンのチェック対象となるポートの番号
RqRtApp（'Default Broker', BD）
上記では、数値型の変数項目 BD に格納されているアプリケー
ション番号を使用して処理が行われます。このアプリケーショ
ン番号は、RqRtApps 関数の実行により与えられます（アプリ
ケーション番号は、RqRtApps 関数で指定した実行エンジン番号
によって異なってきます）。また、アプリケーション番号は、
RqRts 関数を実行したときにも返ります。

RqRtApps

リクエスタのアプリケーション数を取得
MRB の実行エンジンを指定し、その実行エンジンでサポートされているアプリ
ケーションの数を取り出すことができます。
構文：

RqRtApps （サービス / サーバ名、実行エンジン番号、Supervisor
パスワード）

パラメータ：

サービス / サーバ名 …［サービス／サーバ］テーブルに登録されている［サーバ／サービス］名
実行エンジン番号 … 0 でない場合は、該当サービスに関連したすべての実行エンジンの内部番号を示す数値。ここで指定する
実行エンジンは、RqRts 関数で検索したもののいずれかでなければなりません（したがって、この関数は、RqRts 関数の後で呼び出さなければなりません）。
Supervisor パスワード … MRB のスーパーバイザパスワードを定義する文字列（MGRB.INI の「PasswordSupervisor」の指定内容）

RqRtInf

戻り値：

数値 … 指定したサービスの実行エンジンでサポートされている
アプリケーションの数。

例：

RqRtApps（'Default Broker',BA,''）
上記では、変数項目 BA に格納されている実行エンジン番号を使用して、その実行エンジンでサポートされているアプリケー
ションの数が取り出されます。この実行エンジン番号は、RqRts
関数で返ったものです。

注意事項：

不正なパラメータ値が与えられたときは、戻り値として「0」が戻ります。

リクエスタの実行エンジンに関する情報を取得
この関数を使用して、実行エンジンを指定し、その実行エンジンに関する情報を取得できます。

構文：
リファレンス
Magic eDeveloper V9 Plus

RqRtInf （サービス / サーバ名 , 実行エンジン番号）463

第 8 章 - 関数
パラメータ：

サービス / サーバ名…［サービス／サーバ］テーブルに登録されている［サーバ／サービス］名
実行エンジン番号…実行エンジンの内部番号を示す数値。ここで指定する実行エンジンは、RqRts 関数で検索したもののいずれかでなければなりません（したがって、この関数は、RqRts 関数の後で呼び出さなければなりません）。

戻り値：

例：

注意事項：

RqRtCtx

文字列…カンマで区切られた、以下の情報が返ります。
• ホスト名…実行エンジンが起動されるホストの名前• ポート番号…実行エンジンのチェック対象となるポートの番号• IP アドレス…nnn.nnn.nnn.nnn の形式でアドレスが返ります。
• プロセス ID …ホスト上の実行エンジンのプロセス ID• ステータス…値と内容は次の通りです。
• 1…実行可能（アイドル状態）• 2…実行可能（実行中）• 3…実行不可（リクエスト処理中）• 4…実行不可（開発モード）• 5…応答なし• 6…クラッシュした• 7…参照のみ• 8…ライセンス制限を超えた• 9…接続障害• 14…シャットダウン中• アプリケーション名…オープンされたアプリケーション名• 実行スレッド数…現在実行中のスレッド数• 最大スレッド数…現在までにオープンされたスレッド数の最大値• 利用可スレッド数…使用可能な最大スレッド数。動作環境で「0」と設定されている場合、ライセンスの内容に基づいた最大
利用可能数を返します。
RqRtInf（'Default Broker',BA,）
上記では、変数項目 BA に格納されている実行エンジン番号を使用して、その実行エンジンに関する情報が取り出されます。この実行エンジン番号は、RqRts 関数で返ったものです。
サービス名や実行エンジン番号が無効の場合、空白の文字列が返ります。

コンテキスト情報を取得
指 定 さ れ た サ ー ビ ス ／ サ ー バ 名 の 指 定 し た コ ン テ キ ス ト の 情 報 を 返 し ま す。
RqRtCtxs 関数を事前に実行する必要があります。
構文：

RqRtCtx（サービス / サーバ名 , コンテキスト番号）

パラメータ：

サービス / サーバ名 … サービス名またはサーバ名を表す文字列
コンテキスト番号 … RqRtCtxs 関数で取得したコンテキスト番
号、RqRts 関数をまず呼ぶ必要があります。

戻り値：

文字列 … 以下の情報が、カンマ区切りで返ります。
• コンテキスト ID…コンテキストの ID• リクエスト ID…このコンテキスト内で有効なリクエストの ID• プログラム名…このコンテキストでオープンされたプログラムの名前• ユーザ名…このコンテキスト内でシステムにログインしたユー
ザ名• ステータス…コンテキストの状態

464

リファレンス
Magic eDeveloper V9 Plus関数の説明（アルファベット順）

例：• E… 実行中…現在実行中• P …ペンディング…イベント待ち状態• T… 終了…処理終了• 最終使用経過時間…コンテキストが最後に実行してからの経過
時間（HH:MM:SS の書式）
RqRtCtx（'My Service',14）
この例では、サービス「My Service」を使用している 14 番目のコンテキストの情報が以下のように返ります。
1324543108,128,Customer Entry,George,E,00:00:00

注意事項：

リクエスト ID は、コンテキストが実行中のみ有効です。他の状態では、「0」になります。
例：2314672146,0,Customer Entry,George,P,00:13:47
ブラウザタスクに対するリクエストのみ全ての値が正しく返ります。それ以外の場合は、プログラム名が「Internal」、最終使用
経過時間は「00:00:00」になります。

RqRtCtxs

コンテキスト情報の読込
アプリケーションサーバのオープンされた全てのコンテキストの情報をロードします。これらのコンテキストの総数を返します。RqRtCtxs 関数 は、RqRtCtx 関数がコンテキストを取得する前に実行する必要があります。
構文：

RqRtCtxs（サービス / サーバ名 , 実行エンジン番号）

パラメータ：

サービス / サーバ名 … サービス名またはサーバ名を表す文字列
実行エンジン番号 … 指定したサービスに対応した全ての実行エンジンのうちのどれかの番号、RqRts 関数をまず呼ぶ必要があり
ます。

戻り値：

数値…コンテキストの総数

例：

RqRtCtxs（'My Service',3）
この例では、サービス 'My Service' を実行している エンジン番号
3 によってオープンされた全てのコンテキスト情報がロードされ、エンジンによってオープンされたコンテキストの総数が返
ります。

注意事項：

各 RqRtCtxs 関数の動作によって、関数の以前の動作の内容がクリアされます。
この関数は、マルチスレッドのバックグラウンドで動作しているアプリケーションサーバ用です。

RqRts

リクエスタの実行エンジンの数を取得
MRB の実行エンジンの数を取得します。
構文：

RqRts （サービス / サーバ名 ,Supervisor パスワード）

パラメータ：

サービス / サーバ名…［サービス／サーバ］テーブルに登録されている［サーバ／サービス］名Supervisor パスワード…MRB のスーパーバイザパスワードを定義する文字列（MGRB.INI の「PasswordSupervisor」の指定内容）

戻り値：

例：
リファレンス
Magic eDeveloper V9 Plus

指定したサービスに登録されている実行エンジンの数。サービスを指定しなかったときには、MRB に登録されている実行エン
ジンの合計数が返ります。
RqRts （'Default Broker','Secret'）465

第 8 章 - 関数

RqRtTrm

実行エンジンを終了
実行エンジンの終了が可能です。同一のリクエスタの実行エンジンをすべて終了させることもできます。
構文：

RqRtTrm （サービス / サーバ名 , 実行エンジン番号 ,Supervisor パ
スワード）

パラメータ：

サービス / サーバ名…［サービス／サーバ］テーブルに登録されている［サーバ／サービス］名
実行エンジン番号…実行エンジンの内部番号を示す数値。ここで指定する実行エンジンは、RqRts 関数で返ったもののいずれかでなければなりません。
「0 」を指定すると、すべての実行エン
ジンが終了します。
Supervisor パスワード…MRB のスーパーバイザパスワードを定義する文字列（MGRB.INI の「PasswordSupervisor」の指定内容）

戻り値：

論理値

例：

• True …処理に成功した場合• False …処理に失敗した場合
RqRtTrm（'Default Broker',BA,'Secret'）
上記では、数値型の変数項目 BA に格納されている実行エンジン
番号を使用して処理が行われます。この実行エンジン番号は、
RqRts 関数で返った値です。

注意事項：

RqRtTrmEx

サービス名や実行エンジン番号が無効な場合、処理に失敗し「False 」が返ります。また、パスワードがスーパーバイザのパス
ワードでなかったときにも、処理に失敗します。

アプリケーションサーバを終了
指定したアプリケーションサーバエンジンを時間を指定して終了させます。
構文：

RqRtTrmEx（サービス名 , エントリ番号 , Supervisor パスワード ,タイムアウト）パラメータ：

サービス名…サービス名を表す文字列
エントリ番号…RqRts 関数の戻り値として取得された実行エンジンの番号。「0」の場合は、全てのエンジンが終了します。
Supervisor パスワード…MRB のスーパーバイザパスワードを定義する文字列（MGRB.INI の「PasswordSupervisor」の指定内容）
タイムアウト… サーバエンジンが終了するまでの秒数

戻り値：

論理値

例：

• True …処理に成功した場合• False …処理に失敗した場合
RqRtTrmEx('Data Server', BA, 'Secret', 900)
変数 ’BA’VAR で指定された番号のエンジンを 900 秒後にさせます。この番号は、RqRts 関数の実行結果より取得します。

注意事項：

RqStat

サービス名やエンジン番号が正しくない場合は、処理が失敗します。パスワードが Supervisor パスワードと合っていない場合も失敗します。タイムアウト値が設定されていなかったり正しい値でない場合、デフォルト値「0」と見なされます。

リクエストの状態
特定のリクエストのステータスを取得します。ステータスは数値で返します。

466

リファレンス
Magic eDeveloper V9 Plus関数の説明（アルファベット順）
構文：

RqStat （サービス / サーバ名 , リクエスト ID,Supervisor パスワー
ド）パラメータ：

サービス / サーバ名…［サービス／サーバ］テーブルに登録されている［サーバ／サービス］名（サービスまたはサーバの名前を示す文字列項目または定数）
リクエスト ID …リモートコールで返ったリクエスト ID
Supervisor パスワード…MRB のスーパーバイザパスワードを定義する文字列（MGRB.INI の「PasswordSupervisor」の指定内容）

戻り値：

リクエストのステータスを表す数値• 0 …検出不可• 1 …待機中• 2 …実行中• 3 …完了• 4 …失敗• 5 …クリア

RqTrmTimeout

サーバ終了時間
サーバ終了までの残りの時間を返します。

RTrim

構文：

RqTrmTimeout()

パラメータ：

なし

戻り値：

数値…サーバ終了までの残りの時間を秒数で返します。サーバが終了しない場合は、「0」が返ります。

例：

サーバエンジンが終了するまで残り 30 秒の場合、「30」が返ります。

文字列の右側にある空白を削除
文字列の右側の空白を削除します。

RunMode構文：

RTrim（文字列）パラメータ：

文字列…空白の削除を行う文字列

戻り値：

空白の削除後の文字列

例：

RTrim（'John '）では、「John」が返ります。

関連項目：

LTrim 、Trimエンジンの実行モードに対応する数値コードを取得
エンジンの実行モードに対応する数値コードを取得します。
構文：

RunMode（ ）パラメータ：

なし

戻り値：

数値…実行モードを表します。
• -1 …
• アプリケーションが最初にメインプログラムを実行した場
合• アプリケーションがクローズされ、他のアプリケーション
が最初のコンテキストでオープンされた場合• アプリケーションがマルチスレッドで最初にオープンされた場合

リファレンス
Magic eDeveloper V9 Plus467

第 8 章 - 関数•（サブタスクや、サブプログラムで実行された場合は、「0」になる。）• 0 …プログラムが実行版で動作している。フォアグラウンドまたは、バックグラウンドで動作している場合• 1 …プログラムが開発版で動作しており、アプリケーションが実行モードでオープンされている場合• 2 …プログラムが開発版で動作しており、アプリケーションが実行モードに切り替わった場合• 3 …プログラムが開発版で動作しており、プログラムリポジト
リ上から実行されている場合

Second

時刻の秒の値
時刻のうち、秒の値を取り出します。
構文：

Second（時刻）パラメータ：

時刻…時刻または時刻式

戻り値：

数値（0 〜 59）

例：Second（'12:15:48'TIME）では、「48」が返ります。
また、A の値が「12:15:48」場合、Second（A）+ 2 では「50」が返ります。
Minute 、Hour

関連項目：

SetBufCnvParam

変換パラメータの設定
バッファ間のデータの読み書きでの変換値を定義するためのパラメータを設定します。
構文：

SetBufCnvParam ( 変換パラメータ名 , 変換パラメータ値 )パラメータ：

変換パラメータ名 … 変換パラメータの名前を表す文字列
変換パラメータ値 … 変換値

戻り値：

論理値 … 変換処理が成功したら「True」を返します。パラメー
タ名や値が間違っていたりすると失敗します。

参考：変換パラメータ値は以下のテーブルで示したとおりです。

パラメータ名Low-Hi

Encoding

説明型

数値が Windows の標準の文字での昇順または降順、UNIX の標準の文字での昇順または降順で読み書きを行うことを示します。

論理型

デフォルト
True

文字データに対するエンコードのタイプ

数値型

1

数値型

なし

1 …… ANSI
2 …… EBCIDIC
3 …… UNICODE
Code Page

SetCrsr

EBCIDIC と Unicode でエンコードする場合に使用する

カーソル形状の指定
カーソル形状を変更します。この関数 はアクションコマンドによって起動されま
す。

468

構文：

SetCrsr（番号）パラメータ：

番号…カーソル形状を指定する以下の数値
リファレンス
Magic eDeveloper V9 Plus関数の説明（アルファベット順）

戻り値：

注意事項：

SetLang• 1 …標準の矢印• 2 …砂時計• 3 …手• 4 …標準の矢印と砂時計• 5 …十文字• 6 …矢印とクエスチョンマーク
• 7 …I ビーム• 8 …禁止• 9 …四方向矢印• 10 …斜め両方矢印（左下がり）• 11 …上下両方矢印• 12 …斜め両方向矢印（右下がり）• 13 …左右両方向矢印• 14 …上向き矢印
論理値• True …処理に成功した場合• False …処理に失敗した場合
Windows 以外のプラットフォームでは常に「False 」が返ります。
また、パラメータが 1 〜 14 以外の値のときにも「False 」が返ります。

使用する言語を設定使用する言語を設定できます。ここで指定した言語が、［言語］テーブルの［言語］
欄に設定されます。

SetParam

構文：

SetLang（文字列）パラメータ：

文字列…言語を指定します。

戻り値：

論理値…指定した言語に設定されれば、「True」が返ります。

例：

SetLang（'French'）

関連項目：

GetLang

パラメータの設定
グローバルパラメータを設定します。
構文：

SetParam （パラメータ名 , 値）

パラメータ：

パラメータ名…グローバルパラメータの名前。このパラメータに値が入れられます。
値…パラメータに入れる値
Null（NULL 関数または、'' の様に長さが 0 の文字列）を指定す
るとエントリが削除さます。

戻り値：

論理値

例：

• True …処理に成功した場合• False …処理に失敗した場合
SetParam（'P-Employee name', BA）
上記では、項目 BA の値がパラメータ「P-Employee name」に格納されます。

注意事項：

リファレンス
Magic eDeveloper V9 Plus

SP6 より仕様が変更され、SetParam （パラメータ名 , ）を実行
した場合、エントリが削除され、「GetParam( パラメータ名 )='' 」の条件が False となります。

469

第 8 章 - 関数
関連項目：

SharedValGet

GetParam

共有値の取得
指定された名前に基づいて共有された値を返します。共有値は、Magic のメモリ上に格納されます。１度作成されると、この値は全てのコンテキストで参照することができます。

SharedValPack

構文：

SharedValueGet( 名前 )パラメータ：

名前 … 共有値の名前

戻り値：定義された名前によって共有された値を返します。戻り値の型
は、SharedValueSet 関数によって設定された値の型によって決まります。共有値が存在しない場合は、Null 値を返します。

例：

SharedValueGet('AUTO') は、共有値名「AUTO」を元に値を返します。

関連項目 :

SharedValPack,SharedValSet,SharedValUnpack

共有値のパッケージ化
SharedValSet によって設定された複数の共有値を 1 つの BLOB 項目に格納します。
この BLOB 項目は、SharedValUnpack 関数を使用することで他のプロセスで解凍して利用することができます。

SharedValSet

構文 :SharedValPack（）

パラメータ :なし

戻り値 :BLOB 値 …共有値をパッケージ化した値

関連項目 :

SharedValGet,SharedValSet,SharedValUnpack

共有値の作成Magic のメモリ上に格納される共有値を作成します。１度作成されると、この値は全てのコンテキストで参照することができます。
構文：

SharedValueSet( 名前 , 値 )パラメータ：

名前 … 共有値の名前
値 … 設定する値

SharedValUnpack

戻り値：

論理値 … 常に「True」を返します。

例：

SharedValueSet('RATIO',0.34) は、「RATIO」という名前で共有できる 数値 「0.34」を作成します。

関連項目 :

SharedValGet,SharedValPack,SharedValUnpack

参考 :共有値は、共有名を元に SharedValueGet 関数で取得できます。

パッケージ化された共有値の解凍
SharedValPack 関数で作成された BLOB 値から、共有値を取得します。取得された共有値は、SharedValGet 関数よって値を取り出すことができます。

470

構文 :

SharedValUnpack（パッケージデータ）

パラメータ :

パッケージデータ … SharedValPack 関数によって作成された
BLOB 値

戻り値 :論理値
リファレンス
Magic eDeveloper V9 Plus関数の説明（アルファベット順）

関連項目 :

SIN• True … パッケージデータが NULL でなく、共有値の解凍に成功した場合• False … 共有値の解凍に失敗した場合
SharedValGet,SharedValPack,SharedValSet

正弦（サイン）三角関数
角度のサインが返ります。角度はラジアンで指定します。
構文：

SIN（ラジアン）

パラメータ：

ラジアン…角度を示すラジアン

戻り値：

正弦値（サイン）例：

SIN（BA）では、数値型項目：BA に格納されている正弦値がラジアンで返ります。
SIN（0.7854）では、「0.70711」が返ります。

関連項目：

SNMPNotify

ASIN、ACOS 、ATAN 、COS 、TAN

SNMP メッセージの送信
アプリケーショントラップメッセージを NMS(Network Management Station) に送信
します。
構文：

SNMPNotify ( メッセージ、重要度 )パラメータ：

メッセージ … 文字列
重要度 … 1 ( 最も高い ) から 3 までの数値

SoundX

戻り値：

論理型 …処理が成功したら 「True」を返します。

例：

SNMPNotify( 'Transaction faile',1 ) は、「Transaction faile」というメッセージを SNMP で送信します。

注意事項：

この関数は、アプリケーションのエラーメッセージ用です。

文字の読み方（発音）の比較
スペルは異なるものの発音が似ている 2 つの文字列の発音を比較できます。
構文：

SoundX（文字列）パラメータ：

文字列…発音をチェックする文字列

戻り値：

4 文字からなる値

例：SoundX（'John Doe'）=SoundX（'Jhn De'）では、「True」が返りま
す。

注意事項：

この関数の戻り値は、4 文字で構成される値です。たとえば、「John Doe」、「Jhn De」、「JOhN Deo」はいずれも、「J530」が返ります。また、「Steve」では「S310」が、「Svte」では「S130」が返ります。このように、SoundX 関数では 4 文字の値が返るので、その戻り値を条件式で比較すると、文字列の発音の相違をチェックできます。また、SoundX 関数の戻り値はファイルに保存することもできますし、インデックスを設定することで直接アクセスすることもできます。

参考：

文字列の発音値は以下のように計算されます。
1. 先頭のスペースを無視します。
2. 文字：A,E,I,O,U,Y,H,W を無視します。

リファレンス
Magic eDeveloper V9 Plus471

第 8 章 - 関数
3. 大文字と小文字の区別を無視します。
4. 最初の（スペースを除いた）文字を大文字に変換して、戻り値の先頭とします。
5. B,F,P,V を 1 に変換します。
6. C,G,J,K,Q,S,X,Z を２ に変換します。
7. D,T を 3 に変換します。
8. L を４ に変換します。
9. M,N を 5 に変換します。
10. R を６ に変換します。
11. 変換された数値が同じ値で連続する場合は、２ 番目を削除します。
12. 数値部分が３ 桁より短い場合は、0 で埋めます。
13. 数値部分が３ 桁より長い場合は３ 桁で切り捨てます。

SplitterOffset

フォームの分割単位の取得
現在のフォームの分割割合を % か寸法単位で取り出します。
構文：

SplitterOffset( モード )パラメータ：

モード… 以下のモードを表す数値です。

戻り値：• 0…分割割合を % で返します。
• 1…分割割合を寸法単位で返します。
構文 …分割割合が指定した単位で返されます。

注意事項：

Stat

タスクのフォームが分割指定されていない場合は、「0」が返ります。

タスクの処理モードをチェック
タスクのモード（照会モード、修正モードなど）をチェックできます。
構文：

Stat（タスク番号 , モード）

パラメータ：

タスク番号…タスクの階層を示す値で、カレントのタスクが「0」、親タスクが「1」、その親タスクが「2」などとなります。
モード…モードで、指定したタスクがこのモードかどうかがチェックされます。タスクのモードについては、第 6 章「プログラム」を参照してください。

戻り値：

例：
注意事項：

論理値
• True … 指定した処理モードが正しい場合• False … 処理モードが合っていない場合
カレントのタスクのモードが登録モードまたは修正モードの場
合、Stat（0,'CM'MODE）では、「True」が返ります。
削除（D ）モードは、［レコード後処理］でのみチェックが可能です。なお、上記の例で、「CM」の右の MODE はリテラルコードです。
ハンドラの［有効］欄に指定された場合、指定したタスクのモードではなく、イベントが実行されたタスクのモードで判断
されます。

関連事項：

Str

リテラル

数値を文字列に変換
数値を文字列に変換できます。書式も指定できます。

472

リファレンス
Magic eDeveloper V9 Plus関数の説明（アルファベット順）
構文：

Str（数値 , 書式）

パラメータ：

数値…この数値が文字列に変換されます。
書式…この書式にしたがって変換されます。

StrToken

戻り値：変換された文字列例：

Str（45.12,'##.#'）では、「45.1」が返ります。

注意事項：

この関数では書式を指定しますので、数値によっては四捨五入されることもあります。たとえば、Str（39.999,'##.##'）では「40.000」が返ります。書式については、詳しくは、第 3 章「モデル」の「書式」を参照してください。

関連項目：

Val

区切り文字で区切られている文字列からトークンを取り出す
複数の文字列で構成される文字列からトークンの取り出しが可能です。
構文：

StrToken（ソース文字列 , トークンインデックス , 区切文字列）

パラメータ：

ソース文字列…複数の文字列で構成される文字列。区切文字で区切られ、トークンが置かれています。
トークンインデックス…取り出したいトークンで、その位置を
インデックス（順番を示す番号）で指定します。
区切文字列…区切文字で構成される文字列。

戻り値：

文字列（トークン）…トークンが見つからなかったときには、
空白文字列が返ります。

注意事項：

区切文字列は、複数の区切文字で構成される文字列です。
トークンインデックスが 1 で、区切文字が空白の場合、ソース
文字列が返ります。区切文字が見つからなかったときも同じです。
トークンインデックスが 1 より大きく、区切文字が見つからなかったときには（区切文字が空白、インデックスが範囲外、区切文字が存在しないなど）、空白の文字列が返ります。
区切文字はそれぞれ、インデックスの処理の際に個別にカウントされます（繰り返して処理されることはありません）。
スペースは区切文字には使用できません。

例：

StrTokenCnt

StrToken（BA,2,','）では、BA が「abcd,cdef,ghik,lmnp」のとき、「cdef」が返ります。

トークン数の取得
区切り文字で区切られている文字列からトークンの数を返します。
構文：

StrTokenCnt（ソース文字列、区切文字列）

パラメータ：

ソース文字列…複数の文字列で構成される文字列。区切文字で区切られ、トークンが置かれています。
区切文字列…区切文字で構成される文字列。

戻り値：

数値…区切り文字を基準にしたソース文字列内にあるトークンの数。区切り文字が見つからない場合は、「1」が返ります。

注意事項：

区切文字列は、1 文字以上指定できます。

例：

StrTokenCnt（’abcd¥cdef¥ghik¥lmnp','¥'）では、「4」が返ります。

リファレンス
Magic eDeveloper V9 Plus473

第 8 章 - 関数

StrTokenIdx

トークンインデックスの取得
区切り文字で連結された文字列内に対して、トークンを検索し、インデックス番号を返します。
構文：

StrTokenIdx( ソース文字列、トークン文字列、区切文字列 )パラメータ：

ソース文字列 … 複数の文字列で構成される文字列。区切文字で区切られ、トークンが置かれています。
トークン文字列 … 検索する文字列
区切文字 …区切文字で構成される文字列

戻り値

数値 …指定された区切り文字で区切られた文字列の位置する番号。トークン文字列が見つからない場合は、「0」が返ります。

参考 :区切文字は、1 文字以上の文字列を指定できます。

例：

StrTokenIdx('AA,BB,CC,DD','CC',',') は、「3」が返ります。

注意事項：

スペースは、区切文字として使用できません。
ソース文字列は、文字型、メモ型または、RTF BLOB が使用でき
ます。

Sys

アプリケーション名を取得［アプリケーション］テーブルの［アプリケーション名］欄に指定されているアプ
リケーションの名前が取り出されます。

TAN

構文：

Sys（）

パラメータ：なし

戻り値：

文字列…アプリケーション名例：

Sys（）では、現在、［アプリケーション名］欄に指定されている
アプリケーションの名前が返ります。

関連項目：

Pref

正接（タンジェント）三角関数
角度の正接（タンジェント）が返ります。角度は、ラジアンで指定します。

TDepth構文：

TAN（ラジアン）

パラメータ：

ラジアン…角度で、ラジアンで指定します。

戻り値：

数値…正接値例：

TAN（0.7853981634）では、「1」が返ります。

関連項目：

ASIN 、ACOS 、ATAN 、SIN 、COS

タスクの深さを取得
現在のタスクのネスト情報を取得します。

474

構文：

TDepth（ ）パラメータ：なし

戻り値：

数値（1 〜 24）…カレントのタスクでタスク階層上の深さを示
します。

例：

TDepth（ ）では、カレントのタスクがルートタスクから呼び出されている場合、「1」が返ります。

関連項目：

Level
リファレンス
Magic eDeveloper V9 Plus関数の説明（アルファベット順）

Term

端末番号を取得［動作環境］ダイアログの［端末番号］欄に指定されている値が返ります。

Text

構文：

Term（）

パラメータ：

なし

戻り値：

端末番号

例：

Term（）

注意事項：

マルチユーザ環境では、Term 関数を使用して単一の端末番号を指定することができます。その場合、各ユーザごとに、
MAGIC.INI ファイルの［端末番号］欄を設定することが必要です。この設定は、別個の MAGIC.INI ファイルを用意するほか、コマンドラインを使用して上書きしても行えます。

関連項目：

INIGet 、INIPut 、User

バックグラウンドモードの確認
Magic をクライアント / サーバ環境で使用している場合、サーバがバックグラウン
ドモード（ユーザインタフェースなし）で機能しているかどうかを確認できます。
構文：

Text（）

パラメータ：

なし

戻り値：

論理値

例：

• True …バックグラウンドモードの場合• False …バックグラウンドモードでない場合
Text（）

注意事項：

Time

現在この関数は機能しておりません。同様の機能を実現するには、INIGet('applicationstartup')='B' を指定してください。

システムの時刻を取得システムの時刻が返ります。

THIS

構文：

Time（）

パラメータ：

なし

戻り値：

現在の時刻

例：

Time（）では、「17:08:42」が返るとすると、Time（）+5 では、システムの時刻に 5 秒が加えられ、「17:08:47」が返ります。

関連項目：

DATE、MDate

イベントが発生したデータ項目のシンボル名またはタスクの階層を表す。
イベントが発生したデータ項目のインデックスまたはタスクの階層を表し、下記に挙げるデータ項目関連の関数またはタスク世代関連の関数の引数に使用します。
発生したイベントは、上位レベルタスクのハンドラが処理できます。この場合、ハ
ンドラのタスクレベルより下のデータビューと実行ツリーは使用できません。
デ ー タ 項 目 関 連 の 関 数（VarAttr、VarCurr、VarMod、VarName、VarPrev、VarSet）
では、この関数の戻り値は、イベントが発生したデータ項目のインデックスを表します。
世代関連の関数（CHeight、CLeft、CLeftMDI、Counter、CTop、CTopMDI、CWidth、
DbCache、EOF、EOP、LastPark、Level、Line、Page、Stat、ViewMod、WINBox、
WINHWND）では、この関数の戻り値は、イベントが発生したタスクの階層の位置

リファレンス
Magic eDeveloper V9 Plus475

第 8 章 - 関数を表します。
構文：

THIS（）

パラメータ：

なし

戻り値：

イベントが発生したデータ項目のインデックスまたはタスクの階層

例：

VarCurr（THIS（））では、イベントが発生した項目の値が返ります。
Stat（THIS（）,'C'MODE））では、イベントが発生したタスクが登録モードのとき「True」が返ります。

注意事項：

Translate

この関数は、上に挙げられていない関数には適用できません。
単独で使用することもできません。その他の算術関数や変換関数をこの関数の後に続けることもできません。

論理名の変換
論理名を実行名に変換します。ネストされた論理名を含めて変換されます。
構文：

Translate（文字列）パラメータ：

文字列… 論理名（実際に指定した名前の前後に % を付加しま
す。）

戻り値：

文字列… 実行名が返ります。

例：･ Driver = 'C' と登録されている場合Translate('Check driver %Driver%) → 'Check driver C:'･ Temp = '%Driver%temp¥'' と登録されている場合Translate('%Temp% not found!') → 'C:¥temp¥ not found !'注意事項：

TransMode

指定した論理名が見つからない場合は、指定した文字列がそのまま返ります。

トランザクション情報の取得
現在アクティブなトランザクションのモードを返します。
構文：

TransMode（）

パラメータ：なし

戻り値：

文字…以下の値が返ります。
• D…遅延トランザクション• P…物理トランザクション
トランザクションがアクティブでない場合は、何も返りません。

TreeLevel

ツリーレベルの取得
データツリー上の選択されたノードの現在のレベルを返します。

TreeNodeGoto

構文：

TreeLevel()

パラメータ：

なし

戻り値：

選択されたノードのレベル

ノードの移動
データツリーの指定されたノード ID にカーソルを移動します。

476

リファレンス
Magic eDeveloper V9 Plus関数の説明（アルファベット順）

TreeValue

構文：

TreeNodeGoto( ノード ID)

パラメータ：

ノード ID … ツリーのノードを表す値。書式は、データツリー用の ID 用項目に依存します。

戻り値：

論理値 … 処理が成功したら「True」が返ります。

例：

TreeNodeGoto('A001') は、ノード ID が「A001」のツリーに移動
します。

注意事項：

データツリーがロードされた場合のみ有効です。

ノード ID の取得選択されたノードの現在のレベルによって決定されたノード ID を返します。

Trim

構文：

TreeValue( ツリーレベル )パラメータ：

ツリーレベル … データツリーにおけるノードの階層上の位置を表す数値。「0」は現在のノード「1」は、その親を表します。

戻り値：

ノード ID

文字列の左右にある空白を削除
文字列の先頭と末尾の空白を削除できます。

TStr

構文：

Trim（文字列）

パラメータ：

文字列…編集対象となる文字列

戻り値：

空白削除後の文字列例：

Trim（' abc '）では、前後の空白が取り除かれ、「abc」が返りま
す。

関連項目：

LTrim 、RTrim

時刻を文字列に変換
時刻を文字列に変換します。書式も指定できます。
構文：

TStr（時刻 , 書式）

パラメータ：

時刻…文字列に変換する時刻
書式…この書式にしたがって時刻が文字列に変換されます。書
式については、第 3 章「モデル」の「書式」を参照してくださ
い。

TVal

戻り値：

時刻の変換後の文字列

例：

TStr （'14:30'TIME,'HH:MM PM'）では、「2:30 PM」が返ります。

注意事項：

書式を指定しなかった場合、「HH:MM:SS」の形式で変換されま
す。

関連項目：

TVal 、DStr 、DVal

文字列を時刻に変換
文字列として格納されている時刻を通常の時刻（数値）に変換します。書式も指定
できます。
構文：

TVal（文字列 , 書式）

パラメータ：

文字列…文字列の形式で格納されている時刻（たとえば、'02:30:00 PM'）リファレンス
Magic eDeveloper V9 Plus477

第 8 章 - 関数
書式…文字列として格納されている時刻に使われている書式。
ここで指定した書式をもとに、文字列として格納されている時刻が解釈されます。書式については、第 3 章「モデル」の「書式」を参照してください。

UDF

戻り値：

時刻

例：

TVal（'02:30:00 PM','HH:MM:SS PM'）では、「14:30:00」が返りま
す。

注意事項：

書式を指定しなかった場合、文字列の書式は「HH:MM:SS」と解釈されます。

関連項目：

TStr 、DStr 、DVal

ユーザ定義関数の呼び出し
C 言語で書かれたユーザ関数を Magic 上に呼び出すことができます。
構文：

UDF（' モジュール名 . 関数名 ',［パラメータ］）

パラメータ：

モジュール名…ユーザ定義関数が置かれている外部モジュール
またはプログラム。
関数名…呼び出す関数
パラメータ…呼び出すユーザ定義関数にパラメータが必要な場
合に指定できます。パラメータは、最大で 30 までカンマで区切って指定できます。

UDFF

戻り値：

関数からの戻り値

注意事項：

UDF 関数による呼び出しは、ユーザプロシージャの呼び出しと似ています。ただし、呼び出し方法は、プラットフォームによって異なります。詳しくは、使用しているプラットフォームのマニュアルを参照してください。

ユーザ定義関数の呼び出し（FASTCALL 形式）
C 言語で書かれた FASTCALL 形式のユーザ関数を Magic 上に呼び出すことができます。
構文：

UDFF（' モジュール名 . 関数名 ',［パラメータ］）

パラメータ：

モジュール名…ユーザ定義関数が置かれている外部モジュール
またはプログラム。
関数名…呼び出す関数
パラメータ…呼び出すユーザ定義関数にパラメータが必要な場
合に指定できます。パラメータは、最大で 30 までカンマで区切って指定できます。

注意事項：

UDFS

UDFF 関数による呼び出しは、ユーザプロシージャの呼び出しと似ています。ただし、呼び出し方法は、プラットフォームによって異なります。詳しくは、使用しているプラットフォームのマニュアルを参照してください。

ユーザ定義関数の呼び出し（STDCALL 形式）
C 言語で書かれた STDCALL 形式のユーザ関数を Magic 上に呼び出すことができま
す。

478

構文：

UDFS（' モジュール名 . 関数名 ',［パラメータ］）

パラメータ：

モジュール名…ユーザ定義関数が置かれている外部モジュール
またはプログラム。
リファレンス
Magic eDeveloper V9 Plus関数の説明（アルファベット順）
関数名…呼び出す関数
パラメータ…呼び出すユーザ定義関数にパラメータが必要な場
合に指定できます。パラメータは、最大で 30 までカンマで区切って指定できます。
注意事項：

UnlockUDFS 関数による呼び出しは、ユーザプロシージャの呼び出しと似ています。ただし、呼び出し方法は、プラットフォームによって異なります。詳しくは、使用しているプラットフォームのマニュアルを参照してください。

リソースのロックを解除
Lock 関数によってロックされたリソースを解除します。
構文：

Unlock（リソース）

パラメータ：

リソース…ロック済みのリソースを示す文字列。長さは 0 〜
128。スペースを渡すと、スペースのリソースのロックを解除し
ます。

戻り値：

数値…処理結果を表します。

関連項目：• 0…失敗（リソースが同一セッション内においてロックされていない）• 1…成功Lock

注意事項：

長い式は切り捨てられます。
リソースをロックしたセッションにおいてのみ、そのリソースのロックを解除することができます。

Upper

小文字を大文字に変換
小文字を大文字に変換します。（全角英文字を含む）

User

構文：

Upper（文字列）パラメータ：

文字列…変換する文字列

戻り値：

文字列…大文字に変換された文字列

例：

Upper（'john'）では、（'JOHN'）が返ります。

関連項目：

Lower

ユーザ情報を取得［ユーザ ID ］テーブルに記録されているユーザ情報を取り出せます。
構文：

User（番号）

パラメータ：

番号…0 、1 、2 のいずれか

戻り値：• 0…ユーザ ID• 1…ユーザ名• 2…［ユーザ情報］欄の値
文字列

例：

User（1）では、カレントのユーザのユーザ名が返ります。

注意事項：

Ver.5.2 以前の Magic では、User 関数にパラメータはなく、ユー
ザ ID だけが取り出されました。

関連項目：

INIGet 、INIPut

リファレンス
Magic eDeveloper V9 Plus479

第 8 章 - 関数

UserAdd

セキュリティファイルにユーザを追加
セキュリティファイルにユーザを追加します。
構文：

UserAdd（ユーザ ID, 名前 , パスワード , 情報）

パラメータ：

ユーザ ID …このユーザ ID がセキュリティファイルに挿入されます。
名前…追加するユーザの名前
パスワード…ユーザのパスワード
情報…ユーザの情報

戻り値：

論理値

例：

• True …処理に成功した場合• False …処理に失敗した場合
UserAdd（'John','John Doe','xyz','no info'）では、ユーザ ID が「John」、ユーザ名が「John Doe」、パスワードが「xyz」というユーザがセキュリティファイルに追加されます。また、ユーザ
情報はとしては、「no info」という情報が追加されます。

注意事項：

UserDel

この関数は、SUPERVISOR ユーザだけが使用できます。ほかのユーザの場合、この関数を使用しても無視されます。

セキュリティファイルからユーザを削除
Magic のセキュリティファイルから指定されたユーザを削除します。
構文：

UserDel( ユーザ ID)

パラメータ：

ユーザ ID…削除されるユーザ ID

戻り値：

論理値

例：
注意事項：

UTF8FromAnsi• True …処理に成功した場合• False …処理に失敗した場合
UserDel(‘John’)
ユーザ「John」がセキュリティファイルから削除されます。
この関数は、SUPERVISOR ユーザだけが使用できます。ほかのユーザの場合、この関数を使用しても無視されます。

UTF8 へのエンコード
データを ANSI から UTF8 にエンコードします。
構文：

UTF8fromAnsi( 文字列 )パラメータ：

文字列 … 変換される文字列。データの型は、文字、メモおよびRTF 形式の BLOB データです。

戻り値：

BLOB データ … UTF8 でエンコードされた RTF データ

例：

UTF8FromAnsi(A) … 項目：A を UTF8 にエンコードします。
UTF8FromAnsi(‘Hello World’) … 「Hello World」という文字列をUTF8 にエンコードします。

UTF8ToAnsi

ANSI へのエンコード
データを UTF8 から ANSI にエンコードします。この関数は、CodePage 関数で指定されたコードページを使用します。CodePage 関数を使用しない場合、OS のデフォ
ルトのコードページが使用されます。

480

リファレンス
Magic eDeveloper V9 Plus関数の説明（アルファベット順）

Val

構文：

UTF8ToAnsi( 文字列 )パラメータ：

文字列 … 変換される文字列。データの型は、文字、メモおよびRTF 形式の BLOB データです。

戻り値：

BLOB データ … ANSI でエンコードされた RTF データ

例：

UTF8ToAnsi (A) … 項目：A を ANSI にエンコードします。

文字列を数値に変換
文字列を数値に変換できます。書式も指定できます。
構文：

Val（文字列 , 書式）

パラメータ：

文字列…数値に変換される文字列
書式…この書式にしたがって文字列が数値に変換されます。書
式については、第 3 章「モデル」を参照してください。

VarAttr

戻り値：

数値

例：

Val（'45.12','##.#'）では、「45.1」が返ります。

注意事項：

書式を指定しなかった場合、標準の書式で数値が返ります。

関連項目：

Str

項目の型を照会
項目の型を取り出せます。

VarCurr

構文：

VarAttr（シンボル名）

パラメータ：

シンボル名…型をチェックしたい項目で、［項目一覧］の項目のシンボル名を指定します。

戻り値：

項目の型を示す文字列

関連項目：

VarCurr 、VarInp 、VarMod 、VarName 、VarPrev

項目の値を取得
項目を指定し、その項目のカレントの値を取り出せます。項目は、［項目一覧］のシンボルを使用して指定します。
構文：

VarCurr（シンボル名）

パラメータ：

シンボル名…値を取り出す項目で、［項目一覧］の項目のシンボ
ル名を指定します。

戻り値：

指定した項目のカレントの値。値の型は、その項目の型と同じです。

例：

VarCurr（'BE'VAR）では、項目：BE のカレントの値が返ります。
VarCurr（'CR'VAR + 7）では、項目：CY （CR の項目から 7 つ後ろの項目）のカレント値が返ります。

注意事項：

この関数では、項目のシンボル名は VAR リテラルコードを使用
して指定します。これで、項目の順番が変わってときでも正常に処理が行われます。
この関数は、配列的な項目の加算や減算を行う場合に使います。

関連項目：

リファレンス
Magic eDeveloper V9 Plus

リテラル、VarPrev 、VarMod481

第 8 章 - 関数

VarCurrN

項目の値を取得
項目名に対応した項目の現在の値を返します。
構文：

VarCurrN（項目名）

パラメータ：

項目名…項目名を示す文字列

戻り値：

指定した項目のカレントの値。値の型は、その項目の型と同じです。

例：

VarCurrN（'Customer ID ）…項目名「Customer ID」の現在の値が返ります。

注意事項：

指定した項目名が存在しない場合は、NULL が返ります。
同じ項目名の項目が複数ある場合は、タスクツリー上のもっとも下位の項目の値が返ります。

関連項目：

VarDbName

VarCurr

DB カラム名の取得
指定した項目の DB カラム名を返します。

VariantAttr

構文：

VarDbName（シンボル名）

パラメータ：

シンボル名…項目示す識別コードで、［項目一覧］の項目のシン
ボル名を指定します。VAR リテラルを付けてください。

戻り値：

文字列 … 指定した項目の DB カラム名例：

VarDbName（'C’VAR）… 項目の DB 名として「Customer ID」が
返ります。

注意事項：

Pervasive.SQL や Memory Table のような ISAM 系テーブルや、ダイレクト SQL 構文の一部でないローカル変数、の場合は空白が返ります。

Variant データのデータ型の取得
Variant データのデータタイプに対する Magic 側のデータ型を返します。
構文：

VariantAttr(Variant 値 )パラメータ：

Variant 値 … Variant データを保持する BLOB データ

戻り値：

Magic のデータ型を表す文字例：• A … 文字型
• N … 数値型
• L … 論理型
• D … 日付型
• B … BLOB 型• V … ベクトル型• 0 … 該当する型がない
Variant 値が VT_BSTR データタイプの場合、「A」を返します。
Variant 値が VT_I4 または、VT_R8 データタイプの場合、「N」を返します 。
Variant 値が VT_??? のようなサポートされていないデータタイプの場合、「0」を返します。

VariantCreate

482

Variant 値の作成
リファレンス
Magic eDeveloper V9 Plus関数の説明（アルファベット順）
指定したデータから Variant 値を作成します。
構文：

VariantCreate( VT タイプ、値、オプションの時間値 )パラメータ：

VT タイプ… Variant タイプを表す数値

リファレンス
Magic eDeveloper V9 Plus#

Variant 記憶形式

0

VT_EMPTY

1

VT_NULL

2

VT_I2

3

VT_I4

4

VT_R4

5

VT_R8

6

VT_CY

7

VT_DATE

8

VT_BSTR9

VT_DISPATCH

10

VT_ERROR

11

VT_BOOL

12

VT_VARIANT

13

VT_UNKNOWN

14

VT_DECIMAL

16

VT_I1

17

VT_UI1

18

VT_UI2

19

VT_UI4

20

VT_I8

21

VT_UI822

VT_INT

23

VT_UINT24

VT_VOID25

VT_HRESULT26

VT_PTR27

VT_SAFEARRAY28

VT_CARRAY

29

VT_USERDEFINED30

VT_LPSTR

31

VT_LPWSTR

36

VT_RECORD

64

VT_FILETIME

65

VT_BLOB66

VT_STREAM

67

VT_STORAGE

68

VT_STREAMED_OBJECT

69

VT_STORED_OBJECT

70

VT_BLOB_OBJECT

71

VT_CF

72

VT_CLSID

4095

VT_BSTR_BLOB

4096

VT_VECTOR

483

第 8 章 - 関数#

Variant 記憶形式

8192

VT_ARRAY

16384

VT_BYREF

32768

VT_RESERVED

値 … Variant に対する選択された値
オプションの時間値 … Magic のデータ型が時刻型で 'D' と設定されている場合のみ有効です。Variant の日付データタイプは、変日付と時間の両方で格納されます。［値］パラメータには日付を指定し、［オプションの時間値］パラメータには時間を指定して
ください。
戻り値：

作成された Variant を表す BLOB データ。BLOB 型項目を更新したり、Variant 値を保持したり、外部オブジェクトに直接 BLOB
データを渡す場合に使用できます。

例

VariantCreate('8','Hello') は、指定された文字列が設定された
VT_BSTR データタイプの Variant 値を返します。
VariantCreate(7,DATE(),TIME()) は、日付と時刻を元に設定された
VT_DATE データタイプの Variant 値を返します。

VariantGet

Variant データの取得指定した Variant データに対する 値を返します。
構文：

VariantGet ( Variant 値、型 )パラメータ：

Variant 値 … Variant を含んだ BLOB データ
型 … Magic の型を表す文字

戻り値：
例• A … 文字型
• N … 数値型
• L … 論理型
• D … 日付型
• T … 時刻型
• B … BLOB 型• V … ベクトル型
Variant データタイプと Magic のデータ型によって値が決まります。
VariantGet(B,'A') は、文字値を返します。
VariantGet(C,'D') は、日付値を返します。

VariantType

Variant データタイプの取得
Variant データタイプの記憶形式を返します。

484

構文 :

VariantType (Variant 値 )パラメータ：

Varinat 値 … Variant データタイプを含んだ BLOB データ

戻り値：

記憶形式を表す数値。BLOB データが正当な Variant でない場合、
NULL を返します。

例：

データタイプが ‘VT_I8’ の場合、「20」を返します。

参考：

Variant の記憶形式は以下の通りです。

リファレンス
Magic eDeveloper V9 Plus関数の説明（アルファベット順）

表 1：基本タイプ
以下の表は、基本的な Variant のタイプを示しています。
#

Variant 記憶形式

説明

0

VT_EMPTY

値が設定されていない

1

VT_NULL

Null 値2

VT_I2

2 バイト整数 （符号付）-32,768 〜 32,767

3

VT_I4

4 バイト整数 （符号付）-2,147,483,648 〜
2,147,483,647

4

VT_R4

4 バイト不動小数点数

1.1E -38 〜 3.4E +38(7 桁 )

5

VT_R8

8 バイト不動小数点数

2.2E -308 〜 1.7 E +308(15
桁)

6

VT_CY

通貨型

7

VT_DATE

日付型

8

VT_BSTR

サイズ情報をもった文字列型

9

VT_DISPATCH

IDispatch インターフェイス

10

VT_ERROR

エラー型

11

VT_BOOL

ブール型

12

VT_VARIANT

バリアント型 （バリアント型
配列にのみ使用）

13

VT_UNKNOWN

IUnknown インターフェイス

14

VT_DECIMAL

12 バイト数値 （符号付）

16

VT_I1

1 バイト整数 （符号付）-128 〜 127

1 バイト整数 （符号なし）

0 〜 255

範囲

17

VT_UI1

18

VT_UI22 バイト整数 （符号なし）

0 〜 65,535

19

VT_UI44 バイト整数 （符号なし）

0 〜 4,294,967,295

20

VT_I8

8 バイト整数 （符号付）

21

VT_UI88 バイト整数 （符号なし）

22

VT_INT

int 型

23

VT_UINT

unsigned int 型

表 2：配列と参照
以下の値は、基本タイプの値との論理和を使用して指定します。単独では有効になりません。
#

Variant 記憶形式

説明

16384

VT_BYREF

データ型への参照

8192

VT_ARRAY

データ型の配列例：• VT_I4|VT_BYREF …… 16387（16384 + 3）
• VT_I4|VT_ARRAY …… 8195（8192 + 3）
注意事項：

「VT_I4|VT_BYREF」での「|」という文字は、論理和を表します。
実際に定義式内で使用する場合は、ADD 演算子を使用してください。
VT_VARIANT は、単独では使用できません。表２の値と組み合わせて使用してください。
以下の組み合わせは使用できません。

リファレンス
Magic eDeveloper V9 Plus

485

第 8 章 - 関数
• VT_NULL|VT_BYREF• VT_EMPTY|VT_BYREF• VT_NULL|VT_ARRAY• VT_EMPTY|VT_ARRAYVarIndex

項目のシンボル名を取得
項目名に対応した項目のシンボル名が返ります。VarMod, VarAttr, VarPrev, VarSet,
VarPic などの シンボル名を指定する関数と組み合わせて使用できます。
構文：

VarIndex（項目名）

パラメータ：

項目名 … 項目名を示す文字列

戻り値：

指定された項目のインデックスが数値で返ります。

例：

VarIndex（'Customer ID ）項目名「Customer ID」のインデックスが返ります。

注意事項：

指定した項目名が存在しない場合は、「0」が返ります。
同じ項目名の項目が複数ある場合は、タスクツリー上のもっとも下位の項目の値が返ります。

VarInp

最後の入力項目を照会
カーソルが最後に置かれた項目（入力可能の項目）をチェックします。
構文：

VarInp（タスク番号）

パラメータ：

タスク番号…タスクツリー内のタスクの階層上の位置を表す数字。0 は現在のタスク、1 はそのすぐ上位の親を表します。

戻り値：

シンボル名…指定したタスクでカーソルが最後に置かれた項目のシンボル名が返ります。シンボル名は、ルートタスクの最初の項目が A 、その後、別の項目が選択されるたびに、１つずつ大きくなります。子タスクの番号は、その上位のタスクの番号をもとに順に付けられます。

例：

たとえば、タスク 1 に 2 つの［セレクト］コマンドが定義されており、その子タスクにさらに 2 つの［セレクト］コマンドが定義されている場合、［項目一覧］は次のようになります。
A VAR 1B VAR 2*******C VAR 3
D VAR 4
タスクの構造が上のような場合、カーソルが項目 B VAR 2 に置かれていたとします。ここで、子タスクのレベルで VarInp（1）を実行すると、「B」（親タスクの項目）が返ります。

VarMod

注意事項：

兄弟タスクがある場合、共通の親タスクの最後の項目をもとに、各兄弟タスクの番号付けが行われます。

関連項目：

VarAttr 、VarCurr 、VarMod 、VarName 、VarPrev

項目の値が変更されたことをチェック
データビューのレコードが取り出されてから、項目の値が変更されているかどうかをチェックできます。
構文：

486

VarMod（シンボル名）
リファレンス
Magic eDeveloper V9 Plus関数の説明（アルファベット順）
パラメータ：

シンボル名…値をチェックしたい項目。
［項目一覧］の項目のシンボル名を指定します。

戻り値：

論理値

例：

VarName• True…項目の値が変更されていた場合• False…値が変更されていない場合
VarMod（'A' VAR）では、データビューのレコードの取り出し後、項目 A の値が変更されていれば「True」が返ります。

オリジナルのテーブルと項目を取得
項目のシンボル名を指定し、その項目のオリジナルのテーブルと項目を取り出します。

VarPic

構文：

VarName（シンボル名）

パラメータ：

シンボル名…［項目一覧］の項目のシンボル名を指定します。

戻り値：

文字列…シンボル名で指定した項目名が、元のテーブル名と一緒に返ります。テーブル名と項目名はピリオド（.）でつながれます。項目が変数項目の場合、テーブル名は「変数項目」と表示されます。

例：

項目 A のオリジナルのテーブルと項目がそれぞれ、「顧客」、「顧客番号」の場合、VarName（'A'VAR）では、「顧客 . 顧客番号」という文字列が返ります。

注意事項：

シンボル名には VAR リテラルコードを付加します。これで、［項目一覧］で項目の位置が変わっても、正常に処理されます。

関連項目：

リテラル、VarAttr 、VarCurr 、VarInp 、VarMod 、VarPrev

項目の書式を取得
指定した項目の書式を取得します。
構文：

VarPic（シンボル名、モード）

パラメータ：

シンボル名…［項目一覧］の項目のシンボル名を指定します。
モード（数値）…機能モード

戻り値：• モード =0 の場合
カラム特性、変数特性で定義された書式が返ります。BLOB
データは、空白が返ります。
• モード = 1 の場合その項目に対応するコントロールの特性で定義された書式が返ります。ただしクラス =0 のフォームに定義されたコントロー
ルでのみ、この機能モードが有効です。

注意事項：

シンボル名は、VAR リテラルをつけて使用します。
モード =1 を指定した場合でも、コントロール特性に書式が定義されていない場合、モード = ０と同じ結果が返ります。また
フォームに定義されていない項目は、モード =0 と同じ結果になります。
モードに 0,1 以外を設定したときは、モード =0 とみなされます。

VarPrev

項目のオリジナル値を取得
項目のオリジナルの値を取り出せます。項目は、［項目一覧］のシンボル名で指定します。

リファレンス
Magic eDeveloper V9 Plus487

第 8 章 - 関数
構文：

VarPrev（シンボル名）

パラメータ：

シンボル名 …［項目一覧］の項目のシンボル名を指定します。

戻り値：

指定した項目のオリジナルの値。その項目のデータ型で返ります。

例：

VarPrev（'BE'VAR）では、項目：BE のオリジナルの値が返ります。
VarPrev（'CR'VAR + 7）では、項目：CY （CR の 7 つ後の項目）のオリジナル値が返ります。
VarPrev（'W'VAR）<> W では、項目の値が変更されているかど
うかチェックできます。したがって、VarMod（'W'VAR）と処理は同じになります。

注意事項：

シンボル名は、VAR リテラルをつけて使用します。これで、［項目一覧］で項目の位置が変わっても、正常に処理されます。
この関数を使用して、データビューのレコードが読み込まれた
ときの項目の値を取り出すことができます。
なお、この VarPrev 関数は、レコードの初期化段階では使わない
ようにします。これは、レコードの初期化には、項目の値が入っていないためです。また、代入式で使うのも避けるようにします。
いずれにしても、初期化段階では、値が変更されることはほとんどないため、VarPrev 関数は必要ありません。

関連項目：

VarSetリテラル、VarCurr 、VarMod

値を設定
項目を指定し、その項目に値を設定できます。
構文：

VarSet（シンボル名 , 値）

パラメータ：

シンボル名 …［項目一覧］の項目のシンボル名を指定します。
VAR リテラルコードを付加します。
値 … 項目に格納する値。

戻り値：

論理値 … 常に「True」が返ります。

注意事項：

項目更新では加算更新はできず、代入更新のみとなります。
再計算は、VarSet 関数の完了後に実行されます。
構造が配列になっているデータベースの場合、VarCurr と VarSetの 2 つの関数を組み合わせて使うことで、計算によっては効率的に処理を行うことができます。たとえば、1000 行、100 列で構成される配列があり、この配列に 1000 レコード、100 列のデー
タが保存されているとします。ここで、アプリケーションで、セルを指定し、そのセルのカレントの値に値 a を加算したかったとします。この場合、処理は、バッチの子タスクでデータビューの範囲（最小値と最大値）を指定してレコード（行）を特定し、［レコード後処理］で列を使用して項目の値を更新することになります。
この処理は、VarCurr と VarSet がない場合には、更新を 200 回行うといった処理が必要になります。一方、VarCurr と VarSet を組
み合わせることで、1 回の［アクション］コマンドで可能になります。式は、次のようになります。
VarSet（'A'VAR + 列 1, VarCurr（'A'VAR + 列 1）+ 値 a）

488

リファレンス
Magic eDeveloper V9 Plus関数の説明（アルファベット順）
なお、上記では、'A'VAR はレコードの最初のレコードを指す
Magic のトークンで、列の最初の値は「1」で始まるものとしています。

VecCellAttr

ベクトルセルの型を取得
ベクトル項目のベクトルセルのデータ型が返ります。
構文 :VecCellAttr（ベクトル項目）

パラメータ：

ベクトル項目 … ベクトル項目を表すシンボル名

戻り値：

文字 … ベクトル項目のセルのデータ型を表します。
• A … 文字型
• N … 数値型
• L … 論理型
• D … 日付型
• T … 時刻型
• B … BLOB 型
ベクトル項目が指定されていない場合は、スペースが返ります。

VecGetベクトル項目からデータを取得
ベクトル項目の指定したセルのデータを返します。
構文 :VecGet( ベクトル項目、セルインデックス )パラメータ：

ベクトル項目 … ベクトル項目を表すシンボル名
セルインデックス … データを取り出すセルのインデックス

戻り値：

格納されているデータ。型は、セルのデータ型に依存します。
以下の場合、NULL が返ります。
• ベクトル項目でない場合• セルインデックスが負の場合セルが更新されていない場合は、セルモデルのデフォルト値が返ります。

VecSetベクトル項目にデータを格納
ベクトル項目の指定したセルのデータを更新します。
構文 :VecSet( ベクトル項目、セルインデックス、値 )パラメータ：

ベクトル項目 … ベクトル項目を表すシンボル名。VAR リテラルが必要です。
セルインデックス … データを更新するセルのインデックス
値 … 更新する値

戻り値：

論理値
• True … 処理が成功した場合• False … 処理が失敗した場合
以下の場合 「False」が返ります。
• ベクトル項目でない場合• セルインデックスが負の場合

VecSize

ベクトル項目のセル数を取得

リファレンス
Magic eDeveloper V9 Plus489

第 8 章 - 関数
ベクトル項目のセルの数を返します。
構文 :VecSize( ベクトル項目 )パラメータ：

ベクトル項目 … ベクトル項目を表すシンボル名

戻り値：

数値 … データが格納されているセルの数
データが１つも更新されていない場合は「0」、ベクトル項目でない場合は「-1」が返ります。

ViewMod

データビューのレコードが修正されたことをチェック
この関数を使用して、データビューのレコードが読み込まれた後、そのレコードが修正されたかどうかをチェックできます。

WINBox構文：

ViewMod（タスク番号）

パラメータ：

タスク番号…タスクの階層上の位置を示す値で、カレントのタ
スクが 0 、親タスクが 1 、その親タスクが 2 などとなります。

戻り値：

論理値

例：

• True…レコードの内容が修正されていた場合• False…修正されていない場合
ViewMod（0）という式が［エディット］コマンドで条件として使われている場合、カレントのタスクでカレントのレコードが、読込後に修正されていれば、エラーメッセージが表示されます。

関連項目：

VarModウィンドウの位置とサイズを取得
ウィンドウの X 座標、Y 座標、幅、高さのいずれかを取り出すことができます。
構文：

WINBox（タスク番号 , 文字列）

パラメータ：

タスク番号…タスクの実行レベル。「0」は、カレントのレベル、「1」は親タスクのレベルを表します。
文字列…取り出す情報を指定します。「X」を指定すると X 座標、「Y」では Y 座標、「W」では幅、「H」では高さが取り出されます。

WinHelp

戻り値：

数値…サイズに関する情報

例：

WINBox （0,'W'）

Windows ヘルプを開く指定された ヘルプファイルを開き指定されたコマンドを実行します。
構文 :WinHelp( ヘルプファイル , コマンド , ヘルプキー )パラメータ :

ヘルプファイル … ヘルプファイルのパス名とファイル名
コマンド … ヘルプファイルがオープンされる時に実行される ヘ
ルプコマンドを指定する番号
以下の番号がサポートされるコマンドを表します。
• 1 … Context• 2 … Contents• 3 … SetContents• 4 … ContextPopup• 5 … Key490

リファレンス
Magic eDeveloper V9 Plus関数の説明（アルファベット順）• 6 … Command• 7 … ForceFile• 8 … HelpOnHelp• 9 … Quit
ヘルプコマンドについては、第 12 章「エンドユーザメニュー &ヘルプ」の「ヘルプリポジトリ」を参照してください。
ヘルプキー…ヘルプコマンドの追加パラメータとなる文字列。
ヘルプキーが不要な場合は空白にしてください。
戻り値

例：

論理値
• True … ヘルプファイルがオープンできた場合• False … 処理に失敗した場合
WinHelp('Support¥MGHELPW.CHM',2,'') は、Magic のヘルプ ファイルのコンテンツを指定してオープンします。
WinHelp('Support¥MGHELPW.CHM',1,'1001') は、Magic のヘルプファ
イルを開き、そして、コンテキスト番号 (1001) に割り当てられた トピックを表示します。

注意事項：

WINHWND

CHM ファイル（Html ヘルプ）の場合、SetContents、ContextPopup、Key、Command、ForceFile、HelpOnHelp コマンドは動作しません。

ウィンドウハンドルを取得
Magic のウィンドウに対応する Windows のウィンドウハンドル（HWND ）が返ります。このハンドルは、ユーザ定義関数で使用できます。
構文：

WINHWND（タスク番号）

パラメータ：

タスク番号…タスクの実行レベル。「0」は、カレントのレベル、「1」は親タスクのレベルを表します。

戻り値：

数値…Windows のウィンドウハンドル（HWND）

例：

WINHWND（1）WSAttachmentAdd Web サービスに BLOB データを添付
Web サービスの DIME(Direct Internet Message Encapsulation) とは、XML ドキュメン
ト内に動画や画像、音声データなどのバイナリデータを埋め込むための仕組みです。Magic は、Web サービスのプロバイダ機能において DIME をサポートします。
Web サービスプロバイダーとなるプログラムは、SOAP リクエストから添付ファイルを取得したり、SOAP リクエストにファイルを添付したりすることができます。
この関数を実行した場合、戻り値の XML ファイルの「Content-Type」が「text/xml」
から「application/dime」に変わります。
この関数は、Web サービスのプロバイダとして実行している場合に、指定した BLOB
データを Web サービスのメッセージに添付します。Web サービス処理以外では有効になりません。
構文：

WSAttachmentAdd ( 添付項目 )パラメータ：

添付項目…メッセージに添付する BLOB 型項目。複数の内容を添付する必要がある場合は、一旦ベクトル項目にしてこのベク
トル項目を指定します。

戻り値：

文字列…添付の際に自動的に作成される UUID(Universally Unique
IDentifier ) 値。これは、返される XML ドキュメントの中を参照
する場合に使用できます。

リファレンス
Magic eDeveloper V9 Plus

491

第 8 章 - 関数
添付した BLOB データが空か、Magic プログラムがプロバイダとして実行していない場合は NULL が返ります。
例：

WSAttachmentAdd (A)「A」は BLOB 型項目です。XML メッセージ内に送られた時の
UUID が返されます。

注意事項：

WSAttachmentGet

プロバイダプログラムのタスク後処理の実行後に、添付内容はメモリから削除されます。

Web サービスメッセージの添付ファイルを取得
Web サービスメッセージに添付されている DIME 仕様のデータを取り出します。
構文：

WSAttachmentGet (ID)パラメータ：

ID…次のどちらかのタイプの値を指定してください。

戻り値：• UUID（文字型）…DIME 添付を識別するユニークな英数字場合によっては、送信側は UDDI を XML メッセージの中に追加することもできます。
• インデックス（数値型）…Magic が添付ファイルを取り出す際のインデックス値。1 から始まるインデックス値に基づいて取り出します。
添付ファイルが含まれた BLOB データ
指定された UUID やインデックスに該当する添付ファイルが見つからない場合、NULL が返ります。
Magic プログラムがプロバイダとして実行していない場合も
NULL が返ります。

例：

WSAttachmentGet (1)…メッセージ中の最初の添付ファイルを返します。
WSAttachmentGet ('F2DA3C9C-74D3-4A46-B925-B150D62D9483'),…指定した UUID に基づいて 添付ファイルを返します。

注意事項：

実行中に、以下の構文を使用することで、プロバイダプログラ
ム間で受信メッセージの添付ファイルが利用できます。
WSAttachmentGet (UUID) ／ WSAttachmentGet ( インデックス）
インデックスの場合、DIME メッセージ内に添付されている順に取り出されます。
プロバイダプログラムのタスク後処理の実行後に、添付内容はメモリから削除されます。

XMLBlobGet

XML 要素／ XML 属性の値の取得
要素パスに従って XML 要素／ XML 属性の値を返します。
構文：

XMLBlobGet( タスク番号 , ファイル , 要素パス , 属性名 )パラメータ：

タスク番号 … タスクの階層上の位置を表す数値。「0」は現在のタスク、「1」はその親タスクを表します。
ファイル … 現行タスクの（XML ダイレクトアクセスが設定された）入出力テール上の番号
要素パス … XML 要素のパスを表す文字列。パス文字列の構文は、以下の通りです。
要素名 [[ インデックス ]] [ 要素名 [[ インデックス ]] ... ]• 要素名 … XML 要素の名前

492

リファレンス
Magic eDeveloper V9 Plus関数の説明（アルファベット順）• インデックス … 複数存在する中の特定の要素を示すインデックス。インデックス値が 0 以下の場合、最初の要素を示します。
属性名 … XML 属性の名前
戻り値：

BLOB データ … XML の解析に成功した場合、要求される要素の値が返ります。失敗した場合、空白が返ります。

例:<?xml version="1.0"?><order id="123"><issued_by><name>John Smith</name><address><street>Somewhere</street><city>Nowhere</city></address></issued_by><item cat_num="2145451544"><price>99.99</price><amount>2</amount></item><item cat_num="1384325456"><price>19.99</price><amount>10</amount></item></order>
上記のファイルが、C:¥myxml.xml に保存されているおり、現在のタスク最初の入出力ファイルテーブルが XML ファイルになっている場合、以下の式のようになります。

注意事項

XMLCnt• XMLBlobGet ( 0,1,'order.issued_by.name') は、「John Smith」を返します。
• XMLBlobGet ( 0,1,'order.send_to.name') は、空白を返します。
（order に send_to 要素がないからです。）• XMLBlobGet ( 0,1,'order.item[2].price') は、「19.99」を返します。
• XMLBlobGet ( 0,1,'order.item[5].price') は、空白を返します。
（order には 2 つの要素しかないからです。）• XMLBlobGet ( 0,1,'order','id') は、「123」を返します。
• XMLBlobGet ( 0,1,'order.issued_by','date') は、空白を返します。
（issued_by 要素に日付型がないからです。）• XMLBlobGet ( 0,1,'order.issued_by','name') は、空白を返します。
（name は、属性ではなく issued_by 要素の子要素であるからです。）• XML データの中に、encoding の指定を常に行うようにしてください。encoding の指定が無い場合に、タグ名に DBCS が使えないなどの問題が起こることがあります。
• XML 中のタグの指定に「&lt; &gt;」が使用されている場合は、処理されません。
• データ内の文字列に、「&lt; &gt;」などの特殊文字（XMLStrを参照）が含まれている場合は、デコード（「<」、「>」文字への変換 ）されます。

XML 要素や XML 属性の数の取得
指定したパス内の XML 要素の数または、XML 属性の数が返ります。
構文：

XMLCnt（タスク番号 , ファイル番号 , 要素パス , 属性名）

パラメータ：

タスク番号…タスクの階層上の位置を表す数値。「0」は現在のタスク、「1」はその親タスクを表します。
ファイル番号…現行タスクの（「XML ダイレクトアクセス」または、「項目」が設定された）入出力テーブル上の番号

リファレンス
Magic eDeveloper V9 Plus493

第 8 章 - 関数
要素パス…XML 要素パスを表す文字列。構文は以下の通りです。
要素名［インデックス番号］. 要素名［インデックス番号］• 要素名…XML 要素の名前• インデックス番号…複数存在する要素の中を特定するインデックス。インデックス値が 0 または 0 未満である場合、１番目の要素になります。
属性名…指定された要素の中に定義された XML 属性名。値パラ
メーターと比較されます。
戻り値：

数値…指定したパス内の要素数。XML の解析が完了しなかったり指定した要素が存在しない場合、「0」が返ります。

例：<?xml version="1.0"?><order id="123"><issued_by><name>John Smith</name><address><street>Somewhere</street><city>Nowhere</city></address></issued_by><item cat_num="2145451544"><price>99.99</price><amount>2</amount></item><item cat_num="1384325456"><price>19.99</price><amount>10</amount></item></order>
上記の XML がファイルを「C:￥myxml.xml」に保存し、現在のタスクの入出力テーブルの先頭が XML ファイルになっている場
合、次のように表現します。

注意事項

XMLDelete• XMLCnt (0, 1, 'order.issued_by.name')…戻り値 =1• XMLCnt (0, 1, 'order.send_to.name')…戻り値 = 0'send_to' という要素（タグ）が存在しないため。
• XMLCnt (0, 1, 'order.item')…戻り値 = 2• XMLCnt (0, 1, 'order.item[2]', 'cat_num')…戻り値 =1• XML データの中に、encoding の指定を常に行うようにしてください。encoding の指定が無い場合に、タグ名に DBCS が使えないなどの問題が起こることがあります。
• XML 中のタグの指定に「&lt; &gt;」が使用されている場合は、処理されません。
• データ内の文字列に、「&lt; &gt;」などの特殊文字（XMLStr を参照）が含まれている場合は、デコード（「<」、「>」文字への変換 ）されます。

XML 要素や XML 属性の削除
指定したパス内の XML 要素または、XML 属性を削除します。
構文：

XMLDelete（タスク番号 , ファイル番号 , 要素パス , 属性名）

パラメータ：

タスク番号…タスクの階層上の位置を表す数値。「0」は現在のタスク、「1」はその親タスクを表します。
ファイル番号…現行タスクの（「XML ダイレクトアクセス」または、「項目」が設定された）入出力テーブル上の番号
要素パス…XML 要素パスを表す文字列。構文は以下の通りです。
要素名［インデックス番号］. 要素名［インデックス番号］

494

リファレンス
Magic eDeveloper V9 Plus関数の説明（アルファベット順）• 要素名…XML 要素の名前• インデックス番号…複数存在する要素の中を特定するインデックス。インデックス値が 0 または 0 未満である場合、１を指定してください。
属性名…指定された要素の中に定義された XML 属性名。値パラ
メーターと比較されます。
戻り値：

数値
要素が正常に削除された場合は、「0」を返します。
関数の処理が失敗した場合、Magic は以下のエラーコードを返します。

例：• -1…入出力ファイルの指定が正しくありません• -2… 挿入された要素や属性が定義されていません• -3… 入出力ファイルを書き込みモードでオープンできませんでした• -4 …指定した要素パスが存在していません• -11…要素パスやインデックスが正しくありません• -20… XML ファイルが正しくありません（XML の解析に失敗しました）<?xml version="1.0"?><order id="123"><issued_by><name>John Smith</name><address><street>Somewhere</street><city>Nowhere</city></address></issued_by><item cat_num="2145451544"><price>99.99</price><amount>2</amount></item><item cat_num="1384325456"><price>19.99</price><amount>10</amount></item></order>
上記の XML がファイルを「C:￥myxml.xml」に保存し、現在のタスクの入出力テーブルの先頭が XML ファイルになっている場
合、次のように表現します。

注意事項• XMLDelete (0, 1, 'order.item[2].price','')…<price>19.99</price> が削除されます。
• XMLDelete (0, 1, 'order','id')…id 属性が削除されます。
［項目］メディアを定義した入出力ファイルを指定する場合は、
以下のように使用してください。
1. 親タスクで BLOB データと入出力ファイルを定義します。
2. XMLInsert を実行する子タスクを定義し、BLOB 型のパラ
メータ項目を定義します。
3. 親タスクから子タスクを呼ぶ際、パラメータで BLOB 型項目
を渡します。

XMLExist

XML 要素や XML 属性の存在チェック
指定したパス内に XML 要素または、XML 属性が存在すれば 「True」を返します。
構文：

XMLExist（タスク番号 , ファイル番号 , 要素パス , 属性名）

パラメータ：

タスク番号…タスクの階層上の位置を表す数値。「0」は現在のタスク、「1」はその親タスクを表します。

リファレンス
Magic eDeveloper V9 Plus495

第 8 章 - 関数
ファイル番号…現行タスクの（「XML ダイレクトアクセス」または、「項目」が設定された）入出力テーブル上の番号
要素パス…XML 要素パスを表す文字列。構文は以下の通りです。
要素名［インデックス番号］. 要素名［インデックス番号］• 要素名…XML 要素の名前• インデックス番号…複数存在する要素の中を特定するインデックス。インデックス値が 0 または 0 未満である場合、１を指定してください。
属性名…指定された要素の中に定義された XML 属性名。値パラ
メーターと比較されます。
戻り値：

例：

論理値
• True…XML 要素や XML 属性が存在した場合• False…XML 解析処理が成功しなかったり、要素が存在しない場合<?xml version="1.0"?><order id="123"><issued_by><name>John Smith</name><address><street>Somewhere</street><city>Nowhere</city></address></issued_by><item cat_num="2145451544"><price>99.99</price><amount>2</amount></item><item cat_num="1384325456"><price>19.99</price><amount>10</amount></item></order>
上記の XML がファイルを「C:￥myxml.xml」に保存し、現在のタスクの入出力テーブルの先頭が XML ファイルになっている場
合、次のように表現します。

注意事項

XMLFind496• XMLExist (0, 1, 'order.issued_by.name')…戻り値 =「True」• XMLExist (0, 1, 'order.send_to.name')…戻り値 =「False」'send_to' 要素が存在しないため。
• XMLExist (0, 1,'order.item[2].price')…戻り値 =「True」• XMLExist (0, 1, 'order.item[5].price')…戻り値 =「False」
item 要素が 2 項目しか存在しない。
• XMLExist (0, 1, 'order', 'id')…戻り値 =「True」• XMLExist (0, 1, 'order.issued_by', 'Date')…戻り値 =「False」'issued_by' 要素の中に 'Date' 属性が存在しないため。
• XMLExist (0, 1, 'order.issued_by', 'name')…戻り値 =「False」
name は、'issued_by' 要素の子要素であって、属性ではないため。
• XML データの中に、encoding の指定を常に行うようにしてください。encoding の指定が無い場合に、タグ名に DBCS が使えないなどの問題が起こることがあります。
• XML 中のタグの指定に「&lt; &gt;」が使用されている場合は、処理されません。
• データ内の文字列に、「&lt; &gt;」などの特殊文字（XMLStr を参照）が含まれている場合は、デコード（「<」、「>」文字への変換 ）されます。

XML 要素の値や属性値と一致するインデックス値の取得
リファレンス
Magic eDeveloper V9 Plus関数の説明（アルファベット順）
指定した値と XML 要素の値や属性値が一致した場合、そのインデックス値を返します。要素の配列形式の場合に使用します。
構文：

XMLFind（タスク番号 , ファイル番号 , 要素パス , 複数要素名、番号、子要素名／属性名、値）

パラメータ：

タスク番号…タスクの階層上の位置を表す数値。「0」は現在のタスク、「1」はその親タスクを表します。
ファイル番号…現行タスクの（「XML ダイレクトアクセス」または、「項目」が設定された）入出力テーブル上の番号
要素パス…XML 要素パスを表す文字列。構文は以下の通りです。
要素名［インデックス番号］. 要素名［インデックス番号］• 要素名…XML 要素の名前• インデックス番号…複数存在する要素の中を特定するインデックス。インデックス値が 0 または 0 未満である場合、１を指定してください。
複数要素名…指定した要素パス上に複数存在する XML 要素の名
前
番号…数値。次のパラメータの意味を示します。
• 0 …子要素を表します。
• 1…属性名を表します。
子要素名…複数要素名の子要素を示す XML 要素名。値パラメー
タと比較されます。値パラメータが空白の場合、複数要素名で指定された要素の値と比較されます。
属性名…指定された要素の中に定義された XML 属性名。値パラ
メーターと比較されます。
値…この値が含まれた、子要素または属性を検索します。

戻り値：

数値…要素のインデックス。XML の解析処理が正常に終わらなかったり、指定した要素が存在しない場合、「0」が返ります。

例：<?xml version="1.0"?><order id="123"><issued_by><name>John Smith</name><address><street>Somewhere</street><city>Nowhere</city></address></issued_by><item cat_num="2145451544"><price>99.99</price><amount>2</amount></item><item cat_num="1384325456"><price>19.99</price><amount>10</amount></item></order>
上記の XML がファイルを「C:￥myxml.xml」に保存し、現在のタスクの入出力テーブルの先頭が XML ファイルになっている場
合、次のように表現します。
• XMLFind (0, 1, 'order’,’issued_by’, 0, 'name', 'John Smith')…戻り値=1• XMLFind (0, 1, 'order’,’issued_by’, 0, 'name',, 'John')…戻り値 = 0
name 要素に ’John’ が存在しないため• XMLFind (0, 1, 'order', 'item', 1, 'cat_num', '1384325456')…戻り値 =2

リファレンス
Magic eDeveloper V9 Plus

497

第 8 章 - 関数

注意事項

XMLGet• XMLFind (0, 1, 'order', 'item', 1, 'cat_num', '12345')…戻り値 = 0‘order’パス内の’item’要素の’cat_num’属性の中に‘12345’ と言う値を含んだ属性が存在しないため• XMLFind (0, 1, 'order', 'item', 0, 'price', '19.99')…戻り値 = 2• XML データの中に、encoding の指定を常に行うようにしてください。encoding の指定が無い場合に、タグ名に DBCS が使えないなどの問題が起こることがあります。
• XML 中のタグの指定に「&lt; &gt;」が使用されている場合は、処理されません。
• データ内の文字列に、「&lt; &gt;」などの特殊文字（XMLStr を参照）が含まれている場合は、デコード（「<」、「>」文字への変換 ）されます。

XML 要素や属性の値の取得
XML 要素、または XML 属性の値を返します。
構文：

XMLGet（タスク番号 , ファイル番号 , 要素パス , 属性名）

パラメータ：

タスク番号…タスクの階層上の位置を表す数値。「0」は現在のタスク、「1」はその親タスクを表します。
ファイル番号…現行タスクの（「XML ダイレクトアクセス」または、「項目」が設定された）入出力テーブル上の番号
要素パス…XML 要素パスを表す文字列。構文は以下の通りです。
要素名［インデックス番号］. 要素名［インデックス番号］• 要素名…XML 要素の名前• インデックス番号…複数存在する要素の中を特定するインデックス。インデックス値が 0 または 0 未満である場合、１を指定してください。
属性名…指定された要素の中に定義された XML 属性名。値パラ
メーターと比較されます。

戻り値：

文字列…XML 要素または属性の値、解析処理が正常に終わらなかった場合は、空白が返ります。

例：<?xml version="1.0"?><order id="123"><issued_by><name>John Smith</name><address><street>Somewhere</street><city>Nowhere</city></address></issued_by><item cat_num="2145451544"><price>99.99</price><amount>2</amount></item><item cat_num="1384325456"><price>19.99</price><amount>10</amount></item></order>
上記の XML がファイルを「C:￥myxml.xml」に保存し、現在のタスクの入出力テーブルの先頭が XML ファイルになっている場
合、次のように表現します。
• XMLGet (0, 1, 'order.issued_by.name')…戻り値 = John
• XMLGet (0, 1, 'order.send_to.name')…戻り値 = 空白
‘order’ に 'send_to' という要素が存在しないため。
• XMLGet (0, 1, 'order.item[2].price’)…戻り値 = 19.99

498

リファレンス
Magic eDeveloper V9 Plus関数の説明（アルファベット順）• XMLGet (0, 1, 'order.item[5].price’)…戻り値 = 空白
‘item’ という要素は 2 項目しか存在しないため。
• XMLGet (0, 1, 'order',’id’)…戻り値 =123
• XMLGet (0, 1, 'order.issued_by',’Date’)…戻り値 = 空白
‘issued_by’ 要素の中に ‘Date’ 属性が存在しないため。
注意事項：

XMLGetAlias• XML データの中に、encoding の指定を常に行うようにしてください。encoding の指定が無い場合に、タグ名に DBCS が使えないなどの問題が起こることがあります。
• XML 中のタグの指定に「&lt; &gt;」が使用されている場合は、処理されません。
• データ内の文字列に、「&lt; &gt;」などの特殊文字（XMLStr を参照）が含まれている場合は、デコード（「<」、「>」文字への変換 ）されます。

XML ネームスペースのエイリアス取得
ネームスペース内部テーブルから、ネームスペース URI に対応したエイリアスを取り出します。
構文：

XMLGetAlias ( タスク番号 , ファイル番号 , URI)

パラメータ：

タスク番号…タスクの階層上の位置を表す数値。「0」は現在のタスク、「1」はその親タスクを表します。
ファイル番号…現行タスクの「XML ダイレクトアクセス」または、「項目」が設定された）入出力テーブル上の番号
URI…ネームスペース URI を表す文字列。空白は無効です。

戻り値：

文字列…ネームスペース URI に対応したエイリアス
URI が XML のデフォルトネームスペースの場合、空白が返ります。エラーが発生したり、URI に対応したエイリアスが存在しな
い場合、NULL 値が返ります。
以下の場合この関数は失敗します。

例：• URI に対応したエイリアスが存在しない場合• URI が正しくない場合<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="schema.xml"
elementFormDefault="qualified"targetNamespace="schema.xml"><xsd:element name="bookstore" type="bookstoreType"/><xsd:complexType name="bookstoreType"><xsd:sequence maxOccurs="unbounded"><xsd:element name="book" type="bookType"/></xsd:sequence></xsd:complexType>XMLGetAlias(0, 1, 'http://www.w3.org/2001/XMLSchema') URI(http://
www.w3.org/2001/XMLSchema) に対応したエイリアス（xsd）が返ります。

XMLGetEncoding

XML のエンコード情報を取得
XML ドキュメントのエンコード情報を取得します。
構文 :XMLGetEncoding （タスク番号 , ファイル番号）

パラメータ :

タスク番号…タスクの階層上の位置を表す数値。「0」は現在のタスク、「1」はその親タスクを表します。

リファレンス
Magic eDeveloper V9 Plus

499

第 8 章 - 関数
ファイル番号…現行タスクの「XML ダイレクトアクセス」または、「項目」が設定された）入出力テーブル上の番号

XMLInsert

戻り値 :指定したタスクの入出力テーブルでオープンした XML データのエンコード指定の内容（encoding="XXXX"）が返ります。エン
コード指定がない場合は、空白が返ります。

関連項目：

XMLSetEncoding

XML 要素や属性の追加指定された位置の XML 要素を XML ドキュメントに追加したり、属性を既存の XML
要素に追加します。
構文：

XMLInsert ( タスク番号 , ファイル番号 , 要素パス , 属性名 , 値 [,
前置／後置フラグ , 参照要素 , 自動変換 ])パラメータ：

タスク番号…タスクの階層上の位置を表す数値。「0」は現在のタスク、「1」はその親タスクを表します。
ファイル番号…現行タスクの（「XML ダイレクトアクセス」または、「項目」が設定された）入出力テーブル上の番号
要素パス…XML 要素パスを表す文字列。構文は以下の通りです。
要素名［インデックス番号］. 要素名［インデックス番号］• 要素名…XML 要素の名前。コロン（：）で区切ることができます。例：XSD:My_Element• インデックス番号…複数存在する要素の中を特定するインデックス。インデックス値が 0 または 0 未満である場合、１を指定してください。要素を追加する場合、属性値は空白を指定します。要素パスの一番右端の要素に対するインデックスを指定することはできません。
属性名…指定された要素の中に追加される XML 属性名。値パラ
メーターと比較されます。この値が空白の場合、要素パスで指定された XML 要素として追加されます。
値… 挿入される要素／属性の値が含まれる文字型、BLOB 型（リッチエディット）, メモ型のデータです。
前置／後置フラグ（任意）…以下の値を表します。
• A（前置）… 要素は、参照要素の後に追加されます。
• B（後置）… 要素は、参照要素の前に追加されます。
XML 要素の追加の時にこのパラメータが空白の場合、XML 要素
は親の要素内の最後の要素として追加されます。
属性の追加の場合は無視されます。
参照要素（任意）…XML 要素を追加する際の参照用に使用する
XML 要素名。属性の追加の場合は無視されます。
参照要素が指定されていない場合、［前置／後置フラグ］をもとに要素が追加されます。「前置」と指定された場合、親要素の最後の要素の前に追加します。「後置」と指定された場合、親要素の最初の要素として追加します。
自動変換（任意）…論理値

戻り値：

500

• True… XMLVal 関数のように正規の XML フォーマットに変換します。
• False …変換処理を行いません。
数値
要素が正常に追加された場合、追加された要素のインデックスを返します。属性が追加された場合は、「0」を返します。
リファレンス
Magic eDeveloper V9 Plus関数の説明（アルファベット順）
関数の処理が失敗した場合、Magic は以下のエラーコードを返します。

例：• -1…入出力ファイルの指定が正しくありません• -2… 挿入された要素や属性が定義されていません• -3… 入出力ファイルを書き込みモードでオープンできませんでした• -4 …指定した要素パスが、すでに存在しています .
• -6…指定した属性値が指定した要素内にすでに存在しています• -7… 前置／後値フラグの文字が間違っています• -8…参照要素が存在していません• -9… ドキュメントがルート要素を含んでいて、親のパスが空
白です• -10… 自動変換フラグが論理型ではありません• -11…要素指定に対して、インデックスが正しくありません• -13…要素か属性の名前が正しくありません<?xml version="1.0"?><order id="123"><issued_by><address><street>Somewhere</street><city>Nowhere</city></address></issued_by><item cat_num="2145451544"><price>99.99</price><amount>2</amount></item><item cat_num="1384325456"><price>19.99</price><amount>10</amount></item></order>
上記の XML DOM ツリーが「C:¥myxml.xml」ファイルに保存され、現在のタスクの最初の入出力ファイルが XML ファイルの場
合以下のような式にしてください。
XMLInsert (0, 1, 'order.issued_by.name','','','John Smith')
この例では、XML 要素が追加され、［issued_by］セクションは以下のようになります。
<issued_by><name>John Smith</name><address><street>Somewhere</street><city>Nowhere</city></address><name>John Smith</name></issued_by>「state」という要素を「city」要素の前に追加するには以下のようにします。
XMLInsert (0,1, 'order.issued_by.address.state','','Some state', 'A',
'city')
この場合、［issued_by］セクションは以下のようになります。

リファレンス
Magic eDeveloper V9 Plus

501

第 8 章 - 関数
<issued_by><name>John Smith</name><address><street>Somewhere</street><city>Nowhere</city><state>Some state</state></address><name>John Smith</name></issued_by>「ID」属性を追加するには以下のようにします。
XMLInsert (0, 1, 'order.issued_by.name','','ID','1')
この場合、XML 属性が追加され、［issued_by］セクションは以下のようになります。
<issued_by><address><street>Somewhere</street><city>Nowhere</city><state>Some state</state></address><name ID="1">John Smith</name></issued_by>
２番目の項目に属性タイプを追加する場合は以下のようにします。
XMLInsert (0, 1, 'order.item[2]', 'type', 'standard')
この場合、上記の２つの例では「0」が返ります。
XMLInsert (0, 1, order.item[3],'','')
この場合は処理が失敗し、エラーコード「11」が返ります。これは、要素の追加で、インデックスが要素パスの右端を指定しているからです。
注意事項［項目］メディアを定義した入出力ファイルを指定する場合は、
以下のように使用してください。
1. 親タスクで BLOB 型項目と入出力ファイルを定義します。
2. XMLInsert を実行する子タスクを定義し、BLOB 型項目のパラメータ項目を定義します。
3. 親タスクから子タスクを呼ぶ際、パラメータで BLOB 型項目
を渡します。

XMLModify

XML 要素か属性値の修正
XML 要素または属性値を修正します。
構文：

XMLModify ( タスク番号 , ファイル番号 , 要素パス , 属性値 , 値 [,自動変換 ])

パラメータ：

タスク番号…タスクの階層上の位置を表す数値。「0」は現在のタスク、「1」はその親タスクを表します。
ファイル番号…現行タスクの（「XML ダイレクトアクセス」または、「項目」が設定された）入出力テーブル上の番号
要素パス…XML 要素パスを表す文字列。構文は以下の通りです。
要素名［インデックス番号］. 要素名［インデックス番号］• 要素名…XML 要素の名前。コロン（：）で区切ることができます。例：XSD:My_Element502

リファレンス
Magic eDeveloper V9 Plus関数の説明（アルファベット順）• インデックス番号…複数存在する要素の中を特定するインデックス。インデックス値が 0 または 0 未満である場合、１を指定してください。
属性名…修正する XML 属性名。この値が空白の場合、要素パスで指定された XML 要素が修正されます。
値… 修正される要素／属性の値が含まれる文字列
自動変換（任意）…論理値• True… XMLVal 関数のように正規の XML フォーマットに変換します。
• False …変換処理を行いません。
戻り値：

数値
変更処理が正常に終了した場合は、「0」が返ります。
関数の処理が失敗した場合、Magic は以下のエラーコードを返します。

例：• -1…入出力ファイルの指定が正しくありません• -2… 挿入された要素や属性が定義されていません• -3… 入出力ファイルを書き込みモードでオープンできませんでした• -4 …指定した要素パスが正しくありません• -5 …属性が見つかりません• -10… 自動変換フラグが論理型でありません• -11…要素指定に対して、インデックスが正しくありません<?xml version="1.0"?><order id="123" xmlns=”http://www.magicsoftware.com”><issued_by><address><street>Somewhere</street><city>Nowhere</city></address></issued_by><item cat_num="2145451544"><price>99.99</price><amount>2</amount></item><item cat_num="1384325456"><price>19.99</price><amount>10</amount></item></order>
XMLModify (0,1,'order.item[2].price','','30')
この例では、２番目の項目要素内の「price」要素の値を「19.99」
から「30.00」に更新します。
XMLModify (0,1,'order.item[1]','cat_num','123456')
この例では、最初の項目要素内の「cat_num」属性値を「2145451544」から「123456」に更新します。

注意事項［項目］メディアを定義した入出力ファイルを指定する場合は、
以下のように使用してください。
1. 親タスクで BLOB 型項目と入出力ファイルを定義します。
2. XMLModify を実行する子タスクを定義し、BLOB 型項目のパラメータ項目を定義します。
3. 親タスクから子タスクを呼ぶ際、パラメータで BLOB 型項目
渡します。

リファレンス
Magic eDeveloper V9 Plus503

第 8 章 - 関数

XMLSetEncoding

XML ドキュメントのエンコード
書き込む XML ドキュメントにエンコードを設定します。エンコードは「encoding=UTF 8」のような書式で XML ヘッダに追加され、更に XML ドキュメン
ト自体をエンコード処理します。
構文 :XMLSetEncoding（タスク番号 , ファイル番号 , エンコード）

パラメータ :

タスク番号…タスクの階層上の位置を表す数値。「0」は現在のタスク、「1」はその親タスクを表します。
ファイル番号…現行タスクの（「XML ダイレクトアクセス」または、「項目」が設定された）入出力テーブル上の番号
エンコード… XML ドキュメントに設定するエンコードを表す文
字列

戻り値 :

数値
エンコード処理が正常に行われた場合は、「0」が返ります。失敗した場合、以下のエラーコードが返ります。

関連項目：
注意事項

XMLSetNS• -3… 入出力ファイルを書き込みモードでオープンできません
でした
XMLGetEncoding
エンコードする XML データのエンコード方式（ヘッダ部分）を読み取り、関数で指定されたエンコード方法でエンコードします。このため、ヘッダ内容とボディの内容が合っていなかった
り、ヘッダが指定されていない場合、実行されません。

ネームスペース URI の定義指定した XML ファイルにネームスペース URI を書き込みます。
構文：

XMLSetNS ( タスク番号 , ファイル番号 , エイリアス , URI)

パラメータ：

タスク番号…タスクの階層上の位置を表す数値。「0」は現在のタスク、「1」はその親タスクを表します。
ファイル番号…現行タスクの（「XML ダイレクトアクセス」または、「項目」が設定された）入出力テーブル上の番号
エイリアス…ネームスペースエイリアスを表す文字列。先頭は必ず文字で指定してください。空白の場合、デフォルトのネー
ムスペースを使用します。
URI…ネームスペース URI を表す文字列。空白は無効です。

戻り値：

数値
処理が正常に終了した場合は、「0」が返ります。
関数の処理が失敗した場合、Magic は以下のエラーコードを返します。

例：• -3… 入出力ファイルを書き込みモードでオープンできませんでした• -12…エイリアスがすでに存在しています• -13…エイリアス名が正しくありません<?xml version="1.0"?><order id="123"><issued_by><name>John Smith</name><address>
XMLSetNS(0, 1, '', 'http://www.magicsoftware.com/mgns')504

リファレンス
Magic eDeveloper V9 Plus関数の説明（アルファベット順）
デフォルトのネームスペースを URI(http://
www.magicsoftware.com/mgns) に割り当て以下のようになります。
<?xml version="1.0" encoding="UTF-8" standalone="no" ?><order id="123" xmlns="http://www.magicsoftware.com/mgns"><issued_by><name>John Smith</name><address>
XMLSetNS(0, 1, 'al1', 'http:// www.magicsoftware.com/mgns')「all」というエイリアスを URI(http://www.magicsoftware.com/mgns) に割り当て以下のようになります。
<?xml version="1.0" encoding="UTF-8" standalone="no" ?><order id="123" xmlns:all="http://www.magicsoftware.com/mgns"><issued_by><name>John Smith</name><address>
注意事項［項目］メディアを定義した入出力ファイルを指定する場合は、
以下のように使用してください。
1. 親タスクで BLOB 型項目と入出力ファイルを定義します。
2. XMLModify を実行する子タスクを定義し、BLOB 型項目のパラメータ項目を定義します。
3. 親タスクから子タスクを呼ぶ際、パラメータで BLOB 型項目
を渡します。

XMLStrXML データの文字列変換
正規の XML 文字列を予約語を使用した XML 表記に変換します。

XMLVal構文：

XMLStr( ソース文字列 )パラメータ：

ソース文字列 … 正規の XML 文字列

戻り値：

文字列 …予約語を使用した XML 表記に変換された文字列

例：

XMLStr('&lt;Hellow World!&gt;') は、「<Hellow World>」を返しま
す。

注意事項

予約語には以下のものがあります。
予約語

正規の XML 文字列

&

&amp;

<

&lt;

>

&gt;

'

&apos;"&quot;

正規の XML データへの変換
予約語を使用した XML 文字列を正規の XML 表記に変換します。
構文：

XMLVal( ソース文字列 )パラメータ：

ソース文字列 … 予約語を使用した XML データ

戻り値：

文字列 … 正規の XML 表記に変換された XML 文字列

例：

XMLVal('<Hello World!>') は、「&It;Hello World!&gt;」を返します。

リファレンス
Magic eDeveloper V9 Plus505

第 8 章 - 関数

Year

日付の年を取得
日付の年が返ります。年は、4 桁で返ります。

Zen

構文：

Year（日付）

パラメータ：

日付…日付

戻り値：

数値…年（4 桁）

例：

システムの日付が 97/01/28 の場合、Year（Date（））では、「1997」が返ります。

半角文字を全角に変換
１ バイトの半角文字（英数字またはカタカナ）を全角文字に変換します。ただし、半角スペースは、全角スペースに変換しません。
構文：

Zen（文字列）

パラメータ：

文字列…変換する文字列

戻り値：

文字列…変換された文字列

例：

Zen（'16KB'）=' １６ ＫＢ'
Zen（' ｶﾀｶﾅ '）=' カタカナ '

関連項目：

ZenS

Han

半角文字を全角に変換機能は Zen 関数と同じですが、半角スペースの処理を細かく設定できます。
構文：

ZenS（文字列 , 変換モード）

パラメータ：

文字列…変換する文字列
変換モード…0, 1, 2 のいずれか

戻り値：• 0…半角スペースを全角スペースに変換しません。（Zen 関数と同じ）• 1…半角スペースを全角スペースに変換します。
• 2…半角スペースを 2 個の半角スペースに変換します。
文字列…変換された文字列

例：

ZenS（' ﾄｳｷｮｳﾄ ﾄｼﾏｸ ',0）=' トウキョウト _ トシマク 'ZenS（' ﾄｳｷｮｳﾄ ﾄｼﾏｸ ',1）=' トウキョウト＿トシマク 'ZenS（' ﾄｳｷｮｳﾄ ﾄｼﾏｸ ',2）=' トウキョウト _ _ トシマク 'ZIMERead

漢字の読みを取得
直前に IME にて入力した漢字の読みを取得します。
構文：

ZIMERead（数値）パラメータ：

数値…任意

戻り値：

文字列（IME の変換モードに依存します）

参考：

IME がローマ字入力のモードのときにアルファベットに変換した場合について
1. IME を「ローマ字かな」モードで起動します。キーボードで「Ｏ ・Ｒ ・Ａ ・Ｎ ・Ｇ ・Ｅ 」を入力すると IME によって「おらんげ」と表示されます。

506

リファレンス
Magic eDeveloper V9 Plus関数の説明（アルファベット順）
2. ここで MS-IME97 の場合、F10 キーで「ORANGE 」に変換し確定します。このときに取得される読みは、「ORANGE 」ではなく入力時の「オランゲ」になります。
3. ローマ字の読みを取得するときは、IME の起動モードを「半角英数」にする必要があります。この場合、入力時も「ORANGE 」になるので正しい読みが取得できます。
例：
IME の入力モード

入力時

IME 確定時

読み取得

全角ひらがなおらんげ
ORANGE

ORANGE
ORANGE

ｵﾗﾝｹﾞ
ORANGE

ORANGE

*1

*1

英数半角
直接入力
（IME 起動なし）*1 IME が起動していないため、読みは取得されない。
注意事項：

IME が起動していない場合は動作しません。
読みの取得は IME の確定後に行われます。
入力時の IME のモードによっては正しく変換されない場合があります。
入力直後の項目の内容に対してのみ有効です。
IME の入力を１度確定後、入力したものを削除して再度入力した場合の戻り値は削除前のものを含んだ内容になります。
例：最初に「東京」と入力し IME を確定した後、削除して「横浜」と入力して確定します。この場合、読みとして取得されるのは「ﾖｺﾊﾏ」ではなく、「ﾄｳｷｮｳﾖｺﾊﾏ」になってしまいます。

ZKana

ひらがな・カタカナの変換
ひらがなをカタカナに変換、またはカタカナをひらがなに変換します。
構文：

ZKana（文字列 , 変換モード）

パラメータ：

文字列…変換する文字列
変換モード…0, 1 のいずれか

戻り値：• 0…ひらがなをカタカナに変換• 1…カタカナをひらがなに変換変換された文字列例：

ZKana（' あいうえお ',0）=' アイウエオ 'ZKana（' カキクケコ ',1）=' かきくけこ 'ZKana（' サシすせそ ',1）=' さしすせそ '注意事項：

リファレンス
Magic eDeveloper V9 Plus

半角カナの文字は変換されません。

507

第 8 章 - 関数

［このページは意図的に空白にしています。］

508

リファレンス
Magic eDeveloper V9 Plus

表示フォーム

9

表示フォームはオンライングラフィック表示に使用されます。インタフェースタイプは、ブラウザ（ブラウザ形式表示の場合）または GUI 表示（Magic クライアント表示の場合）のいずれかです。クラスは、「0」と定義される必要があります。
本章では、次の内容について説明します。
• ブラウザフォーム• ブラウザコントロール• GUI 表示フォーム• GUI 表示コマンド• GUI 表示コントロール

リファレンス
Magic eDeveloper V9 Plus509

第 9 章 - 表示フォーム

ブラウザフォーム
ブラウザフォームは、Web 形式アプリケーションの実行時に使用されます。
ブラウザフォームは、［タスク特性］ダイアログの［タスクタイプ］欄が［R= ブラウザ］と指定されている場合にのみ作成できます。
フォームのレイアウトの作成は、外部の Web オーサリングツールを使用して行います。
HTML ファイルをブラウザタスクと統合させ、HTML 内のオブジェクトを Magic のコン
トロールとして扱うことができます。
フォームテーブルのブラウザエントリからズームすると、［HTML コントロール］テーブ
ルが下図のように表示されます。

図 9-1 HTML コントロールテーブル

ブラウザサブフォーム
サブフォームは、複数のプログラムまたはタスクにより管理されている情報を 1 つのブ
ラウザフォームとして実行または表示できます。サブフォームを使用すると、呼び出す
プログラムまたはタスクとブラウザフォームの間のリレーションを実装してインター
ネット用の高度な画面を作成できます。
サブフォームは、選択したプログラムまたはタスクとブラウザフォームの間のリレー
ションを実行サーバに伝えることを目的としています。サブフォームの特性は、［HTMLコントロール］テーブルの［コントロール特性］シートに表示されます。ブラウザフォー
ムは複数のサブフォームをサポートできます。
フォームテーブル内のブラウザフォームエントリから［HTML コントロール］テーブルにズームして、サブフォームを定義できます。サブフォームの特性は次のとおりです。
• 接続先 …… 何を実行するかを指定します。
•

P= プログラム•

S= サブタスク• プログラム / タスク番号 …… 接続先の指定に基づいてプログラムかサブタスクを指定
します。

510

• パラメータ ……起動先に渡すパラメータを指定します。
リファレンス
Magic eDeveloper V9 Plus

ブラウザフォーム• タブで移動 …… Tab キーによる動作を指定します。
•

Yes …… エンドユーザは、Tab キーでサブフォームに移動できます。

•

No …… カーソルを（マウスで）サブフォームに移動しなければなりません。

• キャッシュ有効 …… 親のブラウザタスクで読み込んだレコードに対するサブフォー
ムのデータビューをクライアント側でキャッシュするかどうかを指定します。
•

Yes …… データビューをキャッシュします。これによって、エンドユーザが以前のレコードに戻ったとき、サブフォームのデータビューに対するサーバへのアクセス処理がなくなります。

•

No …… クライアントはサブフォームのデータビューをキャッシュせず、サーバに対してサブフォームのデータビューの変更内容を毎回アクセスします。

サブフォームのデータビューは、以下の場合にキャッシュから削除されます。
• ［ビュー再表示］アクションが実行されたとき。
•

登録モードに変更された場合。修正モードで行追加された場合は、クライアン
トはサブフォームのキャッシュを削除しません。

• ［ロールバック］アクションが使用されたとき。
•

ブラウザタスクが終了したとき。

サブフォームへのキーボードアクセス［タブで移動］を「Yes」にすると、Tab キーを使用して親タスクからサブフォームにアクセスすることができます。
すべてのサブフォームのタブ順序は、HTML コントロールダイアログでの位置、およびセレクトコマンドの順序をもとに決定されます。
タブ順序によるサブフォームの位置は、サブフォームコントロールの前の HTML コント
ロール内で定義された項目間で設定されます。
サブフォームにアクセスする時の動作は以下の通りです。
• カーソルがサブフォーム内の最後のパーク可能コントロールにある場合、次項目イベントを実行すると、カーソルは親タスクのセレクトコマンドの順番に基づいて次のパーク可能コントロールに移動します。
• 次のコントロールが他のサブフォームにある場合、次項目イベントを実行すると、カーソルはサブフォーム内の最初のパーク可能コントロールに移動します。
• サブフォームが［HTML コントロール一覧］の先頭になく、カーソルがサブフォーム
内の最初のパーク可能コントロールにある場合、前項目イベントを実行すると、カー
ソルは親タスクのHTMLコントロール一覧でサブフォームの前に定義されたパーク可能コントロールに移動します。
• 前のコントロールが他のサブフォームにある場合、前項目イベントを実行すると、カーソルはサブフォーム内の最後のパーク可能コントロールに移動します。
• サブフォームが現行タスクの最初の HTML コントロールに定義されている場合、タスクはサブフォームの最初のパーク可能コントロールに直接パークします。ネストされたサブフォームでも同様です。
• ［タブで移動］特性が「Yes」の場合、サブフォームでは循環入力の設定は無視されます。
［タブで移動］特性を「No」に設定することで、Tab キーによってサブフォームにアクセスすることを防ぐことができます。

サブフォームの子タスクの動作
サブフォームに子タスクが定義されている場合、実行時に以下のように動作します。
• 子タスクのタスク前処理は、親タスクのタスク前処理の後で最初のレコード前処理よりも前に実行されます。
• 子タスクのタスク後処理は、親タスクの最後のレコード後処理の後でタスク後処理の前に実行されます。
リファレンス
Magic eDeveloper V9 Plus

511

第 9 章 - 表示フォーム

ブラウザフォーム特性
ブラウザフォーム特性は次のとおりです。

モデル• モデル……以下のことができます。
•

既存のモデルの選択•

デフォルトのフォーム特性の表示•継承されている全ての特性を解除•

全ての特性の継承設定

詳細• 繰返し行数……テーブルコントロールの最大行数を指定します。
• HTML ファイル……ブラウザフォームのインタフェース定義のテンプレートとして割当てる HTML ファイルです。
• フォーム名……タイトルバーを表示する文字列を指定します。

入力• モーダルウィンドウ……モーダルウィンドウとは、起動元のタスクのウィンドウを一時停止状態にするウィンドウです。起動されたウィンドウが閉じるまで起動元のタス
クのウィンドウにフォーカスを移すことができなくなります。
「No」に設定すると、どちらのウィンドウにもフォーカスを移すことができます。

表示• デフォルトクラス……式でコントロールのクラス名を指定します。
• ヘルプ画面……フォームと関連付けるヘルプ画面を指定します。
• 背景……フォームの背景として使用するイメージファイル名を表す式番号を指定します。
• 色……フォームの色を表す式番号を指定します。

位置とサイズ• 左辺位置……ブラウザフォームの左辺位置を表す式番号を指定します。
• 上辺位置……ブラウザフォームの上辺位置を表す式番号を指定します。
• 幅……ブラウザフォームの幅を表す式番号を指定します。
• 高さ……ブラウザフォームの高さを表す式番号を指定します。
フォーム特性の左辺位置および上辺位置を設定していない場合、コールコマンドなどで新たに表示される子ウィンドウは、親ウィンドウより内側に表示さます。
JavaScript によって HTML ファイルのロード時にウィンドウの位置を指定していても、Magic のデフォルト位置が有効になります。

HTML コントロールテーブル［HTML コントロール］テーブルには、Magic のデータ項目に割当てられている HTML 入力タグが表示されます。このテーブルには次の項目があります 。
• #……自動的に生成されるエントリ番号。

512

リファレンス
Magic eDeveloper V9 Plus

ブラウザコントロール• HTML コントロール名……コントロールのラベル。コントロールに名前を付けた場
合、次の［式］特性は使用できません。
• 式……コントロールのラベルを表す式を定義します。式を定義した場合、［HTML コ
ントロール名］特性は使用できません。
• タイプ……データ項目に関連付けられているコントロールタイプを選択できます。
• 項目……項目一覧から、コントロールタイプと関連付けるデータ項目を選択できます。データ項目を選択した場合、［式］特性は使用できません。
• 式……データ項目を特定のコントロールタイプに関連付ける式を定義できます。式を定義した場合、［項目］特性は使用できません。
• ［HTML タグ追加］ボタン……クリックすると、［HTML コントロール一覧］テーブルが開きます。このテーブルには HTML ファイルに存在し、［HTML コントロール］テー
ブルに定義されていないコントロールの一覧が表示されます。
［HTML コントロール］
テーブルに追加する HTML コントロールは、複数選択できます。
ブラウザフォームの HTML コントロール一覧で移動、複写、上書きが可能です。
複写する場合は、HTML コントロール名がユニークになるようにしなければなりま
せん。

ブラウザコントロール
ブラウザタスク独自のコントロールとして以下のものがあります。
• I=IFRAME……HTML ドキュメントおよび他の外部オブジェクトの表示のためにインラインまたはフローティング形式で定義できるコントロール• O=その他……Magicがサポートしない他のHTML要素として定義できる コントロール

ブラウザコントロール特性
エディットコントロール特性モデル• モデル……継承が解除されている特性の継承をし直したり、エディットモデルのすべての特性の継承を解除することができます。さらに、別のモデルを選択することもできます。

詳細• 書式……コントロールの書式を指定します。
• 型……項目の型を選択します。

入力• パスワードエディット……エンドユーザがコントロールに入力した文字をアスタリ
スクで表示するかどうかを指定します。
• 必須入力……エンドユーザが必ずコントロールに値を入力しなければならないかどうかを表す式番号を指定します。
• 修正許可……エンドユーザがコントロールの値を変更できるかどうかを表す式番号を指定します。
• 複数行編集……エンドユーザが複数行のテキストを入力できるかどうかを指定します。
リファレンス
Magic eDeveloper V9 Plus513

第 9 章 - 表示フォーム• 選択プログラム……このコントロールからズームして起動するプログラムを指定します。
• 起動モード……［選択プログラム］特性で指定したプログラムの起動モードを指定します。
•

B= 前置……ズームイベントにより選択プログラムが実行されます。プログラム終了時、項目上にカーソルは残ったままになります。

•

P= 自動……コントロールにカーソルが置かれた時点で自動的に選択プログラムが実行されます。

•

A= 後置……ズームイベントにより選択プログラムが実行されます。プログラム終了時、次の項目上にカーソルは移動します。

表示• デフォルトクラス……コントロールのクラス名を式で指定します。
• マウスオーバクラス……コントロールの上にマウスカーソルが置かれたときの表示に利用されるクラスを式で指定します。
マウスカーソルがコントロールから離れたときには、デフォルトクラスに戻ります。
• マウスダウンクラス……マウスカーソルをコントロールに置いて、ボタンをクリックしたときの表示に利用されるクラスを式で指定します。
マウスカーソルがコントロール上にあり、クリックボタンを離したときには、マウス
オーバークラスに戻ります。マウスカーソルをコントロール上から外したときには、
デフォルトクラスに戻ります。
• デフォルトスタイル……コントロールの属性を設定するスタイルのリストを定義します。
スタイルの名前と値はあらかじめ設定しておく必要があります。その値は式によって設定されます。式はスタイルの値に置き換えられます。式が再計算されると、新しい値で定義されます。
• マウスオーバスタイル……コントロールの上にマウスカーソルが置かれたときの表示に利用されるスタイルを定義します。
スタイルの値は、デフォルトスタイルと同じように設定されます。マウスカーソルがコントロールから離れたときには、デフォルトスタイルに戻ります。
• マウスダウンスタイル……マウスカーソルをコントロールに置いて、ボタンをクリッ
クしたときの表示に利用されるスタイルを定義します。スタイルの値は、デフォルト
スタイルと同じように設定されます。
マウスカーソルがコントロール上にあり、クリックボタンを離したときには、マウス
オーバースタイルに戻ります。マウスカーソルをコントロール上から外したときには、デフォルトスタイルに戻ります。
スタイルの名前は、JavaScript で利用可能で、HTML の構文として正しいものでなければなりません。
• 色……コントロールの色を表す式番号を指定します。
• ヘルプ画面……コントロールと関連付けるヘルプ画面を指定します。
• ツールチップ……コントロールと関連付けるツールチップを指定します。
• 自動ヘルプ……コントロールと関連付ける自動ヘルプを指定します。
• 可視……コントロールを表示するかどうか表す式番号を指定します。
• 有効……表示されているコントロールを有効にするかどうか表す式番号を指定します。

位置とサイズ• 左辺位置……コントロールの左辺位置を表す式番号を指定します。
• 上辺位置……コントロールの上辺位置を表す式番号を指定します。
• 幅…… コントロールの幅を表す式番号を指定します。

514

リファレンス
Magic eDeveloper V9 Plus

ブラウザコントロール特性• 高さ……コントロールの高さを表す式番号を指定します。

ラジオボタンコントロール特性モデル• モデル……継承が解除されている特性の継承をし直したり、ラジオボタンモデルのすべての特性の継承を解除することができます。さらに、別のモデルを選択することも
できます。

入力
• 必須入力……エンドユーザがこのコントロールに値を入力する必要があるかどうかを指定します。
• 選択プログラム……このコントロールからズームして起動するプログラムを指定します。
• 起動モード……［選択プログラム］特性で指定したプログラムの起動モードを指定します。
•

B= 前置……ズームイベントにより選択プログラムが実行されます。プログラム終了時、項目上にカーソルは残ったままになります。

•

P= 自動……コントロールにカーソルが置かれた時点で自動的に選択プログラムが実行されます。

•

A= 後置……ズームイベントにより選択プログラムが実行されます。プログラム
終了時、次の項目上にカーソルは移動します。

表示• デフォルトクラス……コントロールのクラス名を式で指定します。
• マウスオーバクラス……マウスオーバ状態のコントロールのクラス名を式で指定します。
• マウスダウンクラス……マウスダウン状態のコントロールのクラス名を式で指定します。
• デフォルトスタイル……コントロールのスタイルリストを定義します。
• マウスオーバスタイル……マウスオーバ状態のコントロールで有効なスタイルを定義します。
• マウスダウンスタイル……マウスダウン状態のコントロールで有効なスタイルを定義します。
スタイル／クラス特性の詳細は、「エディットコントロールの特性」（514 ページ）を参照してください。
スタイルの名前は、JavaScript で利用可能で、HTML の構文として正しいものでなければなりません。
• 色……コントロールの色を表す式番号を指定します。
• ヘルプ画面……コントロールと関連付けるヘルプ画面を指定します。
• ツールチップ……コントロールと関連付けるツールチップを指定します。
• 自動ヘルプ……コントロールと関連付ける自動ヘルプを指定します。
• 可視……コントロールを表示するかどうか表す式番号を指定します。
• 有効……表示されているコントロールを有効にするかどうか表す式番号を指定します。

リファレンス
Magic eDeveloper V9 Plus515

第 9 章 - 表示フォーム

位置とサイズ• 左辺位置……コントロールの左辺位置を表す式番号を指定します。
• 上辺位置……コントロールの上辺位置を表す式番号を指定します。
• 幅……コントロールの幅を表す式番号を指定します。
• 高さ……コントロールの高さを表す式番号を指定します。

ハイパーテキストコントロール特性モデル• モデル……継承が解除されている特性の継承をし直したり、ハイパーテキストモデルのすべての特性の継承を解除することができます。さらに、別のモデルを選択することもできます。

詳細• 書式……コントロールの書式を指定します。
• 型……項目の型を選択します。

入力• ハイパーリンク……［ハイパーリンク］ダイアログを使用して、リンク先の情報を指定します。
•

ハイパーリンクタイプ……「Magic プログラム」か「URL」のどちらかを指定します。

•

アプリケーション名……「Magic プログラム」の場合、Magic アプリケーションを指定します。

•

公開名……「Magic プログラム」の場合、公開プログラム名を指定します。

•

パラメータ……「Magic プログラム」の場合、プログラムに渡すパラメータを指
定します。

•

URL……「URL」の場合、URL アドレスを指定します。URL の最初の文字が「/」の時、インターネット開発ファイルルートは付加されません。

•

式……「URL」の場合、動的に変更できるように URL アドレスを式で指定します。

•

出力先フレーム……表示するフレームの名前を指定します。

表示• デフォルトクラス……コントロールのクラス名を式で指定します。
• マウスオーバクラス……マウスオーバ状態のコントロールのクラス名を式で指定します。
• マウスダウンクラス……マウスダウン状態のコントロールのクラス名を式で指定します。
• デフォルトスタイル……コントロールのスタイルリストを定義します。
• マウスオーバスタイル……マウスオーバ状態のコントロールで有効なスタイルを定
義します。

516

リファレンス
Magic eDeveloper V9 Plus

ブラウザコントロール特性• マウスダウンスタイル……マウスダウン状態のコントロールで有効なスタイルを定義します。
スタイル／クラス特性の詳細は、「エディットコントロールの特性」（514 ページ）を参照してください。
スタイルの名前は、JavaScript で利用可能で、HTML の構文として正しいものでなければなりません。
• 色……コントロールの色を表す式番号を指定します。
• ツールチップ……コントロールと関連付けるツールチップを指定します。
• 可視……コントロールを表示するかどうか表す式番号を指定します。
• 有効……表示されているコントロールを有効にするかどうか表す式番号を指定します。

位置とサイズ• 左辺位置……コントロールの左辺位置を表す式番号を指定します。
• 上辺位置……コントロールの上辺位置を表す式番号を指定します。
• 幅……コントロールの幅を表す式番号を指定します。
• 高さ……コントロールの高さを表す式番号を指定します。

プッシュボタンコントロール特性モデル• モデル……継承が解除されている特性の継承をし直したり、プッシュボタンモデルのすべての特性の継承を解除することができます。さらに、別のモデルを選択することもできます。

詳細• 書式……コントロールの書式を指定します。
• 型……項目の型を選択します。
• 実行イベント……プッシュボタンを押下したときに実行するイベントを指定します。

入力• 選択プログラム……このコントロールからズームして起動するプログラムを指定します。
• 起動モード……［選択プログラム］特性で指定したプログラムの起動モードを指定します。
•

B= 前置……ズームイベントにより選択プログラムが実行されます。プログラム終了時、項目上にカーソルは残ったままになります。

•

P= 自動……コントロールにカーソルが置かれた時点で自動的に選択プログラムが実行されます。

•

A= 後置……ズームイベントにより選択プログラムが実行されます。プログラム
終了時、次の項目上にカーソルは移動します。

表示• デフォルトクラス……コントロールのクラス名を式で指定します。
リファレンス
Magic eDeveloper V9 Plus

517

第 9 章 - 表示フォーム• マウスオーバクラス……マウスオーバ状態のコントロールのクラス名を式で指定します。
• マウスダウンクラス……マウスダウン状態のコントロールのクラス名を式で指定します。
• デフォルトスタイル……コントロールのスタイルリストを定義します。
• マウスオーバスタイル……マウスオーバ状態のコントロールで有効なスタイルを定義します。
• マウスダウンスタイル……マウスダウン状態のコントロールで有効なスタイルを定義します。
スタイル／クラス特性の詳細は、「エディットコントロールの特性」（514 ページ）を参照してください。
スタイルの名前は、JavaScript で利用可能で、HTML の構文として正しいものでなければなりません。
• ヘルプ画面……コントロールと関連付けるヘルプ画面を指定します。
• ツールチップ……コントロールと関連付けるツールチップを指定します。
• 自動ヘルプ……コントロールと関連付ける自動ヘルプを指定します。
• 可視……コントロールを表示するかどうか表す式番号を指定します。
• 有効……表示されているコントロールを有効にするかどうか表す式番号を指定します。

位置とサイズ• 左辺位置……コントロールの左辺位置を表す式番号を指定します。
• 上辺位置……コントロールの上辺位置を表す式番号を指定します。
• 幅……コントロールの幅を表す式番号を指定します。
• 高さ……コントロールの高さを表す式番号を指定します。

チェックボックスコントロール特性モデル• モデル……継承が解除されている特性の継承をし直したり、チェックボックスモデルのすべての特性の継承を解除することができます。さらに、別のモデルを選択することもできます。

詳細• 型……項目の型を選択します。

入力• 必須入力……エンドユーザが必ずコントロールに値を入力しなければならないかどうかを表す式番号指定します。
• 修正許可……エンドユーザがコントロールの値を変更できるかどうかを表す式番号
指定します。
• 選択プログラム……このコントロールからズームして起動するプログラムを指定します。
• 起動モード……［選択プログラム］特性で指定したプログラムの起動モードを指定します。

518

リファレンス
Magic eDeveloper V9 Plus

ブラウザコントロール特性•

B= 前置……ズームイベントにより選択プログラムが実行されます。プログラム終了時、項目上にカーソルは残ったままになります。

•

P= 自動……コントロールにカーソルが置かれた時点で自動的に選択プログラムが実行されます。

•

A= 後置……ズームイベントにより選択プログラムが実行されます。プログラム
終了時、次の項目上にカーソルは移動します。

表示• デフォルトクラス……コントロールのクラス名を式で指定します。
• マウスオーバクラス……マウスオーバ状態のコントロールのクラス名を式で指定します。
• マウスダウンクラス……マウスダウン状態のコントロールのクラス名を式で指定します。
• デフォルトスタイル……コントロールのスタイルリストを定義します。
• マウスオーバスタイル……マウスオーバ状態のコントロールで有効なスタイルを定義します。
• マウスダウンスタイル……マウスダウン状態のコントロールで有効なスタイルを定義します。。
スタイル／クラス特性の詳細は、「エディットコントロールの特性」（514 ページ）を参照してください。
スタイルの名前は、JavaScript で利用可能で、HTML の構文として正しいものでなければなりません。
• 色……コントロールの色を表す式番号を指定します。
• ヘルプ画面……コントロールと関連付けるヘルプ画面を指定します。
• ツールチップ……コントロールと関連付けるツールチップを指定します。
• 自動ヘルプ……コントロールと関連付ける自動ヘルプを指定します。
• 可視……コントロールを表示するかどうか表す式番号を指定します。
• 有効……表示されているコントロールを有効にするかどうか表す式番号を指定します。

位置とサイズ• 左辺位置……コントロールの左辺位置を表す式番号を指定します。
• 上辺位置……コントロールの上辺位置を表す式番号を指定します。
• 幅……コントロールの幅を表す式番号を指定します。
• 高さ……コントロールの高さを表す式番号を指定します。

リストボックスコントロール特性モデル• モデル……継承が解除されている特性の継承をし直したり、リストボックスモデルのすべての特性の継承を解除することができます。さらに、別のモデルを選択することもできます。

詳細• ソーステーブル……コントロールを関連づけるテーブルを指定します。
• 表示項目……画面に表示されるテーブルのカラムを指定します。
リファレンス
Magic eDeveloper V9 Plus519

第 9 章 - 表示フォーム• リンク項目……実際に格納されるテーブルのカラムを指定します。
• インデックス……画面に表示される順序を決めるテーブルのインデックスを指定します。
• 範囲……画面に表示されるレコードの範囲を決めるための定義を行います。
• ラベル……チョイスコントロールの静的な選択肢を表す文字列を指定します。
• 型……項目の型を選択します。

入力• 必須入力……エンドユーザが必ずコントロールに値を入力しなければならないかどうかを表す式番号指定します。
• 修正許可……エンドユーザがコントロールの値を変更できるかどうかを表す式番号
指定します。
• 選択プログラム……このコントロールからズームして起動するプログラムを指定します。
• 起動モード……［選択プログラム］特性で指定したプログラムの起動モードを指定します。
•

B= 前置……ズームイベントにより選択プログラムが実行されます。プログラム終了時、項目上にカーソルは残ったままになります。

•

P= 自動……コントロールにカーソルが置かれた時点で自動的に選択プログラムが実行されます。

•

A= 後置……ズームイベントにより選択プログラムが実行されます。プログラム
終了時、次の項目上にカーソルは移動します。

表示• デフォルトクラス……コントロールのクラス名を式で指定します。
• マウスオーバクラス……マウスオーバ状態のコントロールのクラス名を式で指定します。
• マウスダウンクラス……マウスダウン状態のコントロールのクラス名を式で指定します。
• デフォルトスタイル……コントロールのスタイルリストを定義します。
• マウスオーバスタイル……マウスオーバ状態のコントロールで有効なスタイルを定義します。
• マウスダウンスタイル……マウスダウン状態のコントロールで有効なスタイルを定義します。
スタイル／クラス特性の詳細は、「エディットコントロールの特性」（514 ページ）を参照してください。
スタイルの名前は、JavaScript で利用可能で、HTML の構文として正しいものでなければなりません。
• 表示行数……リストボックスに表示される行数を表す式番号を指定します。
• 色……コントロールの色を表す式番号を指定します。
• ヘルプ画面……コントロールと関連付けるヘルプ画面を指定します。
• ツールチップ……コントロールと関連付けるツールチップを指定します。
• 自動ヘルプ……コントロールと関連付ける自動ヘルプを指定します。
• 可視……コントロールを表示するかどうか表す式番号を指定します。
• 有効……表示されているコントロールを有効にするかどうか表す式番号を指定します。

520

リファレンス
Magic eDeveloper V9 Plus

ブラウザコントロール特性

位置とサイズ• 左辺位置……コントロールの左辺位置を表す式番号を指定します。
• 上辺位置……コントロールの上辺位置を表す式番号を指定します。
• 幅……コントロールの幅を表す式番号を指定します。
• 高さ……コントロールの高さを表す式番号を指定します。

コンボボックスコントロール特性モデル• モデル……継承が解除されている特性の継承をし直したり、コンボボックスモデルのすべての特性の継承を解除することができます。さらに、別のモデルを選択することもできます。

詳細• ソーステーブル……コントロールを関連づけるテーブルを指定します。
• 表示項目……画面に表示されるテーブルのカラムを指定します。
• リンク項目……実際に格納されるテーブルのカラムを指定します。
• インデックス……画面に表示される順序を決めるテーブルのインデックスを指定します。
• 範囲……画面に表示されるレコードの範囲を決めるための定義を行います。
• ラベル……チョイスコントロールの静的な選択肢を表す文字列を指定します。
• 型……項目の型を選択します。

入力• 必須入力……エンドユーザが必ずコントロールに値を入力しなければならないかどうかを表す式番号指定します。
• 修正許可……エンドユーザがコントロールの値を変更できるかどうかを表す式番号
指定します。
• 選択プログラム……このコントロールからズームして起動するプログラムを指定します。
• 起動モード……［選択プログラム］特性で指定したプログラムの起動モードを指定します。
•

B= 前置……ズームイベントにより選択プログラムが実行されます。プログラム終了時、項目上にカーソルは残ったままになります。

•

P= 自動……コントロールにカーソルが置かれた時点で自動的に選択プログラムが実行されます。

•

A= 後置……ズームイベントにより選択プログラムが実行されます。プログラム
終了時、次の項目上にカーソルは移動します。

表示• デフォルトクラス……コントロールのクラス名を式で指定します。
• デフォルトスタイル……コントロールのスタイルリストを定義します。
• 色……コントロールの色を表す式番号を指定します。
• ヘルプ画面……コントロールと関連付けるヘルプ画面を指定します。
• ツールチップ……コントロールと関連付けるツールチップを指定します。
• 自動ヘルプ……コントロールと関連付ける自動ヘルプを指定します。
リファレンス
Magic eDeveloper V9 Plus521

第 9 章 - 表示フォーム• 可視……コントロールを表示するかどうか表す式番号を指定します。
• 有効……表示されているコントロールを有効にするかどうか表す式番号を指定します。

位置とサイズ• 左辺位置……コントロールの左辺位置を表す式番号を指定します。
• 上辺位置……コントロールの上辺位置を表す式番号を指定します。
• 幅……コントロールの幅を表す式番号を指定します。
• 高さ……コントロールの高さを表す式番号を指定します。

イメージコントロール特性モデル• モデル……継承が解除されている特性の継承をし直したり、イメージモデルのすべての特性の継承を解除することができます。さらに、別のモデルを選択することもできます。

詳細• 型……項目の型を選択します。

入力• 選択プログラム……このコントロールからズームして起動するプログラムを指定します。
• 起動モード……［選択プログラム］特性で指定したプログラムの起動モードを指定します。
•

B= 前置……ズームイベントにより選択プログラムが実行されます。プログラム終了時、項目上にカーソルは残ったままになります。

•

P= 自動……コントロールにカーソルが置かれた時点で自動的に選択プログラムが実行されます。

•

A= 後置……ズームイベントにより選択プログラムが実行されます。プログラム
終了時、次の項目上にカーソルは移動します。

表示• デフォルトクラス……コントロールのクラス名を式で指定します。
• マウスオーバクラス……マウスオーバ状態のコントロールのクラス名を式で指定します。
• マウスダウンクラス……マウスダウン状態のコントロールのクラス名を式で指定します。
• デフォルトスタイル……コントロールのスタイルリストを定義します。
• マウスオーバスタイル……マウスオーバ状態のコントロールで有効なスタイルを定義します。
• マウスダウンスタイル……マウスダウン状態のコントロールで有効なスタイルを定
義します。

522

リファレンス
Magic eDeveloper V9 Plus

ブラウザコントロール特性

スタイル／クラス特性の詳細は、「エディットコントロールの特性」（514 ページ）を参照してください。
スタイルの名前は、JavaScript で利用可能で、HTML の構文として正しいものでなければなりません。
• ツールチップ……コントロールと関連付けるツールチップを指定します。
• 可視……コントロールを表示するかどうか表す式番号を指定します。
• 有効……表示されているコントロールを有効にするかどうか表す式番号を指定します。

位置とサイズ• 左辺位置……コントロールの左辺位置を表す式番号を指定します。
• 上辺位置……コントロールの上辺位置を表す式番号を指定します。
• 幅……コントロールの幅を表す式番号を指定します。
• 高さ……コントロールの高さを表す式番号を指定します。

テーブルコントロール特性モデル• モデル……継承が解除されている特性の継承をし直したり、テーブルモデルのすべての特性の継承を解除することができます。さらに、別のモデルを選択することもできます。

詳細• ハイライト表示……テーブルのカーソルのある行を強調表示するかどうかを指定します。
• 明細行……［フォーム特性］ダイアログの［繰返し行数］特性において指定された行数分を繰り返すテーブルの行を指定します。

表示• デフォルトクラス……コントロールのクラス名を式で指定します。
• デフォルトスタイル……コントロールのスタイル一覧を定義します。
• 色……コントロールの色を表す式番号を指定します。
• ツールチップ……コントロールと関連付けるツールチップを指定します。
• 可視……コントロールを表示するかどうか表す式番号を指定します。

位置とサイズ• 左辺位置……コントロールの左辺位置を表す式番号を指定します。
• 上辺位置……コントロールの上辺位置を表す式番号を指定します。
IE6.x でのみテーブルコントロールで、ホイールマウス機能によるレコードスクロー
ルが可能です。

リファレンス
Magic eDeveloper V9 Plus523

第 9 章 - 表示フォーム

IFRAME コントロール特性モデル• モデル……継承が解除されている特性の継承をし直したり、IFRAME モデルのすべての特性の継承を解除することができます。さらに、別のモデルを選択することもできます。

表示• ツールチップ……コントロールと関連付けるツールチップを指定します。
• 可視……コントロールを表示するかどうか表す式番号を指定します。
• デフォルトクラス……コントロールのクラス名を式で指定します。
• デフォルトスタイル……コントロールのスタイル一覧を定義します。

位置とサイズ• 左辺位置……コントロールの左辺位置を表す式番号を指定します。
• 上辺位置……コントロールの上辺位置を表す式番号を指定します。
• 幅……コントロールの幅を表す式番号を指定します。
• 高さ……コントロールの高さを表す式番号を指定します。

その他コントロール特性モデル• モデル……継承が解除されている特性の継承をし直したり、モデルのすべての特性の継承を解除することができます。さらに、別のモデルを選択することもできます。

表示• ツールチップ……コントロールと関連付けるツールチップを指定します。
• 可視……コントロールを表示するかどうか表す式番号を指定します。
• 有効……コントロールを有効にするかどうか表す式番号を指定します。
• デフォルトクラス……コントロールのクラス名を式で指定します。
• マウスオーバクラス……マウスオーバ状態のコントロールのクラス名を式で指定します。
• マウスダウンクラス……マウスダウン状態のコントロールのクラス名を式で指定します。
• デフォルトスタイル……コントロールのスタイル一覧を定義します。
• マウスオーバスタイル……マウスオーバ状態のコントロールで有効なスタイルを指定します。
• マウスダウンスタイル……マウスダウン状態のコントロールで有効なスタイルを指定します。

位置とサイズ• 左辺位置……コントロールの左辺位置を表す式番号を指定します。
• 上辺位置……コントロールの上辺位置を表す式番号を指定します。
• 幅……コントロールの幅を表す式番号を指定します。

524

リファレンス
Magic eDeveloper V9 Plus

GUI 表示フォーム• 高さ……コントロールの高さを表す式番号を指定します。

GUI 表示フォーム
GUI 表示フォーム特性［フォーム特性］シートでフォームの外観と動作を指定します。［編集 / 特性］を選択す
るか、フォームテーブル内のエントリにカーソルを合わせて Ctrl +P キーを押して、［フォーム特性］シートにアクセスします。
クラス値が 0 より大きいフォームの場合、フォームテーブルの同じクラスを持つフォー
ムが同時に表示されます。あるフォームで次のフォーム特性を変更した場合、Magic は自動的に同じクラスのフォーム特性を新しい設定値に変更します。
［寸法単位］、［垂直精度］、［水平精度］、［グリッド間隔（X）］、［グリッド間隔（Y）］、［フォント］。
GUI フォームには以下の特性があります。

モデル• モデル……継承が解除されている特性の継承をし直したり、フォームモデルのすべての特性の継承を解除することができます。

詳細• モーダルウィンドウ……フォームがモーダルウィンドウとして動作するかどうかを指定します。つまり、このウィンドウを終了しないと、別のウィンドウをクリックできないようになります。
• フローティングウィンドウ……フォームがフローティングウィンドウとして動作するかどうかを指定します。つまり、このウィンドウを MDI の領域外にも移動できるよ
うになります。
• 寸法単位……フォームの寸法単位をダイアログ（文字）、センチメートル、インチから選択します。寸法単位に基づいてフォームのサイズと位置が決定されます。また、寸法単位に基づいてフォームの解像度も決定されます。
• 垂直精度……各単位内の垂直解像度を指定します。値が高いほど細かい解像度が得られます。
• 水平精度……各単位内の水平解像度を指定します。値が高いほど細かい解像度が得られます。
• グリッド表示……フォームエディタにグリッドを表示するかどうかを指定します。
•

Yes……フォームのレイアウトにグリッドが表示されます。

•

No……フォームのレイアウトにグリッドが表示されません。

• グリッド間隔（X）、グリッド間隔（Y）……フォームのグリッド間の距離を指定します。
• フォーム名……フォームテーブルの［名前］欄の値であり、フォームのタイトルバーに表示されます。実行時に評価されるフォームのタイトルを表す式を選択することもできます。
• ドロップ許可……同一アプリケーションの他のコントロールや同一 PC 上の他のアプ
リケーションからフォームに対してデータのドロップを可能にします。フォーム上にドロップすると、ドロップイベントがトリガされます。

リファレンス
Magic eDeveloper V9 Plus525

第 9 章 - 表示フォーム

入力• タイトルバー……GUI フォームにタイトルバーを表示するかどうかを指定します。タイトルバーがないと、エンドユーザはフォームを移動できません。また、［最小化］ボタンや［最大化］ボタンを表示できません。タイトルバーは、式テーブルで式を定義して指定することもできます。
• システムメニュー……GUI フォームのタイトルバーの左側に［システムメニュー］ボ
タンを配置するかどうかを指定します。このボタンをクリックすると、Windows の［システムメニュー］が表示されます。
• 最小化ボタン……GUI フォームの右上隅に［最小化］ボタンを配置するかどうかを指定します。
• 最大化ボタン……GUI フォームの右上隅に［最大化］ボタンを配置するかどうかを指定します。
• 子ウィンドウ……子ウィンドウを親ウィンドウの一部として開くか、独立したウィン
ドウとして開くかを指定します。
• 分割子ウィンドウ……「Yes」に設定すると、分割ウィンドウに表示される子ウィン
ドウになります。
• パレット最適化……多くのグラフィックイメージを含むフォームでは、各イメージに異なるカラーパレットが使用されていることがあり、それらのカラーパレットの組み合わせによってフォーム内で適合しない解像度が生じることがあります。そのような場合、［パレット最適化］を「Yes」に設定して、選択したグラフィックイメージに標準色を与えるパレットが使用されるようにすることができます。
• デフォルトボタン……フォームに配置されたプッシュボタンコントロールの１つをデフォルトボタンとして定義します。これにより以下のように動作します。
•

該当するボタンが強調表示されます。

•

ボタンにフォーカスがない状態でユーザーが Enter キーを押した場合、このボタンが押された時と同じイベントが発行されます。

ここには、プッシュボタンコントロールのコントロール名を入力します。
［コントロー
ル一覧］から選択することもできます。定義式を指定することで、実行時に動的に変更することができます。
テーブル選択プログラムに配置したプッシュボタンに［選択］イベントを割り当て、このボタンをデフォルトプッシュボタンに指定しても動作は変わりません。ただし、このボタン以外をデフォルトプッシュボタンに割り当てた場合、Enter キーでの選択ができなくなります。

表示• 背景……タスクウィンドウの背景となる画面の模様を表すファイル名を指定します。式
テーブルで式を定義して指定することもできます。
• フォント……フォームのフォントを指定します。フォントテーブルにズームしてフォントを選択できます。式で動的に指定することもできます。コントロールのフォント
は、［コントロール特性］シートで定義します。コントロールのフォントが指定されていない場合、フォームのフォントが使用されます。使用できないフォントタイプもあります。
• 色……フォームの色を指定します。基本色一覧にズームして色を選択できます。式
テーブルにズームし、色番号を表す式を入力することによって値を指定できます。
• ヘルプ画面……フォームと関連付けるヘルプ画面を指定します。ヘルプ一覧にズーム
してヘルプを選択できます。
• 境界……フォームの境界線のスタイルを指定します。

526

•

H= 太線

•

T= 細線

•

N= なし
リファレンス
Magic eDeveloper V9 Plus

GUI 表示フォーム

分割
フォームを２分割して表示する場合に指定する特性です。以下の特性値があります。
• ウィンドウ分割……フォームの分割方向を指定します。
•

No……分割しません（デフォルト）•V= 垂直……垂直に２分割します。

•

H= 水平……水平に２分割します。

• 初期表示…… 分割された親フォームのどちらに現在のタスクの内容を表示するかを指定します。指定内容は、［ウィンドウの分割］特性の値によって変わります。
「V= 垂直」の場合•

D= デフォルト……「L= 左」と同じです。

•

L= 左……左側のウィンドウに表示されます。

•

R= 右……右側のウィンドウに表示されます。

「H= 水平」の場合•

D= デフォルト……「T= 上」と同じです。

•

T= 上……上側のウィンドウに表示されます。

•

B= 下……下側のウィンドウに表示されます。

• 分割割合（% ）……分割されたフォームの初期表示するフォームの割合を % で指定します。例えば、「60」とと指定した場合、親タスクのウィンドウはフォームの 60%で表示されます。
有効な値は 0 から 100 です。デフォルト値は 50 です。
• 分割位置……ウィンドウのサイズを変更した場合に、分割フォームの移動する割合を指定します。
「0」から「100」までの数値で指定してください。デフォルト値は、「0」です。
例えば、［分割割合］の値が「50」で、各分割ウィンドウの長さが「5」ピクセルとします。
［分割位置］の値が「100」にして、ウィンドウのサイズを、「10」ピクセルから「20」ピクセルに拡大すると、各分割ウィンドウは、「10」ピクセル拡大されます。
［分割位置］の値が「80」の場合は、各分割ウィンドウは、「8」ピクセル拡大されます。
• 分割スタイル……分割フォームの分割線の表示方法を指定します。
•

2= 平面

•

3= 立体

位置とサイズ• 位置……親フォームのサイズが変更された場合、子フォームとして定義されている
GUI フォームのサイズを変更するかどうかを指定します。単独のフォームには、この特性はサポートされません。
［位置］特性は、［位置］ダイアログ内の次の 4 つの設定（%）の組み合わせになります。
•

左辺割合

•

幅割合

•

上辺割合

•

高さ割合

この特性からズームして［位置］ダイアログを開きます。
GUI フォームの位置特性が［0］の場合、親フォームのサイズが実行時に変更されても相対サイズは変化しません。GUI フォームの［位置］特性が［0］より大きい場合、
親フォームのサイズが実行時に変更されたときに相対サイズが変化します。
Magic は、
［位置］の値や［位置とサイズ］特性に対応した式の両方を定義します。実行時にこれらの値を組み合わせて表示します。
• 左辺位置……フォームのフレームの左端の位置を指定します。式テーブルにズーム
し、フォームにあるフレームの左端の座標を表す式を入力することもできます。
リファレンス
Magic eDeveloper V9 Plus

527

第 9 章 - 表示フォーム• 上辺位置……フォームのフレームの上端の位置を指定します。式テーブルにズーム
し、フォームにあるフレームの上端の座標を表す式を入力することもできます。
• 幅……フォームを囲むフレームの水平方向の寸法を指定します。フレームが小さすぎてコントロールを表示できない場合、ウィンドウ内の内容をスクロールするためのス
クロールバーが表示されます。フレームの幅は、フレームの右端をドラッグして変更できます。
• 高さ……フォームを囲むフレームの垂直方向の寸法を指定します。フレームが小さす
ぎてコントロールを表示できない場合、ウィンドウ内の内容をスクロールするためのスクロールバーが表示されます。フレームの高さは、フレームの下端をマウスでドラッグして変更できます。
• MDI 調整……タスクのウィンドウを Magic の MDI に合わせて表示します。この特性によって、フォームを最大表示させた時と同じサイズになります。
［MDI 調整］特性を「Yes」に設定した場合、モーダルウィンドウやフローティング
ウィンドウ、最大化／最小化ボタン、子ウィンの各特性は自動的に「No」になります。また、［開始時の位置］特性は、無効になります。
• 開始時の位置……この特性は、GUI 表示形式フォームをどこで開くかを定義するものです。設定できるオプションは以下の通りです。
•

C= カスタム……ウィンドウは、フォームの［上辺位置］と［左辺位置］の特性で定義された位置に表示されます。フォームサイズは［高さ］と［幅］特性に基づいて表示されます。

•

T= デフォルト……ウィンドウは、OS で定義されたデフォルトの位置およびサイズで表示されます。［位置とサイズ］特性は無視されます。

•

P= 親ウィンドウの中央……ウィンドウは、親タスクのウィンドウの中央に表示されます。フォームサイズは［幅］と［高さ］の特性によって定義されます。

•

M=Magic ウィンドウの中央……ウィンドウは Magic のクライアント・エリアの中央に表示されます。フォームサイズは［幅］と［高さ］の特性によって定義
されます。

•

D= デスクトップの中央……ウィンドウはデスクトップ領域の中央に表示されます。フォームサイズは幅と高さの特性によって定義されます。

もし親タスクがオープンするフォームを持たない場合、その上位のタスクのフォーム
を親のフォームとします。全ての上位タスクがオープンするフォームを持たない場
合、Magic の MDI を親のフォームとして動作します。

モーダルウィンドウの制御
GUI フォームでのモーダルウィンドウは、以下のように動作します。

モーダルウィンドウのタスクからコールされたタスク
モーダルウィンドウを「Yes」に設定したタスクからコールされた子タスクは、パラ
メータの設定によらず、必ずモーダルウィンドウになります。

タスク制御／ウィンドウクローズパラメータ
モーダルウィンドウタスクはタスクが終了した後、ウィンドウを開いたままにしておくことはできません。この場合、常にタスク制御／ウィンドウクローズパラメータは「Yes」として動作します。

フォーム特性／子ウィンドウパラメータ
子ウィンドウパラメータを「Yes」に設定した場合、そのタスクのモーダルウィンド
ウ、または親タスクのモーダルウィンドウパラメータは無視され、モーダレスウィン
ドウとして機能します。

528

リファレンス
Magic eDeveloper V9 Plus

GUI 表示フォーム

GUI 表示コマンド
コマンドパレット、整列およびサイズプルダウンメニュー、またはコンテキストメニューを使用して、フォームに配置したコントロールを編集することができます。コマンドパ
レットには、整列、サイズ変更、コントロールの Z オーダ変更のためのツールが含まれています。
GUI コマンドパレットにあるボタンは以下のように色分けされています。
• 淡青緑色のボタン……選択したコントロールのグループを整列させます。
• 黄色のボタン……サイズ変更処理コマンドを実行します。
• 緑色のボタン……コントロールの配置の順序を指定します。
元に戻す操作はバッファに最大 10 まで記憶されています。特性の編集中に式が削除された場合は、元に戻すコントロールは無効になり、バッファはクリアされます。
次の表は、コントロール整列用のツールボタンにつてい説明したものです。
ボタン

説明
選択したコントロールを、選択フレームの左端に揃えます。
選択したコントロールを、選択フレームの中央に横に並べます。
選択したコントロールを、フォームの中央に揃えます。
選択したコントロールを、選択フレーム内に均等間隔で横に並べます。
選択したコントロールを、選択フレームの右端に揃えます。
選択したコントロールを、選択フレームの上部に揃えます。
選択したコントロールを、選択フレームの中央に揃えます。
選択したコントロールを、フォームの中央に縦に並べます。
選択したコントロールを、選択フレーム内に均等間隔で縦に並べます。
選択したコントロールを、選択フレームの下部に揃えます。

次の表は、コントロールのサイズ変更用のツールボタンについて説明したものです。
ボタン

説明
選択したコントロールを、最も幅の広いコントロールに合わせて拡張します。
選択したコントロールを、最も幅の狭いコントロールに合わせて縮小します。
選択したコントロールを、最も縦に長いコントロールに合わせて拡張します。
選択したコントロールを、最も縦に短いコントロールに合わせて縮小します。

リファレンス
Magic eDeveloper V9 Plus

529

第 9 章 - 表示フォーム
次の表は、コントロールの Z オーダを変更したり、フォームのブレーク間の区切りを除去するためのボタンについて説明したものです。
また、テーブルやリンクに使用されるボタン、前の操作を元に戻したりやり直すためのボタン、テキストに合わせてコントロールのフレームサイズを調整するためのボタンについて説明も示します。
ボタン

説明
選択したコントロールを、フォームの 1 つ手前のレイヤに移動します。
選択したコントロールを、フォームの 1 つ後ろのレイヤに移動します。
選択されているコントロールのレイヤを一番先頭にします。
選択されているコントロールのレイヤを一番後ろにします。
コントロールの Z オーダをフォームに表示します。
フォーム内のコントロールの自動 Z オーダを有効にします。
フォーム内のブレークとブレークの間の区切りを取り去ります。

元に戻す操作はバッファに最大 10 まで記憶されています。特性の編集中に式が削除された場合は、元に戻すコントロールは無効になり、バッファはクリアされます。

コントロールの Z オーダ
フォーム中のコントロールの Z オーダは、コントロール表示上の上下関係を表します。Z
オーダは、複数のコントロールの位置を重ねて定義するときに重要な意味を持ちます。
コントロールは、Z オーダに従って 2 つのグループに分類されます。

第 1 グループ• プッシュボタン
• チェックボックス• ラジオボタン• スライダ• コンボボックス• リストボックス
• OLE
• RTF
• ツリー

第 2 グループ• イメージ• タブ• スタティック
• エディット• ライン• グループ530

リファレンス
Magic eDeveloper V9 Plus

GUI 表示フォーム• テーブルZ オーダは、同じグループ内のコントロール間で変更できますが、別のグループ間ではできません。第 1 グループと第 2 グループのコントロール間の Z オーダの配列は、自動的に行われます。たとえば、エディットコントロールをプッシュボタンの上に重ねると、Z オーダによってコントロールが配列されて、プッシュボタンが上に位置するようになります。第 2 グループのコントロールを第 1 グループのコントロールの上に置くことはできません。
コントロールの Z オーダをフォームに表示するためには、メニューで［コマンド／ Z オー
ダ表示］を選択するかコマンドパレットの［Z オーダ表示］ボタンを押します。また、変更するためには、変更しようとするコントロールを選択し、コンテキストメニューの［並べ換え］またはコマンドパレットの Z オーダ変更のためのボタンを使用します。

コントロールの親子リンク
親子リンクにより、コントロールの親子関係を定義できます。

実行開始• リンクの定義はフォームエディタで行います。
• デフォルトでは、フォーム上のすべてのコントロールがフォームの子という形式になります。
• コントロールは、親コントロールに割当てることもできます。ただし、フォームに対して親コントロールを割り当てることはできません。
• 他のコントロールの親であるコントロールでも、別のコントロールの子とすることができます。
• 複数のコントロールを同一の親コントロールに割当てることができます。
• 親子リンクは循環リンクにはできません。
• テーブルコントロールの子であるコントロールは、他のコントロールを子としてリンクできません。

実行時の動作
親コントロールが非表示になると、その子コントロールもすべて非表示になります。
親コントロールが無効になると、その子コントロールもすべて無効になります。
ヘルプが定義されていないコントロールでヘルプを呼び出すと、Magic はフォームに定義されているヘルプを呼び出します。

チョイスコントロールによる親子リンク
チョイスコントロールとして、ラジオボタン、タブ、リストボックス、コンボボックス、
チェックボックスといったものがあり、表示されるデータ値の一覧から値を選択することができます。選択できる値は、コントロールの［選択項目リスト］特性の内容で決まります。
［選択項目リスト］特性にはコンマ区切の形式で複数登録できます。特性のデー
タ項目に割当てることができるデータ値は、その項目の書式に依存します。定義式をコ
ントロールの［選択項目リスト］特性に割当てることで、有効な選択肢を動的に指定できます。
［表示項目リスト］特性に値を設定する場合は、［選択項目リスト］特性に指定した選択肢に対応した項目数を同じ順番で指定してください。
チョイスコントロールの値が、そのコントロールに対応する項目の範囲を外れている場
合、その値はコントロール上では選択できません。
チョイスコントロールの選択肢は、キーボードショートカットを使用して表示などの操作が可能です。

リファレンス
Magic eDeveloper V9 Plus

531

第 9 章 - 表示フォーム
チョイスコントロールに表示される選択肢には、それぞれ子コントロールを定義できます。選択肢に子コントロールが定義されている場合、その選択肢を選択すると、その選択肢の子コントロールが表示されます。選択されていない場合は表示されません。また、子となっているコントロールはピンク色の制御ボックスで囲まれます（通常のコント
ロールでは、制御ボックスは青色です）。
チョイスコントロールの選択肢を編集時に選択するには、Shift キーを押しながらその選択肢をクリックします。
一方、チョイスコントロールの選択肢に定義されていない、チョイスコントロール自体の子コントロールは、選択肢を選択したかどうかにかかわらず、常時、表示されます。
この表示関係は、内部的にはコントロールレイヤという概念で制御しています。上の内容をコントロールレイヤを使って説明すると次のようになります。
新規のコントロールを親コントロールにドロップすると、新規のコントロールは、自動的に親チョイスコントロールの現在表示されているレイヤの子コントロールとなります。ただし、レイヤが特定されていない場合、新規のコントロールは、親コントロール（チョイスコントロール）のすべてのレイヤで子コントロールとしてリンクされます。
チョイスコントロールの表示されているレイヤを切り替えると、切り替え後のレイヤにリンクしている子コントロールが表示され、他のレイヤにリンクしている子コントロー
ルはすべて非表示になります。
Alt キーを併用すると、それぞれのレイヤにリンクされたコントロールだけが選択できます。

GUI 表示基本色パレット
基本色パレットはコマンドパレットと同じ領域を共有しています。2 つのパレットを切り替えるには、パレットの下部にあるタブをクリックします。
パレットには、デフォルトとユーザ定義のコントロールの色の一覧が表示されます。どの色も［色］ボタンで確認できます。
［色］ボタンをクリックすると、選択したコント
ロールにその色が設定されます。基本色パレットの設定を定義するには、基本色テーブルを使用します。
テキストやコントロールの背景の色を変更するには、フォームコントロールを選択して希望する色の組み合わせをクリックします。
基本色テーブルにて背景色を透過指定した場合、フォームエディタ上の色パレットでは黒の背景色で表示されます。

GUI 表示コントロール
次の表は、GUI コントロールパレット内のボタンを説明したものです。
ボタン

説明
コントロールパレットの選択ツール。コントロールの選択と選択解
除はこのツールを使用して行います。コントロールの移動、サイズ変更、削除、［コントロール特性］シートへのズームを行うには、コントロールを選択しておく必要があります。
エディットコントロールを挿入します。このコントロールは、［コントロール特性］シートの［データ］特性のデータ項目または式に関連付けることができます。
スタティックテキストコントロールを挿入します。

532

リファレンス
Magic eDeveloper V9 Plus

GUI 表示コントロール
ボタン

説明
アプリケーションで特定のアクションを開始するために用いるプッ
シュボタンを挿入します。
オン / オフを切り替えるのに使用するチェックボックスを挿入します。論理型の項目や論理式を表すときはこのコントロールを使用します。
ラジオボタンを挿入します。

2 つのデフォルトタブを含んでいるタブを挿入します。タブコント
ロールにはエディットコントロールやプッシュボタンなど、その他のコントロールを配置することができます。
2 つのデフォルト項目を含んでいるリストボックスを挿入します。

2 つのデフォルト項目を含んでいるコンボボックスを挿入します。

四角形のボックスを描画し、複数のコントロールをグループにまとめて表示します。そのグループを説明するラベルを含めることができます。
四角形を描画します。［コントロール特性］シートで、四角形にス
タティックテキストを追加し、四角形内でのそのテキストの位置を指定できます。
楕円形を描画します。［コントロール特性］ダイアログで、楕円形にスタティックテキストを追加し、楕円形内でのそのテキストの位置を指定できます。
線を描画します。

矢印付きの垂直スライダを挿入します。

矢印付きの水平スライダを挿入します。

テーブルコントロールを挿入します。テーブルコントロールにはエディットコントロールやプッシュボタンなどのその他のコントロー
ルを配置できます。
イメージコントロールを挿入します。

OLE コンテナを挿入します。

ツリーコントロールを挿入します。

開発時に書式設定を行なうスタティックテキストを含むリッチテキストコントロールを挿入します。リッチテキストコントロールの書式設定は、コントロール全体ではなく、コントロール中の選択したテキストに対して行ないます。

リファレンス
Magic eDeveloper V9 Plus533

第 9 章 - 表示フォーム
ボタン

説明
リッチエディットコントロールを挿入します。［データ］特性が式により設定されている場合、このコントロールはリッチテキストコ
ントロールとして機能します。

GUI コントロールは次のように分類されます。
• スタティックコントロール• チョイスコントロール• スライダコントロール• エディット、アクション、イメージコントロール• テーブルコントロール• ツリーコントロール

スタティックコントロール
スタティックコントロールには次のものがあります。
• グループ……互いに関連付けて表示したいコントロールを配置するための四角形。グ
ループ内のコントロールの論理的なリンク付けはありません。
• テキスト……スタティックテキスト。
• 四角形……四角形の図形。
• 楕円形……楕円形の図形。

チョイスコントロール
チョイスコントロールは、複数の値を表示します。チョイスコントロールをクリックしたり、Alt キーを押すと選択したレイヤに関連する全てのコントロールがマークされます。
チョイスコントロールには、次のものがあります。
• ラジオボタン……ラジオボタンは複数選択オブジェクトに使用されます。ラジオボタ
ンは不連続な入力範囲を持つカラムと関係します。範囲内のそれぞれの値は、1 つのラジオボタンとして表示され、ラジオボタンと一緒に値が表示されます。ボタンは、
1 つのコントロールとして、ボックス内にまとめられて表示されるが、各ボタンは別個の構成要素のように見えます。
ユーザはグループから 1 つのボタンだけを選択します。
ユーザがボタンを選択すると、円の中に黒い点が表示され、そのボタンが選択されていることを示します。カラムは選択されたボタンが表す値を取得します。論理型項目がラジオボタンとして表示されていて、その範囲が定義されていない場合、デフォルト値「True」または「False」が使用されます。
• タブ……タブコントロールは、ファイルキャビネットやノートの仕切りに似ています。タブコントロールを使用して、同一ウィンドウに複数の論理ページや論理セク
ションを定義できます。ユーザはタブタイトルを選択してタブカードを開きます。タブカードには、選択したタブタイトルの子としてのコントロールを含むことができます。
• リストボックス……選択肢の一覧が表示されたコントロールです。リストボックスコン
トロールは一連の項目を表示するのに使用されます。ほとんどの場合、その一覧から 1
つの項目を選択できるようになっています。
• コンボボックス……テキストボックスとリストボックスを組み合わせたものです。
ユーザは、選択したカラムにエントリを入力するか、一覧からエントリを選択できます。［高さ］特性で、閉じた状態のコンボボックスの高さを設定します。開いている
コンボボックスは、［動作環境］ダイアログの［プルダウンメニュータイムアウト］特性で指定されている時間が経過すると自動的に閉じます。

534

リファレンス
Magic eDeveloper V9 Plus

GUI 表示コントロール

チョイスコントロールによるデータの選択動作
各チョイスコントロールは、データベーステーブルを定義して有効な選択範囲を指定することでデータ選択処理ができます。
このためには以下のようなコントロール特性の設定を行ってください。
• ソーステーブル……チョイスコントロールのオプションを設定するテーブル• 表示項目……選択オプションとして画面に表示される項目• リンク項目……選択された場合に値を返す項目• インデックス……テーブルの表示順を決めるインデックス• 範囲項目……ソーステーブル内で選択対象を制限する場合に指定します。
データコントロールは、チョイスコントロールの表示項目の重複を許します。重複項目のどれかを選択するとそれに対応したリンク項目が返ります。リンク項目が重複している場合は無視されます。この場合は、最初に見つかった項目が表示されます。
チョイスコントロールによって作成されたビューは、各データコントロール用に取得されます。
• ビューは、定義された範囲基準に基づいて取得されます。もし、取得条件がフェッチされたビューと合った場合だけ、データコントロールのビューとして取得されます。
• 各ビューは、それぞれのデータコントロール毎に取得されるので、他のデータコント
ロールで、同じテーブルの同じ項目を指定しても、データを共有することはありません。
この機能は、［選択項目リスト］と［表示項目リスト］の指定と併用することができます。

［選択項目リスト］と［表示項目リスト］［選択項目リスト］は、V9Plus SP1 以前の［ラベル］に相当する特性です。ここには、選択項目の範囲をカンマ（,）区切りで複数指定することができます。
［表示項目リスト］は、選択範囲の表示内容のみを指定します。ここに範囲を指定すると、［選択項目リスト］の内容は表示されなくなります。チョイスコントロールから選択操作をした場合、［選択項目リスト］で指定された値が実際に返されます。このため、［選択項目リスト］と［選択項目リスト］の範囲の数と順番は同じにする必要があります。
この特性値に、特殊文字（カンマなど）を通常の文字として指定する場合は、「¥」記号を文字の前に付けてください。
「¥」文字を選択値の中に入れたい場合には、「¥¥」と書きます。

スライダコントロール
スライダコントロールには垂直スライダコントロールと水平スライダコントロールがあります。
スライダは範囲を持つ数値カラムと関係し、その値を示します。スライダは棒として表示され、棒上の移動インジケータの位置によってカラムの値が示されます。フォーム上のスライダの外観は、［コントロール特性］シートの［幅］と［高さ］を設定して変更できます。フォーム内の任意の場所に垂直スライダや水平スライダを追加できます。

エディットコントロール
エディットコントロールには、［データ］特性の［値］カラムと［式］カラムに指定されているデータ項目または式と関係します。
エディットコントロール内で選択されたテキストは、ドラッグ & ドロップ処理を実行することができます。

リファレンス
Magic eDeveloper V9 Plus535

第 9 章 - 表示フォーム

プッシュボタンコントロール
プッシュボタンは、ズームアクションなどの Magic のアクションを起動する手段として使用されます。データ項目の値または［書式］特性の内容がボタンラベルになります。プッ
シュボタンのアクションは、［コントロール特性］シートの［実行イベント］特性で指定します。
実行時にボタンを押すと、アクションが実行されます。そのアクションによって、コー
ルコマンドやイベントなどを起動できます。
また、［OK］ボタン、［取消］ボタン、［ヘルプ］ボタンという機能を持たせることができます。これらのボタンは、それぞれ［OK］アクション、［キャンセル］アクション、［ヘルプ］
アクションを割当てます。ボタンに割当てられたアクションは、プログラムの状況に従って、Magic プログラムによってキャプチャされます。
デフォルトの Windows プッシュボタンデザインを使用したり、独自のコントロールをデザインできます。プッシュボタンをデザインするには、［コントロール特性］ダイア
ログの［ボタンスタイル］特性を［イメージボタン］に設定します。
［コントロール特性／イベント実行］を設定しないプッシュボタンに対して、「クリック」イベントによるハンドラでタスクやプログラムを起動するようにした場合、即時に終了することがあります。このような場合、プッシュボタンに「ユーザアクション」を定義するようにして下さい。

イメージプッシュボタンコントロール
1 つのイメージファイルを指定することで、４種類のボタンイメージを表現することができます。
4 つの状態とは以下の通りです。
• フォーカスがある状態• 選択された状態• 無効な状態• デフォルトの状態
イメージプッシュボタンは、1 つのビットマップイメージを水平に４分割して、各ボタン状態に割当てます。このため、以下のような同じサイズのイメージを水平に４つ結合させたイメージファイルを指定するようにしてください。

図 9-2 イメージボタンで指定するイメージファイルの例

チェッカーメッセージ
プログラムチェックユーティリティでは、プッシュボタンが［クリック］イベントによって処理されたり、プッシュボタンのハンドラによって内部の［クリック］イベントが発行されるような場合に、以下の警告メッセージを表示します。
処理する プ ッ シ ュ ボ タ ン にユーザイ ベン ト を割 り 当てて く だ さ い .
プ ッ シ ュ ボ タ ン では、 こ の タ イ プの内部イ ベン ト を ［実行イ ベン ト ］ に割 り 当て
る こ と はで き ません . ユーザイ ベン ト を割 り 当てて く だ さ い。

チェックボックスコントロール
チェックボックスを使用して、論理フィールドを「True」（チェックボックスがオンの場
合）または「False」（チェックボックスがオフの場合）に設定します。

536

リファレンス
Magic eDeveloper V9 Plus

GUI 表示コントロール［テキスト］特性は、通常のフィールドと同様に内容の説明です。チェックボックスの入力値はスペースバーを押すか、チェックボックスをクリックして指定します。スペース
バーまたはマウスクリックでチェックマークのオン／オフを切り替えます。

イメージコントロール
イメージコントロールには、グラフィックイメージが格納されています。これらのグラフィックイメージを挿入するには、ファイル名を指定するか、グラフィックイメージであるデータ項目をマッピングするか、グラフィックイメージを返す式を定義します。

ラインコントロール
ラインコントロールは、2 つのグリッド点間に線を描画します。線は、テキストコントロールの中に配置することもできます。

OLE コントロール
OLE を使用すると、別のアプリケーションでサポートされているオブジェクトを結合することができます。Magic の OLE コントロールは、使用しているアプリケーション内の埋め込みまたはリンクされている OLE オブジェクトのコンテナです。
OLE 埋め込みオブジェクトは、データオブジェクトであり、移動またはコピーすると、そのオブジェクト固有の編集機能や処理機能が新しいコンテナで保持されます。
OLE リンクオブジェクトは、他の記憶場所や他のコンテナにあるデータオブジェクトへのポインタまたはリンクです。詳細については、「OLE」を参照してください。
OLE コントロールでは、Magic のドラッグ & ドロップ処理をサポートしていません。

リッチテキストコントロール
リッチテキストコントロールは、開発時に各文字に対する色やフォントの指定、各行に対する割付指定を任意に行うことができます。
リッチテキストコントロール内の文字の属性を変更するには以下のようにします。
1. リッチテキストコントロールにカーソルを移動します。
2. Enter を押します。コントロールの境界の色が青からピンクに変わり、編集モードに変わります。
3. コントロール内の文字をマークします。
4. マウスの右クリックを行い、ショートカットメニューをオープンし、変更したい特性を選びます。

リッチエディットコントロール
リッチエディットコントロールは、実行時に各文字に対する色やフォントの指定、各行に対する割付指定を任意に行うことができます。
リッチエディットコントロールでは、データ項目や式を指定することができます。
リッチエディット／リッチテキストコントロールで選択されたテキストは、ドラッグ &ドロップ処理することができます。

リファレンス
Magic eDeveloper V9 Plus

537

第 9 章 - 表示フォーム

テーブルコントロール
テーブルコントロールは、タイトル領域と繰返し領域に分かれています。これらの領域にはテーブルの線が表示されます。
テーブルコントロールを含むフォームのグリッドのサイズを変更すると、テーブルコン
トロールのサイズもそれに応じて変化します。水平方向の配置の場合、テーブルコント
ロールは、テーブルのサイズ変更率を制御する［位置］特性を持ちます。たとえば、［位置］特性を 80% に設定して、フォームのサイズを 10 ピクセル増やした場合、テーブルコントロールのサイズは 8 ピクセル増えます。
垂直方向の配置の場合、フォームがどのようにサイズ変更されたかによって、テーブルコントロールに表示される行の数が増減します。使用できるデータがなくなると、テーブルコントロールには空の行が表示されます。カーソルが置かれているテーブルコント
ロールの行は常に表示されます。

テーブルのサイズ変更
テーブルのサイズ変更に応じて、各カラムのサイズが変更できます。
カラム特性の［位置］特性に「Yes」を設定した場合、カラムの総数に比例してカラムのサイズが変更されます。たとえば、4 つのカラムの［位置］特性を「Yes」に設定した場
合、各カラムのサイズ変更の割合はテーブルのサイズの変更に対して 25% になります。
カラム特性の［位置］特性を「No」に設定した場合、カラムのサイズは変化しません。
たとえば、幅が 80 ピクセルのテーブルコントロールがあるとします。テーブルコント
ロールの［位置］特性は 100% に設定されているとします。このテーブルには幅が 20 ピ
クセルの 4 つのカラムがあるとします。2 つのカラムの［位置］特性は「Yes」、他の 2 つのカラムの［位置］特性は「No」に設定されているとします。この場合、フォームのグ
リッドが 8 ピクセル増えると、2 つのカラムの幅は 20 ピクセルのままとなり、他の 2 つのカラムの幅は 24 ピクセルになります。

カラムのサイズ変更
エンドユーザは、テーブルコントロールの［サイズ変更可］特性が「Yes」に設定されている場合、テーブルカラムのサイズを変更できます。
右の分割線をドラッグした場合、そのカラムと隣接するカラムのサイズが変更され、テーブル全体のサイズは変更されません。右の分割線を Shift キーを押しながらドラッグした
場合、そのカラムのサイズが変更され、そのほかのカラムのサイズは維持され、テーブ
ル全体のサイズが変更されます。テーブルコントロールの［ウィンドウ内テーブル］特性が「Yes」の場合、フォーム内ではテーブルの表示領域を固定にするため、表示される
カラム数が減ることがあります。テーブルのサイズが変更されてテーブルの各カラムを同時に表示できなくなった場合、そのテーブルの水平スクロールバーが表示されます。

テーブルコントロールでのドラッグ処理
テーブルコントロール内のテキストをドラッグ & ドロップ処理することができます。
マークされた行をもつテーブルコントロールに対して、マークされた各行毎に［ドラッグ開始］ハンドラを実行するようにしてください。マウスの左ボタンをクリックしたま
まの状態の時、ドラッグ処理であると認識し、編集モードには入りません。

テーブル内でのマルチマーキング
テーブルコントロールでは、Windows アプリケーション内のマルチマーキング機能と同様の処理を行うことができます。マルチマーキング機能は、開発モードと実行モードのオンラインフォームのみに使用できます。
タスクのテーブルコントロールでマルチマーキングを有効にするには、テーブルコント
ロールの［コントロール特性］シートの［マルチマーキング］特性を「Yes」に設定します。この特性は、対話型オンラインタスクの場合にのみ有効です。

538

リファレンス
Magic eDeveloper V9 Plus

GUI 表示コントロール
マークされた行は、色が反転されます。
マークされたレコードに対して、次のことを実行できます。
• 構文チェック……開発モード• コピー……開発モード• 削除……開発モードと実行モード• イベント……実行モード（マルチマーキング用ハンドラを作成して独自のロジックを定義）

カラムをマークする
カラム内のエントリをマークするには、［カラム特性］シートの［カラムのマーキング］
特性を「Yes」に設定します。この特性を有効にすると、カラムのレコードセルが飛び出ているように見えます。有効になっているカラム内のレコードをクリックすると、そのレコードがマークされます。マークされているレコードをクリックすると、そのレコードのマークは解除されます。

マルチマーキングのためのイベントハンドラ
ユーザは、［マルチマーキング］特性を「Yes」に設定して、マークされている各テーブ
ル行を処理するイベントハンドラを作成できます。アクションが起動されると、イベン
トは選択された行ごとにデータビューの先頭から末尾まで実行されます。
たとえば、ユーザがフォーム内に表示されているサマリテーブルの合計を再計算したいと考えているとします。ユーザは、合計を計算して更新するプログラムを呼び出します。
アクションが実装されると、イベントハンドラは選択された行ごとにプログラムを呼び出して、更新された合計を表示します。
マルチマーキング用の関数には以下のものがあります。
• MMCount……マークされている行の数を示します。
• MMCurr……イベント実行中にマークされている行の現在の行を示します。
• MMStop……マルチマーキングハンドラを停止します。

ツリーコントロール
異なるレベルのデータを表す親と子のノードデータを持つツリー構造のテーブルをメイ
ンテーブル（または結合テーブル）として使用した場合、このデータビューをツリーコ
ントロールを使用して表示することができます。
異なるデータレベルを表示するには、ツリーコントロールの以下の特性を設定します。
• ルート値 …… 実行エンジンがデータツリーを作成する開始ポイントとして使用される式です。この値は、次のレベルのデータにつながる先頭のノードとして表示されます。ルート値が指定されない場合、次のレベルのデータにつながる先頭レコードがな
いことになります。この場合、実行エンジンは、次のレベルの個別の親ノードとして表示されたデータによってデータツリーを作成します。
• 親の ID …… タスクのデータビュー内の親レコードを表す項目。式で定義できません。
• ノード ID …… タスクのデータビュー内の子供レコードを表す項目。式で定義できません。
ノード ID が必ずユニークな値になるようにしてください。ノード ID として割り当て
る項目でユニークインデックスを作成することをお勧めします。
ツリーコントロールは、1 つのデータベーステーブルで定義されたメインまたは結合リンクテーブルのレコードでのみ表示できます。

リファレンス
Magic eDeveloper V9 Plus

539

第 9 章 - 表示フォーム

データツリーの作成
ツリーコントロールを配置したオンラインタスクがメインフォームを開いた場合、以下のような動作をします。
1. データビューの範囲指定が計算されます。
2. ルート値が存在する場合、実行エンジンは、トップの親ノードとしてルート値を表示し、データベースからレコードをフェッチします。
3. ツリーに対する初期拡大レベルは、［自動展開］特性で指定された値によって決まります。
4. ［ノード事前読込］特性が 「Yes」に設定された場合、実行エンジンは、データビューの範囲内で見つかった各親の子レコードを自動的に検索します。「No」に設定された場合、実行エンジンは、展開表示された子レコードのみ検索します。
5. 検索された各レコードに対して、新しいノードが対応するノードの GUI データを持
つツリーに追加されます。
6. ［自動展開］特性の指定に基づいて #4 と #5 の処理が全レコード分繰り返し実行されます。

ツリーコントロールイベント
ツリーコントロール用の内部イベントを使用することで、エンドユーザーがデータツ
リー上でノードを動かしたり、拡張したり、縮めたすることができます。
ツリーコントロールイベントには、以下のものがあります。
• 親のノードに移動• 子ノードに移動• 前のノードに移動• 次のノードに移動• 子ツリー作成• ノード編集• サブツリー展開• サブツリー縮小

サブツリーの展開／縮小イベント
ノードのトリガに関する情報は、サブツリー展開／サブツリー縮小イベントによって渡されるパラメータによって提供されます。サブツリー展開／サブツリー縮小イベントのどちらかがハンドラのトリガイベントとして選択されると、Magic はツリーノードレベ
ルやツリーノード値に対する変数をハンドラに作成にするかどうかの確認メッセージを表示します。
サブツリー展開／サブツリー縮小イベントがトリガされると、ハンドラに定義された変数は、トリガイベントに関連されたツリーノード値で更新されます。最初のセレクトコ
マンドは、ツリーノードレベルで更新され、二番目のセレクトコマンドには、ツリーノー
ド値で更新されます。
サブツリー展開／サブツリー縮小イベントが、ツリーコントロールの範囲外で発生した
場合、ツリーノードレベルとツリーノード値は更新されません。
サブツリー展開／サブツリー縮小イベントをイベント実行処理コマンドで発行した場
合、指定されたパラメータは、最初の２つのハンドラ変数の後に定義された変数に渡さ
れます。

540

リファレンス
Magic eDeveloper V9 Plus

GUI 表示コントロール

ノード編集イベント［ノード編集］イベントによって、開発／実行モードでツリーコントロールのノードを編集することができます。このイベントをトリガすると現在パークしているノードを編集することができます。マウスの左クリックでノードが選択され、二回目のクリックでこのイベントがトリガされます。

ノードの追加／削除
以下の場合に、F4 をクリックしたり、子ノード作成イベントを実行することでノードをデータツリーに追加できます。
• タスクが修正モードでオープンされている場合• メインスクリーンが表示されている場合• 選択された親ノードが、展開表示されている場合
F3 をクリックすることによってノードを削除できます。親ノードを削除する場合は、子ノードがすべて削除されていなければなりません。ノードを削除した後、実行エンジン
はデータツリーを自動的に再表示します。

データツリーの操作
実行エンジンは、フォーカスのある現在のノードで表示されたデータビューの現在のノードを常に示します 。別のノードに移動すると、現在のノードが更新されます。
親ノードが最初に展開表示された時、GUI レイヤは、展開された親ノードと関連するノードのレコードを検索するように、実行エンジンに要求を出します。すでに親ノードが展開表示されている場合は、展開されたノードレベルを表示するだけで、レコードの検索要求は出しません。
展開された親ノードを縮小表示させた場合、GUI レイヤは、閉じたノードを表示するだ
けで、実行エンジンへの要求は出しません。選択されたノードが縮小された親ノードの一部の場合、GUI レイヤは選択されたものとして親ノードを表示し、現在のレコードを変更するように、実行エンジンに要求を送ります。

ノードへのパーク
実行エンジンは、フォーカスがデータツリーから動いた場合も、選択されたノードにパークされた状態を維持します。

ノードテキストの編集
以下のようにしてノードテキストを変更することができます。
1. マウスを 1 回クリックし、編集したノードにフォーカスを移します。
2. ノードテキストを編集するために、再度マウスをクリックします。
3. テキストが編集された後で、Enter キーを押下します。更新されたテキストは保存され、実行上のフォーカスは選択されたノードに残ります。他のキーが押された場合、編集されたテキストは保存されません。

データツリーの再表示
以下の場合、データツリーの内容が再表示されます。
• 親または子ノードが、追加、修正、削除された場合• 「画面再表示」イベントが実行された場合
どのようにデータツリーが表示されても、他のタスクでの更新内容のみ変更します。

リファレンス
Magic eDeveloper V9 Plus

541

第 9 章 - 表示フォーム

複数のノード選択［マルチマーキング］特性が 「Yes」に設定された場合、多重ノードを選択することができます。

ツリーコントロール関数
ツリーコントロール関数には以下のものがあります。
• TreeLevel …… データツリー上の選択ノードの現在のレベルを返します。
• TreeValue …… 選択ノードの現在のレベルによって決定されたノード ID を返します。
• TreeNodeGoto…… 指定したノードにパークします。
詳細は、第 8 章「関数」を参照してください。

ドラッグ & ドロップドラッグ & ドロップ機能は、Magic アプリケーションと、同じ PC 上で動作している Magic
アプリケーションや他のアプリケーションの間でサポートされます。主な目的は、Windows アプリケーションでは標準的なドラッグ & ドロップの操作でアプリケーション間のデータのやりとりを行うことです。
「ドラッグ許可」コントロール特性は、ドラッグ処理の有効化を指定し、「ドロップ許可」
コントロール特性は、ドロップ処理の有効化を指定します。

ドラッグ開始イベント「ドラッグ許可」特性が「Yes」に設定されたコントロール上でマウスの左ボタンがクリッ
クし、その状態でマウスポインタを移動させることで、コントロールをドラッグさせることができます。
ドラッグ処理が始まると、以下に示すように、Magic エンジンは、ドラッグ処理が行われるコントロールのタイプに従ってドラッグするデータを自動的に設定することができます。
コントロールタイプ

データ

フォーマット

エディット

マークされたテキスト

テキスト

テキスト

データは自動的に設定されない

N/A

プッシュボタン

データは自動的に設定されない

N/A

チェックボックス

データは自動的に設定されない

N/A

ラジオボタン

選択項目の表示値

テキスト

タブ

選択項目の表示値

テキスト

リストボックス

選択項目の表示値

テキスト

コンボボックス

選択項目の表示値

テキスト

スタティック（グルー データは自動的に設定されない
プ、四角、など）

N/A

テーブル

データは自動的に設定されない

N/A

イメージ

データは自動的に設定されない

N/A

ツリーコントロール

データは自動的に設定されない

N/A「ドラッグ開始」イベントをトリガとしたユーザー定義ハンドラを作成することで、タスクデータを処理し、以下のようにドラッグ処理を行うことができます。
• DragSetData 関数を使用したドラッグデータの制御• DragSetCrsr 関数を使用したドラッグ時のアイコン制御

542

リファレンス
Magic eDeveloper V9 Plusドラッグ & ドロップ
詳細は第 8 章「関数」を参照してください。
レコードがマークされたテーブルコントロール上でドラッグ処理を行うと、「ドラッグ開始」イベントをトリガにしたハンドラはマークされた各レコードに対して実行されます。

ドロップイベント［ドロップ許可］特性が 「Yes」に設定されたコントロールでマウスの左ボタンを離すことで、コントロールのドロップ処理が可能です。「ドロップ」イベントをトリガとした
ユーザー定義ハンドラを作成することで、タスクデータを処理し、以下のようにドロッ
プ処理を行うことができます。
• DropFormat 関数を使用した現在のドラッグ & ドロップ処理の有効／無効の確認• DropGetData 関数を使用した定義フォーマットのデータの取得• DropMouseX 及び、DropMouseY 関数を使用したドロップ処理時のマウス カーソルの
位置の取得
詳細は第 8 章「関数」を参照してください。

ツリーコントロールでのドラッグ & ドロップ
ツリ−コントロールでノード間のドラッグ & ドロップを実行すると、以下のように動作します。
1. ［ドラッグ開始］イベントによるハンドラ内では、ノード ID ／親 ID（に該当する項目の値）は、ドラッグ時のノードの値になっています。
2. ドラッグオーバすることでノード ID ／親 ID（に該当する項目の値）が現在カーソ
ルのあるノードの値に切り替わります。このため、［ドロップ］イベントによるハンドラ内では、ドロップ時のノードの値が取得されます。
この機能を利用することで、ノードのドラッグ & ドロップ処理を実現することができます。

ドラッグ & ドロップの制限と環境設定無効なコントロールはドラッグできません。ただし、パーク不可のコントロールは可能です。
［ドラッグ開始］イベントをトリガとした上位のユーザ定義ハンドラの継承設定が「No」の場合、ドラッグデータの自動処理はできなくなります。
［ドロップ］イベントをトリガとした上位のユーザ定義ハンドラの継承設定が「No」の場
合、ドロップデータの自動処理はできなくなります。
Magic は、ドロップ処理が発生するコントロールを更新することによって、エディトコ
ントロールのためにドラッグデータを処理を自動的行うことができます。
［ドラッグ許可］と［ドロップ許可］特性は、以下のコントロールで使用可能です。
• エディット• テキスト• プッシュボタン
• チェックボックス• ラジオボタン• タブ• リストボックス
リファレンス
Magic eDeveloper V9 Plus543

第 9 章 - 表示フォーム• コンボボックス• スタティック ( グループ、四角 等 )• テーブル• イメージ• ツリー
以下のコントロールでは使用できません。
• フォーム• スライダ• RTF エディット
• RTF
• OLE
• ActiveX
ドラッグ処理によって有効なドロップイベントの範囲内で取得できるユーザー定義
フォーマットの名前を事前に定義しておく必要があります。
動作環境の［ドロップデータサポート・ユーザフォーマット］の設定に、予測されるユー
ザー定義フォーマットの名前を設定してください。
詳細は、第 2 章「設定」を参照してください。

項目パレット［項目］パレットは、［コントロール］パレットと同じ領域を共有します。2 つのパレッ
トを切り替えるには、パレットの下部にあるタブをクリックします。
現在のタスクおよび上位タスクに定義されている項目が一覧表示されます。一覧内の各エントリは、データ項目 ID（文字）、カラム名、実項目、変数、パラメータを表示します。
タスクの境界には、タスク名を含むセパレータが表示されます。
コントロールと同じように、項目をクリックして選択し、フォームにドロップできます。
このとき項目名のエディットコントロールが一緒にドロップされます。項目の選択をキャンセルするには、Esc キーを押します。
項目をテーブルコントロールへドロップした場合、項目名がカラムのタイトルとして設定されます。
［項目］パレットの端をドラッグすることで、サイズを自由に調整できます。変更された
パレットのサイズは保持されます。項目番号のカラムサイズは変わりません、またオリジナルのサイズより小さくできません。
［項目］パレットサイズを変更してもコントロー
ルパレット自体に影響を与えません。
［コントロール］パレットの表示は左上に接した状態で変更されません。

GUI 表示コントロール特性
コントロールをフォームに配置すると、そのコントロールに特性を割当てることができます。マウスでコントロールを選択し、［コントロール特性］シートにズームします。
［コントロール特性］シートでは、コントロールに［データ］特性としてデータ項目を割当てて、コントロールの形式の特性を定義できます。実行時に Magic がデータ項目にアクセスするタブ順序は、フォーム内のコントロールの順序ではなく、タスク処理テーブ
ル内のエントリの順序によって決まります。

544

リファレンス
Magic eDeveloper V9 Plus

GUI 表示コントロール特性ある項目が、ウィンドウレイアウトの複数のコントロールでデータの特性として選択された場合、最後の選択のみが実行時に更新されます。ウィンドウレイアウトで同一項目を繰り返して表示する場合は、２つ目以降の項目用に変数項目を作成し、変数項目が表示されるようにする必要があります。
テキスト形式のフォーム（クラス >0）を作成した場合、テキスト形式のフォームでサポートされていないコントロール特性は無効になります。これは、他のフォームでも同様です。
コントロール特性は、いくつかのカテゴリに分類されます。カテゴリはコントロールによって異なります。また、特性の種類も、コントロールによって異なります。コントロー
ル特性には次のものがあります。

ラジオボタンのコントロール特性モデル• モデル……継承が解除されている特性の継承をし直したり、フォームモデルのすべての特性の継承を解除することができます。

詳細• データ……データは、データ項目（値）または式として指定します。
• 項目……［データ］特性で指定されたデータ項目の名前を表示します。
• 選択項目リスト……コントロールから選択することで返される値の範囲を指定します。選択値は、カンマ（,）区切りで複数指定できます。
［選択表示リスト］特性が定義されていない場合は、この値で表示されます。
［選択表示リスト］特性が定義されている場合は、この値は表示されません。
［データ］への継承指定を行うことで、項目の［範囲］値を継承することができます。
• 表示項目リスト……コントロールに表示させる選択肢を指定します。表示のみで入力値にはなりません。選択値は、カンマ（,）区切りで複数指定できます。
この特性が指定されている場合は、［選択項目リスト］特性に同じ順番で選択値が指定されている必要があります。
例えば、［選択項目リスト］に「1,2,3」と指定されていて、［表示項目リスト］に、「赤, 青 , 緑」と指定されている場合。フォーム上の表示は、「赤 , 青 , 緑」になりますが、実際に入力される値は、「1,2,3」のどちらかになります。
選択項目リスト］にショートカット指定（例 「&A」）がある場合、［表示項目リスト］を設定するとこの指定が無効になり、「&」は通常の文字と同じように扱われます。旧バージョンから移行して、［表示項目リスト］に選択肢を指定した場合は、［選択項目リスト］の「&」を削除してください。
• コントロール名……クラス「0」のフォーム内にあるコントロールに名前を付けると、
CtrlName 関数でそれらの名前を参照できるようになります。詳細については、第 8 章「関数」の「CtrlName 関数」を参照してください。
コントロールの名前は大文字と小文字が区別されます。［コントロール名］特性は 30桁に制限されます。後続空白は使用できません。フォームエディタ内のコントロールのコピー処理では、この特性はコピーされません。
• 型……選択したデータ項目または式の型。データ項目を設定した場合、この値は変更できません。式を設定した場合、この値は変更できます。
• ドラッグ許可……同じアプリケーション間でのコントロールからコントロールへのデータのドラッグ処理や同一 PC 上の別のアプリケーションとの間のデータのドラッ
グ処理を可能にします。
このコントロールからコピーされたデータは、［ドラッグ開始］イベントによるハンドラで意図的に設定されるか、Magic エンジンにより自動的に設定されます。
リファレンス
Magic eDeveloper V9 Plus

545

第 9 章 - 表示フォーム• ドロップ許可……同じアプリケーション間でのコントロールからコントロールへのデータのドラッグ処理や同一 PC 上の別のアプリケーションとの間のデータのドロッ
プ処理を可能にします。
このコントロールへのデータのコピーは、［ドロップ開始］イベントによるハンドラ
で意図的に行われるか、Magic エンジンにより自動的に行われます。
• ソーステーブル……コントロールと関連づけるテーブルの番号を指定します。［テーブル］一覧からテーブルを選択することができます。
• 表示項目……画面に表示されるテーブルのカラムを指定します。
［ソーステーブル］特性で指定されたテーブルのカラムを項目一覧から選択できます。
• リンク項目……実際に格納されるテーブルのカラムを指定します。
［ソーステーブル］
特性で指定されたテーブルのカラムを項目一覧から選択できます。
• インデックス……画面に表示される順序を決めるテーブルのインデックスを指定します。
［ソーステーブル］特性で指定されたテーブルのインデックスをインデックスの一覧から選択できます。
• 範囲……画面に表示されるレコードの範囲を決めるための各項目の開始および終了範囲を指定します。
［ソーステーブル］特性で指定されたテーブルに対して、［項目範囲］テーブルから範囲を指定するカラムを選択できます。指定されたテーブルに範囲に該当するレコードが存在しない場合、選択肢は何も表示されません。

入力• 必須入力……エンドユーザがコントロールに値を入力する必要があるかどうかを指定します。必須にするかどうかを表す理論値を返す式を使用できます。
• 修正許可……実行時にユーザがコントロール内の値を変更できるかどうかを指定します。
•

Yes……ユーザはコントロール内の値を変更できます。

•

No…… コントロールへのユーザアクセスは拒否されます。

• 選択プログラム……実行時にエンドユーザが［編集 / ズーム］を使用してプログラムを起動することができるかどうかを指定します。プログラム番号を直接入力するか、［プログラム一覧］にズームしてプログラムを選択します。
• 起動モード……［選択プログラム］特性で定義されたプログラムを呼び出す時期を指定します。有効な値は以下のとおりです。
•

A= 後置……呼び出した選択プログラムが終了したときに、カーソルが次の項目に移動するように指定します。

•

B= 前置……呼び出した選択プログラムが終了したときに、カーソルが呼び出した項目に戻るように指定します。（デフォルト）•

P= 自動……項目にカーソルが移動すると同時にプログラムが自動的に実行されるように指定します。これにより、ユーザは即座に値を選択できます。この場
合は、選択プログラムが終了した後、前置モードの場合と同様にカーソルは呼び出した項目に戻ります。

• 照会モード時修正許可……タスクが照会モードのときにも、チョイスコントロール（ラジオボタン、タブ、リストボックス、コンボボックス、チェックボックス）を切り替えることができます。

表示• フォント……コントロールに表示するテキストのフォントを指定します。指定されない場合、フォーム特性で定義されたフォントで表示されます。
• 色……コントロールの色を指定します。通常は［スタイル］特性が、「2= 平面」の場
合 の み 有 効 で す が、MAGIC.INI ファイルの［MAGIC_SPECIALS］セクションで「Special3DStyle=Y」と設定することで他のスタイルでも有効になります。
［基本色一覧］にズームして、色を選択できます。

546

リファレンス
Magic eDeveloper V9 Plus

GUI 表示コントロール特性• ヘルプ画面……コントロールと関連付けるヘルプ画面を指定します。
［ヘルプ一覧］にズームして、ヘルプ画面を選択できます。この指定は、オンラインフォームでのみ使用できます。
• ツールチップ……コントロールと関連付けるツールチップを指定します。［ヘルプ一覧］にズームしてツールチップヘルプを選択できます。
• 自動ヘルプ……コントロールと関連付ける自動ヘルプを指定します。指定されたヘルプの内容は、この項目にカーソルがあるときに自動的にステータスバーに表示されます。
• 可視……コントロールをユーザに見えるようにするかどうかを指定します。可視にするかどうかを表す理論値を直す式を使用できます。
• 有効……コントロールを有効にするかどうかを指定します。有効にするかどうかを表す理論値を返す式を使用できます。
• スタイル……コントロールの外観を指定します。有効な値は、以下の通りです。以下の通りです。
•

3= 凸立体•S= 凹立体•

2= 平面

デフォルトは、APG で作成した場合「3= 凸立体」、フォームエディタ上で貼り付けた
場合は「S= 凹立体」になります。
• 境界……コントロールの境界のスタイルを指定します。スタイルが平面のときのみ有効です。有効な値は以下のとおりです。
•

T= 細線……細線でコントロールを囲みます。（デフォルト）•H= 太線……太線でコントロールを囲みます。

•

N= なし……コントロールに境界線を表示しません。

• 水平整列……コントロール内の水平方向のテキストの配置を指定します。有効な値は以下のとおりです。
•

L= 左寄せ•C= センタリング•

R= 右寄せ• 列数……ラジオボタンコントロールに表示する列数を指定します。

位置とサイズ• 位置……［位置］特性は、フォームのサイズを変更したときに、コントロールのサイズを変更するかどうかを制御します。
［位置］特性は、［コントロールの位置付］ダイ
アログ内の［左辺割合］、［幅割合］、［上辺割合］、［高さ割合］の組み合わせになります。
この特性からズームして［コントロールの位置付］ダイアログを表示できます。
コントロールの位置特性が 0 の場合、フォームのサイズが実行時に変更されてもコントロールのサイズは変化しません。
［位置］特性が「0」より大きい場合、フォームのサイズが実行時に変更されたときに相対的にサイズが変化します。位置特性を持つコ
ントロールは、元のサイズより小さいサイズにはなりません。
• 左辺位置……コントロールの左上の x 座標を指定します。
• 上辺位置……コントロールの右上の y 座標を指定します。
• 幅……コントロールの幅を指定します。
• 高さ……コントロールの高さを指定します。

リファレンス
Magic eDeveloper V9 Plus

547

第 9 章 - 表示フォーム• コントロールレイヤ……コントロールがチョイスコントロールの子としてリンクされている場合、選択したコントロールのリンク先である親コントロールのチョイス階層を表示します。たとえば、3 つの選択肢が格納されたメニューを持つコンボボック
スがフォームレイアウトに配置されている場合、エディットコントロールを 3 番目の選択肢にリンクすると、この特性に番号 3 が表示されます。この特性は、常に無効になっており、フォームレイアウトでのみ変更できます。この特性は、チョイスコント
ロールにリンクされているコントロールにのみ有効です。

スタティック（四角形）コントロール特性モデル• 継承が解除されている特性の継承をし直したり、フォームモデルのすべての特性の継承を解除することができます。

詳細• テキスト……スタティックコントロールに表示するテキストを指定します。
• コントロール名……クラス「0」のフォーム内にあるコントロールに名前を付けると、
CtrlName 関数でそれらの名前を参照できるようになります。詳細については、第 8 章「関数」の「CtrlName 関数」を参照してください。
コントロールの名前は大文字と小文字が区別されます。［コントロール名］特性は 30桁に制限されます。後続空白は使用できません。フォームエディタ内のコントロールのコピー処理では、この特性はコピーされません。
• RTF の使用……リッチテキスト形式を有効にするかどうかを指定します。
• スタティックタイプ……スタティックコントロールのタイプを指定します。ここからズームして、［スタティックタイプ］ダイアログを表示できます。
• ドラッグ許可……同じアプリケーション間でのコントロールからコントロールへのデータのドラッグ処理や同一 PC 上の別のアプリケーションとの間のデータのドラッ
グ処理を可能にします。
このコントロールからコピーされたデータは、［ドラッグ開始］イベントによるハンドラで意図的に設定されるか、Magic エンジンにより自動的に設定されます。
• ドロップ許可……同じアプリケーション間でのコントロールからコントロールへのデータのドラッグ処理や同一 PC 上の別のアプリケーションとの間のデータのドロッ
プ処理を可能にします。
このコントロールへのデータのコピーは、［ドロップ開始］イベントによるハンドラ
で意図的に行われるか、Magic エンジンにより自動的に行われます。

入力• 複数行編集……エディットコントロールに複数行のテキストを含めることができるかどうかを指定します。
テキスト形式フォームで複数行編集コントロールを使用している場合、フォーム全体に収まるようにコントロールが拡大されます。このコントロールは、ページのサイズに合わせて拡大でき、複数のページにまたがることができます。ページ長を越えた複数行編集コントロールは、Magic のすべてのヘッダ制御およびフッタ制御を維持しな
がら次のページに続きます。
テーブル内にこのコントロールがある場合、テーブルのセルはエディットコントロー
ルのサイズに合わせて拡大されます。テーブルのタイトルは各ページに出力されます。そのほかのコントロールは、エディットコントロールの上または下に表示されます。

548

リファレンス
Magic eDeveloper V9 Plus

GUI 表示コントロール特性

表示• フォント……コントロールに表示するテキストのフォントを指定します。指定されない場合、フォーム特性で定義されたフォントで表示されます。
• 色……コントロールの色を指定します。［基本色一覧］にズームして、色を選択できます。
• ツールチップ……コントロールと関連付けるツールチップを指定します。［ヘルプ一覧］にズームしてツールチップヘルプを選択できます。
• 可視……コントロールをユーザに見えるようにするかどうかを指定します。可視にするかどうかを表す理論値を直す式を使用できます。
• 有効……コントロールを有効にするかどうかを指定します。有効にするかどうかを表す理論値を返す式を使用できます。
• スタイル……コントロールの外観を指定します。有効な値は、以下の通りです。
•

3= 凸立体•S= 凹立体•2= 平面（デフォルト）• 境界……コントロールの境界のスタイルを指定します。スタイルが平面のときのみ有効です。有効な値は以下のとおりです。
•

T= 細線……細線でコントロールを囲みます。

•

H= 太線……太線でコントロールを囲みます。

•

N= なし……コントロールに境界線を表示しません。

• 水平整列……コントロール内の水平方向のテキストの配置を指定します。有効な値は以下のとおりです。
•

L= 左寄せ•C= センタリング•

R= 右寄せ• 垂直整列……コントロール内の垂直方向のテキストの配置を指定します。有効な値は以下のとおりです。
•

T= 上寄せ•C= センタリング•

B= 下寄せ• 線種……スタティックコントロールの線の外観を指定します。スタイルが平面のときのみ有効です。有効な値は以下のとおりです。
•

R= 実線

•

T= 点線

•

S= 破線

•

A= 一点鎖線•

D= 二点鎖線• 線幅……スタティックコントロールの線の幅を指定します。幅はフォームの寸法単位
により異なります。
• 立体線……グループコントロールにおいて表示される四角形の線を立体表示にするかどうかを指定します。
（四角形では無効です。）

位置とサイズ• 位置……［位置］特性は、フォームのサイズを変更したときに、コントロールのサイズを変更するかどうかを制御します。
［位置］特性は、［コントロールの位置付］ダイ
アログ内の［左辺割合］、［幅割合］、［上辺割合］、［高さ割合］の組み合わせになります。
この特性からズームして［コントロールの位置付］ダイアログを表示できます。
コントロールの位置特性が 0 の場合、フォームのサイズが実行時に変更されてもコン
リファレンス
Magic eDeveloper V9 Plus

549

第 9 章 - 表示フォーム
トロールのサイズは変化しません。
［位置］特性が「0」より大きい場合、フォームのサイズが実行時に変更されたときに相対的にサイズが変化します。位置特性を持つコ
ントロールは、元のサイズより小さいサイズにはなりません。
• 左辺位置……コントロールの左上の x 座標を指定します。
• 上辺位置……コントロールの右上の y 座標を指定します。
• 幅……コントロールの幅を指定します。
• 高さ……コントロールの高さを指定します。
• コントロールレイヤ……コントロールがチョイスコントロールの子としてリンクされている場合、選択したコントロールのリンク先である親コントロールのチョイス階層を表示します。たとえば、３つの選択肢が格納されたメニューを持つコンボボック
スがフォームレイアウトに配置されている場合、エディットコントロールを３番目の選択肢にリンクすると、この特性に番号「3」が表示されます。この特性は、常に無効になっており、フォームレイアウトでのみ変更できます。この特性は、チョイスコ
ントロールにリンクされているコントロールにのみ有効です。

テーブルコントロール特性モデル• モデル……継承が解除されている特性の継承をし直したり、フォームモデルのすべての特性の継承を解除することができます。

詳細• 幅固定……カラムの表示状態によってテーブルの表示幅を指定します。
•

Yes……カラムが表示／非表示で切り替わってもテーブルの幅は変わりません。

•

No ……カラムの表示／非表示によってテーブルの幅が変わります。

この設定によってテーブルは以下のように動作します。

［幅固定］=No でカラムが非表示の場合
テーブル中の全てのカラムは非表示カラムの幅によって変わり、テーブルの幅は非表示
カラム幅によって小さくなります。

［幅固定］=No でカラムが表示の場合
テーブルの全てのカラムは表示カラムによって変わります。テーブルの幅は表示カラムの幅によって増加します。

［幅固定］=Yes でカラムが非表示の場合連続するカラムは非表示カラムの位置によってへ変わります。非表示カラムのサイズによって拡大します。非表示カラムが最後のカラムの場合、最後の区切り線は、最後のカラムとテーブルのスライダの間の空白を削除して、非表示カラムの位置に変わります。

550

リファレンス
Magic eDeveloper V9 Plus

GUI 表示コントロール特性［幅固定］=Yes でカラムが表示の場合連続するカラムは表示カラムの幅によって変わります。その幅は表示されたカラムの幅によって減少します。表示されたカラムの幅が連続するカラムのそれより大きな場合、連続するカラムは 20 ピクセルの最小幅にセットされます。また、表示されたカラムの残りの幅は、次のカラムから取られます。表示されたカラムが次のカラムの幅より大きな場合、このカラムはさらに 20 のピクセル減少し、その後のカラムも減少されます。
最後のカラムが縮小され、しかし、表示カラムの幅は分配されなければ、同じ処理が、テーブルの第 1 カラムまで表示されたカラムに先行するカラムのために実行されます。
第 1 のカラムが縮小されており、表示カラムが超過幅を持っている場合、表示カラムの幅は残りの幅を引いてオリジナルのカラム幅になります 。
上記の計算のために使用されたカラム幅はフォームエディタの中で固定に設定されたもので、式によって実行時に動的に指定されるものではありません。式で指定された場合、計算の後にカラムは整列され、その後式によって幅が再計算されるだけです。
• コントロール名……クラス「0」のフォーム内にあるコントロールに名前を付け、CtrlName 関数でそれらの名前を参照できるようにします。詳細については、第 8 章「関数」の「CtrlName 関数」を参照してください。
コントロールの名前は大文字と小文字が区別されます。［コントロール名］特性は 30桁に制限されます。後続空白は使用できません。フォームエディタ内のコントロールのコピー処理では、この特性はコピーされません。
• ドラッグ許可……同じアプリケーション間でのコントロールからコントロールへのデータのドラッグ処理や同一 PC 上の別のアプリケーションとの間のデータのドラッ
グ処理を可能にします。
このコントロールからコピーされたデータは、［ドラッグ開始］イベントによるハンドラで意図的に設定されるか、Magic エンジンにより自動的に設定されます。
• ドロップ許可……同じアプリケーション間でのコントロールからコントロールへのデータのドラッグ処理や同一 PC 上の別のアプリケーションとの間のデータのドロッ
プ処理を可能にします。
このコントロールへのデータのコピーは、［ドロップ開始］イベントによるハンドラ
で意図的に行われるか、Magic エンジンにより自動的に行われます。

表示• 色……コントロールの色を指定します。通常は、［スタイル］が「2= 平面」の場合にのみ有効ですが、［テーブル色の指定］が「T= テーブルに依存」の場合は、全てのス
タイル指定で有効になります。［基本色一覧］にズームして、色を選択できます。
• テーブル色の指定…… テーブルの背景色を各カラム毎に指定された色で表示するか、
テーブル全体で同じ色によって表示するかを定義します。
•

C= カラムに依存……テーブルに配置された各カラムの［色］特性によって表示される色が決まります。
［スタイル］特性が「3= 凸立体」の場合は、無効です。

•

T= テーブルに依存……テーブルコントロールの［色］特性によってテーブルの背景色が決まります。この場合、カラム特性の色指定は［スタイル］特性が「W=Windows 立体」の場合飲み有効です。
カラムのタイトルの色は、カラムの［色］特性に依存します。

• 交互表示色…… テーブルの行の背景色を交互に変更して表示させる場合の変更色を指定します。デフォルト値は「0」です。この場合、すべての行の背景色は同じになります。定義式では指定できません。［テーブル色の指定］特性が「T= テーブルに依存」の場合のみ有効です。
実行時、行の背景色は、［色］特性で指定した色（奇数行）と、［交互表示色］特性で指定した色（偶数行）の交互に切り替わります。行が追加されたり削除された場合、奇数行と偶数業の関係にもづいて表示が切り替わります。データ行がテーブル全体にない場合（テーブルの下部に何も表示されない部分がある場合）も、交互に色が切り替わって表示されます。
リファレンス
Magic eDeveloper V9 Plus

551

第 9 章 - 表示フォーム• ヘルプ画面……コントロールと関連付けるヘルプ画面を指定します。この指定はオン
ラインフォームでのみ有効です。［ヘルプ一覧］にズームして、ヘルプ画面を選択できます。
• ツールチップ……コントロールと関連付けるツールチップを指定します。［ヘルプ一覧］にズームしてツールチップヘルプを選択できます。
• 可視……コントロールをユーザに見えるようにするかどうかを指定します。可視にするかどうかを表す理論値を直す式を使用できます。
• スタイル……コントロールの外観を指定します。有効な値は、以下の通りです。
•

W=Windows 立体•

3= 凸立体（デフォルト）•

S= 凹立体•2= 平面• 境界……コントロールの境界のスタイルを指定します。
［スタイル］特性が「2= 平面」と「W=Windows 立体」のときに有効です。有効な値は以下のとおりです。
•

T= 細線……細線でコントロールを囲みます。

•

H= 太線……太線でコントロールを囲みます。

•

N= なし……コントロールに境界線を表示しません。

• スクロールバー……テーブルコントロールに垂直スクロールバーを配置するかどうかを指定します。
• 区切り……テーブルコントロールに行の間に分割線を表示するかどうかを指定します。
• ハイライト行のスタイル……現在の行を強調表示する方法を指定します。
•

N= なし……現在の行を強調表示しません。.

•

F= フレーム……現在の行が、行を取り囲むフレームして強調表示されます。フ
レームの色は［ハイライト行の色］特性で指定された色の前景色になります。
［区切り］特性が「No」の場合は、フレームは表示されません。

•

B= 背景……現在の行が［ハイライト行の色］特性で指定された色の背景色によって強調表示されます。

•

C= 背景とコントロール……現在の行が、背景オプションのような背景色で強調表示されます。強調された色を表示するために、このモードは、また現在行のすべてのコントロールの色を変更します。

• ハイライト行の色……［ハイライト用のスタイル］特性の設定によって強調表示される色を指定します。
• タイトル高さ……テーブルコントロールのタイトルの高さを指定します。この特性は、フォームエディタでタイトルバーの下端をクリックしてドラッグして設定することもできます。
• 行高さ……テーブルコントロールの行の高さを指定します。テーブルの先頭行の下端をクリックおよびドラッグして設定することもできます。
• 下辺の間隔…… ウィンドウのサイズに応じてテーブルの下辺の位置を決める方法を指定します。
•

R= 行ハイライト（デフォルト）…… テーブルの下辺とウィンドの下辺の間隔が調整され、部分表示行（何も表示されず、行の高さが指定行より小さい行）が表示しないようにします。

•

N= なし …… 部分表示行が表示され、テーブルの下辺とウィンドの下辺の間隔が同じになるように調整されます。

• カラム数……テーブルコントロール内のカラムの数を表示します。カラム数の変更はフォームレイアウトでのみ行うことができます。
• カラムの区切り線……テーブルコントロールのカラムの間に区切り線を表示するかどうかを指定します。
• 最終区切線……テーブルコントロールで表示されます。タイトルバーに最終カラムの区切線を表示するかどうかを指定します。

552

リファレンス
Magic eDeveloper V9 Plus

GUI 表示コントロール特性•

Yes……タイトルバーに最終カラムの区切線を表示します。

•

No……区切線を表しません。

デフォルトの設定は以下の通りです。
•

GUI 表示形式フォームの場合…Yes•

GUI 出力形式フォームの場合…No• ウィンドウ内テーブル……テーブルコントロールの［サイズ変更可］特性が［Yes］に設定されている場合、カラムのサイズが変更されたときにテーブルコントロールの表
示領域を変更するかどうかを指定します。テーブルのサイズが表示領域を超えた場
合、スクロールバーが表示されます。
• サイズ変更可……実行モードにおいてテーブルコントロールのカラムの区切り線をドラッグすることでカラムのサイズを変更できるようにするかどうかを指定します。
カラムのサイズを変更するには２つの方法があります。
•

カラムの区切り線をクリックしてドラッグします。この場合、区切りの両端のカラムの幅が変わります。

•

カラムの区切り線をクリックして、Shift キーを押しながらドラッグします。この場合、区切りの左端のカラムの幅が変わり、テーブルの幅も変わります。

• マルチマーキング……テーブルコントロールのマルチマーキング機能を有効にするかどうかを指定します。マークされたテーブルに対してユーザが定義した処理を実行したりマーク行を削除したりすることができます。
［タスク特性／トランザクションモード］が「P= 物理」で、［テーブル特性／キャッシュ範囲］を「N= なし」に設定したテーブルをメインテーブルにした場合、実行時にマルチマーキングは機能しません。
• 区切り線の色 …… テーブルコントロールの区切り線の色を指定します。

位置とサイズ• 位置……［位置］特性は、フォームのサイズを変更したときに、コントロールのサイズを変更するかどうかを制御します。
［位置］特性は、［コントロールの位置付］ダイ
アログ内の［左辺割合］、［幅割合］、［上辺割合］、［高さ割合］の組み合わせになります。
この特性からズームして［コントロールの位置付］ダイアログを表示できます。
コントロールの位置特性が 0 の場合、フォームのサイズが実行時に変更されてもコントロールのサイズは変化しません。
［位置］特性が「0」より大きい場合、フォームのサイズが実行時に変更されたときに相対的にサイズが変化します。位置特性を持つコ
ントロールは、元のサイズより小さいサイズにはなりません。
• 左辺位置……コントロールの左上の x 座標を指定します。
• 上辺位置……コントロールの右上の y 座標を指定します。
• 幅……コントロールの幅を指定します。
• 高さ……コントロールの高さを指定します。（テーブルコントロールでは無効です）• コントロールレイヤ……コントロールがチョイスコントロールの子としてリンクされている場合、選択したコントロールのリンク先である親コントロールのチョイス階層を表示します。たとえば、3 つの選択肢が格納されたメニューを持つコンボボック
スがフォームレイアウトに配置されている場合、エディットコントロールを 3 番目の選択肢にリンクすると、この特性に番号 3 が表示されます。この特性は、常に無効になっており、フォームレイアウトでのみ変更できます。この特性は、チョイスコント
ロールにリンクされているコントロールにのみ有効です。

リファレンス
Magic eDeveloper V9 Plus

553

第 9 章 - 表示フォーム

エディットコントロール特性モデル• モデル……継承が解除されている特性の継承をし直したり、フォームモデルのすべての特性の継承を解除することができます。

詳細• データ……データは、データ項目（値）または式として指定します。
• 項目……［データ］特性で指定されたデータ項目の名前を表示します。
• コントロール名……クラス「0」のフォーム内にあるコントロールに名前を付けると、
CtrlName 関数でそれらの名前を参照できるようになります。詳細については、第 8 章「関数」の「CtrlName 関数」を参照してください。
コントロールの名前は大文字と小文字が区別されます。［コントロール名］特性は 30桁に制限されます。後続空白は使用できません。フォームエディタ内のコントロールのコピー処理では、この特性はコピーされません。
• 書式……エディットコントロールの書式を指定します。ここで変更できるのは、現在のフォーム表示の形式だけです。初期設定値は、項目のカラムテーブルの設定から継承された書式になります。式テーブルにズームして、コントロールの書式を表す式を入力することもできます。
• 型……選択したデータ項目または式の型。データ項目を設定した場合、この値は変更できません。式を設定した場合、この値は変更できます。
• 漢字入力……［漢字入力］欄は、かな漢字変換プログラム（IME ）を自動起動するためのものです。IME を手動で起動する場合は、特にこの欄の設定は必要ありません。
かな漢字変換入力モードの値を返す式を［式］テーブルに設定し、その式番号をこの式欄に設定します。ただし、式が返す値は 0 〜 9 で、式番号は 255 以下でなければなりません。
各値に対するかな漢字変換入力モードは、以下のようになります。
値

入力モード

サイズ

入力方法

入力例

０

ＯＦＦ

——

——

————————

１

全 Ｒ かな

全角

ローマ字

かな

２

全かな

全角

直接

のちみち（ＫＡＮＡ ）３

全 Ｒ カナ

全角

ローマ字

カナ

４

全カナ

全角

直接

ノチミチ（ＫＡＮＡ ）５

半 Ｒ カナ

半角

ローマ字

ｶﾅ

６

半カナ

半角

直接

ﾉﾁﾐﾁ（KANA ）

７

全英数

全角

直接

ＫＡＮＡ

８

半英数

半角

直接

KANA

９

——

——

——

————————

数値項目に対しては、この欄は表示されません。IME によっては、正常に動作しないモードもあります。
IME は 32 ビット対応のものをお使いください。
• ドラッグ許可……同じアプリケーション間でのコントロールからコントロールへのデータのドラッグ処理や同一 PC 上の別のアプリケーションとの間のデータのドラッ
グ処理を可能にします。

554

このコントロールからコピーされたデータは、［ドラッグ開始］イベントによるハンドラで意図的に設定されるか、Magic エンジンにより自動的に設定されます。
リファレンス
Magic eDeveloper V9 Plus

GUI 表示コントロール特性• ドロップ許可……同じアプリケーション間でのコントロールからコントロールへのデータのドラッグ処理や同一 PC 上の別のアプリケーションとの間のデータのドロッ
プ処理を可能にします。
このコントロールへのデータのコピーは、［ドロップ開始］イベントによるハンドラ
で意図的に行われるか、Magic エンジンにより自動的に行われます。

入力• 必須入力……エンドユーザがコントロールに値を入力する必要があるかどうかを指定します。必須にするかどうかを表す理論値を返す式を使用できます。
• 修正許可……実行時にユーザがコントロール内の値を変更できるかどうかを指定します。
•

Yes……ユーザはコントロール内の値を変更できます。

•

No…… コントロールへのユーザアクセスは拒否されます。

• 選択プログラム……実行時にエンドユーザが［編集 / ズーム］を使用してプログラムを起動することができるかどうかを指定します。プログラム番号を直接入力するか、［プログラム一覧］にズームしてプログラムを選択します。
• 起動モード……選択プログラムの特性で定義されたプログラムを呼び出す時期を指定します。有効な値は以下のとおりです。
•

A= 後置……呼び出した選択プログラムが終了したときに、カーソルが次の項目に移動するように指定します。

•

B= 前置……呼び出した選択プログラムが終了したときに、カーソルが呼び出した項目に戻るように指定します。
（デフォルト）•P= 自動……項目にカーソルが移動すると同時にプログラムが自動的に実行されるように指定します。これにより、ユーザは即座に値を選択できます。この場
合は、選択プログラムが終了した後、前置モードの場合と同様にカーソルは呼び出した項目に戻ります。

• 複数行編集……エディットコントロールに複数行のテキストを含めることができるかどうかを指定します。
テキスト形式フォームで複数行編集コントロールを使用している場合、フォーム全体に収まるようにコントロールが拡大されます。このコントロールは、ページのサイズに合わせて拡大でき、複数のページにまたがることができます。ページ長を越えた複数行編集コントロールは、Magic のすべてのヘッダ制御およびフッタ制御を維持しな
がら次のページに続きます。
テーブル内にこのコントロールがある場合、テーブルのセルはエディットコントロー
ルのサイズに合わせて拡大されます。テーブルのタイトルは各ページに出力されます。そのほかのコントロールは、エディットコントロールの上または下に表示されます。
• 水平スクロール……水平方向のスクロールを可能にするかどうかを指定します。［複数行編集］が［Yes］に設定されているコントロールに適用されます。
• 垂直スクロール……コントロールの行の間を垂直方向にスクロールを可能にするかどうかを指定します。［複数行編集］が「Yes」に設定されているコントロールに適用されます。
• スクロールバーの表示……垂直スクロールや水平スクロールの特性に基づいて、垂直スクロールバーや水平スクロールバーを表示するかどうかを指定します。「Yes」の場
合、エディットコントロールでスクロールバーを表示します。
• CR 許可……エンドユーザが Enter キーを押したときにコントロール内の次の行に移動
するか、コントロールを終了するかを指定します。［複数行編集］が「Yes」に設定されているコントロールに適用されます。
• 拡張ウィンドウ……コントロールの表示可能範囲を越えるテキストのためのウィン
ドウを指定します。［フォーム一覧］にズームして、コントロールに関連付ける拡張
ウィンドウのフォームを選択できます。
• パスワードエディット……コントロールへのアクセスをパスワード保護するかどうかを指定します。
リファレンス
Magic eDeveloper V9 Plus

555

第 9 章 - 表示フォーム• 表示通貨……項目を表示するときに換算する通貨を指定します。［通貨一覧］にズー
ムして通貨を選択します。この特性は、数値型のエディットコントロールの場合にのみ有効になります。

表示• フォント……コントロールに表示するテキストのフォントを指定します。指定されない場合、フォーム特性で定義されたフォントで表示されます。
• 色……コントロールの色を指定します。［基本色一覧］にズームして、色を選択できます。
• ヘルプ画面……コントロールと関連付けるヘルプ画面を指定します。この指定はオン
ラインフォームでのみ有効です。［ヘルプ一覧］にズームして、ヘルプ画面を選択できます。
• ツールチップ……コントロールと関連付けるツールチップを指定します。［ヘルプ一覧］にズームしてツールチップヘルプを選択できます。
• 自動ヘルプ……コントロールと関連付ける自動ヘルプを指定します。指定されたヘルプの内容は、この項目にカーソルがあるときに自動的にステータスバーに表示されます。
• 可視……コントロールをユーザに見えるようにするかどうかを指定します。可視にするかどうかを表す理論値を直す式を使用できます。
• 有効……コントロールを有効にするかどうかを指定します。有効にするかどうかを表す理論値を返す式を使用できます。
• スタイル……コントロールの外観を指定します。有効な値は、以下の通りです。
•

W=Windows 立体（デフォルト）•3= 凸立体•S= 凹立体•2= 平面• 境界……コントロールの境界のスタイルを指定します。スタイルが平面のときのみ有効です。有効な値は以下のとおりです。
•

T= 細線……細線でコントロールを囲みます。

•

H= 太線……太線でコントロールを囲みます。

•

N= なし……コントロールに境界線を表示しません。（デフォルト）• 水平整列……コントロール内の水平方向のテキストの配置を指定します。有効な値は以下のとおりです。
•

L= 左寄せ•C= センタリング•

R= 右寄せ• 垂直整列……コントロール内の垂直方向のテキストの配置を指定します。有効な値は以下のとおりです。
•

T= 上寄せ•C= センタリング•

B= 下寄せ位置とサイズ• 位置……［位置］特性は、フォームのサイズを変更したときに、コントロールのサイズを変更するかどうかを制御します。
［位置］特性は、［コントロールの位置付］ダイ
アログ内の［左辺割合］、［幅割合］、［上辺割合］、［高さ割合］の組み合わせになります。
この特性からズームして［コントロールの位置付］ダイアログを表示できます。
コントロールの位置特性が 0 の場合、フォームのサイズが実行時に変更されてもコントロールのサイズは変化しません。
［位置］特性が「0」より大きい場合、フォームの556

リファレンス
Magic eDeveloper V9 Plus

GUI 表示コントロール特性
サイズが実行時に変更されたときに相対的にサイズが変化します。
位置特性を持つコントロールは、元のサイズより小さいサイズにはなりません。
• 左辺位置……コントロールの左上の x 座標を指定します。
• 上辺位置……コントロールの右上の y 座標を指定します。
• 幅……コントロールの幅を指定します。
• 高さ……コントロールの高さを指定します。
• コントロールレイヤ……コントロールがチョイスコントロールの子としてリンクされている場合、選択したコントロールのリンク先である親コントロールのチョイス階層を表示します。たとえば、3 つの選択肢が格納されたメニューを持つコンボボック
スがフォームレイアウトに配置されている場合、エディットコントロールを 3 番目の選択肢にリンクすると、この特性に番号 3 が表示されます。この特性は、常に無効になっており、フォームレイアウトでのみ変更できます。この特性は、チョイスコント
ロールにリンクされているコントロールにのみ有効です。

カラムコントロール特性モデル• モデル……継承が解除されている特性の継承をし直したり、フォームモデルのすべての特性の継承を解除することができます。

詳細• カラムタイトル……テーブルコントロール内のカラムのタイトルを入力します。広域表示ウィンドウ（F6）を表示することで、複数行入力ができます。
• ソート可……ここを「Yes」に指定すると、このカラムを使ってテーブルをソートできるようになります。
• カラムのマーキング……ここを「Yes」に指定すると、このカラムを使ってテーブルの行をマークできるようになります。

表示• 上境界線……カラムの上の境界線を表示するか否かを指定します。
• 右境界線……カラムの右の境界線を表示するか否かを指定します。
• 水平整列……コントロール内の水平方向のテキストの配置を指定します。有効な値は以下のとおりです。
•

L= 左寄せ•C= センタリング•

R= 右寄せ• 垂直整列……コントロール内の垂直方向のテキストの配置を指定します。有効な値は以下のとおりです。
•

T= 上寄せ•C= センタリング•

B= 下寄せ水平整列と垂直整列を同一テーブル内で混在させることはできません。

• フォント……コントロールに表示するテキストのフォントを指定します。指定されない場合、フォーム特性で定義されたフォントで表示されます。
リファレンス
Magic eDeveloper V9 Plus

557

第 9 章 - 表示フォーム• 色……コントロールの色を指定します。［基本色一覧］にズームして、色を選択できます。
• 可視……コントロールをユーザに見えるようにするかどうかを指定します。可視にするかどうかを表す理論値を直す式を使用できます。

位置とサイズ• 位置……テーブルのサイズ変更によってカラムのサイズが変更されるかどうかを「Yes」または「No」で指定します。式で動的に指定することもできます。
• 幅……フォームのオープン時のカラム幅を指定します。フォームの寸法単位に基づいた値を指定します。
• コントロールレイヤ……コントロールがチョイスコントロールの子としてリンクされている場合、選択したコントロールのリンク先である親コントロールのチョイス階層を表示します。たとえば、３つの選択肢が格納されたメニューを持つコンボボック
スがフォームレイアウトに配置されている場合、エディットコントロールを３番目の選択肢にリンクすると、この特性に番号「3」が表示されます。この特性は、常に無効になっており、フォームレイアウトでのみ変更できます。この特性は、チョイスコ
ントロールにリンクされているコントロールにのみ有効です。

タブコントロール特性モデル• モデル……継承が解除されている特性の継承をし直したり、フォームモデルのすべての特性の継承を解除することができます。

詳細• データ……データは、データ項目（値）または式として指定します。
• 項目……［データ］特性で指定されたデータ項目の名前を表示します。
• 選択項目リスト……コントロールから選択することで返される値の範囲を指定します。選択値は、カンマ（,）区切りで複数指定できます。
［選択表示リスト］特性が定義されていない場合は、この値で表示されます。
［選択表示リスト］特性が定義されている場合は、この値は表示されません。
［データ］への継承指定を行うことで、項目の［範囲］値を継承することができます。
• 表示項目リスト……コントロールに表示させる選択肢を指定します。表示のみで入力値にはなりません。選択値は、カンマ（,）区切りで複数指定できます。
この特性が指定されている場合は、［選択項目リスト］特性に同じ順番で選択値が指定されている必要があります。
例えば、［選択項目リスト］に「1,2,3」と指定されていて、［表示項目リスト］に、「赤, 青 , 緑」と指定されている場合。フォーム上の表示は、「赤 , 青 , 緑」になりますが、実際に入力される値は、「1,2,3」のどちらかになります。
［選択項目リスト］にショートカット指定（例 「&A」）がある場合、［表示項目リスト］を設定するとこの指定が無効になり、「&」は通常の文字と同じように扱われます。旧バージョンから移行して、［表示項目リスト］に選択肢を指定した場合は、［選択項目リスト］の「&」を削除してください。
• コントロール名……クラス「0」のフォーム内にあるコントロールに名前を付けると、
CtrlName 関数でそれらの名前を参照できるようになります。詳細については、第 8 章「関数」の「CtrlName 関数」を参照してください。
コントロールの名前は大文字と小文字が区別されます。［コントロール名］特性は 30桁に制限されます。後続空白は使用できません。フォームエディタ内のコントロールのコピー処理では、この特性はコピーされません。

558

リファレンス
Magic eDeveloper V9 Plus

GUI 表示コントロール特性• 型……選択したデータ項目または式の型。データ項目を設定した場合、この値は変更できません。式を設定した場合、この値は変更できます。
• ソーステーブル……コントロールと関連づけるテーブルの番号を指定します。［テーブル］一覧からテーブルを選択することができます。
• 表示項目……画面に表示されるテーブルのカラムを指定します。
［ソーステーブル］特性で指定されたテーブルのカラムを項目一覧から選択できます。
• リンク項目……実際に格納されるテーブルのカラムを指定します。
［ソーステーブル］
特性で指定されたテーブルのカラムを項目一覧から選択できます。
• インデックス……画面に表示される順序を決めるテーブルのインデックスを指定します。［ソーステーブル］特性で指定されたテーブルのインデックスをインデックスの一覧から選択できます。
• 範囲……画面に表示されるレコードの範囲を決めるための各項目の開始および終了範囲を指定します。
［ソーステーブル］特性で指定されたテーブルに対して、［項目範囲］テーブルから範囲を指定しますカラムを選択できます。指定されたテーブルに範囲に該当するレコードが存在しない場合、選択肢は何も表示されません。
• ドラッグ許可……同じアプリケーション間でのコントロールからコントロールへのデータのドラッグ処理や同一 PC 上の別のアプリケーションとの間のデータのドラッ
グ処理を可能にします。
このコントロールからコピーされたデータは、［ドラッグ開始］イベントによるハンドラで意図的に設定されるか、Magic エンジンにより自動的に設定されます。
• ドロップ許可……同じアプリケーション間でのコントロールからコントロールへのデータのドラッグ処理や同一 PC 上の別のアプリケーションとの間のデータのドロッ
プ処理を可能にします。
このコントロールへのデータのコピーは、［ドロップ開始］イベントによるハンドラ
で意図的に行われるか、Magic エンジンにより自動的に行われます。

入力• 必須入力……エンドユーザがコントロールに値を入力する必要があるかどうかを指定します。必須にするかどうかを表す理論値を返す式を使用できます。
• 修正許可……実行時にユーザがコントロール内の値を変更できるかどうかを指定します。
•

Yes……ユーザはコントロール内の値を変更できます。

•

No…… コントロールへのユーザアクセスは拒否されます。

• 選択プログラム……実行時にエンドユーザが［編集 / ズーム］を使用してプログラムを起動することができるかどうかを指定します。プログラム番号を直接入力するか、［プログラム一覧］にズームしてプログラムを選択します。
• 起動モード……選択プログラムの特性で定義されたプログラムを呼び出す時期を指定します。有効な値は以下のとおりです。
•

A= 後置……呼び出した選択プログラムが終了したときに、カーソルが次の項目に移動するように指定します。

•

B= 前置……呼び出した選択プログラムが終了したときに、カーソルが呼び出した項目に戻るように指定します。（デフォルト）•

P= 自動……項目にカーソルが移動すると同時にプログラムが自動的に実行されるように指定します。これにより、ユーザは即座に値を選択できます。この場
合は、選択プログラムが終了した後、前置モードの場合と同様にカーソルは呼び出した項目に戻ります。

• 照会モード時修正許可……タスクが照会モードのときにも、チョイスコントロールを切り替えることができます。

表示• フォント……コントロールに表示するテキストのフォントを指定します。指定されない場合、フォーム特性で定義されたフォントで表示されます。
リファレンス
Magic eDeveloper V9 Plus

559

第 9 章 - 表示フォーム• 色……コントロールの色を指定します。通常は［スタイル］特性が、「2= 平面」の場
合 の み 有 効 で す が、MAGIC.INI ファイルの［MAGIC_SPECIALS］セクションで「Special3DStyle=Y」と設定することで他のスタイルでも有効になります。
［基本色一覧］にズームして、色を選択できます。
• ヘルプ画面……コントロールと関連付けるヘルプ画面を指定します。この指定はオン
ラインフォームでのみ有効です。［ヘルプ一覧］にズームして、ヘルプ画面を選択できます。
• ツールチップ……コントロールと関連付けるツールチップを指定します。［ヘルプ一覧］にズームしてツールチップヘルプを選択できます。
• 自動ヘルプ……コントロールと関連付ける自動ヘルプを指定します。指定されたヘルプの内容は、この項目にカーソルがあるときに自動的にステータスバーに表示されます。
• 可視……コントロールをユーザに見えるようにするかどうかを指定します。可視にするかどうかを表す理論値を直す式を使用できます。
• 有効……コントロールを有効にするかどうかを指定します。有効にするかどうかを表す理論値を返す式を使用できます。
• スタイル……コントロールの外観を指定します。有効な値は、以下の通りです。
•

3= 凸立体（デフォルト）

•

2= 平面

• 水平整列……コントロール内の水平方向のテキストの配置を指定します。有効な値は以下のとおりです。
•

L= 左寄せ•C= センタリング•

R= 右寄せ• タブラベル位置……タブコントロールに表示するタブの位置を指定します。有効な値は以下のとおりです。
•

T= 上

•

R= 右

•

B= 下

•

L= 左

位置とサイズ• 位置……［位置］特性は、フォームのサイズを変更したときに、コントロールのサイズを変更するかどうかを制御します。
［位置］特性は、［コントロールの位置付］ダイ
アログ内の［左辺割合］、［幅割合］、［上辺割合］、［高さ割合］の組み合わせになります。
この特性からズームして［コントロールの位置付］ダイアログを表示できます。
コントロールの位置特性が 0 の場合、フォームのサイズが実行時に変更されてもコントロールのサイズは変化しません。
［位置］特性が「0」より大きい場合、フォームのサイズが実行時に変更されたときに相対的にサイズが変化します。位置特性を持つコ
ントロールは、元のサイズより小さいサイズにはなりません。
• 左辺位置……コントロールの左上の x 座標を指定します。
• 上辺位置……コントロールの右上の y 座標を指定します。
• 幅……コントロールの幅を指定します。
• 高さ……コントロールの高さを指定します。

560• コントロールレイヤ……コントロールがチョイスコントロールの子としてリンクされている場合、選択したコントロールのリンク先である親コントロールのチョイス階層を表示します。たとえば、3 つの選択肢が格納されたメニューを持つコンボボック
スがフォームレイアウトに配置されている場合、エディットコントロールを 3 番目の選択肢にリンクすると、この特性に番号 3 が表示されます。この特性は、常に無効になっており、フォームレイアウトでのみ変更できます。この特性は、チョイスコント
ロールにリンクされているコントロールにのみ有効です。
リファレンス
Magic eDeveloper V9 Plus

GUI 表示コントロール特性

スタティック（楕円形）コントロール特性モデル• モデル……継承が解除されている特性の継承をし直したり、フォームモデルのすべての特性の継承を解除することができます。

詳細• テキスト……スタティックコントロールに表示するテキストを指定します。
• コントロール名……クラス「0」のフォーム内にあるコントロールに名前を付けると、
CtrlName 関数でそれらの名前を参照できるようになります。詳細については、第 8 章「関数」の「CtrlName 関数」を参照してください。
コントロールの名前は大文字と小文字が区別されます。［コントロール名］特性は 30桁に制限されます。後続空白は使用できません。フォームエディタ内のコントロールのコピー処理では、この特性はコピーされません。
• RTF の使用……リッチテキスト形式を有効にするかどうかを指定します。
• スタティックタイプ……スタティックコントロールのタイプを指定します。ここからズームして、［スタティックタイプ］ダイアログを表示できます。このダイアログ内の選択肢は、コンボボックスで表示されます。
• ドラッグ許可……同じアプリケーション間でのコントロールからコントロールへのデータのドラッグ処理や同一 PC 上の別のアプリケーションとの間のデータのドラッ
グ処理を可能にします。
このコントロールからコピーされたデータは、［ドラッグ開始］イベントによるハンドラで意図的に設定されるか、Magic エンジンにより自動的に設定されます。
• ドロップ許可……同じアプリケーション間でのコントロールからコントロールへのデータのドラッグ処理や同一 PC 上の別のアプリケーションとの間のデータのドロッ
プ処理を可能にします。
このコントロールへのデータのコピーは、［ドロップ開始］イベントによるハンドラ
で意図的に行われるか、Magic エンジンにより自動的に行われます。

入力• 複数行編集……エディットコントロールに複数行のテキストを含めることができるかどうかを指定します。
テキスト形式フォームで複数行編集コントロールを使用している場合、フォーム全体に収まるようにコントロールが拡大されます。このコントロールは、ページのサイズに合わせて拡大でき、複数のページにまたがることができます。ページ長を越えた複数行編集コントロールは、Magic のすべてのヘッダ制御およびフッタ制御を維持しな
がら次のページに続きます。
テーブル内にこのコントロールがある場合、テーブルのセルはエディットコントロー
ルのサイズに合わせて拡大されます。テーブルのタイトルは各ページに出力されます。そのほかのコントロールは、エディットコントロールの上または下に表示されます。

表示• フォント……コントロールに表示するテキストのフォントを指定します。指定されない場合、フォーム特性で定義されたフォントで表示されます。
• 色……コントロールの色を指定します。［基本色一覧］にズームして、色を選択できます。
• ツールチップ……コントロールと関連付けるツールチップを指定します。［ヘルプ一覧］にズームしてツールチップヘルプを選択できます。

リファレンス
Magic eDeveloper V9 Plus561

第 9 章 - 表示フォーム• 可視……コントロールをユーザに見えるようにするかどうかを指定します。可視にするかどうかを表す理論値を直す式を使用できます。
• 有効……コントロールを有効にするかどうかを指定します。有効にするかどうかを表す理論値を返す式を使用できます。
• スタイル……コントロールの外観を指定します。有効な値は、以下の通りです。
•

3= 凸立体•S= 凹立体•2= 平面（デフォルト）• 境界……コントロールの境界のスタイルを指定します。スタイルが平面のときのみ有効です。有効な値は以下のとおりです。
•

T= 細線……細線でコントロールを囲みます。

•

H= 太線……太線でコントロールを囲みます。

•

N= なし……コントロールに境界線を表示しません。（デフォルト）• 水平整列……コントロール内の水平方向のテキストの配置を指定します。有効な値は以下のとおりです。
•

L= 左寄せ•C= センタリング•

R= 右寄せ• 垂直整列……コントロール内の垂直方向のテキストの配置を指定します。有効な値は以下のとおりです。
•

T= 上寄せ•C= センタリング•

B= 下寄せ• 線種……スタティックコントロールの線の外観を指定します。スタイルが平面のときのみ有効です。有効な値は以下のとおりです。
•

R= 実線

•

T= 点線

•

S= 破線

•

A= 一点鎖線•

D= 二点鎖線• 線幅……スタティックコントロールの線の幅を指定します。幅はフォームの寸法単位
により異なります。
• 立体線……グループコントロールにおいて表示される四角形の線を立体表示にするかどうかを指定します。（楕円形では無効です。）

位置とサイズ• 位置……［位置］特性は、フォームのサイズを変更したときに、コントロールのサイズを変更するかどうかを制御します。
［位置］特性は、［コントロールの位置付］ダイ
アログ内の［左辺割合］、［幅割合］、［上辺割合］、［高さ割合］の組み合わせになります。
この特性からズームして［コントロールの位置付］ダイアログを表示できます。
コントロールの位置特性が 0 の場合、フォームのサイズが実行時に変更されてもコントロールのサイズは変化しません。
［位置］特性が「0」より大きい場合、フォームのサイズが実行時に変更されたときに相対的にサイズが変化します。位置特性を持つコ
ントロールは、元のサイズより小さいサイズにはなりません。
• 左辺位置……コントロールの左上の x 座標を指定します。
• 上辺位置……コントロールの右上の y 座標を指定します。
• 幅……コントロールの幅を指定します。
• 高さ……コントロールの高さを指定します。

562

リファレンス
Magic eDeveloper V9 Plus

GUI 表示コントロール特性• コントロールレイヤ……コントロールがチョイスコントロールの子としてリンクされている場合、選択したコントロールのリンク先である親コントロールのチョイス階層を表示します。たとえば、3 つの選択肢が格納されたメニューを持つコンボボック
スがフォームレイアウトに配置されている場合、エディットコントロールを 3 番目の選択肢にリンクすると、この特性に番号 3 が表示されます。この特性は、常に無効になっており、フォームレイアウトでのみ変更できます。この特性は、チョイスコント
ロールにリンクされているコントロールにのみ有効です。

イメージコントロール特性モデル• モデル……継承が解除されている特性の継承をし直したり、フォームモデルのすべての特性の継承を解除することができます。

詳細• データ……データは、データ項目（値）または式として指定します。
• 項目……［データ］特性で指定されたデータ項目の名前を表示します。
• コントロール名……クラス「0」のフォーム内にあるコントロールに名前を付けると、
CtrlName 関数でそれらの名前を参照できるようになります。詳細については、第 8 章「関数」の「CtrlName 関数」を参照してください。
コントロールの名前は大文字と小文字が区別されます。［コントロール名］特性は 30桁に制限されます。後続空白は使用できません。フォームエディタ内のコントロールのコピー処理では、この特性はコピーされません。
• 型……選択したデータ項目または式の型。データ項目を設定した場合、この値は変更できません。式を設定した場合、この値は変更できます。
• デフォルイメージファイル名……表示するイメージファイルの名前を指定します。
• ドラッグ許可……同じアプリケーション間でのコントロールからコントロールへのデータのドラッグ処理や同一 PC 上の別のアプリケーションとの間のデータのドラッ
グ処理を可能にします。
このコントロールからコピーされたデータは、［ドラッグ開始］イベントによるハンドラで意図的に設定されるか、Magic エンジンにより自動的に設定されます。
• ドロップ許可……同じアプリケーション間でのコントロールからコントロールへのデータのドラッグ処理や同一 PC 上の別のアプリケーションとの間のデータのドロッ
プ処理を可能にします。
このコントロールへのデータのコピーは、［ドロップ開始］イベントによるハンドラ
で意図的に行われるか、Magic エンジンにより自動的に行われます。

入力• 必須入力……エンドユーザがコントロールに値を入力する必要があるかどうかを指定します。必須にするかどうかを表す理論値を返す式を使用できます。
• 修正許可……実行時にユーザがコントロール内の値を変更できるかどうかを指定します。
•

Yes……ユーザはコントロール内の値を変更できます。

•

No…… コントロールへのユーザアクセスは拒否されます。

• 選択プログラム……実行時にエンドユーザが［編集 / ズーム］を使用してプログラムを起動することができるかどうかを指定します。プログラム番号を直接入力するか、［プログラム一覧］にズームしてプログラムを選択します。
• 起動モード……選択プログラムの特性で定義されたプログラムを呼び出す時期を指定します。有効な値は以下のとおりです。
リファレンス
Magic eDeveloper V9 Plus563

第 9 章 - 表示フォーム•

A= 後置……呼び出した選択プログラムが終了したときに、カーソルが次の項目に移動するように指定します。

•

B= 前置……呼び出した選択プログラムが終了したときに、カーソルが呼び出した項目に戻るように指定します。（デフォルト）•

P= 自動……項目にカーソルが移動すると同時にプログラムが自動的に実行されるように指定します。これにより、ユーザは即座に値を選択できます。この場
合は、選択プログラムが終了した後、前置モードの場合と同様にカーソルは呼び出した項目に戻ります。

表示• 色……コントロールの色を指定します。この特性は、［スタイル］が「2= 平面」の場
合にのみ有効です。［基本色一覧］にズームして、色を選択できます。
• ヘルプ画面……コントロールと関連付けるヘルプ画面を指定します。この指定はオン
ラインフォームでのみ有効です。［ヘルプ一覧］にズームして、ヘルプ画面を選択できます。
• ツールチップ……コントロールと関連付けるツールチップを指定します。［ヘルプ一覧］にズームしてツールチップヘルプを選択できます。
• 自動ヘルプ……コントロールと関連付ける自動ヘルプを指定します。指定されたヘルプの内容は、この項目にカーソルがあるときに自動的にステータスバーに表示されます。
• 可視……コントロールをユーザに見えるようにするかどうかを指定します。可視にするかどうかを表す理論値を直す式を使用できます。
• 有効……コントロールを有効にするかどうかを指定します。有効にするかどうかを表す理論値を返す式を使用できます。
• スタイル……コントロールの外観を指定します。有効な値は、以下の通りです。
•

3= 凸立体•S= 凹立体（デフォルト）

•

2= 平面

• 境界……コントロールの境界のスタイルを指定します。スタイルが平面のときのみ有効です。有効な値は以下のとおりです。
•

T= 細線……細線でコントロールを囲みます。

•

H= 太線……太線でコントロールを囲みます。

•

N= なし……コントロールに境界線を表示しません。（デフォルト）• イメージスタイル……イメージをイメージコントロールに合わせる方法を指定します。有効な値は以下のとおりです。

564•

T= タイル……領域全体が埋まるまで、イメージを繰り返しコントロールにコピーします。

•

C= コピー……イメージをそのままコントロールにコピーします。コントロール
より大きいイメージはトリミングされます。イメージがコントロールより小さい場合、コントロールのカバーされていない部分に背景色が塗られます。

•

S= フィットスケール……イメージが、イメージコントロールの高さまたは幅に収まるようにサイズが調整されてコピーされます。この場合、イメージの縦横比は維持されます。イメージの縦横比とコントロールの縦横比が同じでない場
合、コントロールの一部がカバーされないままになることがあります。

•

F= フィルスケール……イメージが、イメージコントロールの領域をすべて埋めるようにコピーされます。イメージの縦横比は維持されます。イメージの縦横比とコントロールの縦横比が同じでない場合、イメージの一部だけがコント
ロールに表示されることがあります。

•

D= コントロールスケール……イメージの縦横比が調整され、イメージコント
ロールの領域をすべて埋めるようにコピーされます。したがって、元のイメー
ジは縦長または横長になります。イメージの縦横比とコントロールの縦横比が同じでない場合、縮小または拡大されたイメージは歪んでいます。
リファレンス
Magic eDeveloper V9 Plus

GUI 表示コントロール特性• イメージ効果……イメージコントロールのイメージに対する特殊なビデオ表示効果を指定します。コンボボックスから効果を選択できます。デフォルト値は［N= なし］です。

位置とサイズ• 位置……［位置］特性は、フォームのサイズを変更したときに、コントロールのサイズを変更するかどうかを制御します。
［位置］特性は、［コントロールの位置付］ダイ
アログ内の［左辺割合］、［幅割合］、［上辺割合］、［高さ割合］の組み合わせになります。
この特性からズームして［コントロールの位置付］ダイアログを表示できます。
コントロールの位置特性が 0 の場合、フォームのサイズが実行時に変更されてもコントロールのサイズは変化しません。
［位置］特性が「0」より大きい場合、フォームのサイズが実行時に変更されたときに相対的にサイズが変化します。位置特性を持つコ
ントロールは、元のサイズより小さいサイズにはなりません。
• 左辺位置……コントロールの左上の x 座標を指定します。
• 上辺位置……コントロールの右上の y 座標を指定します。
• 幅……コントロールの幅を指定します。
• 高さ……コントロールの高さを指定します。
• コントロールレイヤ……コントロールがチョイスコントロールの子としてリンクされている場合、選択したコントロールのリンク先である親コントロールのチョイス階層を表示します。たとえば、3 つの選択肢が格納されたメニューを持つコンボボック
スがフォームレイアウトに配置されている場合、エディットコントロールを 3 番目の選択肢にリンクすると、この特性に番号 3 が表示されます。この特性は、常に無効になっており、フォームレイアウトでのみ変更できます。この特性は、チョイスコント
ロールにリンクされているコントロールにのみ有効です。

テキストコントロール特性
詳細• テキスト……スタティックコントロールに表示するテキストを指定します。
• コントロール名……クラス「0」のフォーム内にあるコントロールに名前を付けると、
CtrlName 関数でそれらの名前を参照できるようになります。詳細については、第 8 章「関数」の「CtrlName 関数」を参照してください。
コントロールの名前は大文字と小文字が区別されます。［コントロール名］特性は 30桁に制限されます。後続空白は使用できません。フォームエディタ内のコントロールのコピー処理では、この特性はコピーされません。
• RTF の使用……リッチテキスト形式を有効にするかどうかを指定します。
• スタティックタイプ……スタティックコントロールのタイプを指定します。ここからズームして、［スタティックタイプ］ダイアログを表示できます。このダイアログ内の選択肢は、コンボボックスで表示されます。特性の内容は次のとおりです。
•

右上がり対角線……スタティックコントロールの右上角と左下角を結ぶ斜線を挿入します。

•

右下がり対角線……スタティックコントロールの左上角と右下角を結ぶ斜線を挿入します。

•

水平線……スタティックコントロールを横の線として定義します。

•

垂直線……スタティックコントロールを縦の線として定義します。

•

四角形……スタティックコントロールを四角形として定義します。

•

丸四角形……スタティックコントロールを角の丸い四角形として定義します。

• ドラッグ許可……同じアプリケーション間でのコントロールからコントロールへのデータのドラッグ処理や同一 PC 上の別のアプリケーションとの間のデータのドラッ
グ処理を可能にします。
リファレンス
Magic eDeveloper V9 Plus565

第 9 章 - 表示フォーム
このコントロールからコピーされたデータは、［ドラッグ開始］イベントによるハンドラで意図的に設定されるか、Magic エンジンにより自動的に設定されます。
• ドロップ許可……同じアプリケーション間でのコントロールからコントロールへのデータのドラッグ処理や同一 PC 上の別のアプリケーションとの間のデータのドロッ
プ処理を可能にします。
このコントロールへのデータのコピーは、［ドロップ開始］イベントによるハンドラ
で意図的に行われるか、Magic エンジンにより自動的に行われます。

入力• 複数行編集……エディットコントロールに複数行のテキストを含めることができるかどうかを指定します。
テキスト形式フォームで複数行編集コントロールを使用している場合、フォーム全体に収まるようにコントロールが拡大されます。このコントロールは、ページのサイズに合わせて拡大でき、複数のページにまたがることができます。ページ長を越えた複数行編集コントロールは、Magic のすべてのヘッダ制御およびフッタ制御を維持しな
がら次のページに続きます。
テーブル内にこのコントロールがある場合、テーブルのセルはエディットコントロー
ルのサイズに合わせて拡大されます。テーブルのタイトルは各ページに出力されます。そのほかのコントロールは、エディットコントロールの上または下に表示されます。

表示• フォント……コントロールに表示するテキストのフォントを指定します。指定されない場合、フォーム特性で定義されたフォントで表示されます。
• 色……コントロールの色を指定します。［基本色一覧］にズームして、色を選択できます。
• ヘルプ画面……コントロールと関連付けるヘルプ画面を指定します。この指定はオン
ラインフォームでのみ有効です。［ヘルプ一覧］にズームして、ヘルプ画面を選択できます。
• ツールチップ……コントロールと関連付けるツールチップを指定します。［ヘルプ一覧］にズームしてツールチップヘルプを選択できます。
• 可視……コントロールをユーザに見えるようにするかどうかを指定します。可視にするかどうかを表す理論値を直す式を使用できます。
• 有効……コントロールを有効にするかどうかを指定します。有効にするかどうかを表す理論値を返す式を使用できます。
• スタイル……コントロールの外観を指定します。有効な値は、以下の通りです。
•

3= 凸立体•S= 凹立体•2= 平面（デフォルト）• 境界……コントロールの境界のスタイルを指定します。スタイルが平面のときのみ有効です。有効な値は以下のとおりです。
•

T= 細線……細線でコントロールを囲みます。

•

H= 太線……太線でコントロールを囲みます。

•

N= なし……コントロールに境界線を表示しません。（デフォルト）• 水平整列……コントロール内の水平方向のテキストの配置を指定します。有効な値は以下のとおりです。

566•

L= 左寄せ•C= センタリング•

R= 右寄せリファレンス
Magic eDeveloper V9 Plus

GUI 表示コントロール特性• 垂直整列……コントロール内の垂直方向のテキストの配置を指定します。有効な値は以下のとおりです。
•

T= 上寄せ•C= センタリング•

B= 下寄せ• 線種……スタティックコントロールの線の外観を指定します。スタイルが平面のときのみ有効です。有効な値は以下のとおりです。
•

R= 実線

•

T= 点線

•

S= 破線

•

A= 一点鎖線•

D= 二点鎖線• 線幅……スタティックコントロールの線の幅を指定します。幅はフォームの寸法単位
により異なります。
• 立体線……グループコントロールにおいて表示される四角形の線を立体表示にするかどうかを指定します。（テキストでは無効です。）

位置とサイズ• 位置……［位置］特性は、フォームのサイズを変更したときに、コントロールのサイズを変更するかどうかを制御します。
［位置］特性は、［コントロールの位置付］ダイ
アログ内の［左辺割合］、［幅割合］、［上辺割合］、［高さ割合］の組み合わせになります。
この特性からズームして［コントロールの位置付］ダイアログを表示できます。
コントロールの位置特性が 0 の場合、フォームのサイズが実行時に変更されてもコントロールのサイズは変化しません。
［位置］特性が「0」より大きい場合、フォームのサイズが実行時に変更されたときに相対的にサイズが変化します。位置特性を持つコ
ントロールは、元のサイズより小さいサイズにはなりません。
• 左辺位置……コントロールの左上の x 座標を指定します。
• 上辺位置……コントロールの右上の y 座標を指定します。
• 幅……コントロールの幅を指定します。
• 高さ……コントロールの高さを指定します。
• コントロールレイヤ……コントロールがチョイスコントロールの子としてリンクされている場合、選択したコントロールのリンク先である親コントロールのチョイス階層を表示します。たとえば、3 つの選択肢が格納されたメニューを持つコンボボック
スがフォームレイアウトに配置されている場合、エディットコントロールを 3 番目の選択肢にリンクすると、この特性に番号 3 が表示されます。この特性は、常に無効になっており、フォームレイアウトでのみ変更できます。この特性は、チョイスコント
ロールにリンクされているコントロールにのみ有効です。

リストボックスコントロール特性モデル• モデル……継承が解除されている特性の継承をし直したり、フォームモデルのすべての特性の継承を解除することができます。

詳細• データ……データは、データ項目（値）または式として指定します。
• 項目……［データ］特性で指定されたデータ項目の名前を表示します。
リファレンス
Magic eDeveloper V9 Plus

567

第 9 章 - 表示フォーム• 選択項目リスト……コントロールから選択することで返される値の範囲を指定します。選択値は、カンマ（,）区切りで複数指定できます。
［選択表示リスト］特性が定義されていない場合は、この値で表示されます。
［選択表示リスト］特性が定義されている場合は、この値は表示されません。
［データ］への継承指定を行うことで、項目の［範囲］値を継承することができます。
• 表示項目リスト……コントロールに表示させる選択肢を指定します。表示のみで入力値にはなりません。選択値は、カンマ（,）区切りで複数指定できます。
この特性が指定されている場合は、［選択項目リスト］特性に同じ順番で選択値が指定されている必要があります。
例えば、［選択項目リスト］に「1,2,3」と指定されていて、［表示項目リスト］に、「赤, 青 , 緑」と指定されている場合。フォーム上の表示は、「赤 , 青 , 緑」になりますが、実際に入力される値は、「1,2,3」のどちらかになります。
［選択項目リスト］にショートカット指定（例 「&A」）がある場合、［表示項目リスト］を設定するとこの指定が無効になり、「&」は通常の文字と同じように扱われます。旧バージョンから移行して、［表示項目リスト］に選択肢を指定した場合は、［選択項目リスト］の「&」を削除してください。
• コントロール名……クラス「0」のフォーム内にあるコントロールに名前を付けると、
CtrlName 関数でそれらの名前を参照できるようになります。詳細については、第 8 章「関数」の「CtrlName 関数」を参照してください。
コントロールの名前は大文字と小文字が区別されます。［コントロール名］特性は 30桁に制限されます。後続空白は使用できません。フォームエディタ内のコントロールのコピー処理では、この特性はコピーされません。
• 型……選択したデータ項目または式の型。データ項目を設定した場合、この値は変更できません。式を設定した場合、この値は変更できます。
• ドラッグ許可……同じアプリケーション間でのコントロールからコントロールへのデータのドラッグ処理や同一 PC 上の別のアプリケーションとの間のデータのドラッ
グ処理を可能にします。
このコントロールからコピーされたデータは、［ドラッグ開始］イベントによるハンドラで意図的に設定されるか、Magic エンジンにより自動的に設定されます。
• ドロップ許可……同じアプリケーション間でのコントロールからコントロールへのデータのドラッグ処理や同一 PC 上の別のアプリケーションとの間のデータのドロッ
プ処理を可能にします。
このコントロールへのデータのコピーは、［ドロップ開始］イベントによるハンドラ
で意図的に行われるか、Magic エンジンにより自動的に行われます。
• ソーステーブル……コントロールと関連づけるテーブルの番号を指定します。［テーブル］一覧からテーブルを選択することができます。
• 表示項目……画面に表示されるテーブルのカラムを指定します。
［ソーステーブル］特性で指定されたテーブルのカラムを項目一覧から選択できます。
• リンク項目……実際に格納されるテーブルのカラムを指定します。
［ソーステーブル］
特性で指定されたテーブルのカラムを項目一覧から選択できます。
• インデックス……画面に表示される順序を決めるテーブルのインデックスを指定します。［ソーステーブル］特性で指定されたテーブルのインデックスをインデックスの一覧から選択できます。
• 範囲……画面に表示されるレコードの範囲を決めるための各項目の開始および終了範囲を指定します。
［ソーステーブル］特性で指定されたテーブルに対して、［項目範囲］テーブルから範囲を指定しますカラムを選択できます。指定されたテーブルに範囲に該当するレコードが存在しない場合、選択肢は何も表示されません。

入力• 必須入力……エンドユーザがコントロールに値を入力する必要があるかどうかを指定します。必須にするかどうかを表す理論値を返す式を使用できます。

568

リファレンス
Magic eDeveloper V9 Plus

GUI 表示コントロール特性• 修正許可……実行時にユーザがコントロール内の値を変更できるかどうかを指定します。
•

Yes……ユーザはコントロール内の値を変更できます。

•

No…… コントロールへのユーザアクセスは拒否されます。

• 選択プログラム……実行時にエンドユーザが［編集 / ズーム］を使用してプログラムを起動することができるかどうかを指定します。プログラム番号を直接入力するか、［プログラム一覧］にズームしてプログラムを選択します。
• 起動モード……選択プログラムの特性で定義されたプログラムを呼び出す時期を指定します。有効な値は以下のとおりです。
•

A= 後置……呼び出した選択プログラムが終了したときに、カーソルが次の項目に移動するように指定します。

•

B= 前置……呼び出した選択プログラムが終了したときに、カーソルが呼び出した項目に戻るように指定します。（デフォルト）•

P= 自動……項目にカーソルが移動すると同時にプログラムが自動的に実行されるように指定します。これにより、ユーザは即座に値を選択できます。この場
合は、選択プログラムが終了した後、前置モードの場合と同様にカーソルは呼び出した項目に戻ります。

• 選択モード……リストボックスコントロールが複数選択ををサポートするか否かを指定します。デフォルト値は、「S= シングル」です。
［選択項目リスト］特性が指定されており、［型］特性が文字型、メモ型、または、ベクトル型（ベクトルセルの型が 文字型、メモ型、論理型、または、数値型の場合）の
時 「M= マルチ」が有効になります。
ベクトルが［型］特性として指定されるとき、［選択項目リスト］特性で指定された
内容は、ベクトルの最初のセルに格納されます。［データ］特性は、指定された選択肢の総数を示します。「S= シングル」の場合、［データ］特性は、「1」になります。
•

S= シングル……［選択項目リスト］特性か［リンク項目］特性の選択肢の中から、ユーザが選択した値が 1 つだけ返されます。

•

M= マルチ……［選択項目リスト］特性か［リンク項目］特性の選択肢の中から、ユーザが選択した複数の値が返されます。文字型の場合は、カンマで区切られた値になります。値は選択された順ではなく、項目の定義された順に並びます。

「M= マルチ」と指定されたリストボックスにコントロールをリンクさせることはできません。他のコントロールにリンクされることはできます。
エンドユーザーが複数項目選択するには以下のような複合キーを使用します。
クリック

クリックした項目を選択状態にしたり解除したりします。

Ctrl+ クリック

他の選択項目に影響しないでクリックされた項目を選択したり解除
したりします。

Shift+ クリック

最初に選択された項目から連続してアイテムを選択します。

Shift+ ↑クリックした項目より上の項目をすべて選択します。

Shift+ ↓クリックした項目より下の項目をすべて選択します。

↑

選択項目を全て解除して、現在選択されている項目より上を選択します。

↓

選択項目を全て解除して、現在選択されている項目より下を選択します。

• 照会モード時修正許可……タスクが照会モードのときにも、チョイスコントロールを切り替えることができます。

リファレンス
Magic eDeveloper V9 Plus569

第 9 章 - 表示フォーム表示• フォント……コントロールに表示するテキストのフォントを指定します。指定されない場合、フォーム特性で定義されたフォントで表示されます。
• 色……コントロールの色を指定します。通常は［スタイル］特性が、「2= 平面」の場
合 の み 有 効 で す が、MAGIC.INI ファイルの［MAGIC_SPECIALS］セクションで「Special3DStyle=Y」と設定することで他のスタイルでも有効になります。
［基本色一覧］にズームして、色を選択できます。
• ヘルプ画面……コントロールと関連付けるヘルプ画面を指定します。この指定はオン
ラインフォームでのみ有効です。［ヘルプ一覧］にズームして、ヘルプ画面を選択できます。
• ツールチップ……コントロールと関連付けるツールチップを指定します。［ヘルプ一覧］にズームしてツールチップヘルプを選択できます。
• 自動ヘルプ……コントロールと関連付ける自動ヘルプを指定します。指定されたヘルプの内容は、この項目にカーソルがあるときに自動的にステータスバーに表示されます。
• 可視……コントロールをユーザに見えるようにするかどうかを指定します。可視にするかどうかを表す理論値を直す式を使用できます。
• 有効……コントロールを有効にするかどうかを指定します。有効にするかどうかを表す理論値を返す式を使用できます。
• スタイル……コントロールの外観を指定します。有効な値は、以下の通りです。
•

3= 凸立体•S= 凹立体（デフォルト）

•

2= 平面

• 境界……コントロールの境界のスタイルを指定します。スタイルが平面のときのみ有効です。有効な値は以下のとおりです。
•

T= 細線……細線でコントロールを囲みます。（デフォルト）•H= 太線……太線でコントロールを囲みます。

•

N= なし……コントロールに境界線を表示しません。

• 水平整列……コントロール内の水平方向のテキストの配置を指定します。有効な値は以下のとおりです。
•

L= 左寄せ•C= センタリング•

R= 右寄せ• 列数……コントロールに表示する列数を指定します。

位置とサイズ• 位置……［位置］特性は、フォームのサイズを変更したときに、コントロールのサイズを変更するかどうかを制御します。
［位置］特性は、［コントロールの位置付］ダイ
アログ内の［左辺割合］、［幅割合］、［上辺割合］、［高さ割合］の組み合わせになります。
この特性からズームして［コントロールの位置付］ダイアログを表示できます。
コントロールの位置特性が 0 の場合、フォームのサイズが実行時に変更されてもコントロールのサイズは変化しません。
［位置］特性が「0」より大きい場合、フォームのサイズが実行時に変更されたときに相対的にサイズが変化します。位置特性を持つコ
ントロールは、元のサイズより小さいサイズにはなりません。
• 左辺位置……コントロールの左上の x 座標を指定します。
• 上辺位置……コントロールの右上の y 座標を指定します。
• 幅……コントロールの幅を指定します。APG で作成した場合と、フォームエディタで貼り付けた場合で、デフォルトのサイズが異なります。
• 高さ……コントロールの高さを指定します。

570

リファレンス
Magic eDeveloper V9 Plus

GUI 表示コントロール特性• コントロールレイヤ……コントロールがチョイスコントロールの子としてリンクされている場合、選択したコントロールのリンク先である親コントロールのチョイス階層を表示します。たとえば、3 つの選択肢が格納されたメニューを持つコンボボック
スがフォームレイアウトに配置されている場合、エディットコントロールを 3 番目の選択肢にリンクすると、この特性に番号 3 が表示されます。この特性は、常に無効になっており、フォームレイアウトでのみ変更できます。この特性は、チョイスコント
ロールにリンクされているコントロールにのみ有効です。

ラインコントロール特性モデル• モデル……継承が解除されている特性の継承をし直したり、フォームモデルのすべての特性の継承を解除することができます。

詳細• コントロール名……クラス「0」のフォーム内にあるコントロールに名前を付けると、
CtrlName 関数でそれらの名前を参照できるようになります。詳細については、第 8 章「関数」の「CtrlName 関数」を参照してください。
コントロールの名前は大文字と小文字が区別されます。［コントロール名］特性は 30桁に制限されます。後続空白は使用できません。
• ドラッグ許可……同じアプリケーション間でのコントロールからコントロールへのデータのドラッグ処理や同一 PC 上の別のアプリケーションとの間のデータのドラッ
グ処理を可能にします。
このコントロールからコピーされたデータは、［ドラッグ開始］イベントによるハンドラで意図的に設定されるか、Magic エンジンにより自動的に設定されます。
• ドロップ許可……同じアプリケーション間でのコントロールからコントロールへのデータのドラッグ処理や同一 PC 上の別のアプリケーションとの間のデータのドロッ
プ処理を可能にします。
このコントロールへのデータのコピーは、［ドロップ開始］イベントによるハンドラ
で意図的に行われるか、Magic エンジンにより自動的に行われます。

表示• 色……コントロールの色を指定します。この特性は、［スタイル］が「2= 平面」の場
合にのみ有効です。［基本色一覧］にズームして、色を選択できます。
• ツールチップ……コントロールと関連付けるツールチップを指定します。［ヘルプ一覧］にズームしてツールチップヘルプを選択できます。
• 可視……コントロールをユーザに見えるようにするかどうかを指定します。可視にするかどうかを表す理論値を直す式を使用できます。
• スタイル……コントロールの外観を指定します。有効な値は、以下の通りです。
•

3= 凸立体（デフォルト）•

S= 凹立体•2= 平面• 線種……スタティックコントロールの線の外観を指定します。スタイルが平面のときのみ有効です。有効な値は以下のとおりです。
•

R= 実線

•

T= 点線

•

S= 破線

•

A= 一点鎖線•
リファレンス
Magic eDeveloper V9 Plus

D= 二点鎖線571

第 9 章 - 表示フォーム• 線幅……スタティックコントロールの線の幅を指定します。幅はフォームの寸法単位
により異なります。

位置とサイズ• 位置……［位置］特性は、フォームのサイズを変更したときに、コントロールのサイズを変更するかどうかを制御します。
［位置］特性は、［コントロールの位置付］ダイ
アログ内の［左辺割合］、［幅割合］、［上辺割合］、［高さ割合］の組み合わせになります。
この特性からズームして［コントロールの位置付］ダイアログを表示できます。
コントロールの位置特性が「0」の場合、フォームのサイズが実行時に変更されてもコントロールのサイズは変化しません。
［位置］特性が「0」より大きい場合、フォー
ムのサイズが実行時に変更されたときに相対的にサイズが変化します。位置特性を持
つコントロールは、元のサイズより小さいサイズにはなりません。
• X1……選択したラインの左側の点の x 座標
• Y1……選択したラインの左側の点の y 座標
• X2……選択したラインの右側の点の x 座標
• Y2……選択したラインの右側の点の y 座標
Y1,Y2 のいずれか、または両方のパラメータを式で設定したい場合、X1,X2,Y1,Y2,
すべてのパラメータを、式で設定してください。
Y1,Y2 のみ式を設定した場合、式の値が Y1>Y2 になると、ラインの傾きが左上がり
から右上がりに変わります。
また、Y1 のみ式を入れていると、Y1>Y2 になると、Y2 にも Y1 の値が入って、本来左上がりになるところが、横一直線になります。
回避方法として、Y1,Y2 のいずれか、あるいは両方が可変の場合、必ずすべての座標に式で固定値を設定しておく必要があります。
• コントロールレイヤ……コントロールがチョイスコントロールの子としてリンクされている場合、選択したコントロールのリンク先である親コントロールのチョイス階層を表示します。たとえば、3 つの選択肢が格納されたメニューを持つコンボボック
スがフォームレイアウトに配置されている場合、エディットコントロールを 3 番目の選択肢にリンクすると、この特性に番号 3 が表示されます。この特性は、常に無効になっており、フォームレイアウトでのみ変更できます。この特性は、チョイスコント
ロールにリンクされているコントロールにのみ有効です。

OLE コントロール特性モデル• モデル……継承が解除されている特性の継承をし直したり、フォームモデルのすべての特性の継承を解除することができます。

詳細• データ……データは、データ項目（値）または式として指定します。ただし、OLE コ
ントロールの場合、データを BLOB と定義する必要があります。
• 項目……［データ］特性で指定されたデータ項目の名前を表示します。
• コントロール名……クラス「0」のフォーム内にあるコントロールに名前を付けると、
CtrlName 関数でそれらの名前を参照できるようになります。詳細については、第 8 章「関数」の「CtrlName 関数」を参照してください。
コントロールの名前は大文字と小文字が区別されます。［コントロール名］特性は 30桁に制限されます。後続空白は使用できません。

572

リファレンス
Magic eDeveloper V9 Plus

GUI 表示コントロール特性• 型……選択したデータ項目または式の型。データ項目を設定した場合、この値は変更できません。式を設定した場合、この値は変更できます。

入力• 必須入力……エンドユーザがコントロールに値を入力する必要があるかどうかを指定します。必須にするかどうかを表す理論値を返す式を使用できます。
• 修正許可……実行時にユーザがコントロール内の値を変更できるかどうかを指定します。
•

Yes……ユーザはコントロール内の値を変更できます。

•

No…… コントロールへのユーザアクセスは拒否されます。

表示• フォント……コントロールに表示するテキストのフォントを指定します。指定されない場合、フォーム特性で定義されたフォントで表示されます。
• 色……コントロールの色を指定します。［基本色一覧］にズームして、色を選択できます。
• ヘルプ画面……コントロールと関連付けるヘルプ画面を指定します。この指定はオン
ラインフォームでのみ有効です。［ヘルプ一覧］にズームして、ヘルプ画面を選択できます。
• ツールチップ……コントロールと関連付けるツールチップを指定します。［ヘルプ一覧］にズームしてツールチップヘルプを選択できます。
• 自動ヘルプ……コントロールと関連付ける自動ヘルプを指定します。指定されたヘルプの内容は、この項目にカーソルがあるときに自動的にステータスバーに表示されます。
• 可視……コントロールをユーザに見えるようにするかどうかを指定します。可視にするかどうかを表す理論値を直す式を使用できます。
• 有効……コントロールを有効にするかどうかを指定します。有効にするかどうかを表す理論値を返す式を使用できます。

位置とサイズ• 位置……［位置］特性は、フォームのサイズを変更したときに、コントロールのサイズを変更するかどうかを制御します。
［位置］特性は、［コントロールの位置付］ダイ
アログ内の［左辺割合］、［幅割合］、［上辺割合］、［高さ割合］の組み合わせになります。
この特性からズームして［コントロールの位置付］ダイアログを表示できます。
コントロールの位置特性が「0」の場合、フォームのサイズが実行時に変更されてもコントロールのサイズは変化しません。
［位置］特性が「0」より大きい場合、フォー
ムのサイズが実行時に変更されたときに相対的にサイズが変化します。位置特性を持
つコントロールは、元のサイズより小さいサイズにはなりません。
• 左辺位置……コントロールの左上の x 座標を指定します。
• 上辺位置……コントロールの右上の y 座標を指定します。
• 幅……コントロールの幅を指定します。
• 高さ……コントロールの高さを指定します。
• コントロールレイヤ……コントロールがチョイスコントロールの子としてリンクされている場合、選択したコントロールのリンク先である親コントロールのチョイス階層を表示します。たとえば、３つの選択肢が格納されたメニューを持つコンボボック
スがフォームレイアウトに配置されている場合、エディットコントロールを３番目の選択肢にリンクすると、この特性に番号「3」が表示されます。この特性は、常に無効になっており、フォームレイアウトでのみ変更できます。この特性は、チョイスコ
ントロールにリンクされているコントロールにのみ有効です。

リファレンス
Magic eDeveloper V9 Plus573

第 9 章 - 表示フォーム

OLE• OLE クラス……OLE オブジェクトのクラスを指定します。この特性を空のままにして、実行時にエンドユーザが使用可能なオブジェクトタイプを［オブジェクトの挿入］ダイアログから選択できるようにできます。
開発時に OLE オブジェクトのタイプを指定するには、この特性からズームして、［Active-X クラス］ダイアログまたは［Select Object Type］ダイアログを開きます。
これらのダイアログに、使用可能なクラスが表示されます。ダイアログの結果欄に表示される説明を参考にしてクラスを選択します。エンドユーザが［編集／オブジェク
トの挿入］を選択すると、開発者が指定したクラスを処理するアプリケーションが開きます。

図 9-3 ［Active-X クラス］ダイアログ

指定のオブジェクトクラスに対応した使用可能なアプリケーションをエンドユーザが持っていない場合、Windows のエラーメッセージが表示されます。
• OLE 表示形式 :I= アイコン（デフォルト）……OLE の表示形式を指定します。
•

I= アイコン……OLE オブジェクトをインストールすると、コンテナに格納されている情報のタイプを示すアイコンが表示されます。

•

C= 内容……OLE オブジェクトをインストールすると、ファイルの内容を示すス
ナップショットが表示されます。

•

A= 任意……オブジェクトをアイコンとして表示するか、またはオブジェクトの内容をスナップショットとして表示するかを、エンドユーザが選択できるようにします。この選択を行うには、［オブジェクトの挿入］ダイアログの［アイコンで表示］チェックボックスをオンにします。

• OLE 形式 :A= 任意（デフォルト）……OLE の格納形式を指定します。
•

L= リンク……OLE オブジェクトをリンクオブジェクトとして保持します。

•

E= 埋め込み……OLE オブジェクトを埋め込みオブジェクトとして保持します。

•

A= 任意……OLE オブジェクトをリンクオブジェクトと埋め込みオブジェクトのどちらで保持するかを、エンドユーザが選択できるようにします。この選択を行うには、［オブジェクトの挿入］ダイアログの［リンク］チェックボックスをオンにします。

• リンク自動更新 :Yes（デフォルト）……リンクされたドキュメントのコンテンツビッ
トマップを自動的に更新するかどうかを指定します。このオプションは、［OLE 表示形式］を［内容］、［アイコン］、または［任意］に設定され、［OLE 形式］を［リンク］または［任意］に設定した場合に有効です 。

574•

Yes……コンテンツイメージがフォームに表示される前に、最新のものであることが確認されます。

•

No……最後に保存されたコンテンツのイメージを表示します。
リファレンス
Magic eDeveloper V9 Plus

GUI 表示コントロール特性• OLE フレームタイプ使用 :Yes（デフォルト）……「Yes」に設定すると、オブジェク
トの保存タイプに応じて、オブジェクトの周囲に異なるフレームスタイルを表示します。

プッシュボタンコントロール特性モデル• モデル……継承が解除されている特性の継承をし直したり、フォームモデルのすべての特性の継承を解除することができます。

詳細• データ……データは、データ項目（値）または式として指定します。
• 項目……［データ］特性で指定されたデータ項目の名前を表示します。
• コントロール名……クラス「0」のフォーム内にあるコントロールに名前を付けると、
CtrlName 関数でそれらの名前を参照できるようになります。詳細については、第 8 章「関数」の「CtrlName 関数」を参照してください。
コントロールの名前は大文字と小文字が区別されます。［コントロール名］特性は 30桁に制限されます。後続空白は使用できません。
• 書式……プッシュボタンコントロールの書式を指定します。ここで変更できるのは、
現在のフォーム表示の形式だけです。初期設定値は、項目のカラムテーブルの設定から継承された書式になります。式テーブルにズームして、コントロールの書式を表す
式を入力することもできます。
• 型……選択したデータ項目または式の型。データ項目を設定した場合、この値は変更できません。式を設定した場合、この値は変更できます。
• ドラッグ許可……同じアプリケーション間でのコントロールからコントロールへのデータのドラッグ処理や同一 PC 上の別のアプリケーションとの間のデータのドラッ
グ処理を可能にします。
このコントロールからコピーされたデータは、［ドラッグ開始］イベントによるハンドラで意図的に設定されるか、Magic エンジンにより自動的に設定されます。
• ドロップ許可……同じアプリケーション間でのコントロールからコントロールへのデータのドラッグ処理や同一 PC 上の別のアプリケーションとの間のデータのドロッ
プ処理を可能にします。
このコントロールへのデータのコピーは、［ドロップ開始］イベントによるハンドラ
で意図的に行われるか、Magic エンジンにより自動的に行われます。
• ボタンスタイル•

P= プッシュボタン……［ボタンスタイル］特性を［プッシュボタン］に設定す
ると、プッシュボタンコントロールにデフォルトの Windows プッシュボタンデ
ザインが使用されます。
ボタンスタイルがプッシュボタンのときに、データ項目を定義するための条件は次のように制限されています。

•• 名前の最大文字数は 30 文字です。
• 先頭と末尾に空白を使用できます。
• 名前には空白を使用できます。
• 数値および特殊文字を使用できます。
• 言語テーブルで定義した特定言語の文字を使用できます。
I= イメージボタン……［ボタンスタイル］特性を［イメージボタン］に設定す
ると、［データ］特性または［デフォルトイメージファイル名］特性において指定されたイメージファイルが使用されます。このイメージファイルは、以下の４つの状態を表す同じサイズのイメージを横に合成したものでなければなりません。
•

リファレンス
Magic eDeveloper V9 Plus

ボタンにフォーカスがある状態

575

第 9 章 - 表示フォーム•• ボタンをクリックした状態• ボタンが無効な状態• デフォルトH= ハイパースタイル……［ボタンスタイル］特性を［ハイパースタイル］に設定すると、Magic イベントはプッシュボタンコントロールにリンクされます。この設定にすると、プッシュボタンは 2 本の下線付きテキストとして表示されます。
ボタンスタイルがハイパーテキストのときに、データ項目を定義するための条
件は次のように制限されています。

•• 名前の最大文字数は 30 文字です。
• 先頭と末尾に空白を使用できます。
• 名前には空白を使用できます。
• 数値および特殊文字を使用できます。
• 言語テーブルで定義した特定言語の文字を使用できます。
T= イメージ上のテキスト……実行時に［データ］特性で指定されたイメージ
ファイル名と、［書式］特性で指定されたテキストを組み合わせてボタンを表示します。このオプションを使用することで以下のような利点があります。
•

イメージファイルを変更しないでテキスト表示のみを変更することができます。
• ［フォント］特性や［色］特性によってテキスト表示のフォントと色を変更できます。
指定するイメージの構成は、イメージボタンと同じように４種類の同じサイズのイメージを水平に並べたものにする必要があります。
開発時は、［デフォルトイメージファイル名］で指定されたファイル名でイメージ表示されます。
• 実行イベント……プッシュボタンコントロールに適用されます。また、エンドユーザ
がボタンを選択したときに Magic に送られるアクションを指定します。
［アクション］
一覧にズームしてアクションを選択します。
• デフォルトイメージファイル名……［ボタンスタイル］特性が［イメージボタン］のときに使用します。プッシュボタンとして表示するビットマップファイル名を指定します。

入力• 修正許可……実行時にユーザがコントロール内の値を変更できるかどうかを指定します。
•

Yes……ユーザはコントロール内の値を変更できます。

•

No…… コントロールへのユーザアクセスは拒否されます。

• 選択プログラム……実行時にエンドユーザが［編集 / ズーム］を使用してプログラムを起動することができるかどうかを指定します。プログラム番号を直接入力するか、［プログラム一覧］にズームしてプログラムを選択します。
• 起動モード……選択プログラムの特性で定義されたプログラムを呼び出す時期を指定します。有効な値は以下のとおりです。
•

A= 後置……呼び出した選択プログラムが終了したときに、カーソルが次の項目に移動するように指定します。

•

B= 前置……呼び出した選択プログラムが終了したときに、カーソルが呼び出した項目に戻るように指定します。（デフォルト）•

P= 自動……項目にカーソルが移動すると同時にプログラムが自動的に実行されるように指定します。これにより、ユーザは即座に値を選択できます。この場
合は、選択プログラムが終了した後、前置モードの場合と同様にカーソルは呼び出した項目に戻ります。

• クリックでパーク…… プッシュボタンをクリックするとそのコントロールにパークするかどうかを定義します。項目が定義されたプッシュボタンで有効です。
•

576

Yes …… プッシュボタンをクリックすると、該当する項目が定義された場所ま
リファレンス
Magic eDeveloper V9 Plus

GUI 表示コントロール特性
でフローが実行され、フォーカスがプッシュボタンに移動します。フォーカスが移動した後にプッシュボタンに定義されたイベントが発行されます。
（デフォ
ルト）
•

No ……フロー処理は実行されず、フォーカスも移動しません。

表示• フォント……コントロールに表示するテキストのフォントを指定します。指定されない場合、フォーム特性で定義されたフォントで表示されます。
• ヘルプ画面……コントロールと関連付けるヘルプ画面を指定します。この指定はオン
ラインフォームでのみ有効です。［ヘルプ一覧］にズームして、ヘルプ画面を選択できます。
• ツールチップ……コントロールと関連付けるツールチップを指定します。［ヘルプ一覧］にズームしてツールチップヘルプを選択できます。
• 自動ヘルプ……コントロールと関連付ける自動ヘルプを指定します。指定されたヘルプの内容は、この項目にカーソルがあるときに自動的にステータスバーに表示されます。
• 可視……コントロールをユーザに見えるようにするかどうかを指定します。可視にするかどうかを表す理論値を直す式を使用できます。
• 有効……コントロールを有効にするかどうかを指定します。有効にするかどうかを表す理論値を返す式を使用できます。

位置とサイズ• 位置……［位置］特性は、フォームのサイズを変更したときに、コントロールのサイズを変更するかどうかを制御します。
［位置］特性は、［コントロールの位置付］ダイ
アログ内の［左辺割合］、［幅割合］、［上辺割合］、［高さ割合］の組み合わせになります。
この特性からズームして［コントロールの位置付］ダイアログを表示できます。
コントロールの位置特性が 0 の場合、フォームのサイズが実行時に変更されてもコントロールのサイズは変化しません。
［位置］特性が「0」より大きい場合、フォームのサイズが実行時に変更されたときに相対的にサイズが変化します。位置特性を持つコ
ントロールは、元のサイズより小さいサイズにはなりません。
• 左辺位置……コントロールの左上の x 座標を指定します。
• 上辺位置……コントロールの右上の y 座標を指定します。
• 幅……コントロールの幅を指定します。
• 高さ……コントロールの高さを指定します。
• コントロールレイヤ……コントロールがチョイスコントロールの子としてリンクされている場合、選択したコントロールのリンク先である親コントロールのチョイス階層を表示します。たとえば、３つの選択肢が格納されたメニューを持つコンボボック
スがフォームレイアウトに配置されている場合、エディットコントロールを３番目の選択肢にリンクすると、この特性に番号「3」が表示されます。この特性は、常に無効になっており、フォームレイアウトでのみ変更できます。この特性は、チョイスコ
ントロールにリンクされているコントロールにのみ有効です。

コンボボックスコントロ−ル特性
モデル• モデル……継承が解除されている特性の継承をし直したり、フォームモデルのすべての特性の継承を解除することができます。

リファレンス
Magic eDeveloper V9 Plus577

第 9 章 - 表示フォーム

詳細• データ……データは、データ項目（値）または式として指定します。
• 項目……［データ］特性で指定されたデータ項目の名前を表示します。
• 選択項目リスト……コントロールから選択することで返される値の範囲を指定します。選択値は、カンマ（,）区切りで複数指定できます。
［選択表示リスト］特性が定義されていない場合は、この値で表示されます。
［選択表示リスト］特性が定義されている場合は、この値は表示されません。
［データ］への継承指定を行うことで、項目の［範囲］値を継承することができます。
• 表示項目リスト……コントロールに表示させる選択肢を指定します。表示のみで入力値にはなりません。選択値は、カンマ（,）区切りで複数指定できます。
この特性が指定されている場合は、［選択項目リスト］特性に同じ順番で選択値が指定されている必要があります。
例えば、［選択項目リスト］に「1,2,3」と指定されていて、［表示項目リスト］に、「赤, 青 , 緑」と指定されている場合。フォーム上の表示は、「赤 , 青 , 緑」になりますが、実際に入力される値は、「1,2,3」のどちらかになります。
［選択項目リスト］にショートカット指定（例 「&A」）がある場合、［表示項目リスト］を設定するとこの指定が無効になり、「&」は通常の文字と同じように扱われます。旧バージョンから移行して、［表示項目リスト］に選択肢を指定した場合は、［選択項目リスト］の「&」を削除してください。
• コントロール名……クラス「0」のフォーム内にあるコントロールに名前を付けると、
CtrlName 関数でそれらの名前を参照できるようになります。詳細については、第 8 章「関数」の「CtrlName 関数」を参照してください。
コントロールの名前は大文字と小文字が区別されます。［コントロール名］特性は 30桁に制限されます。後続空白は使用できません。
• 型……選択したデータ項目または式の型。データ項目を設定した場合、この値は変更できません。式を設定した場合、この値は変更できます。
• ドラッグ許可……同じアプリケーション間でのコントロールからコントロールへのデータのドラッグ処理や同一 PC 上の別のアプリケーションとの間のデータのドラッ
グ処理を可能にします。
このコントロールからコピーされたデータは、［ドラッグ開始］イベントによるハンドラで意図的に設定されるか、Magic エンジンにより自動的に設定されます。
• ドロップ許可……同じアプリケーション間でのコントロールからコントロールへのデータのドラッグ処理や同一 PC 上の別のアプリケーションとの間のデータのドロッ
プ処理を可能にします。
このコントロールへのデータのコピーは、［ドロップ開始］イベントによるハンドラ
で意図的に行われるか、Magic エンジンにより自動的に行われます。
• ソーステーブル……コントロールと関連づけるテーブルの番号を指定します。［テーブル］一覧からテーブルを選択することができます。
• 表示項目……画面に表示されるテーブルのカラムを指定します。
［ソーステーブル］特性で指定されたテーブルのカラムを項目一覧から選択できます。
• リンク項目……実際に格納されるテーブルのカラムを指定します。
［ソーステーブル］
特性で指定されたテーブルのカラムを項目一覧から選択できます。
• インデックス……画面に表示される順序を決めるテーブルのインデックスを指定します。［ソーステーブル］特性で指定されたテーブルのインデックスをインデックスの一覧から選択できます。
• 範囲……画面に表示されるレコードの範囲を決めるための各項目の開始および終了範囲を指定します。
［ソーステーブル］特性で指定されたテーブルに対して、［項目範囲］テーブルから範囲を指定しますカラムを選択できます。指定されたテーブルに範囲に該当するレコードが存在しない場合、選択肢は何も表示されません。

578

リファレンス
Magic eDeveloper V9 Plus

GUI 表示コントロール特性

入力• 修正許可……実行時にユーザがコントロール内の値を変更できるかどうかを指定します。
•

Yes……ユーザはコントロール内の値を変更できます。

•

No…… コントロールへのユーザアクセスは拒否されます。

• 選択プログラム……実行時にエンドユーザが［編集 / ズーム］を使用してプログラムを起動することができるかどうかを指定します。プログラム番号を直接入力するか、［プログラム一覧］にズームしてプログラムを選択します。
• 起動モード……選択プログラムの特性で定義されたプログラムを呼び出す時期を指定します。有効な値は以下のとおりです。
•

A= 後置……呼び出した選択プログラムが終了したときに、カーソルが次の項目に移動するように指定します。

•

B= 前置……呼び出した選択プログラムが終了したときに、カーソルが呼び出した項目に戻るように指定します。（デフォルト）•

P= 自動……項目にカーソルが移動すると同時にプログラムが自動的に実行されるように指定します。これにより、ユーザは即座に値を選択できます。この場
合は、選択プログラムが終了した後、前置モードの場合と同様にカーソルは呼び出した項目に戻ります。

• 照会モード時修正許可……タスクが照会モードのときにも、チョイスコントロールを切り替えることができます。

表示• フォント……コントロールに表示するテキストのフォントを指定します。指定されない場合、フォーム特性で定義されたフォントで表示されます。
• 色……コントロールの色を指定します。通常は［スタイル］特性が、「2= 平面」の場
合 の み 有 効 で す が、MAGIC.INI ファイルの［MAGIC_SPECIALS］セクションで「Special3DStyle=Y」と設定することで他のスタイルでも有効になります。［基本色一覧］にズームして、色を選択できます。
• ヘルプ画面……コントロールと関連付けるヘルプ画面を指定します。この指定はオン
ラインフォームでのみ有効です。［ヘルプ一覧］にズームして、ヘルプ画面を選択できます。
• ツールチップ……コントロールと関連付けるツールチップを指定します。［ヘルプ一覧］にズームしてツールチップヘルプを選択できます。
• 自動ヘルプ……コントロールと関連付ける自動ヘルプを指定します。指定されたヘルプの内容は、この項目にカーソルがあるときに自動的にステータスバーに表示されます。
• 可視……コントロールをユーザに見えるようにするかどうかを指定します。可視にするかどうかを表す理論値を直す式を使用できます。
• 有効……コントロールを有効にするかどうかを指定します。有効にするかどうかを表す理論値を返す式を使用できます。
• スタイル……コントロールの外観を指定します。有効な値は、以下の通りです。
•

3= 凸立体•S= 凹立体（デフォルト）

•

2= 平面

• 境界……コントロールの境界のスタイルを指定します。スタイルが平面のときのみ有効です。有効な値は以下のとおりです。
•

T= 細線……細線でコントロールを囲みます。

•

H= 太線……太線でコントロールを囲みます。

•

N= なし……コントロールに境界線を表示しません。（デフォルト）

リファレンス
Magic eDeveloper V9 Plus579

第 9 章 - 表示フォーム• 水平整列……コントロール内の水平方向のテキストの配置を指定します。有効な値は以下のとおりです。
•

L= 左寄せ•C= センタリング•

R= 右寄せ• 列数……コントロールに表示する列数を指定します。
• 表示行数……コンボボックスコントロールにアクセスしたときに表示される行数を指定します。

位置とサイズ• 位置……［位置］特性は、フォームのサイズを変更したときに、コントロールのサイズを変更するかどうかを制御します。
［位置］特性は、［コントロールの位置付］ダイ
アログ内の［左辺割合］、［幅割合］、［上辺割合］、［高さ割合］の組み合わせになります。
この特性からズームして［コントロールの位置付］ダイアログを表示できます。
コントロールの位置特性が 0 の場合、フォームのサイズが実行時に変更されてもコントロールのサイズは変化しません。
［位置］特性が「0」より大きい場合、フォームのサイズが実行時に変更されたときに相対的にサイズが変化します。位置特性を持つコ
ントロールは、元のサイズより小さいサイズにはなりません。
• 左辺位置……コントロールの左上の x 座標を指定します。
• 上辺位置……コントロールの右上の y 座標を指定します。
• 幅……コントロールの幅を指定します。
• 高さ……コントロールの高さを指定します。
• コントロールレイヤ……コントロールがチョイスコントロールの子としてリンクされている場合、選択したコントロールのリンク先である親コントロールのチョイス階層を表示します。たとえば、３つの選択肢が格納されたメニューを持つコンボボック
スがフォームレイアウトに配置されている場合、エディットコントロールを３番目の選択肢にリンクすると、この特性に番号「3」が表示されます。この特性は、常に無効になっており、フォームレイアウトでのみ変更できます。この特性は、チョイスコ
ントロールにリンクされているコントロールにのみ有効です。

スライダコントロール特性モデル• モデル……継承が解除されている特性の継承をし直したり、フォームモデルのすべての特性の継承を解除することができます。

詳細• データ……データは、データ項目（値）または式として指定します。
• 項目……［データ］特性で指定されたデータ項目の名前を表示します。
• コントロール名……クラス「0」のフォーム内にあるコントロールに名前を付けると、
CtrlName 関数でそれらの名前を参照できるようになります。詳細については、第 8 章「関数」の「CtrlName 関数」を参照してください。
コントロールの名前は大文字と小文字が区別されます。［コントロール名］特性は 30桁に制限されます。後続空白は使用できません。
• 型……選択したデータ項目または式の型。データ項目を設定した場合、この値は変更できません。式を設定した場合、この値は変更できます。
• 範囲……スライダコントロールのスライダの値の範囲を指定します。

580

リファレンス
Magic eDeveloper V9 Plus

GUI 表示コントロール特性

入力• 必須入力……エンドユーザがコントロールに値を入力する必要があるかどうかを指定します。必須にするかどうかを表す理論値を返す式を使用できます。
• 修正許可……実行時にユーザがコントロール内の値を変更できるかどうかを指定します。
•

Yes……ユーザはコントロール内の値を変更できます。

•

No…… コントロールへのユーザアクセスは拒否されます。

• 選択プログラム……実行時にエンドユーザが［編集 / ズーム］を使用してプログラムを起動することができるかどうかを指定します。プログラム番号を直接入力するか、［プログラム一覧］にズームしてプログラムを選択します。
• 起動モード……選択プログラムの特性で定義されたプログラムを呼び出す時期を指定します。有効な値は以下のとおりです。
•

A= 後置……呼び出した選択プログラムが終了したときに、カーソルが次の項目に移動するように指定します。

•

B= 前置……呼び出した選択プログラムが終了したときに、カーソルが呼び出した項目に戻るように指定します。
（デフォルト）•P= 自動……項目にカーソルが移動すると同時にプログラムが自動的に実行されるように指定します。これにより、ユーザは即座に値を選択できます。この場
合は、選択プログラムが終了した後、前置モードの場合と同様にカーソルは呼び出した項目に戻ります。

表示• ヘルプ画面……コントロールと関連付けるヘルプ画面を指定します。この指定はオン
ラインフォームでのみ有効です。［ヘルプ一覧］にズームして、ヘルプ画面を選択できます。
• ツールチップ……コントロールと関連付けるツールチップを指定します。［ヘルプ一覧］にズームしてツールチップヘルプを選択できます。
• 自動ヘルプ……コントロールと関連付ける自動ヘルプを指定します。指定されたヘルプの内容は、この項目にカーソルがあるときに自動的にステータスバーに表示されます。
• 可視……コントロールをユーザに見えるようにするかどうかを指定します。可視にするかどうかを表す理論値を直す式を使用できます。
• 有効……コントロールを有効にするかどうかを指定します。有効にするかどうかを表す理論値を返す式を使用できます。
• スライダ形式……スライダコントロールの方向を指定します。有効な値は以下のとお
りです。
•

V= 横型

•

H= 縦型

• ステップ……スライダコントロールの範囲の目盛りのサイズを指定します。

位置とサイズ• 位置……［位置］特性は、フォームのサイズを変更したときに、コントロールのサイズを変更するかどうかを制御します。
［位置］特性は、［コントロールの位置付］ダイ
アログ内の［左辺割合］、［幅割合］、［上辺割合］、［高さ割合］の組み合わせになります。
この特性からズームして［コントロールの位置付］ダイアログを表示できます。
コントロールの位置特性が「0」の場合、フォームのサイズが実行時に変更されてもコントロールのサイズは変化しません。
［位置］特性が「0」より大きい場合、フォー
ムのサイズが実行時に変更されたときに相対的にサイズが変化します。位置特性を持
つコントロールは、元のサイズより小さいサイズにはなりません。
• 左辺位置……コントロールの左上の x 座標を指定します。
リファレンス
Magic eDeveloper V9 Plus581

第 9 章 - 表示フォーム• 上辺位置……コントロールの右上の y 座標を指定します。
• 幅……コントロールの幅を指定します。
• 高さ……コントロールの高さを指定します。
• コントロールレイヤ……コントロールがチョイスコントロールの子としてリンクされている場合、選択したコントロールのリンク先である親コントロールのチョイス階層を表示します。たとえば、３つの選択肢が格納されたメニューを持つコンボボック
スがフォームレイアウトに配置されている場合、エディットコントロールを３番目の選択肢にリンクすると、この特性に番号「3」が表示されます。この特性は、常に無効になっており、フォームレイアウトでのみ変更できます。この特性は、チョイスコ
ントロールにリンクされているコントロールにのみ有効です。

リッチテキストコントロール特性モデル• モデル……継承が解除されている特性の継承をし直したり、フォームモデルのすべての特性の継承を解除することができます。

詳細• テキスト……スタティックコントロールに表示するテキストを指定します。
• コントロール名……クラス「0」のフォーム内にあるコントロールに名前を付けると、
CtrlName 関数でそれらの名前を参照できるようになります。詳細については、第 8 章「関数」の「CtrlName 関数」を参照してください。
コントロールの名前は大文字と小文字が区別されます。［コントロール名］特性は 30桁に制限されます。後続空白は使用できません。
• RTF の使用……リッチテキスト形式を有効にするかどうかを指定します。
• スタティックタイプ……スタティックコントロールのタイプを指定します。ここからズームして、［スタティックタイプ］ダイアログを表示できます。このダイアログ内の選択肢は、コンボボックスで表示されます。
• ドラッグ許可……同じアプリケーション間でのコントロールからコントロールへのデータのドラッグ処理や同一 PC 上の別のアプリケーションとの間のデータのドラッ
グ処理を可能にします。
このコントロールからコピーされたデータは、［ドラッグ開始］イベントによるハンドラで意図的に設定されるか、Magic エンジンにより自動的に設定されます。
• ドロップ許可……同じアプリケーション間でのコントロールからコントロールへのデータのドラッグ処理や同一 PC 上の別のアプリケーションとの間のデータのドロッ
プ処理を可能にします。
このコントロールへのデータのコピーは、［ドロップ開始］イベントによるハンドラ
で意図的に行われるか、Magic エンジンにより自動的に行われます。

入力• 複数行編集……エディットコントロールに複数行のテキストを含めることができるかどうかを指定します。
テキスト形式フォームで複数行編集コントロールを使用している場合、フォーム全体に収まるようにコントロールが拡大されます。このコントロールは、ページのサイズに合わせて拡大でき、複数のページにまたがることができます。ページ長を越えた複数行編集コントロールは、Magic のすべてのヘッダ制御およびフッタ制御を維持しな
がら次のページに続きます。
テーブル内にこのコントロールがある場合、テーブルのセルはエディットコントロー
ルのサイズに合わせて拡大されます。テーブルのタイトルは各ページに出力されます。そのほかのコントロールは、エディットコントロールの上または下に表示されま

582

リファレンス
Magic eDeveloper V9 Plus

GUI 表示コントロール特性
す。

表示• フォント……コントロールに表示するテキストのフォントを指定します。指定されない場合、フォーム特性で定義されたフォントで表示されます。
• 色……コントロールの色を指定します。［基本色一覧］にズームして、色を選択できます。
• ヘルプ画面……コントロールと関連付けるヘルプ画面を指定します。この指定はオン
ラインフォームでのみ有効です。［ヘルプ一覧］にズームして、ヘルプ画面を選択できます。
• ツールチップ……コントロールと関連付けるツールチップを指定します。［ヘルプ一覧］にズームしてツールチップヘルプを選択できます。
• 可視……コントロールをユーザに見えるようにするかどうかを指定します。可視にするかどうかを表す理論値を直す式を使用できます。
• 有効……コントロールを有効にするかどうかを指定します。有効にするかどうかを表す理論値を返す式を使用できます。
• スタイル……コントロールの外観を指定します。有効な値は以下の通りです。
•

3= 凸立体•S= 凹立体•2= 平面（デフォルト）• 境界……コントロールの境界のスタイルを指定します。スタイルが平面のときのみ有効です。有効な値は以下のとおりです。
•

T= 細線……細線でコントロールを囲みます。

•

H= 太線……太線でコントロールを囲みます。

•

N= なし……コントロールに境界線を表示しません。

• 水平整列……コントロール内の水平方向のテキストの配置を指定します。有効な値は以下のとおりです。
•

L= 左寄せ•C= センタリング•

R= 右寄せ• 垂直整列……コントロール内の垂直方向のテキストの配置を指定します。有効な値は以下のとおりです。
•

T= 上寄せ•C= センタリング•

B= 下寄せ• 線種……スタティックコントロールの線の外観を指定します。スタイルが平面のときのみ有効です。有効な値は以下のとおりです。
•

R= 実線

•

T= 点線

•

S= 破線

•

A= 一点鎖線•

D= 二点鎖線• 線幅……スタティックコントロールの線の幅を指定します。幅はフォームの寸法単位
により異なります。
• 立体線……グループコントロールにおいて表示される四角形の線を 3D にするかどうかを指定します。

リファレンス
Magic eDeveloper V9 Plus583

第 9 章 - 表示フォーム

位置とサイズ• 位置……［位置］特性は、フォームのサイズを変更したときに、コントロールのサイズを変更するかどうかを制御します。
［位置］特性は、［コントロールの位置付］ダイ
アログ内の［左辺割合］、［幅割合］、［上辺割合］、［高さ割合］の組み合わせになります。
この特性からズームして［コントロールの位置付］ダイアログを表示できます。
コントロールの位置特性が「0」の場合、フォームのサイズが実行時に変更されてもコントロールのサイズは変化しません。
［位置］特性が「0」より大きい場合、フォー
ムのサイズが実行時に変更されたときに相対的にサイズが変化します。位置特性を持
つコントロールは、元のサイズより小さいサイズにはなりません。
• 左辺位置……コントロールの左上の x 座標を指定します。
• 上辺位置……コントロールの右上の y 座標を指定します。
• 幅……コントロールの幅を指定します。
• 高さ……コントロールの高さを指定します。
• コントロールレイヤ……コントロールがチョイスコントロールの子としてリンクされている場合、選択したコントロールのリンク先である親コントロールのチョイス階層を表示します。たとえば、３つの選択肢が格納されたメニューを持つコンボボック
スがフォームレイアウトに配置されている場合、エディットコントロールを３番目の選択肢にリンクすると、この特性に番号「3」が表示されます。この特性は、常に無効になっており、フォームレイアウトでのみ変更できます。この特性は、チョイスコ
ントロールにリンクされているコントロールにのみ有効です。

チェックボックスコントロール特性モデル• モデル……継承が解除されている特性の継承をし直したり、フォームモデルのすべての特性の継承を解除することができます。

詳細• データ……データは、データ項目（値）または式として指定します。
• 項目……［データ］特性で指定されたデータ項目の名前を表示します。
• テキスト……チェックボックスコントロールに表示するテキストを指定します。
• コントロール名……クラス「0」のフォーム内にあるコントロールに名前を付けると、
CtrlName 関数でそれらの名前を参照できるようになります。詳細については、第 8 章「関数」の「CtrlName 関数」を参照してください。
コントロールの名前は大文字と小文字が区別されます。［コントロール名］特性は 30桁に制限されます。後続空白は使用できません。
• 型……選択したデータ項目または式の型。データ項目を設定した場合、この値は変更できません。式を設定した場合、この値は変更できます。
• ドラッグ許可……同じアプリケーション間でのコントロールからコントロールへのデータのドラッグ処理や同一 PC 上の別のアプリケーションとの間のデータのドラッ
グ処理を可能にします。
このコントロールからコピーされたデータは、［ドラッグ開始］イベントによるハンドラで意図的に設定されるか、Magic エンジンにより自動的に設定されます。
• ドロップ許可……同じアプリケーション間でのコントロールからコントロールへのデータのドラッグ処理や同一 PC 上の別のアプリケーションとの間のデータのドロッ
プ処理を可能にします。
このコントロールへのデータのコピーは、［ドロップ開始］イベントによるハンドラ
で意図的に行われるか、Magic エンジンにより自動的に行われます。

584

リファレンス
Magic eDeveloper V9 Plus

GUI 表示コントロール特性

入力• 必須入力……エンドユーザがコントロールに値を入力する必要があるかどうかを指定します。必須にするかどうかを表す理論値を返す式を使用できます。
• 修正許可……実行時にユーザがコントロール内の値を変更できるかどうかを指定します。
•

Yes……ユーザはコントロール内の値を変更できます。

•

No…… コントロールへのユーザアクセスは拒否されます。

• 選択プログラム……実行時にエンドユーザが［編集 / ズーム］を使用してプログラムを起動することができるかどうかを指定します。プログラム番号を直接入力するか、［プログラム一覧］にズームしてプログラムを選択します。
• 起動モード……選択プログラムの特性で定義されたプログラムを呼び出す時期を指定します。有効な値は以下のとおりです。
•

A= 後置……呼び出した選択プログラムが終了したときに、カーソルが次の項目に移動するように指定します。

•

B= 前置……呼び出した選択プログラムが終了したときに、カーソルが呼び出した項目に戻るように指定します。
（デフォルト）•P= 自動……項目にカーソルが移動すると同時にプログラムが自動的に実行されるように指定します。これにより、ユーザは即座に値を選択できます。この場
合は、選択プログラムが終了した後、前置モードの場合と同様にカーソルは呼び出した項目に戻ります。

表示• フォント……コントロールに表示するテキストのフォントを指定します。指定されない場合、フォーム特性で定義されたフォントで表示されます。
• 色……コントロールの色を指定します。通常は［スタイル］特性が、「2= 平面」の場
合 の み 有 効 で す が、MAGIC.INI ファイルの［MAGIC_SPECIALS］セクションで「Special3DStyle=Y」と設定することで他のスタイルでも有効になります。［基本色一覧］にズームして、色を選択できます。
• ヘルプ画面……コントロールと関連付けるヘルプ画面を指定します。この指定はオン
ラインフォームでのみ有効です。［ヘルプ一覧］にズームして、ヘルプ画面を選択できます。
• ツールチップ……コントロールと関連付けるツールチップを指定します。［ヘルプ一覧］にズームしてツールチップヘルプを選択できます。
• 自動ヘルプ……コントロールと関連付ける自動ヘルプを指定します。指定されたヘルプの内容は、この項目にカーソルがあるときに自動的にステータスバーに表示されます。
• 可視……コントロールをユーザに見えるようにするかどうかを指定します。可視にするかどうかを表す理論値を直す式を使用できます。
• 有効……コントロールを有効にするかどうかを指定します。有効にするかどうかを表す理論値を返す式を使用できます。
• スタイル……コントロールの外観を指定します。有効な値は、以下の通りです。
•

3= 凸立体•S= 凹立体•

2= 平面

デフォルトは、APG で作成した場合「3= 凸立体」、フォームエディタ上で貼り付けた
場合は「S= 凹立体」になります。
• 境界……コントロールの境界のスタイルを指定します。スタイルが平面のときのみ有効です。有効な値は以下のとおりです。
•

T= 細線……細線でコントロールを囲みます。

•

H= 太線……太線でコントロールを囲みます。

リファレンス
Magic eDeveloper V9 Plus585

第 9 章 - 表示フォーム•

N= なし……コントロールに境界線を表示しません。（デフォルト）• 水平整列……コントロール内の水平方向のテキストの配置を指定します。有効な値は以下のとおりです。
•

L= 左寄せ•C= センタリング•

R= 右寄せ位置とサイズ• 位置……［位置］特性は、フォームのサイズを変更したときに、コントロールのサイズを変更するかどうかを制御します。
［位置］特性は、［コントロールの位置付］ダイ
アログ内の［左辺割合］、［幅割合］、［上辺割合］、［高さ割合］の組み合わせになります。
この特性からズームして［コントロールの位置付］ダイアログを表示できます。
コントロールの位置特性が「0」の場合、フォームのサイズが実行時に変更されてもコントロールのサイズは変化しません。
［位置］特性が「0」より大きい場合、フォー
ムのサイズが実行時に変更されたときに相対的にサイズが変化します。位置特性を持
つコントロールは、元のサイズより小さいサイズにはなりません。
• 左辺位置……コントロールの左上の x 座標を指定します。
• 上辺位置……コントロールの右上の y 座標を指定します。
• 幅……コントロールの幅を指定します。
• 高さ……コントロールの高さを指定します。
• コントロールレイヤ……コントロールがチョイスコントロールの子としてリンクされている場合、選択したコントロールのリンク先である親コントロールのチョイス階層を表示します。たとえば、３つの選択肢が格納されたメニューを持つコンボボック
スがフォームレイアウトに配置されている場合、エディットコントロールを３番目の選択肢にリンクすると、この特性に番号「3」が表示されます。この特性は、常に無効になっており、フォームレイアウトでのみ変更できます。この特性は、チョイスコ
ントロールにリンクされているコントロールにのみ有効です。

グループコントロール特性モデル• モデル……継承が解除されている特性の継承をし直したり、フォームモデルのすべての特性の継承を解除することができます。

詳細• テキスト……スタティックコントロールに表示するテキストを指定します。
• コントロール名……クラス「0」のフォーム内にあるコントロールに名前を付けると、
CtrlName 関数でそれらの名前を参照できるようになります。詳細については、第 8 章「関数」の「CtrlName 関数」を参照してください。
コントロールの名前は大文字と小文字が区別されます。［コントロール名］特性は 30桁に制限されます。後続空白は使用できません。
• RTF の使用……リッチテキスト形式を有効にするかどうかを指定します。
• スタティックタイプ……スタティックコントロールのタイプを指定します。ここからズームして、［スタティックタイプ］ダイアログを表示できます。このダイアログ内の選択肢は、コンボボックスで表示されます。
• ドラッグ許可……同じアプリケーション間でのコントロールからコントロールへのデータのドラッグ処理や同一 PC 上の別のアプリケーションとの間のデータのドラッ
グ処理を可能にします。
このコントロールからコピーされたデータは、［ドラッグ開始］イベントによるハン586

リファレンス
Magic eDeveloper V9 Plus

GUI 表示コントロール特性
ドラで意図的に設定されるか、Magic エンジンにより自動的に設定されます。
• ドロップ許可……同じアプリケーション間でのコントロールからコントロールへのデータのドラッグ処理や同一 PC 上の別のアプリケーションとの間のデータのドロッ
プ処理を可能にします。
このコントロールへのデータのコピーは、［ドロップ開始］イベントによるハンドラ
で意図的に行われるか、Magic エンジンにより自動的に行われます。

入力• 複数行編集……エディットコントロールに複数行のテキストを含めることができるかどうかを指定します。
テキスト形式フォームで複数行編集コントロールを使用している場合、フォーム全体に収まるようにコントロールが拡大されます。このコントロールは、ページのサイズに合わせて拡大でき、複数のページにまたがることができます。ページ長を越えた複数行編集コントロールは、Magic のすべてのヘッダ制御およびフッタ制御を維持しな
がら次のページに続きます。
テーブル内にこのコントロールがある場合、テーブルのセルはエディットコントロー
ルのサイズに合わせて拡大されます。テーブルのタイトルは各ページに出力されます。そのほかのコントロールは、エディットコントロールの上または下に表示されます。

表示• フォント……コントロールに表示するテキストのフォントを指定します。指定されない場合、フォーム特性で定義されたフォントで表示されます。
• 色……コントロールの色を指定します。この特性は、［スタイル］が「2= 平面」の場
合にのみ有効です。［基本色一覧］にズームして、色を選択できます。
• ヘルプ画面……コントロールと関連付けるヘルプ画面を指定します。この指定はオン
ラインフォームでのみ有効です。［ヘルプ一覧］にズームして、ヘルプ画面を選択できます。
• ツールチップ……コントロールと関連付けるツールチップを指定します。［ヘルプ一覧］にズームしてツールチップヘルプを選択できます。
• 可視……コントロールをユーザに見えるようにするかどうかを指定します。可視にするかどうかを表す理論値を直す式を使用できます。
• 有効……コントロールを有効にするかどうかを指定します。有効にするかどうかを表す理論値を返す式を使用できます。
• スタイル……コントロールの外観を指定します。有効な値は、以下の通りです。
•

3= 凸立体•S= 凹立体（デフォルト）

•

2= 平面

• 境界……コントロールの境界のスタイルを指定します。スタイルが平面のときのみ有効です。有効な値は以下のとおりです。
•

T= 細線……細線でコントロールを囲みます。

•

H= 太線……太線でコントロールを囲みます。

•

N= なし……コントロールに境界線を表示しません。（デフォルト）• 水平整列……コントロール内の水平方向のテキストの配置を指定します。有効な値は以下のとおりです。
•

L= 左寄せ•C= センタリング•

R= 右寄せ• 垂直整列……コントロール内の垂直方向のテキストの配置を指定します。有効な値は以下のとおりです。
リファレンス
Magic eDeveloper V9 Plus587

第 9 章 - 表示フォーム•

T= 上寄せ•C= センタリング•

B= 下寄せ• 線種……スタティックコントロールの線の外観を指定します。スタイルが平面のときのみ有効です。有効な値は以下のとおりです。
•

R= 実線

•

T= 点線

•

S= 破線

•

A= 一点鎖線•

D= 二点鎖線• 線幅……スタティックコントロールの線の幅を指定します。幅はフォームの寸法単位
により異なります。
• 立体線……グループコントロールにおいて表示される四角形の線を立体表示にするかどうかを指定します。

位置とサイズ• 位置……［位置］特性は、フォームのサイズを変更したときに、コントロールのサイズを変更するかどうかを制御します。
［位置］特性は、［コントロールの位置付］ダイ
アログ内の［左辺割合］、［幅割合］、［上辺割合］、［高さ割合］の組み合わせになります。
この特性からズームして［コントロールの位置付］ダイアログを表示できます。
コントロールの位置特性が「0」の場合、フォームのサイズが実行時に変更されてもコントロールのサイズは変化しません。
［位置］特性が「0」より大きい場合、フォー
ムのサイズが実行時に変更されたときに相対的にサイズが変化します。位置特性を持
つコントロールは、元のサイズより小さいサイズにはなりません。
• 左辺位置……コントロールの左上の x 座標を指定します。
• 上辺位置……コントロールの右上の y 座標を指定します。
• 幅……コントロールの幅を指定します。
• 高さ……コントロールの高さを指定します。
• コントロールレイヤ……コントロールがチョイスコントロールの子としてリンクされている場合、選択したコントロールのリンク先である親コントロールのチョイス階層を表示します。たとえば、３つの選択肢が格納されたメニューを持つコンボボック
スがフォームレイアウトに配置されている場合、エディットコントロールを３番目の選択肢にリンクすると、この特性に番号「3」が表示されます。この特性は、常に無効になっており、フォームレイアウトでのみ変更できます。この特性は、チョイスコ
ントロールにリンクされているコントロールにのみ有効です。

リッチエディットコントロール特性モデル• モデル……継承が解除されている特性の継承をし直したり、フォームモデルのすべての特性の継承を解除することができます。

詳細• データ……データは、データ項目（値）または式として指定します。
• 項目……［データ］特性で指定されたデータ項目の名前を表示します。
• コントロール名……クラス「0」のフォーム内にあるコントロールに名前を付けると、
CtrlName 関数でそれらの名前を参照できるようになります。詳細については、第 8 章「関数」の「CtrlName 関数」を参照してください。

588

リファレンス
Magic eDeveloper V9 Plus

GUI 表示コントロール特性
コントロールの名前は大文字と小文字が区別されます。［コントロール名］特性は 30桁に制限されます。後続空白は使用できません。
• 型……選択したデータ項目または式の型。データ項目を設定した場合、この値は変更できません。式を設定した場合、この値は変更できます。

入力• 必須入力……エンドユーザがコントロールに値を入力する必要があるかどうかを指定します。必須にするかどうかを表す理論値を返す式を使用できます。
• 修正許可……実行時にユーザがコントロール内の値を変更できるかどうかを指定します。
•

Yes……ユーザはコントロール内の値を変更できます。

•

No…… コントロールへのユーザアクセスは拒否されます。

• 選択プログラム……実行時にエンドユーザが［編集 / ズーム］を使用してプログラムを起動することができるかどうかを指定します。プログラム番号を直接入力するか、［プログラム一覧］にズームしてプログラムを選択します。
• 起動モード……選択プログラムの特性で定義されたプログラムを呼び出す時期を指定します。有効な値は以下のとおりです。
•

A= 後置……呼び出した選択プログラムが終了したときに、カーソルが次の項目に移動するように指定します。

•

B= 前置……呼び出した選択プログラムが終了したときに、カーソルが呼び出した項目に戻るように指定します。
（デフォルト）•P= 自動……項目にカーソルが移動すると同時にプログラムが自動的に実行されるように指定します。これにより、ユーザは即座に値を選択できます。この場
合は、選択プログラムが終了した後、前置モードの場合と同様にカーソルは呼び出した項目に戻ります。

表示• フォント……コントロールに表示するテキストのフォントを指定します。指定されない場合、フォーム特性で定義されたフォントで表示されます。
• 色……コントロールの色を指定します。［基本色一覧］にズームして、色を選択できます。
• ヘルプ画面……コントロールと関連付けるヘルプ画面を指定します。この指定はオン
ラインフォームでのみ有効です。［ヘルプ一覧］にズームして、ヘルプ画面を選択できます。
• ツールチップ……コントロールと関連付けるツールチップを指定します。［ヘルプ一覧］にズームしてツールチップヘルプを選択できます。
• 自動ヘルプ……コントロールと関連付ける自動ヘルプを指定します。指定されたヘルプの内容は、この項目にカーソルがあるときに自動的にステータスバーに表示されます。
• 可視……コントロールをユーザに見えるようにするかどうかを指定します。可視にするかどうかを表す理論値を直す式を使用できます。
• スタイル……コントロールの外観を指定します。有効な値は、以下の通りです。
•

W=Windows 立体（デフォルト）•3= 凸立体•2= 平面• 水平整列……コントロール内の水平方向のテキストの配置を指定します。有効な値は以下のとおりです。
•

L= 左寄せ•C= センタリング•

R= 右寄せリファレンス
Magic eDeveloper V9 Plus589

第 9 章 - 表示フォーム

位置とサイズ• 位置……［位置］特性は、フォームのサイズを変更したときに、コントロールのサイズを変更するかどうかを制御します。
［位置］特性は、［コントロールの位置付］ダイ
アログ内の［左辺割合］、［幅割合］、［上辺割合］、［高さ割合］の組み合わせになります。
この特性からズームして［コントロールの位置付］ダイアログを表示できます。
コントロールの位置特性が「0」の場合、フォームのサイズが実行時に変更されてもコントロールのサイズは変化しません。
［位置］特性が「0」より大きい場合、フォー
ムのサイズが実行時に変更されたときに相対的にサイズが変化します。位置特性を持
つコントロールは、元のサイズより小さいサイズにはなりません。
• 左辺位置……コントロールの左上の x 座標を指定します。
• 上辺位置……コントロールの右上の y 座標を指定します。
• 幅……コントロールの幅を指定します。
• 高さ……コントロールの高さを指定します。
• コントロールレイヤ……コントロールがチョイスコントロールの子としてリンクされている場合、選択したコントロールのリンク先である親コントロールのチョイス階層を表示します。たとえば、3 つの選択肢が格納されたメニューを持つコンボボック
スがフォームレイアウトに配置されている場合、エディットコントロールを 3 番目の選択肢にリンクすると、この特性に番号 3 が表示されます。この特性は、常に無効になっており、フォームレイアウトでのみ変更できます。この特性は、チョイスコント
ロールにリンクされているコントロールにのみ有効です。

ツリーコントロール特性モデル• モデル……継承が解除されている特性の継承をし直したり、フォームモデルのすべての特性の継承を解除することができます。

詳細• ノード ID……タスクデータビューのノード ID を定義する項目です。式では定義できません。
• 親の ID…… タスクデータビューの親レコードを定義する項目です。式では定義できません。
• ルート値……実行エンジンがツリーを作成する開始位置として使われる式• ルートの表示……ルートを表示するかどうかを指定します。
•

Yes ……先頭のノードに表示されます。

•

No……表示されません。

ルート値が指定されない場合は、無効です。
• コントロール名……クラス「0」のフォーム内にあるコントロールに名前を付け、CtrlName 関数でそれらの名前を参照できるようにします。詳細については、第 8 章「関数」の「CtrlName 関数」を参照してください。
コントロールの名前は大文字と小文字が区別されます。［コントロール名］特性は 30桁に制限されます。後続空白は使用できません。
• 画像一覧ファイル名……クリックすることで表示される、ノードの展開、縮小、パークを表すイメージファイルを指定します。指定されない場合は、Magic のデフォルト
イメージを使用します。
• 展開表示画像インデックス……（画像一覧ファイル内の）ノードの展開表示に使用するイメージを指定します。指定しない場合は、デフォルトイメージを使用します。
• 縮小表示画像インデックス……（画像一覧ファイル内の）ノードの縮小表示に使用するイメージを指定します。指定しない場合は、デフォルトイメージを使用します。

590

リファレンス
Magic eDeveloper V9 Plus

GUI 表示コントロール特性• パーク展開表示画像インデックス……（画像一覧ファイル内の）展開表示ノードのパーク状態を表すイメージを指定します。指定しない場合は、デフォルトイメージを使用します。
• パーク縮小表示画像インデックス……（画像一覧ファイル内の）縮小表示ノードのパーク状態を表すイメージを指定します。指定しない場合は、デフォルトイメージを使用します。
• 自動展開……「Yes」が選択された場合、実行時にツリーの全てのノードが展開表示されます。
• ノード事前読込……実行時にデータツリー用のレコードの読込方法を指定します。
•

Yes…… タスクデータビューの全てのレコードのデータを読み込みます。

•

No …… 拡張されたレコードのデータのみ読み込みます。データツリー表示は、［自動拡張］特性によって指定されます。

• ドラッグ許可……同じアプリケーション間でのコントロールからコントロールへのデータのドラッグ処理や同一 PC 上の別のアプリケーションとの間のデータのドラッ
グ処理を可能にします。
このコントロールからコピーされたデータは、［ドラッグ開始］イベントによるハンドラで意図的に設定されるか、Magic エンジンにより自動的に設定されます。
• ドロップ許可……同じアプリケーション間でのコントロールからコントロールへのデータのドラッグ処理や同一 PC 上の別のアプリケーションとの間のデータのドロッ
プ処理を可能にします。
このコントロールへのデータのコピーは、［ドロップ開始］イベントによるハンドラ
で意図的に行われるか、Magic エンジンにより自動的に行われます。
• ツリー表示を保持……ツリーコントロールの制御から抜けた後、再度コントロールに入った場合に表示状態を保持するかどうかを指定します。通常、ファントムタスクでツールを表示させる場合に「Yes」を設定します。

入力• 表示項目……ノードに表示される内容が格納された項目を指定します。
• 項目……［データ］特性で指定されたデータ項目の名前を表示します。
• 書式……表示項目の書式を指定します。ここで変更できるのは、現在のフォーム表示の形式だけです。初期設定値は、項目のカラムテーブルの設定から継承された書式になります。式テーブルにズームして、コントロールの書式を表す式を入力することもできます。
• 型……選択した表示項目の型。この値は変更できません。
• 修正許可……実行時にユーザがコントロール内の値を変更できるかどうかを指定します。
•

Yes……ユーザはコントロール内の値を変更できます。

•

No…… コントロールへのユーザアクセスは拒否されます。

• 有効……コントロールを有効にするかどうかを指定します。有効にするかどうかを表す理論値を返す式を使用できます。
• マルチマーキング……マルチマーキング機能を有効にするかどうかを指定します。

表示• フォント……コントロールに表示するテキストのフォントを指定します。指定されない場合、フォーム特性で定義されたフォントで表示されます。
• 色……コントロールの色を指定します。［基本色一覧］にズームして、色を選択できます。
• 可視……コントロールをユーザに見えるようにするかどうかを指定します。可視にするかどうかを表す理論値を直す式を使用できます。

リファレンス
Magic eDeveloper V9 Plus591

第 9 章 - 表示フォーム• ヘルプ画面……コントロールと関連付けるヘルプ画面を指定します。この指定はオン
ラインフォームでのみ有効です。［ヘルプ一覧］にズームして、ヘルプ画面を選択できます。
• ツールチップ……コントロールと関連付けるツールチップを指定します。［ヘルプ一覧］にズームしてツールチップヘルプを選択できます。
• 自動ヘルプ……コントロールと関連付ける自動ヘルプを指定します。指定されたヘルプの内容は、この項目にカーソルがあるときに自動的にステータスバーに表示されます。
• スタイル……コントロールの外観を指定します。有効な値は、以下の通りです。
•

W=Windows 立体（デフォルト）•3= 凸立体•2= 平面• 境界……コントロールの境界のスタイルを指定します。スタイルが平面のときのみ有効です。有効な値は以下のとおりです。
•

T= 細線……細線でコントロールを囲みます。

•

H= 太線……太線でコントロールを囲みます。

•

N= なし……コントロールに境界線を表示しません。（デフォルト）• ボタンの表示……データツリーのボタンイメージの表示を指定します。
•

Yes ……親ノードの隣にボタンイメージが表示されます。

•

No ……ボタンイメージは表示されません。この場合、エンドユーザは、ツリーレベルを拡張する場合、親ノードをダブルクリックする必要があります。

• ラインの表示……データツリーのツリーラインの表示を指定します。
•

Yes ……ツリーラインを表示します。この場合、［選択行のハイライト表示］特性は無効になります。

•

No ……ラインは表示されません。

• ルートのライン表示……ルートノードのライン表示を指定します。
•

Yes ……ルートにラインが表示されます。

•

No ……ラインは表示されません。

• マウスオーバ表示……マウスカーソルがノードを通過したり、ノードにパークしたりした場合の動作を指定します。
•

Yes……ノードテキストの下にラインを表示します。

•

No ……表示されません。

• 選択行のハイライト表示……マウスカーソルがノードを通過したり、ノードにパークしたりした場合の動作を指定します。
•

Yes ……ノードテキストがハイライト表示します。この場合［ラインの表示］特性が無効になります。

•

No ……ノードテキストの表示は変わりません。

位置とサイズ• 位置……［位置］特性は、フォームのサイズを変更したときに、コントロールのサイズを変更するかどうかを制御します。
［位置］特性は、［コントロールの位置付］ダイ
アログ内の［左辺割合］、［幅割合］、［上辺割合］、［高さ割合］の組み合わせになります。
この特性からズームして［コントロールの位置付］ダイアログを表示できます。
コントロールの位置特性が「0」の場合、フォームのサイズが実行時に変更されてもコントロールのサイズは変化しません。
［位置］特性が「0」より大きい場合、フォー
ムのサイズが実行時に変更されたときに相対的にサイズが変化します。位置特性を持
つコントロールは、元のサイズより小さいサイズにはなりません。
• 左辺位置……コントロールの左上の x 座標を指定します。
• 上辺位置……コントロールの右上の y 座標を指定します。

592

リファレンス
Magic eDeveloper V9 Plus

GUI 表示コントロール特性• 幅……コントロールの幅を指定します。
• 高さ……コントロールの高さを指定します。
• コントロールレイヤ……コントロールがチョイスコントロールの子としてリンクされている場合、選択したコントロールのリンク先である親コントロールのチョイス階層を表示します。たとえば、３つの選択肢が格納されたメニューを持つコンボボック
スがフォームレイアウトに配置されている場合、エディットコントロールを３番目の選択肢にリンクすると、この特性に番号「3」が表示されます。この特性は、常に無効になっており、フォームレイアウトでのみ変更できます。この特性は、チョイスコ
ントロールにリンクされているコントロールにのみ有効です。

ActiveX コントロール特性
ActiveX コントロールは、ActiveX 型項目をフォームに配置する場合のみ有効です。

モデル• モデル……継承が解除されている特性の継承をし直したり、フォームモデルのすべての特性の継承を解除することができます。

詳細• データ……データは、データ項目（値）または式として指定します。
• 項目……［データ］特性で指定されたデータ項目の名前を表示します。
• コントロール名……クラス「0」のフォーム内にあるコントロールに名前を付けると、
CtrlName 関数でそれらの名前を参照できるようになります。詳細については、第 8 章「関数」の「CtrlName 関数」を参照してください。
コントロールの名前は大文字と小文字が区別されます。［コントロール名］特性は 30桁に制限されます。後続空白は使用できません。
• 型……選択したデータ項目または式の型

表示• 自動ヘルプ……コントロールと関連付ける自動ヘルプを指定します。指定されたヘルプの内容は、この項目にカーソルがあるときに自動的にステータスバーに表示されます。
• 可視……コントロールをユーザに見えるようにするかどうかを指定します。可視にするかどうかを表す理論値を直す式を使用できます。
• 有効……コントロールを有効にするかどうかを指定します。有効にするかどうかを表す理論値を返す式を使用できます。

位置とサイズ• 位置……［位置］特性は、フォームのサイズを変更したときに、コントロールのサイズを変更するかどうかを制御します。
［位置］特性は、［コントロールの位置付］ダイ
アログ内の［左辺割合］、［幅割合］、［上辺割合］、［高さ割合］の組み合わせになります。
この特性からズームして［コントロールの位置付］ダイアログを表示できます。
コントロールの位置特性が「0」の場合、フォームのサイズが実行時に変更されてもコントロールのサイズは変化しません。
［位置］特性が「0」より大きい場合、フォー
ムのサイズが実行時に変更されたときに相対的にサイズが変化します。位置特性を持
つコントロールは、元のサイズより小さいサイズにはなりません。
• 左辺位置……コントロールの左上の x 座標を指定します。
• 上辺位置……コントロールの右上の y 座標を指定します。
• 幅……コントロールの幅を指定します。
リファレンス
Magic eDeveloper V9 Plus593

第 9 章 - 表示フォーム• 高さ……コントロールの高さを指定します。
• コントロールレイヤ……コントロールがチョイスコントロールの子としてリンクされている場合、選択したコントロールのリンク先である親コントロールのチョイス階層を表示します。たとえば、３つの選択肢が格納されたメニューを持つコンボボック
スがフォームレイアウトに配置されている場合、エディットコントロールを３番目の選択肢にリンクすると、この特性に番号「3」が表示されます。この特性は、常に無効になっており、フォームレイアウトでのみ変更できます。この特性は、チョイスコ
ントロールにリンクされているコントロールにのみ有効です。

ActiveX• ActiveX クラス……ActiveX オブジェクトのクラスを指定します。
• ActiveX デフォルト……ActiveX オブジェクトのデフォルト設定ができます。ズームするとオブジェクトに対応したダイアログが表示されます。

サポートするイメージフォーマット
GUI 形式フォームでイメージを配置した場合、そのイメージのフォーマットによって表示されないものがあります。Magic でのイメージ表示の対応状況を以下の表で示します。
タイプ

種別

エンコード

表示

BMP

ビットマップ

OS/2

RGB

○

RLE

○

Windows

RGB

○

RLE

○

BRK

Brooktrout 社の Fax×

CAL

CALS ラスタ×

CLP

Windows クリップ
ボード

×

CUT

Dr. Halo

DIB

DIB

×
OS/2
Windows

RGB

○

RLE

○

RGB

○

RLE
EMF

Windows エンハン
ストメタファイル

EPS

Encapsulated
PostScript

FPX

FlashPix

GIF

CompuServe
Graphic Interface○

Bitmap & Vector×××

Ver87aVer89a

ノンインタレース○

インタレース○

ノンインタレース○

インタレース
IFF

594

Amiga

○

圧縮

○

非圧縮

○

IMG

GEM Paint×

JP2

JPEG2000×

リファレンス
Magic eDeveloper V9 Plus

GUI 表示コントロール特性
タイプ

種別

エンコード

表示

JPG

JPEG

標準

○

プログレッシブ

○

ロスレス

×

圧縮

○

非圧縮

○

LBM
MAC

Deluxe Paint
MacPaint

×

MSP

Microsoft Paint×NCR

NCR G4PBM

Porttable Bitmap

PCT

Macintosh PICTPCX

ZSoft Paintbrush

PGM

Portable Greymap

×
ASCII

○

Binary○×Version0○

Version2○

Version5

○

ASCII

○

Binary○PIC

PC Paint

PNG

Portable Netwawork インタレース
Graphics×

ノンインタレース

最適化パレット○

非最適化パレット○

最適化パレット○

非最適化パレット○

PPM

Portable Pixelmap

ASCII

○

PSD

Adobe Photoshop

Binary○Ver2.5PSP

Animation Shop○×

PSPIMAG

Paint Shop Pro Image×RAS

Sun Raster Images△

RAW

Raw ファイルフォーマット×

RGB

SGI イメージファイル

×

RLE

Windows/
Compuserve RLE

Compuserve×

Windows○

SCT

SciTex Continuous
Tone

TGA

Truevisopn Targa

リファレンス
Magic eDeveloper V9 Plus

×
8Bit 圧縮○

8Bit 非圧縮○

16Bit 圧縮○

16Bit 非圧縮○

24Bit 圧縮○

24Bit 非圧縮○595

第 9 章 - 表示フォーム
タイプ

種別

エンコード

TIF

Tagged Image File
FormatFax CITT3
Huffman 圧縮
LZW 圧縮Packbits 圧縮
非圧縮

表示
CMYK

○

RGB

○

CMYK

○

RGB

○

CMYK

○

RGB

○

CMYK

○

RGB

○

CMYK

○

RGB

○

WBMP

Wireless Bitmap

×

WMF

Window Metafile×

WPG

WordPerfect Bitmap

×

XBM

X Windows Bitmap○

XMP

X Windows Pixmap

×

XWD

X Windows Dump×

凡例：○：表示される△：データ通り表示されない
×：何も表示されない

596

リファレンス
Magic eDeveloper V9 Plus

出力フォーム

10

出力フォームには、インターネットフォームと入出力フォームの 2 種類があります。イ
ンターネットフォームでは、次のいずれかのインターネットインタフェースを利用できます。HTML、フレームセット、HTML マージ、および Web Online 応答フォームのいずれかです。入出力フォームでは、インタフェースタイプとして GUI 出力またはテキスト
形式のいずれかを利用できます。どの出力フォームもバッチタスクがベースになっており、そのクラス値が 1 以上に定義されている必要があります。
本章では、次の内容について説明します。
• HTML フォーム
• フレームセットフォーム• HTML マージフォーム• Web Online 応答フォーム• 入出力フォーム

Web Online 応答フォーム機能については、本章で説明しておりますが、現在日本ではサポートしておりません。

リファレンス
Magic eDeveloper V9 Plus597

第 10 章 - 出力フォーム

HTML フォーム
HTML フォームは 1 以上の値を持つクラスとして定義する必要があります。HTML フォー
ムの 1 つを表示すると、それと同じクラスに属するすべてのフォームが同一フォーム上に表示されます。
HTML フォームは行指向であるため、フォームエディタによる GUI 機能は、GUI 機能がすべて有効になるわけではありません。
エンドユーザは HTML フォームを利用することで、データ項目を Web サーバ経由で、呼び出し元のアプリケーションやハイパーリンクでのリンク先に送信できます。

HTML フォームの表示
HTML フォームエディタは、フォームを表示するときに Web ブラウザでそれを実際に表示したときの状態をできるだけ忠実に再現します。ただし、実際に使用するフォントやコントロールの正確な配置など、フォームの表示に影響を与える要素のいくつかは Magic
では制御できません。これらの要素は使用する Web ブラウザによって異なります。

HTML コントロールの配置
HTML には、フォーム上でのコントロールの配置に関して次のような制約があります。
• あるコントロールの高さが 1 行を超えると、すべての行が 1 つの論理行として扱われます。その中で一番高いコントロールがこの論理行のサイズを決定します。論理行の上下の境界線は、コントロールをフォーム上にドロップすると表示されます。論理行
内にあるすべてのコントロールは、自動的に行の下端に合わせて揃えられます。
• 事前配置の定義をしたコントロールは、フォーム上の任意の場所に配置できます。この場合、フォームを HTML に変換すると自動的に適当な空白が埋められます。
• その他のコントロールは、各行の先頭にのみ配置できます。行の中にコントロールがすでに存在する場合は、そのうち一番最後のコントロールの直後にのみ配置できます。コントロールをフォームの左上でドロップすると、そのコントロールが自動的に行の先頭に配置されるか、そのコントロールだけの行が作成されます。たとえば、テーブル、スタティックテーブル、リッチテキスト、ラインといったコントロールの場合、
行はそのコントロールのみで占用されます。複数のコントロールからなる行では、コントロールを別のコントロールの前後いずれかにドロップすることでその配置先を指定できます。
• コントロールを相互に重ね合わせて配置することはできません。ただし、テーブル、
スタティックテーブル、ホットスポットといったコントロールは例外です。

HTML フォーム特性
フォーム特性シートに表示される HTML フォームの各特性についての説明は以下のとおりです。

詳細• ヘッダファイル名……実行モードで生成される HTML のヘッドセクションに追加可能な外部ファイルを定義できます。
その後、エンドユーザはMagicで生成したHTMLフォー
ムのヘッドセクションに、必要に応じて外部のヘッドファイルを組み込むこともできます。
［ヘッダファイル名］特性から［ファイルを開く］ダイアログにズームすることにより、希望するヘッドファイルを選択できます。
式で定義した場合は、実行時に式の評価結果をファイル名として外部ファイルが識別されます。識別後、その外部ファイルの内容が HTML フォームのヘッダセクション598

リファレンス
Magic eDeveloper V9 Plus

HTML フォーム
（タイトルタグの後）に追加されます。なお、外部ファイルへのアクセスが不可能の場合、内容の追加は実行されません。
• 垂直精度……フォームグリッド上にコントロールを配置する際の垂直精度を指定します。
• 水平精度 …… フォームグリッド上にコントロールを配置する際の水平精度を指定します。
• グリッド表示……フォームにグリッド線を表示するかどうかを指定します。
• フォーム名……フォームテーブルの［名前］欄の名前。この名前はフォームの表示時に、ブラウザのタイトルバーに表示されます。
これに対応する HTML コードは以下のようになります。
＜ TITLE ＞ フ ォ ーム名＜ /TITLE ＞

入力• ハイパーリンク……ハイパーリンク値特性から［ハイパーリンク］ダイアログにズー
ムすることにより、フォームの Web サーバへの送信時にアクセスすべき Magic プログ
ラムまたは URL を指定できます。
これに対応する HTML コードは以下のようになります。
＜ FORM action=”Hyperlink”... ＞
ハイパーリンクを定義するときの詳細については、ハイパーリンクの設定に関する節を参照してください。
• 入力フォーム……送信（Submit）ボタンでフォームの内容を HTTP サーバに送信できるように定義できます。
「Yes」に設定されたフォームのエディットコントロールを「No」に設定されたフォー
ムに貼り付けることができます。また、「No」に設定されたフォームにラジオボタンなどの入力用のコントロールを配置することができます。
• コンテキスト変数……コンテキスト変数値特性からズームし、このフォームのコンテ
キスト変数を［コンテキスト変数］ダイアログで指定します。詳細は、コンテキスト
変数に関する節を参照してください。
• パレット最適化……フォームにグラフィックイメージが複数配置されており、また異なるカラーパレットが使用されている場合、［パレット最適化］を「Yes」に設定することで、イメージごとの最適なカラーが用意された 1 つの結合カラーパレットを Magicに作成させることができます（ただし 256 色のイメージのみ）。
この特性のデフォルト設定は No です。このデフォルト値は、必要なとき以外はできるだけ変更しないようにします。

表示• 背景……現行フォームの壁紙イメージとして表示されるファイルの名前を選択するには、壁紙値特性からズームします。
これに対応する HTML コードは以下のようになります。
<BODY BACKGROUND=”Wallpaper">• 色……色特性からズームして、フォームの背景色およびデフォルト文字色を基本色
テーブルから選択します。
これに対応する HTML コードは以下のようになります。
＜ BODY bgcolor="#xxxxxx" text="#xxxxxx" ＞

リファレンス
Magic eDeveloper V9 Plus599

第 10 章 - 出力フォーム• HTML内部属性……HTMLスタイルテーブルからコントロールのタグに追加する任意の属性を選択できます。ズームして、HTML スタイルテーブルからスタイルを選択します。式を定義して HTML スタイルを指定することもできます。これは、［式］から式テーブルにズームすることで行います。
フォーム上の要素を標準化することができます。これは、HTML スタイルテーブルに属性を定義し、各コントロールの HTML 内部属性特性でそれを参照することによって行います。
詳細は、HTML スタイルテーブルに関する節を参照してください。

位置とサイズ• 高さ……開発中のフォームを表示するウィンドウの高さを指定します。
• 幅……開発中のフォームを表示するウィンドウの幅を指定します。

HTML スタイルテーブル
HTML スタイルテーブルを開くには、［設定］、［HTML スタイル］の順にクリックします。

図 10-1 HTML スタイルファイルの設定

HTML スタイルテーブルには次のような項目があります。
• 名前……HTML スタイルを表す名前。
• HTML タグ……Magic が生成する HTML タグにマージする、HTML スタイルを含んだ HTML タグ。
例：BORDER=0 にすると、ハイパーリンクオブジェクトの表示時に境界線は表示され
ません。

600

リファレンス
Magic eDeveloper V9 Plus

HTML フォーム

ハイパーリンクの設定
フォームを Web サーバに送信するときに、あるいはハイパーリンクをクリックして Magic
プログラムを呼び出すときに使用する URL を定義できます。
［ハイパーリンク］ダイアログにアクセスするには、HTML フォーム特性シート内の入力セクションにある［ハイパーリンク］からズームします。さらに、HTML フォーム特性
シートにアクセスするには、「コマンドパレットを使用する」で説明されているように、
HTML コマンドパレット内の［ハイパーリンク］コマンドボタンをクリックします。
Magic のハイパーリンクは、次のいずれかのタイプに対して指定できます。
• Magic プログラム• URL• コントロール名

Magic プログラム
任意のアプリケーション中にある別の Magic プログラムへのハイパーリンクを作成するには、［Magic プログラム］を選択します。
フォームを HTML に変換する時点で、Magic は以下の各部分を使用して URL を構築します。
• インターネットリクエスタのパス……［動作環境］ダイアログの［アプリケーション
サーバ］タブに定義されています。
• Magic システム名と公開プログラム名……ユーザが指定します。
• ［パラメータ］設定で定義されている任意のパラメータ
ハイパーリンクタイプとして［Magic プログラム］を選択すると、以下に示すハイパー
リンク設定を定義できます。
• アプリケーション名……呼び出されるプログラムが入っている Magic システム（アプリケーション）の名前を定義します。Magic システムをアプリケーションテーブルから選択するには、この項目をズームするかダブルクリックします。右側の式欄からズームして、式で指定することもできます。
• 公開プログラム名……呼び出されるプログラムの公開プログラム名を定義します。これはプログラムテーブルに定義するのと同じ公開プログラム名になります。プログラ
ムをその現行アプリケーションのプログラムリストから選択するには、この項目をズームします。右側の式欄からズームして、式で指定することもできます。
• パラメータ……Magic プログラムに渡されるパラメータを定義します。パラメータをパラメータテーブルから選択するには、この［パラメータ］項目からズームします。
HTML マージフォームの入力項目を使用する Magic プログラムへの呼び出しを指定するには、［ハイパーリンク設定］ダイアログの［パラメータ設定］をズームして、パラメー
タテーブルを開きます。
•

項目……項目一覧にある Magic データ項目名。フォーム特性では、この値は、フォームがブラウザから送信されるときに評価された値になります。コント
ロール特性では、この値は、フォームが Magic からデータ出力されるときに評価された値になります。

•

式……定数値を渡すのに使用されます。この値は、フォームが Magic からデータ出力されるときに評価された値になります。

•

説明……パラメータ項目の内容が表示されます。

• 出力先フレーム……呼び出されるプログラムのHTML出力をアプリケーションが戻す先となるブラウザフレームを定義します。右側の式欄からズームして、式で指定することもできます。
このオプションは、フレームセットコントロール特性の［ハイパーリンク］欄からズームした場合は表示されません。

リファレンス
Magic eDeveloper V9 Plus

601

第 10 章 - 出力フォーム

URL
有効な URL へのハイパーリンクを作成するには、［URL］を選択します。フォームをHTML に変換する時点で、Magic は URL をそのままコピーします。
ハイパーリンクタイプとして［URL］を選択すると、以下に示すハイパーリンク設定を定義できます。
• URL……ハイパーリンクとして使用する完全な URL 文字列を定義します。この URL
文字列の最大長は 1024 文字です。
• 式……実行時に完全な URL 文字列を求める式を定義します。
• 出力先フレーム……この欄では、ブラウザのフレームを指定します。このフレームに、HTML の出力結果が表示されます。右側の式欄からズームして、式で指定することもできます。
このオプションは、フレームセットコントロール特性の［ハイパーリンク］欄からズームした場合は表示されません。

コントロール名
同一フォームの別の部分へのハイパーリンクを作成するには、［コントロール名］を選択します。
ハイパーリンクを実行すると、ブラウザはそこで指定されている名前を持つコントロー
ルが画面の先頭にくるようにスクロールします。
フォームを HTML に変換する時点で、Magic は「#」とその後ろに続くコントロール名を使用して URL を構築します。
現行フォームに対して定義されているコントロール名の一覧からコントロール名を選択するには、特性をズームするかダブルクリックします。

コンテキスト変数
コンテキスト変数は、アプリケーションをある HTML フォームから別の HTML フォーム
へ移動するときに、そのアプリケーション全体にわたるコンテキストを保持します。
以前に呼び出したプログラムで設定したコンテキスト変数の値を確認するには、Magic のGetParam 関数を利用します。
コンテキスト変数は、Cookie または非表示項目のいずれかを使用して定義します。

Cookie
コンテキスト変数は、Cookie と呼ばれる HTTP オブジェクトとして定義できます。Cookie
内のデータは、クライアント（Web ブラウザ）マシン上の特殊なファイルに格納されます。Cookie の保存後、Web ブラウザは同一の URL やサイトに再度アクセスするときに、その Cookie に格納されたデータを自動的に送信します。
Magic はそのデータを Cookie として、HTTP プロセス中に自動送信します。それ以降は、
Cookie で定義された範囲に当てはまる URL に同一の Web ブラウザがアクセスすると、その Web ブラウザが Cookie 内のデータを HTTP プロセスの一部として自動送信します。
この方法により、後続の Magic プログラムはいずれもそのデータにアクセスできるようになります。
Cookie を利用すると、インターネットリクエスタがその後呼び出すプログラムはすべて
コンテキスト変数を利用できます。
ただし、Web ブラウザがすべて Cookie をサポートしているわけではない点に注意してください。また、Cookie 対応の Web ブラウザにはこの機能を無効にするオプションがあります。そのためアプリケーションのコンテキスト変数に対して Cookie を使用するのは、どの場合でも有効というわけではありません。

602

リファレンス
Magic eDeveloper V9 Plus

HTML フォーム

非表示項目
コンテキスト変数は、フォームに追加された非表示項目として実装できます。
<INPUT type=“hidden” NAME="MGCONTXTVAR" value …>「MGCONTXTVAR」は、この非表示項目の値です。
このような実装は、HTML フォームの場合にのみ可能です。
非表示項目を利用した場合、コンテキスト変数を使用できるのは、それらのコンテキス
ト変数が定義されたフォームから直接インターネットリクエスタによって呼び出されたプログラムに限られます。コンテキストを後続のプログラムでも保持しなければならな
い場合は、各プログラムのフォームに適切なコンテキスト変数を組み込んでおく必要があります。

コンテキスト変数の設定［コンテキスト変数］ダイアログにアクセスするには、HTML フォーム特性シート内の入力セクションにあるコンテキスト変数値特性からズームします。

図 10-2 ［コンテキスト変数］ダイアログ［コンテキスト変数］ダイアログの各項目についての説明は以下のとおりです。

パラメータ
•

このフォームで設定するコンテキスト変数の一覧を定義します。

• ［パラメータ］ダイアログ内のパラメータを定義するには、この項目をズームします。

Cookie を使用•

コンテキスト変数を Cookie、非表示変数のどちらで実装するかを指定します。

•

デフォルト設定は Yes で、HTML 形式フォームを選択している場合にのみ変更可能です。

ドメイン制限•Cookie を使用して環境項目の設定を行うときにだけ有効です。

•

Cookie（およびそのコンテキスト変数）がブラウザにより、どの URL にも送信されるようにするか、現在のフォームと同じドメインにある URL だけに送信されるようにするかを指定します。

日付制限と時間制限•
リファレンス
Magic eDeveloper V9 Plus

Cookie を使用して環境項目の設定を行うときにだけ有効です。

603

第 10 章 - 出力フォーム•

この Cookie の有効期限の日付を定義します。その日付が過ぎるとブラウザはこの Cookie を送り返さなくなります。

•

日付を指定しない場合、ブラウザはセッション終了と同時に Cookie を削除します。

•

適切な式を選択するには、この項目から式テーブルにズームします。

保護チャネル•

Cookie を使用して環境項目の設定を行うときにだけ有効です。

HTML コマンドパレット
HTML フォームのコントロールは、プルダウンメニュー、コンテキストメニュー、［HTML
コマンド］パレットのいずれかを利用して編集します。以下に示すように、コマンドボ
タンはそのコンテキストに応じて使用可能または使用不可の状態になります。
HTML フォームエディタの［コマンド］パレットには、HTML コントロールのフォー
マットとフォームの編集のそれぞれに固有なコマンドを含む［HTML］タブがあります。
さらに、［汎用］タブおよび［色］タブにも HTML フォームエディタでアクセスできます。詳細は、「コマンドパレット」および「カラーパレット」を参照してください。
［HTML コマンド］パレットの、機能を起動するボタンについての説明は以下のとおりです。
これ以外のすべてのコマンドボタンについては、「GUI コントロールパレット」（532ページ）を参照してください。
コマンド

説明

HTML コード

ボールド
選択したコントロール（複数可）または選択した
RTF テキストに、ボールド属性を設定します。

<B>…</B>

イタリック
選択したコントロール（複数可）または選択した
RTF テキストに、イタリック属性を設定します。

<I>…</I>

事前配置
選択したコントロール（複数可）に、事前配置属性を設定します。

<PRE>…</PRE>

背景
編集中は背景を非表示にします。
フォント
フォントテーブルから、選択したコントロール（複数可）に適用可能なフォント一覧を表示します。

選択したフォントによって異なります。

ハイパーリンク
選択したコントロール、または選択テキストにハ
イパーリンクを設定します。

<A href= ”…”>…</A>

デフォルト HTML フォント
デフォルトのブラウザフォント。
ヘッダ 1
選択したコントロール（複数可）の行の見出しス
タイル属性を、レベル 1 に設定します。

604<H1>…</H1>

リファレンス
Magic eDeveloper V9 Plus

HTML フォーム
コマンド

説明

HTML コード

ヘッダ 2
選択したコントロール（複数可）の行の見出しス
タイル属性を、レベル 2 に設定します。

<H2>…</H2>

ヘッダ 3
選択したコントロール（複数可）の行の見出しス
タイル属性を、レベル 3 に設定します。

<H3>…</H3>

ヘッダ 4
選択したコントロール（複数可）の行の見出しス
タイル属性を、レベル 4 に設定します。

<H4>…</H4>

ヘッダ 5
選択したコントロール（複数可）の行の見出しス
タイル属性を、レベル 5 に設定します。

<H5>…</H5>

ヘッダ 6
選択したコントロール（複数可）の行の見出しス
タイル属性を、レベル 6（最小、または重要度が一番低い）に設定します。

<H6>…</H6>

左揃え選択したすべてのコントロールの行を左側に揃えます。デフォルトのオプション。
中央揃え
選択したすべてのコントロールの行を中央に揃えます。
右揃え
選択したすべてのコントロールの行を右側に揃えます。
<UL>…</UL>
インデント
選択したコントロールの行をインデントします。
インデントは複数設定できます。［動作環境］ダ
イアログの［インデント文字］設定が 0 以外に設定されている場合にのみ有効となります。インデントコマンドは、ホットスポット以外のどのHTML コントロールに対しても有効となります。
インデント解除
選択したコントロールの行からインデントを 1 つだけ削除します。［動作環境］ダイアログの［インデント文字］設定が 0 以外に設定されている場
合にのみ有効となります。インデント削除コマン
ドは、ホットスポット以外のどの HTML コント
ロールに対しても有効となります。
段落番号
選択したコントロールの行（複数可）に、番号付
きリスト属性を設定します。エディットコント
ロールの場合にのみ有効となります。

<OL><LI>…
</LI>…</OL>

箇条書き
選択したコントロールの行（複数可）に、中黒付
きリスト属性を設定します。エディットコント
ロールの場合にのみ有効となります。

<UL><LI>…
</LI>…</UL>

元に戻す
直前の操作が取り消されます。
やり直し
取り消した直前の操作が復活します。

リファレンス
Magic eDeveloper V9 Plus605

第 10 章 - 出力フォーム
コマンド

HTML コード

説明
コピー
選択したコントロールの情報を内部バッファにコピーします。
貼り付け
内部バッファにコピーされたコントロールの情報をもとにコントロールを配置します。
HTML ファイル書込
フォームを HTML としてファイルに保存します。
初回の選択時には［ファイル名をつけて保存］ダ
イアログが開かれます。
ブラウザで表示
フォームを Web ブラウザに読み込んで表示します。

HTML スタティックテーブルコマンドパレット［HTML コントロール］パレットでは、データ項目コントロールのタイトルと編集構成要
素を個別にフォーマットできません。ただし、スタティックテーブルコントロールを使用すると、すべての HTML コントロールを正確に配置し、個別にフォーマットできます。
スタティックテーブルのセルと行を変更することで配置を変更することができます。
スタティックテーブルの［コマンド］パレットには、スタティックテーブルを HTML 形式
でフォーマットするためのコマンドが含まれています。スタティックテーブルの［コマンド］パレットの各ボタンについての説明は以下のとおりです。
コマンド

説明
セル特性
スタティックテーブルのセルのコントロール特性に特性を設定します。
行特性
スタティックテーブルの行のコントロール特性に特性を設定します。
テーブル特性スタティックテーブルのコントロール特性に特性を設定します。
セル間隔の拡張
テーブル内のすべてのセルの間隔を増やします。セル間隔を数値で指定するには、［セル間隔］特性で行います。
境界幅拡張
スタティックテーブルの境界幅を大きくします。
セル幅の拡張選択したセルの幅を 2 倍にします。
セル幅の縮小選択したセルの幅を 1/2 に縮小します。このコマンドは、選択したセルのサイズがすでに拡大されている場合にのみ選択可能です。
セル選択
スタティックテーブルのセルを選択します。
行の選択
スタティックテーブルの行を選択します。
テーブルの選択
スタティックテーブル全体を選択します。

606

リファレンス
Magic eDeveloper V9 Plus

HTML フォーム
コマンド

説明
セル間隔縮の縮小
テーブル内のすべてのセルの間隔を縮小します。このコマンドは、セル間隔がすでに［セル間隔の拡張］コマンドで拡大されている場合にのみ選択
可能です。
境界幅縮小
スタティックテーブルの境界幅を小さくします。
セル高さの拡張
選択したセルの縦幅を 2 倍にします。
セル高さの縮小
選択した行の縦幅を小さくします。このコマンドは、選択したセルがすでに縦方向に拡大されている場合にのみ選択可能です。
セルの追加
スタティックテーブルのセルを現在の行に追加します。
行の追加
スタティックテーブルの行を追加します。
列の追加
スタティックテーブルのカラムを追加します。
パディング拡張
セル境界と、そのセルに配置されているコントロールとの間のスペースを大きくします。
枠なし
スタティックテーブルの境界を削除します。
固定幅のセル単独のセルに特定の寸法を適用します。
セルの削除
スタティックテーブルのセルを 1 つだけ削除します。
行の削除
スタティックテーブルの行を削除します。
テーブルの削除
スタティックテーブル全体を削除します。
パディング縮小
セル境界と、そのセルに配置されているコントロールとの間のスペースを
小さくします。

HTML コントロールパレット
HTML フォームエディタのコントロールパレットには、HTML フォームに挿入できる各種コントロールが表示されます。
［HTML コントロール］パレットに固有の各ボタンについての説明は以下のとおりです。
これ以外のすべてのコマンドボタンについては、「GUI コントロールパレット」（532ページ）を参照してください。

リファレンス
Magic eDeveloper V9 Plus607

第 10 章 - 出力フォーム
コントロール説明
ホットスポット（四角形）コントロールを挿入します。このコント
ロールは、特定のプログラムまたは URL にリンクされたイメージ上に、長方形の領域を定義するのに使用します。ホットスポット（四角形）コントロールを配置できるのはイメージコントロール上に限られます。
これに対応する HTML コードは以下のようになります。
<MAP name=...><AREA shape=rect...>...</MAP>
ホットスポット（丸）コントロールを挿入します。このコントロー
ルは、特定のプログラムまたは URL にリンクした、イメージ上の円形領域か楕円形領域を定義するときに使用します。ホットスポット（丸）コントロールを配置できるのはイメージコントロール上に限られます。
これに対応する HTML コードは以下のようになります。
<MAP name=...><AREA shape=circle...>...</MAP>
Java アプレットの表示に使用する Java コントロールを挿入します。
アプレットは直接指定するか、実行時に評価される変数や式に基づいて指定します。Java コントロール上には、Java アプレットのソー
スファイル名が表示されます。
これに対応する HTML コードは以下のようになります。
<APPLET code=”...”...><PARAM name=”...” value=”...”>...</APPLET>
ActiveX オブジェクトの表示に使用する ActiveX コントロールを挿入します。このコントロールは直接指定するか、実行時に評価される変数や式に基づいて指定します。ActiveX コントロール上には、
ActiveX オブジェクトのソースファイル名が表示されます。
これに対応する HTML コードは以下のようになります。
<OBJECT classid=”...” "codebase="..."...></OBJECT>HTML コントロールを挿入します。このコントロールは、別のHTML 形式の文書をそのコントロールの位置に組み込むときに使用します。HTML 文書は直接指定するか、実行時に評価される変数や式に基づいて指定します。HTML コントロール上には、HTML オブ
ジェクトのソースファイル名が表示されます。
HTML スタティックテーブルコントロールを挿入します。
HTML フォーム内にサウンドファイルへのハイパーリンクを挿入します。サウンドコントロール上には、サウンドオブジェクトのソー
スファイル名が表示されます。

HTML フォームエディタのデータ項目パレットには、OLE データ項目以外のすべてのデータ項目が表示されます。
リッチエディットコントロールは表示専用となります。

フォントと HTML コントロール
コントロールのフォント特性では、フォントテーブルにある任意のフォントを使用できます。ただし、フォームエディタにはその選択したフォントが表示されるものの、ブラウザで実際に表示されるフォントは以下の変換規則に従ったものとなる点に注意してく
ださい。

608

リファレンス
Magic eDeveloper V9 Plus

HTML フォーム

HTML 出力におけるフォントの変換• ブラウザが実際に使用するフォントは、ブラウザの設定で指定されます。これはフォントの属性（サイズ、ボールド、イタリックなど）には適用されません。
• フォント 50 〜 77 を使用した場合、フォントの属性は HTML 書式設定タグの <Hn>、<B>、<I> に変換されます。たとえば、テキストコントロールをフォント #72（見出し
1、ボールド、イタリック）で定義すると、このコントロールは HTML では <H1><B><I>
テキスト </I></B></H1> として変換されます。
• フォント #7 を使用すると、そのコントロールはあらかじめ書式設定された HTML コ
ントロールとみなされ、変換するときに <PRE>…</PRE> タグが使用されます。
• その他のフォントを使用した場合、フォント属性は HTML 書式設定タグの <FONT
size=n>、<B>、<I> に変換されます。なお、サイズ属性は使用されているフォントのサイズに比例したものになります。

フォント書式設定コマンド［コマンド］パレットから［強調］、［イタリック］、［フォント］、［デフォルト］、［ヘッダ］、［事前配置］などの書式設定コマンドを選択することで、選択したコントロールのフォント特性を変更できます。たとえば、テキストコントロールのフォント特性がフォント #50（HTML デフォルト）となっている場合に、［強調］コマンドと［ヘッダ 3］コ
マンドを選択すると、フォント特性は #60（見出し 3、ボールド）に変更されます。

HTML コントロール特性
HTML コントロールの各特性にアクセスするには、フォーム上の該当するコントロール
からズームします。コントロールのタイプごとに別々の特性を定義できます。HTML コ
ントロールの各特性についての説明は以下のとおりです。

モデル
モデル……継承されていない特性の継承を設定し直したり、フォームモデルのすべての特性の継承を排除したりすることができます。さらに、別のモデルを選択することもできます。

詳細• ActiveX ファイル名……ActiveX コントロールに適用されます。使用する ActiveX の.ocx ファイルの名前を定義します。ActiveX ファイルを選択するには、特性をズームします。
これに対応する HTML コードは以下のようになります。
<OBJECT code=…>• 代替テキスト……イメージ、サウンド、Java の各コントロールに適用されます。ブラ
ウザがコントロールの内容を表示できない場合に、そのコントロールの代わりに表示するテキストを定義します。
これに対応する HTML コードは以下のようになります。
<… alt=…>• コントロール名……ローカルのハイパーリンクのジャンプ先を定義するのに使用します。このフォームを呼び出すハイパーリンクの一部でコントロール名を使用すると、ブラウザはそのコントロールがページの一番上にくるように画面をスクロールします。
これに対応する HTML コードは以下のようになります。
<A name=controlname>...</A>

リファレンス
Magic eDeveloper V9 Plus609

第 10 章 - 出力フォーム• デフォルトイメージファイル……イメージとサウンドの各コントロールに適用されます。表示されるイメージファイルの名前を指定します。データ特性が使用されている場合、いずれの値も上書きされます。イメージファイルを［ファイルを開く］ダイ
アログから選択するには、特性をズームします。
これに対応する HTML コードは以下のようになります。
<IMG src=…>• RTF の使用……スタティック（テキスト）コントロールに適用されます。テキストコ
ントロールとスタティックコントロールをリッチテキスト形式に変換します。
• 書式……プッシュボタンコントロールに適用されます。ボタンに表示するラベルを指定するか、既存のプッシュボタンラベルのラベルテキストを書式設定します。
• HTML ファイル名……HTML コントロールに適用されます。コントロールの位置に組み込まれる HTML ファイルの名前を定義します。HTML ファイルを選択するには、この特性をズームします。
• Java ファイル名……Java コントロールに適用されます。使用する Java クラスファイ
ルの名前を定義します。Java クラスファイルを選択するには、この特性をズームします。
これに対応する HTML コードは以下のようになります。
<APPLET code=…>• ラベル……チョイスコントロール（ラジオボタン、コンボボックス、リストボックス）に適用されます。コントロール内のオプションごとに、表示するラベルを指定します。
• パラメータ……Java コントロールと ActiveX コントロールに適用されます。Java アプ
レット /ActiveX コントロールに引数として渡される変数や式に基づくパラメータを定義するときに使用します。パラメータをパラメータテーブルから選択するには、パラメータをズームします。パラメータテーブルには名前という付加的なカラムがあり、<PARAM> タグの名前属性で必要となる点に注意します。パラメータを定義式で指定する場合、文字型で定義してください。
これに対応する HTML コードは以下のようになります。
<PARAM name=…value=…>

入力• ボタンタイプ……プッシュボタンに適用されます。このボタンを押したときのフォー
ムのアクションを指定します。有効な値は以下のとおりです。
•

S= 送信……フォームを送信します。

•

C= 取消……フォームの初回表示時に表示されたすべてのパラメータに対する値をクリア（リセット）します。

これに対応する HTML コードは以下のようになります。
<INPUT type=”submit” …> または <INPUT type=”reset” …>• 非表示項目……このコントロールを、エンドユーザに表示せずに送信する非表示パラメータとして定義するかどうかを指定します。これを指定することで、エンドユーザの介入なしでデータが送信できるようになります。
これに対応する HTML コードは以下のようになります。
<INPUT type=”hidden” …>• ハイパーリンク……エディット（変更不可）、テキスト、イメージ、ホットスポット（四角形）、ホットスポット（丸）の各コントロールに適用されます。コントロールがクリックされたときに呼び出す URL を指定します。ハイパーリンクが定義されている
テキストコントロールは下線付きで表示されます。
これに対応する HTML コードは以下のようになります。
<A href=… ＞または <AREA href=…> （ホ ッ ト スポ ッ ト の場合）

610

リファレンス
Magic eDeveloper V9 Plus

HTML フォーム

「ハイパーリンクの設定」の説明も参照してください。

• 修正許可……エディットコントロールに適用されます。HTML への変換時に、このコントロールを HTML 編集パラメータ＜ INPUT type=text… ＞の形で実装し、そのパラメータの値をフォームを使用して送信するか、あるいはオプションの書式設定による単
純な HTML テキストとして定義するかを指定します。
• 複数行編集……エディットコントロールに適用されます。このコントロールを HTML
複数行編集パラメータとして実装するかどうかを指定します。
これに対応する HTML コードは以下のようになります。
<TEXTAREA…>…</TEXTAREA>• パスワードエディット……エディットコントロールに適用されます。このコントロー
ルを、入力データをエンドユーザに表示しない HTML パスワードパラメータとして実装するかどうかを指定します。
これに対応する HTML コードは以下のようになります。
<INPUT type=”password”…>表示• テキストの整列……イメージ、Java、ActiveX の各コントロールに適用されます。コン
トロール直後にあるテキストの整列方法を指定します。有効な値は次のとおりです。
•

T= 上寄せ•C= センタリング•

B= 下寄せ•L= 左寄せ•R= 右寄せこれに対応する HTML コードは以下のようになります。
<… align=…>• 境界線の幅……イメージコントロールに適用されます。イメージコントロールの境界線の幅を定義します。境界線の幅は、「1」から「100」までの範囲で指定できます。別の方法として、Border Expressions （式）パラメータから式テーブルにズームし、［式］
欄をズームして［式］テーブルを開き、ここで境界線の幅の値が返る式を指定することもできます。デフォルト値は「0」です。
境界線の値は、生成した HTML 中にあるイメージの Border タグで使用されます。イ
メージコントロールをコピーして別のフォームに貼り付けた場合、境界線特性はコ
ピー先でも保持されます。ただし、イメージコントロールがテンプレートの一部として組み込まれている場合は、その境界線特性はテンプレートフォーマットによって上書きされます。
テンプレート文書では、境界線特性の値は IMG_BORDER_VAL、IMG_BORDER_EXPの各キーワードによって定義されます。
• 色……コントロールに表示するテキストの色を定義します。式項目からズームすることにより、コントロールの選択色を指定する式を作成することもできます。この項目に値を入力しない場合、コントロールはデフォルトの色を使用します。
• フォント……コントロールに表示するテキストのフォントを定義します。
［式］項目からズームすることにより、フォントの形式を指定する式を作成することもできます。この項目に値を入力しない場合、コントロールはフォントテーブルで「HTML デフォルト」として定義されているフォントを使用します。
ブラウザ内でフォームを表示するときに使われるフォントが、フォームエディタで表示されるフォントとは異なる場合がある点に注意します。
これに対応する HTML コードは、以下の中からの組み合わせとなります。
<Hn>、 <B>、 <I>、 <FONT> など。
リファレンス
Magic eDeveloper V9 Plus611

第 10 章 - 出力フォーム• 水平方向の余白……イメージ、Java、ActiveX の各コントロールに適用されます。コン
トロールの左右に空ける、横方向のスペース間隔を定義します。値はピクセル単位で指定します。
これに対応する HTML コードは以下のようになります。
<… hspace=…>• HTML外部属性……HTMLスタイルテーブルからコントロールのタグの周囲に追加される属性を選択します。［式］項目では、コントロールのタグに追加する HTML スタ
イルを指定した式を定義できます。
HTML スタイルテーブルに属性を定義し、各コントロールの HTML 外部属性特性でそれを参照することにより、フォーム上の要素を標準化することができます。
HTML スタイルテーブルからスタイルを選択するにはズームします。詳細は、HTML
スタイルテーブルに関する節を参照してください。
• HTML 内部属性……HTML スタイルテーブルから、コントロールのタグ内に追加する属性を選択します。あるいは、［式］項目から式テーブルにズームして、HTML スタ
イルを指定した式を選択します。
HTML スタイルテーブルに属性を定義し、各コントロールの HTML 内部属性特性でそれを参照することにより、フォーム上の要素を標準化できます。
HTML スタイルテーブルからスタイルを選択するにはズームします。詳細は、「HTML
スタイルテーブル」を参照してください。
• インデントレベル……フォーム内にあるコントロールの行のインデントレベルを定義します。選択したコントロールの行にあるすべてのコントロールが影響を受け、同じインデントが適用されます。
これに対応する HTML コードは以下のようになります。
<UL>…</UL>• 段落整列……フォーム内にあるコントロールの行の整列方法を定義します。選択したコントロールの行にあるすべてのコントロールが影響を受け、同じ整列方法が適用されます。有効な値は以下のとおり。
•

L ＝左寄せ•C ＝センタリング•

R ＝右寄せ• テキストタイプ……テキストコントロールに適用されます。選択したコントロールの行の先頭に、中黒や番号を表示するかどうかを指定します。選択したコントロールの行にあるすべてのコントロールが影響を受け、同じインデントが適用されます。有効な値は次のとおりです。
•

N ＝なし

•

B ＝箇条書•N ＝番号箇条書

これに対応する HTML コードは以下のようになります。
<OL><LI>…</LI>…</OL><UL><LI>…</LI>…</UL>• 垂直方向の余白……イメージ、Java、ActiveX の各コントロールに適用されます。コン
トロールの上下に空ける、縦方向のスペース間隔を定義します。値はピクセル単位で指定します。
これに対応する HTML コードは以下のようになります。
<… vspace=…>• 可視……コントロールを表示するかしないか式で指定できます。

612

リファレンス
Magic eDeveloper V9 Plus

HTML フォーム

位置とサイズ• 高さ……リッチエディットボックス、HTML
コントロール、テーブル、イメージ、
ActiveX、Java、サウンドの各コントロールに適用されます。コントロールの縦方向のサイズを定義します。
これに対応する HTML コードは以下のようになります。
<HR height=nnn>• 幅……エディット、テーブル、ライン、Java、ActiveX、HTML、イメージ、サウンドの各コントロールに適用されます。コントロールの横方向のサイズを一連の値、または式により定義します。ラインコントロールでは、幅特性は幅（%）＝ 0 の場合にのみ有効になる点に注意します。
• 幅（%）……ラインコントロールに適用されます。フォームが表示されているウィンドウの高さを基準にしたときの比率（パーセント）により、ラインの縦方向のサイズを定義します。この値が 0 のときはコントロールの幅特性が有効になり、絶対値による幅が定義されます。
これに対応する HTML コードは以下のようになります。
<HR width=nnn%>

OLE2• ActiveX クラス……ActiveX コントロールに適用されます。ActiveX コントロールのクラスを定義します。インストールされている ActiveX コントロールの一覧から ActiveX
クラスを選択するには、特性をズームします。
これに対応する HTML コードは以下のようになります。
<OBJECT classid=CLSID:...>

スタティックテーブルコントロール特性
スタティックテーブルコントロールの各特性は、セル、行、テーブルのいずれかからズー
ムすることでアクセスできます。テーブルのそれぞれの部分（セル、行、スタティック
テーブル全体）に別々の特性を定義することが可能です。スタティックテーブルコント
ロールの各特性についての説明は以下のとおりです。
• 境界線の幅……スタティックテーブル枠の幅を定義します。
• セル間隔……スタティックテーブルのセル間のスペースを定義します。
• セルのパディング……セル境界と、そのセル内に配置されているコントロールとの間のスペースを定義します。
• 色……色特性からズームして、背景色および文字色を基本色テーブルから選択します。［式］項目から式テーブルにズームし、色番号を指定した式を定義することもできます。
• 列数……カラムの数を指定するには、［列］から値を選択します。
［列］の値は 1 〜 100
でなければなりません。
• 固定幅……スタティックテーブルのセルに決まったデフォルト幅がある場合に指定します。
• 水平整列……行セルにおけるテキストの表示位置を指定できます。以下の値が指定できます。
•

L ＝左寄せ（デフォルト）•

C ＝センタリング•

R ＝右寄せ• HTML外部属性……HTMLスタイルテーブルからコントロールのタグに追加する属性を選択します。
［式］項目から式テーブルにズームし、HTML スタイル属性に式を定義することもできます。詳細は、「HTML 外部属性」を参照してください。

リファレンス
Magic eDeveloper V9 Plus613

第 10 章 - 出力フォーム• HTML内部属性……HTMLスタイルテーブルからコントロールのタグに追加する属性を選択します。
［式］項目から式テーブルにズームし、HTML スタイル属性に式を定義することもできます。詳細は、「HTML 内部属性」を参照してください。
• 段落整列……スタティックテーブルにおける横方向の整列方法を指定します。
•

L ＝左寄せ•C ＝センタリング•

R ＝右寄せ• 行数……スタティックテーブルコントロールの行の数を指定するには、［行］から値を選択します。
［行］は 1 〜 100 でなければなりません。
• 垂直整列……行セルにおけるテキストの配置を指定します。
•

T ＝上寄せ•C ＝センタリング（デフォルト）•

B ＝下寄せ• 可視……コントロールをユーザに対して可視にするかどうかを指定します。［式］項
目からズームして、コントロールをいつユーザに対して可視にするかを指定した式を定義します。詳細は、「GUI コントロール特性シートの可視特性」を参照してください。
• 背景……現行フォームの背景イメージとして表示されるファイルの名前を選択するには、［背景］特性からズームします。
• 幅……スタティックテーブルにあるセルのデフォルト幅の大きさを指定します。
幅特性は、固定幅が「Yes」に設定されている場合にのみ有効となります。

フレームセットフォーム
フレームセットは、ブラウザウィンドウを複数のフレームに分割して表示する、高度なインターネット文書を作成するときに使用します。各フレームにはソースがそれぞれ異なる、独立した HTML ページが表示されます。

図 10-3 HTML フレームセットフォーム

614

リファレンス
Magic eDeveloper V9 Plus

フレームセットフォーム
フレームセットには、各フレームの URL と名前を定義します。各フレームの内容は、フレームセットに定義されている URL から最初に読み込まれます。フレーム名を使用する
ことにより、ハイパーリンクでリンクされているフレームの内容や送信アクションで送られたフレームの内容を別のフレームで表示することが可能になります。この方法により、アプリケーションでは、サイトの操作メニューや会社ロゴなどの表示部分を持続的に表示しておくことができるため、アプリケーションのどのページにもそれらの部分を組み込んで毎回読み込ませる必要がなくなります。
HTML フレームセットはその性質上、階層構造をとっています。各フレームセットには別のフレームセットを含めることができ、それを同じフレームの一部として、あるいは
そのフレームの URL が参照するページとして定義します。
フレームセットは、フォームテーブルで 1 以上のクラス値を指定しなければなりません。
フレームセットフォームエディタにアクセスするには、フォームテーブル内のフレーム
セットフォームエントリの名前をズームします。

フレームセットフォーム特性
フォーム特性シートに表示されるフレームセット形式フォームの特性を以下に記載します。

モデル• モデル……継承されない特性を設定し直したり、フォームモデルのすべての特性の継承を排除したりすることができます。さらに、別のモデルを選択することもできます。

詳細• フォーム名……フォームテーブルの［名前］欄の名前。この名前はフォームの表示時に、ブラウザのタイトルバーに表示されます。
これに対応する HTML コードは以下のようになります。
<TITLE> フ ォ ーム名 </TITLE>• フレームの間隔……フレーム内のすべてのフレーム枠の幅をピクセル単位で指定します。この特性は、［境界線の表示］が「No」に設定されている場合には無効となります。デフォルト設定は「1」です。
これに対応する HTML コードは以下のようになります。
<FRAME SET framespacing=n...>• 相対サイズ……相対サイズを「Yes」に設定すると、フレームセット内にあるすべてのフレームのサイズは、ブラウザウィンドウまたはコンテナフレームのサイズに対する割合で定義されます。ユーザがブラウザウィンドウをサイズ変更すると、すべてのフレームもその変更に合わせてサイズ変更されます。
相対サイズを「No」に設定すると、すべてのフレームのサイズはピクセル単位で定義されます。この設定では、ブラウザウィンドウをサイズ変更してもフレームのサイズには影響しません。デフォルト設定は「Yes」です。
相対サイズが「Yes」の場合は、対応する HTML コードは以下のようになります。
<FRAME SET … rows/cols=”nn%,nn%,…,*”>
相対サイズが「No」の場合は、対応する HTML コードは以下のようになります。
<FRAME SET … rows/cols=”nn,nn,…,*”>• 境界線の表示……このフレームセット内のフレーム枠を表示するかどうかを指定します。
「No」を選択すると、フレームセット内のすべてのフレームは枠なしでブラウ
ザ内に表示されます。デフォルト設定は「Yes」です。
これに対応する HTML コードは以下のようになります。
<FRAME SET frameborder=0/1...>
リファレンス
Magic eDeveloper V9 Plus615

第 10 章 - 出力フォーム

入力• コンテキスト変数……コンテキスト変数値特性からズームし、このフォームのコンテ
キスト変数を［コンテキスト変数］ダイアログで指定します。

表示• HTML 内部属性……HTML スタイルテーブルから、コントロールのタグに追加する属性を選択します。あるいは、式項目から式テーブルにズームして、HTML スタイルを指定した式を選択します。
フォーム上の要素を標準化することができます。これは、HTML スタイルテーブルに特性を定義し、各コントロールの HTML 内部属性特性でそれを参照することによって行います。
ズームして、HTML スタイルテーブルからスタイルを選択します。

位置とサイズ• 幅……フォームの幅を指定できます。
• 高さ……フォームの高さを指定できます。

フレームセットのコマンドパレット［コマンド］メニュー、ショートカットメニュー、またはフレームセットの［コマンド］
パレットを使用して、フレームセットフォームのフレームを編集することができます。
フレームセットの［コマンド］パレットには、フレームまたはフレームセット全体を編集するためのコマンドが含まれています。
フレームセットの［コマンド］パレットの各ボタンについての説明は以下のとおりです。
コントロール

説明
縦に分割
カーソルを縦分割カーソルに変更するにはこのボタンをクリックします。フレームを左右 2 つに分割するときは、この状態で任意のフレー
ムをクリックします。
横に分割
カーソルを横分割カーソルに変更するにはこのボタンをクリックするフレームを上下 2 つに分割するときは、この状態で任意のフレームをクリックします。
フレームセット選択
選択したフレームのコンテナフレームを選択します。
フレームセット表示
選択したフレームのコンテナフレームを選択せずに表示します。
縦に均等分割選択したフレームを縦方向に、2 つの全く同じフレームとして分割します。
横に均等分割選択したフレームを横方向に、2 つの全く同じフレームとして分割し
ます。
縦に３分割
選択したフレームを縦方向に、3 つの全く同じフレームとして分割し
ます。

616

リファレンス
Magic eDeveloper V9 Plus

フレームセットフォーム
コントロール

説明
横に３分割選択したフレームを横方向に、3 つの全く同じフレームとして分割します。
ハイパーリンク
選択したフレームと、Magic プログラムや URL との間にハイパーリンクを確立します。
マーク解除
選択したフレームの選択状態を取り消します。
枠なし
ブラウザ上でのフレーム境界線の表示と非表示を切り替えます。デ
フォルトでは、境界線が表示されます。
相対サイズ［相対サイズ］フォーム特性を Yes に設定します。
削除
フォーム上に表示されている選択したフレームまたはフレームセットを削除します。
区切りなし表示
フレームセットとフレームセット間の区切線を消去します。
元に戻す
直前のコマンドの操作内容を取り消します。
やり直し［元に戻す］コマンドによって取り消された直前のコマンドの操作内容を繰り返します。
HTML ファイル書込HTML フォーム形式でフレームセットデザインファイルを保存します。
ブラウザで表示ブラウザを起動してフレームセットデザインを表示します。

上記以外のコマンドはすべて、［HTML コマンド］パレットのコマンド、または第 9 章「表示フォーム」の［GUI コマンド］パレットのコマンドと同じです。

フレームセットのフレームパレット
フレームセットの［フレーム］パレットはあらかじめ定義された多数の標準フレームセッ
トデザインで構成されており、フレームセットの編集を開始するときにはこれらのデザインを利用できます。元になるフレームセットデザインを選択した後、そのデザイン内
でフレームの追加、削除、サイズ変更を行い、フレームセット内のフレームごとに特性を定義することができます。
フレームセットの設計を開始するとき、あるいは現在フォーム上にあるフレームセット
デザインを置き換えるときは、フレームセットの［フレーム］パレットにある任意のフ
レームセットを選択します。フレームセットの［フレーム］パレットからフレームセッ
トデザインを選択すると、現在フォーム上にあるフレームセットデザインが自動的に置き換えられる点に注意してください。自動的に置き換えられたデザインを元に戻したい
場合は、フレームセットの［コマンド］パレットの［元に戻す］ボタンを選択するだけ
で前のフレームセットに戻ります。

フレームセットコントロール特性
フレームセット内にある各フレームのコントロール特性は以下のとおりです。
リファレンス
Magic eDeveloper V9 Plus

617

第 10 章 - 出力フォームモデル• モデル……継承されない特性を設定し直したり、フォームモデルのすべての特性の継承を排除したりすることができます。さらに、別のモデルを選択することもできます。

詳細• フレーム名……フレームの名前を定義します。フレーム名は、別のフレームでハイ
パーリンクや送信ボタンをクリックしたときに、要求された対象としてそのフレームを参照する場合に使用します。
これに対応する HTML コードは以下のようになります。
<FRAME name="..."...>• スクロール……表示する HTML コンテンツがフレームより大きい場合に、そのフレー
ムに水平または垂直スクロールバーを表示するかどうかを指定します。デフォルト設
定は「No」です。
これに対応する HTML コードは以下のようになります。
<FRAME scrolling=no...>• サイズ変更……フレーム枠のクリックとドラッグによるフレームのサイズ変更を可能にするかどうかを指定します。ドラッグする枠に隣接するどのフレームもこの特性
が「Yes」に設定されている必要があります。デフォルト設定は「No」です。
これに対応する HTML コードは以下のようになります。
<FRAME noresize...>入力• ハイパーリンク……フレームの内容がある参照先を指定します。ハイパーリンクを定義するには、ハイパーリンク値特性をズームするかダブルクリックして［ハイパーリ
ンク］ダイアログを開きます。選択したハイパーリンクがフレーム内部に表示されます。
これに対応する HTML コードは以下のようになります。
<FRAME src=”...”...>

表示• HTML 内部属性……HTML スタイルテーブルから <FRAME> タグに追加する属性を選択します。［式］項目から式テーブルにズームすることにより式を作成することもできます。

HTML マージフォーム
HTML マージフォームは、Magic タスクからのデータを、あらかじめ定義された HTML
テンプレートファイルとマージするときに使用します。
Web オーサリングツールを使用して HTML マージフォームを設計するときは、フォーム
テーブルの名前欄からズームします。この Web オーサリングツールは、［動作環境］ダ
イアログの［アプリケーションサーバ］タブの［Web オーサリングツール］欄で指定します。

HTML マージフォーム特性
HTML マージフォームの各特性についての説明は以下のとおりです。

618

リファレンス
Magic eDeveloper V9 Plus

HTML マージフォームモデル• モデル……継承されない特性を設定し直したり、フォームモデルのすべての特性の継承を排除したりすることができます。さらに、別のモデルを選択することもできます。

詳細• HTMLファイル……HTMLマージフォームを利用したデータ出力コマンドで使われる
テンプレートの名前を定義します。Magic の論理名も使用できます。ファイルを［ファイルを開く］ダイアログから選択するには、このカラムをズームします。
定義式でファイル名を動的に指定する場合は、式欄からズームして式ーテーブルに入り、ここでファイル名を指定する式を定義してください。
• トークン前付符号……テンプレート内のマージタグで使われる前処理を定義します。
マージメカニズムでは、この文字列で始まるタグを検索し、HTML ファイル内のタグに従って値を置換します（デフォルト：<!$）。
• トークン後付符号……テンプレート内のマージタグで使われる後処理を定義します。
マージメカニズムでは、この文字列で終わるタグを検索し、HTML ファイル内のタグに従って値を置換します（デフォルト：>）。
［トークン前付符号］と［トークン後付符号］のデフォルト値は、Magic.ini ファイルの ［MAGIC_DEFAULTS］セクションにて指定することができます。
［MAGIC_DEFAULTS］
MergePrefix = XXXXX…… トークン前付符号
MergeSuffix = YYYYY…… トークン後付符号
この指定が無効か空白が指定されている場合のデフォルト値は、「<!$」と「>」です。
• タグテーブル……関連付けられている HTML テンプレート内の該当するマージタグと突き合わせ、それらに置き換えるデータ要素を定義します。詳細は、HTML テンプレー
トファイルのタグに関する節を参照してください。
• 入力項目……この特性をズームして［入力項目］一覧を開き、HTML ページでイベン
トハンドリングに使用する項目を定義できます。［入力項目］一覧のカラムは以下のとおりです。
•

項目名……HTML マージフォームでは、［項目名］を使用してイベントハンドリ
ングに利用できる HTML 入力項目の名前を指定します。

•

式……［式］項目には、式テーブルで定義されている式番号が入ります。この項目では、HTML マージフォームに対する項目名を指定します。

•

イベント……［イベント］には、入力項目エントリで定義されたイベントハン
ドラの数が示されます。イベントエントリをズームしてマージイベントハンド
ラテーブルを開くことにより、HTML ページ内の入力項目でイベントが発生したときに有効にするイベントハンドラを定義できます。

• フォーム名……フォームテーブルの［名前］欄の名前。この名前はフォームの表示時に、ブラウザのタイトルバーに表示されます。これに対応する HTML コードは以下のようになります。
<TITLE> フ ォ ーム名 </TITLE>• XML 出力……XML
ファイルの出力時に特殊記号（&<>'"）をキーワード（&amp;&lt;&gt;&apos;&quot;）に変換して出力するか否かを指定します。
•

Yes……マージされた文字値は、正規の XML 値に変換されます。

•

No ……変換処理を行いません。

式を使用した場合、式の評価はタスク開始時に 1 度だけ行われます。

リファレンス
Magic eDeveloper V9 Plus

619

第 10 章 - 出力フォーム

位置とサイズ• 左辺位置……フォームにあるフレームの左端の位置を指定します。式テーブルにズー
ムして、フォームのフレームの左端の座標を返す式を入力することにより、実行時に値を指定できます。
• 上辺位置……フォームにあるフレームの上端の位置を指定します。式テーブルにズー
ムして、フォームにあるフレームの上端の座標を返す式を入力することにより、値を実行時に指定できます。
• 幅……フォームを表示するウィンドウの幅を指定します。
• 高さ……フォームを表示するウィンドウの高さを定します。

マージイベントハンドラ
マージイベントハンドラテーブルで定義できる組み込みイベントハンドラ（入力項目テーブルの［イベント］カラムからアクセスする）についての説明は以下のとおりです。

620

イベントハンドラ

説明

OnAbort

ユーザがイメージの読み込みを（たとえばリンクや［中断］ボタ
ンをクリックすることにより）中止すると、Abort イベントが発生します。

OnBlur

フォーム要素がフォーカスを失ったり、ウィンドウやフレームがフォーカスを失うと、Blur イベントが発生します。Blur イベント
は、Blur メソッドの結果として、あるいはユーザが別のオブジェ
クトウィンドウをマウスでクリックしたり、キーボードを操作したときの結果として発生することがあります。

OnChange

HTML 入力項目がフォーカスを失ったり、その値が修正されたりすると、Change イベントが発生します。ユーザによるデータの修正後にそのデータを検証するには、OnChange イベントハンドラを使用します。

OnClick

フォーム上のオブジェクトをクリックすると、Click イベントが発生します。入力項目、リンク、イメージの場合、OnClick イベ
ントハンドラは「False」を返すことにより、通常は Click イベントに関連付けられているアクションを取り消すことができます。

OnError

文書やイメージの読み込みが原因でエラーが生じると、Error イベ
ントが発生します。

OnFocus

ウィンドウ、フレーム、フレームセットがフォーカスを受け付けたり、フォーム要素が入力フォーカスを受け付けると、Focus イ
ベントが発生します。Focus イベントは、Focus メソッドの結果として、あるいはユーザがオブジェクトウィンドウをマウスでクリックしたり、キーボードを操作したときの結果として発生することがあります。項目内部で選択した場合は、Focus イベントではなく Select イベントとなります。

OnMouseOut

OnMouseOut イベントは、マウスポインタがある領域（クライアントサイドイメージマップ）やリンク内から離れると発生します。マウスをクライアントサイドイメージマップのある領域から別の領域に移動すると、移動前の領域については OnMouseOut
を、また移動後の領域については OnMouseOver を受け取ることになります。

OnMouseOver

OnMouseOver イベントは、あるオブジェクトや領域外からその上にマウスポインタが移動するたびに発生します。マウスをクライ
アントサイドイメージマップのある領域から別の領域に移動すると、移動前の領域については OnMouseOut を、また移動後の領域については OnMouseOver を受け取ることになります。
リファレンス
Magic eDeveloper V9 Plus

HTML マージフォーム
イベントハンドラ

説明

OnReset［リセット］ボタンや［再読込］ボタンをクリックしてフォームをリセットすると、リセットイベントが発生します。

OnSelect

Select イベントは、テキスト項目やテキスト領域項目内にあるテキストの一部を選択するときに発生します。

OnDblClick

フォーム上のオブジェクトをダブルクリックすると、Doulble
Click イベントが発生します。

OnHelpF1 キーを押すと、Help イベントが発生します。

OnLoad

フォームが読み込まれると、Load イベントが発生します。

OnUnload

フォームが除去されると、Unload イベントが発生します。

OnKeyPress

任意のキーを押すと、Key Press イベントが発生します。

組み込みイベントハンドラの他に、開発者が定義したイベントハンドラも HTML テンプ
レートファイルで定義することが可能です。それらのイベントハンドラは以下の規則に従って定義します。
On < イ ベン ト 名 >=UserCommand（‘Magic Command’）

各部分の説明は次のとおりです。
•

イ ベン ト 名……ハンドラを有効にするイベントの名前•

UserCommand……そのイベントを処理する Magic JavaScript 関数•

Magic Command……Magic Web Onlile 規則に準拠したコマンドの内容。

日本語版では、「マージイベントハンドラ機能」をサポートしていません。

マージコマンドテーブル［マージコマンド］テーブルのカラム（マージイベントハンドラテーブルの［コマンド］
カラムからアクセスする）についての説明は以下のとおりです。
• コマンド……イベントハンドラを有効にする入力項目でイベントが発生したときに実行されるコマンドを指定します。［コマンド］項目をズームしてマージコマンド一
覧を開くことができます。
• 項目名……コマンドの引数として使われる項目名を指定します。
• 式……式テーブルからの式を使用して、コマンドの項目名を動的に指定します。
• 値……コマンドのパラメータ値を指定します。各コマンドのパラメータの詳細については、マージコマンド一覧を参照してください。
• ハイパーリンク……ハイパーリンクコマンドは、Magic プログラムや URL に対する呼び出しをイベントハンドラから有効化します。マージコマンドテーブルで「Hyperlink」
コマンドを指定した後、［ハイパーリンク］カラムから［ハイパーリンク］ダイアロ
グにズームし、呼び出すプログラムまたは URL、および適切なパラメータを指定します。
• 条件……ブラウザ内の Magic アプレットによるコマンド実行のための条件を含んだ、文字列式を表示します。文字列には、入力項目の名前や比較する値などを含めることができます。

リファレンス
Magic eDeveloper V9 Plus621

第 10 章 - 出力フォーム

マージコマンド一覧
マージコマンド一覧で選択可能なコマンド（マージコマンドテーブルの［コマンド］項
目からアクセスする）は以下のとおりです。
コマンド

パラメータ

説明

UpDate Field

項目名、値

個々の項目を値で更新します。選択リ
スト、チェックボックス、ラジオボタ
ンなどの値を設定するときに使用します。

Disable Field

項目名、値

指定した項目を書き込み不可にします。

Move Focus

項目名指定された項目にカーソルを移動します。

Hyperlink

1. アプリケーション名、プログラム名、引数
2. URL アドレス（ターゲット）

1. 指定した Magic プログラムを呼び出し、受け取った引数をそれぞれ更新します。
2. 指定した URL を呼び出します。

Alert

警告文字列

警告文字列を含んだダイアログを表示します。

Status line

ステータス文字列

指定した文字列をステータスラインに表示します。

UpDate Image

ファイル名、イメージソース

個々のイメージを新しいイメージソースで更新します。

Disable Field

項目名指定した項目を書き込み不可にします。

Set Color

項目名、色指定した項目の色を設定します。

Set ReadOnly

項目名、論理型

指定した項目を、論理型引数の値に応じて読み取り専用に設定します。

Set BG Color色

文書の背景色を、指定した RGB で設定します。

Set CheckBox

項目名、論理型

指定したチェックボックスを、論理型
引数に応じて選択または選択解除のいずれかの状態に設定します。

Set Selection List

項目名、文字列 1、文字列 2……

指定した選択リストの値を設定します。

Set Selection

項目名、数値（最小は 1） 選択リストの現在の値を設定します。

Set Radio Selection

項目名、数値（最小は 1） ラジオボタンの現在の値を設定します。

日本語版では、「マージコマンド機能」をサポートしていません。

HTML テンプレートファイルのタグ
HTML タグテーブルは、関連付けられている HTML テンプレート内の該当するマージタ
グと突き合わせて置き換えるデータ要素を定義するときに使用します。HTML タグテー
ブルを開くには、HTML マージ特性シートの［タグ］テーブル特性の横にある、四角形のボタンをクリックします。
データ出力コマンドを実行時に選択すると、変数／式および書式からのタグと表示値がマージメカニズムに送られます。マージメカニズムがテンプレート内で表示値のタグを検出できない場合、タグとその値は無視されます。タグが繰り返し領域に埋め込まれていない場合は、タグの値がタグそのものに置き換えられます。繰り返し領域に埋め込まれていないタグに値が 2 回以上送られると、2 番目の値は使用されません。

622

リファレンス
Magic eDeveloper V9 Plus

HTML マージフォーム
埋め込まれているタグの場合は、データ出力コマンドを実行するたびに繰り返し領域の内容が複写され、タグは値で置き換えられます。
IF ブロックの先頭にあるタグ（MGIF タグの一部）の場合、そのタグの値は、この IF ブ
ロックを出力先にコピーするかどうかを指定する論理値とみなされるか、あるいは ELSE
ブロック（存在するときは）とみなされます。IF ブロックは繰り返し領域の内側に置くことができます。これは、このタグに複数の値があり、「True」ごとに IF ブロックが複写されることを意味します。
非論理値がデータ出力コマンドによって MGIF タグに「属する」タグに送られると、値は「True」とみなされます。
マージメカニズムに対する出力として送られるデータ文字列の後書きブランクは、すべて削除されます。
タグテーブルには以下のカラムがあります。
• タグ名……HTML テンプレート内のデータタグと突き合わせるデータ要素の名前を指定します。選択した HTML マージファイルに対してテンプレートの名前が明示的に指定されている場合は、ズームすることにより、その HTML テンプレートファイル内にあるタグのタグ名一覧からタグ名を選択できます。
• 名前（式）……タグ名を定義式で動的に指定する場合は、ここから式テーブルにズー
ムして定義してください。
• 項目……タグを置き換える値が入っている項目を定義します。BLOB 項目だけは選択できません。使用可能な項目の一覧から項目を選択するときはズームします。
• 式（データ項目）……タグを置き換える値が入っている式を定義します。
• 名前……選択した項目または式の名前を表示します。
• 書式……項目または式のいずれかの値をテンプレートにマージするときに使用する書式を定義します。項目に対して定義されている書式、式のデフォルト書式のいずれかが書式のデフォルトとなります。
• 式（書式）……書式を、実行時に評価される式として定義します。

HTML マージのタグ
Magic のマージタグが通常の ASCII 文字列として保存されている限り、テンプレートファ
イルはどのタイプでも構いません。
HTML マージの各タグの一般的な形式は次のとおりです。
{ トークン前付符号 }{Token［_name］}{ トークン後付符号 }前付トークンと後付トークンは、入出力テーブルのエントリごとに定義します。デフォ
ルトでは、前付トークンと後付トークンはそれぞれ <!$ と > として定義されています。
タグの {Token［_name］} の部分は、以下のいずれかになります。
•<!$MG_name>……<!$MG_name> は、［HTML マージ特性］ダイアログのタグテーブ
ル内で定義されたデータ要素と、実行時に同一の名前で一致したデータタグ。一致が検出されると、データ出力コマンドの実行時にその値がタグと置き換えられることになります。

• <!$MGREPEAT>……<!$MGREPEAT> タグは、繰り返し領域の先頭を定義します。繰
り返し領域は、データ出力コマンドごとに複写と処理が行われるため、データ行の数が不明な場合でも処理を実行できます。このタグは出力からは除去されます。
• <!$MGENDREPEAT>……<!$MGENDREPEAT> タグは、繰り返し領域の末尾を定義します。このタグは出力からは除去されます。
• <!$MGIF_name>……<!$MGIF_name> タグは、IF ブロックの先頭を定義します。指定
した名前は、［HTML マージ特性］ダイアログのタグテーブル内で定義されたデータ
要素と突き合わされます。データは論理値として評価されます。このデータが「True」
であれば、IF ブロックの残りの部分が処理されます。それ以外の場合は ELSE ブロッ
クが処理されます。データが論理値でないと評価されると、そのデータは「True」とみなされます。このタグは出力からは除去されます。
リファレンス
Magic eDeveloper V9 Plus623

第 10 章 - 出力フォーム• <!$MGELSE>……<!$MGELSE> タグは、ELSE ブロックの先頭と、IF ブロックの末尾（ELSE ブロックより前になければならない）を定義します。ELSE ブロックは、IF ブ
ロックの名前データ値が「False」と評価された場合に処理されます。このタグは任意指定です。このタグそのものは出力からは除去されます。
• <!$MGENDIF>……<!$MGENDIF> タグは、IF ブロックの末尾、または ELSE ブロック（もしあれば）の末尾を定義します。<!$MGIF_name> が存在する場合、このタグは必須。このタグは出力からは除去されます。
• <!$MGINCLUDE>……<!$MGINCLUDE> タグを使用すると、マージ処理中に HTML
ファイル全体を組み込むことができます。開始タグの後ろに、組み込むファイルの名前を指定します。ファイル名としてタグそのものを指定できます。組み込み処理は、ファイルを完全にマージした後で実行されます。
• <!$MGENDINCLUDE>……<!$MGENDINCLUDE> タグは、組み込みコマンドの末尾を定義します。MGINCLUDE タグが存在する場合、このタグは必須です。
例：<!$MGINCLUDE> ¥tmp¥t1.html <!$MGENDINCLUDE>
ファイル t1.html を現在の HTML テンプレートファイルに組み込みます。
<!$MGINCLUDE> <!$MG_T1> <!$MGENDINCLUDE><!$MG_T1> タグで参照しているファイルを現在の HTML テンプレートファイルに組
み込みます。

HTML マージの構文規則• <!$MGREPEAT>、<!$MGENDREPEAT> の各タグの数と順序は一致している必要があります。
• <!$MGIF_name>、<!$MGELSE>、<!$MGENDIF> の各タグの数と順序は一致している
必要があります。
• <!$MGELSE> タグは、<!$MGIF_name> と <!$MGENDIF> の組み合わせの間にのみ入れることができます。
• REPEAT ブロックと IF-ELSE-ENDIF ブロックはネスト指定できます。

HTML マージの実行時の動作
データ出力コマンドを実行時に選択すると、データ項目／式および書式からのタグと表示値がマージユーティリティに送られます。マージユーティリティがテンプレート内で表示値のタグを検出できない場合、タグとその値は無視されます。タグが繰り返し領域に埋め込まれていない場合、マージユーティリティはタグの値をタグそのもので置き換えます。繰り返し領域に埋め込まれていないタグに値が 2 回以上送られると、2 番目の値は使用されません。
埋め込まれているタグの場合は、データ出力コマンドを実行するたびに繰り返し領域の内容が複写され、タグは値で置き換えられます。
IF ブロックの先頭にあるタグ（MGIF タグの一部）の場合、そのタグの値は、この IF ブ
ロックを（または、存在するときは ELSE ブロックを）出力先にコピーするかどうかを指定する論理値とみなされます。IF ブロックは繰り返し領域の内側に置くことができます。これは、このタグに複数の値があり、「True」ごとに IF ブロックが複写されることを意味します。
データ出力コマンドの実行時に、MGIF タグに属しているタグへ非論理値が送られると、その値は「True」とみなされます。

624

リファレンス
Magic eDeveloper V9 Plus

Web Online ページ

HTML ファイルマージの例
マージメカニズムを利用した簡単な例を以下に示します。

マージのパラメータ
データ要素

値

numberCounter（0）IsEvenCounter（0）MOD 2 =0

ファイルの内容（マージ前）
コマンド

引数

<!$MGREPEAT><!$MG_number><!$MGIF_IsEven>Even<!$MGELSE>Odd<!$MGENDIF><!$MGENDREPEAT>

ファイルの内容（マージ後）
numberEven/Odd

1

Odd

2

Even

3

Odd

4

Even

5

Odd

6

Even

7

Odd

8

Even

9

Odd

10

Even

Web Online ページ
Magic Web Online ページとは、標準の Web ブラウザで動作する Magic アプリケーションの対話型ページのことで、エンドユーザにはオンラインアプリケーションのように見えます。たとえば、Magic Web Online を利用している HTML データ入力アプリケーション
は、イベントや操作のたびに HTML ページの送信および取得を行うことなく、入力デー
タ項目を更新できます。
Magic Web Online の機能は、フォームの項目ごとに Magic のロジックが実行される Magic
オンラインデータ入力処理に似ています。この機能により、明示的な要求を使わずに項目や他の要素をその場で更新、検証できます。項目レベルでイベントハンドリングを実行することで、使用頻度が高くて表示が重いページモードを回避できます。HTML ペー
ジで広く使われている「送信」ボタンは不要です。

リファレンス
Magic eDeveloper V9 Plus625

第 10 章 - 出力フォーム

Web Online 応答フォーム
Web Online 応答フォームは、Web Online ページが呼び出した Magic プログラムに対する応答として実行するコマンドを指定するときに使用します。

Web Online 応答フォーム特性
Web Online 応答フォーム特性シートは、データ出力コマンドの実行時に Web Online 応答
フォームとして使用される HTML テンプレートファイル名や式を指定するときに使用します。Web Online 応答フォーム特性シートを開くには、フォームテーブルの名前欄のところで Ctrl+P キーを押します。
日本語版では、「Web Online 機能」をサポートしていません。

リクエスタのアップロード機能
インターネットリクエスタはファイルをアップロードし、Magic プログラムはそれを受信することができます。これらを可能にするには HTML ファイルを以下のように定義してください。
1. form タグの method 属性 は、post にしてください。
例）<form action=”/scripts/mgrqispi9x.dll” method=”post”>
2. form タグ には、以下のような属性を含めてください。
ENCTYPE=”multipart/form-data”
例）<form action=”/scripts/mgrqispi9x.dll” method=”post”
ENCTYPE=”multipart/form-data”>
3. フォームに type 属性が file の input タグを追加してください。このタグは、ユーザがローカルのファイル名を入力するエディットコントロールおよび、ファイルを選択するダイアログを表示するためのプッシュボタンを作成します。
この input タグに name 属性を定義してください。
例）<input type=”file” name=”MyFile”>
4. ファイルを Magic プログラムへパラメータとして渡すため、type 属性が file の input
タグの name 属性を、type 属性が hidden、name 属性が ARGUMENTS となっている
input タグに追加してください。
例）<input type=”hidden” name=”ARGUMENTS” value=”var1,var2,....,MyFile,...varn”>

626

リファレンス
Magic eDeveloper V9 Plus

リクエスタのアップロード機能
5. 対応する BLOB 項目は、起動された Magic プログラム内でパラメータとして定義してください。この項目に、更新ファイルの内容が入ります。
項目の内容は、Blb2File 関数で物理ファイルに変換できます。
Microsoft の制限により、大きなファイル（3MB や 4MB）を送信しようとしたときに、Winsock のエラー 10055 が発生して、正しくファイルを送信できない場合があります。
そのため、コールリモートコマンド、ファイルのアップロードなどにおいて
BLOB 項目にファイルのデータを入れて、パラメータとしてやりとりする場合、ファイルサイズは 1MB 以内にされることを推奨します 。ファイルサイズが大きくなる場合、FTP などの代替手段を使用されることをご検討ください。
大きな BLOB 項目を転送する場合、ファイルサイズに応じて MGREQ.INI のCommTimeout を設定する必要があります。この値は、あらかじめ FTP などでファイルの転送にかかる時間を計測して、その値 にプラスアルファを加えた値に設定してください。
しかし、この値は、内部的な通信のリトライの間隔となるため、あまり大きな値を設定することは推奨できかねます。そのため、特に通信回線が細い場合など、この値が 60 秒以内で転送できるサイズにとどめることを推奨します。

リファレンス
Magic eDeveloper V9 Plus

627

第 10 章 - 出力フォーム

入出力フォーム
入出力フォームのクラス値は 1 以上で、インタフェースタイプとしてテキスト形式、GUI
形式のいずれかを利用できます。
フォームエディタには、テーブル内で同じクラスに属するすべてのフォームが表示されます。そのためレポートに関しては、関連付けられているヘッダ、詳細、フッタなどのフォームがすべてラベル付きの区切り文字と一緒に表示されます。
テキスト形式フォームは、クラス値 1 以上においてのみサポートされています。テキス
ト形式フォームに適用されない特性は無効になります。
GUI 形式フォーム特性の［寸法単位］を「D= ダイアログ」に設定した場合、Magicのバージョンにより出力結果が異なる場合があります。［寸法単位］は、「S= センチ」
か「I= インチ」を指定してください。

GUI テーブルコントロールの機能
GUI による印刷機能を利用することで、テーブルコントロールの印刷が可能になります。
これにより、複数行形式の帳票の作成が簡単かつすばやく実行できます。
テーブルコントロールは、GUI 出力フォームに追加することが可能です。以下に示すテー
ブルコントロールの特性を利用すれば、グラフィカルな印刷が簡単に行えます。
• 固定サイズテーブル……有効な値は「Yes」または「No」です。
「No」がデフォルトです。
•

No……テーブルにはレコード行が 1 つしかありません。この行はレコードごとに繰り返されます。テーブルの実際のサイズは、ページに印刷されるレコードの数によって異なります。

•

Yes……テーブルはフォームに定義されているサイズで印刷されます。

• 全ページタイトル ……有効な値は「Yes」または「No」です。
「Yes」がデフォルトです。
•

No……テーブルヘッダはテーブルの先頭だけに印刷されます。

•

Yes……出力ページすべてにテーブルヘッダが印刷されます。

テーブルの最初のレコードを印刷する時点で、テーブルヘッダとフォーム上にある他のすべてのコントロールも同時に印刷されます。
テーブルの一部ではないコントロールは、最初のレコードとヘッダを印刷する時点で１度だけ印刷されます。これらのコントロールの位置により、現在印刷しているテーブルの最小サイズが設定されます。テーブルの長さは、フォーム上で一番最後に位置するコントロールが十分に入るだけの長さとなります。

628•

最初のレコードの後に続くレコードを印刷する場合、それらのレコードは直前に印刷されたレコードに隣接して印刷されます。フォーム内の他のコントロー
ルはそれ以上印刷されません。また、レコード数に応じてテーブルの長さが大きくなります。

•

テーブルのレコードを印刷中にページ終了条件が検出されると、次のアクションが実行されます。
•

テーブルの終了行が印刷されます。次のページにテーブルのヘッダ（およびフォーム内にある他のすべてのコントロール）が繰り返し印刷されます。これは、現在印刷しているテーブルでの最初のレコードの印刷時と同じです。

•

テーブルのヘッダは、ページ終了条件で繰り返し印刷される他のヘッダがあれば、それらすべてより後に出力されます。

•

別のフォームを印刷する際に、直前に印刷していたフォームにテーブルが含まれていた場合は、そのテーブルがクローズされてテーブルの終了行（複数の場合もある）が印刷されます。

•

別のフォームを印刷する際に、直前に印刷していたフォームにテーブルが含まれていた場合は、新しいフォームはそのテーブルを含むフォームの後で印刷されます。これはテーブルを含むフォームのレコードが途中で終リファレンス
Magic eDeveloper V9 Plus

入出力フォーム
わっている場合でも同様であります。このような場合、テーブルの終了行（複数の場合もある）はテーブルを含むフォームに印刷されます。

複数行編集の印刷
可変長のテキスト形式データを持つクラス値が 1 以上のフォームは、複数行エディット
コントロールの動的サイズ調整機能を利用して印刷することが可能です。
GUI 出力フォームの場合、［フォーム拡大］を「O=1 ページ」または「M= 複数ページ」に設定します。このコントロールは、印刷時に、コントロールのフレーム内にテキスト全体が収まるようにサイズを変更します。複数行エディットコントロールの下に位置する各コ
ントロールは、複数行エディットコントロールとの当初の距離を保ちながら下方に移動します。フォームのサイズも、複数行エディットコントロールの増えた行が収まるように拡大します。
• O＝1ページ……このコントロールによって拡大できるフォームの最大サイズが1ページ分になります。
• M ＝複数ページ……エディットコントロールのすべての行が収まるまで、フォームは複数ページにわたって拡大されます。
テーブル内の拡大したコントロールは、フォームにテーブル外の拡大コントロー
ルがない場合にのみ、複数ページに印刷されます。テーブル外に拡大コントロー
ルがある場合は、［フォーム拡大］は「O=1 ページ」を設定したときと同じ動作をします。
［フォーム拡大］が「M= 複数ページ」の場合、プレビュー機能でリッチエディッ
トを拡大して出力できません。
テキスト形式のフォームでは、選択できますが機能しません。

プリンタ属性サポート
GUI 印刷機能として、フォントやカラーを利用した GUI 出力フォームの WYSIWYG（What
You See Is What You Get）印刷をサポートしています。色は、モノクロプリンタではグ
レー階調に変換されます。
入出力ファイルのメディア欄は［G ＝ GUI 形式プリント］として定義します。これにより、入出力ファイルの出力が Windows プリンタドライバに送られ、標準の Windows 印刷
が有効になります。
Magic のプリンタ属性サポートを利用すると、印刷出力の表示状態を簡単に制御できます。プリンタ属性サポートは、テキスト形式の入出力ファイルのみを対象にしています。
使用するプリンタがサポートしているフォント（明朝体、ゴシック体など）や字体（ボールド、イタリックなど）であれば出力することができます。
グラフィカルプリンタに True Type フォント以外のフォントを使用して出力すると、該当するフォントがそのプリンタで使用できない場合は、文字が正常に印刷されないことがあります。

プリンタの設定
プリンタテーブルで定義されている個々のプリンタについて、字体／フォントの組み合
わせごとにどのプリンタ制御コードが使われているか、またどの色がどの印刷スタイルを表しているかを、Magic に認識させる必要があります。この情報は、「プリンタ属性
ファイル」および「プリンタコマンドファイル」の 2 つのファイルに格納されます。

リファレンス
Magic eDeveloper V9 Plus629

第 10 章 - 出力フォーム

プリンタ属性ファイル
プリンタ属性ファイルには、Magic の論理印刷スタイルのリストが含まれます。この印
刷スタイルは実行時に実際のプリンタ制御コードに展開されます。スタイルの展開は実行時に行われるため、アプリケーションを作成するときは個々のシステムの物理プリン
タに関してあらかじめ知っておく必要がありません。必要とされる情報はすべて、アプ
リケーションのインストール時に Magic の環境設定に収められます。
それぞれの論理印刷スタイルに関しては、プリンタ属性ファイルでそのスタイルと実際のプリンタ制御コードとの対応付けが示されています。これらの印刷スタイルはプリン
タコマンドファイルに格納されている実際のプリンタ制御コードに変換されます。複数の印刷スタイルを組み合わせて、1 つの印刷スタイルを作成することも可能です。
さらに、フォームエディタで印刷スタイルを表すときに、使用する色番号も印刷属性ファ
イルに登録しておくことができます。
スタイルの説明にある名前は、アプリケーションがその論理印刷スタイルを識別するときに使われます。
このテーブルは他のテーブルと同様、設定のメニューから変更できます。

プリンタコマンドファイル
プリンタコマンドファイルには、印刷スタイルごとの実際のプリンタ制御コード（エスケープシーケンス）が記述されています。各エントリは次のいずれかの形式になっています。
スタイル名 = 開始シーケンス : 終了シーケンス またはスタイル名 = 開始シーケンス「スタイル名」はプリンタコマンドファイル内で使われているユーザ定義のスタイル名です。開始シーケンスは所定の印刷スタイルで表示されるテキストセクションの先頭で、プリンタに送られるプリンタ制御（エスケープシーケンス）文字列です。終了シーケン
スはそのテキストセクションの末尾でプリンタに送られるエスケープシーケンス文字列です。開始シーケンスと終了シーケンスは、コロンで区切ります。
2 番目の形式は、再起動コマンドのように、シーケンスの終了が不要なプリンタコマン
ドに使用します。
プリンタコマンドファイルを修正するにはテキストエディタを利用します。
Magic には、次のプリンタコマンドファイルがサンプルとして付属しています。
WPDRV.ATR

論理印刷スタイル［プリンタ属性］テーブルは、印刷スタイルを Magic の基本色と組み合わせた論理印刷ス
タイルを構築するときに使用します。これらの基本色は、後ほどフォーム領域を塗りつぶすのに使用します。このフォーム領域の出力には、色というプリンタ属性が使用されます。
このテーブル内の各エントリは、Magic 論理印刷スタイルに対応しています。このテー
ブルの各カラムは以下のとおりです。
• #……Magic によって割当てられる、連続した行番号。このカラムは編集できません。
• 名前……論理プリンタ属性の記述。この記述は、指定のフォーム領域に対して論理プリ
ンタ属性を選択した場合に、プリンタ属性一覧に表示されます。

630• プリンタコマンド……Magic 論理プリンタ属性を構成する、1 つまたは複数の印刷ス
タイルの集まり。それぞれの印刷スタイルは、物理プリンタのフォントや印刷字体を表しています。この項目の値は、［プリンタコマンド一覧］をズームして選択します。
［プリンタコマンド一覧］には、プリンタテーブル内の各 Magic プリンタに割当てられているプリンタコマンドファイルから読み込まれた、スタイル名の集まりが含まれています。複数のコマンドファイルで使われているスタイル名は、［プリンタコマン
ド一覧］では１度だけ表示されます。
リファレンス
Magic eDeveloper V9 Plus

入出力フォーム
実行時において印刷属性を実際のプリンタ制御コードに展開する場合、Magic は印刷属性に定義されたすべてのプリンタコマンドの前処理部分を、［プリンタコマンド］カラム
での出現順序に従ってプリンタに送信します。その後、フォームコントロールがプリンタに送信されます。フォーム項目の後に、Magic は印刷属性に定義されたすべてのプリンタコマンドの後処理部分を、［プリンタコマンド］カラムでの出現順序に従ってプリン
タにすべて送信します。複数の印刷コマンドを組み合わせて 1 つの論理印刷属性にする
ことで、アプリケーションで利用できるカスタム印刷スタイルを作成できます。

色属性
論理プリンタ属性に関連付けられている色番号を指定します。色を選択するには、このカラムから［動作環境］ダイアログで指定した基本色テーブルにズームします。
この色は、プリンタ属性をフォーム領域に割当てるのに使用します。色がこのように使用される理由は、実際のフォーム領域を消費することなく、プリンタ属性の設定の可否を示す視覚的なインジケータとして機能するからです。

プリンタ属性の構成要素
図 10-4 は、プリンタ属性の各種構成要素間の関係を示したものです。フォームレイアウ
ト上でブロックのマーキングと塗りつぶしを行うと、そのブロックに対してプリンタ属性を指定したのと同じことになります。プリンタ属性は、［プリンタ属性一覧］に含まれています。
［プリンタ属性一覧］を開くには、選択したテキスト形式コントロールの色特性に関連付けられている楕円形のボタンをダブルクリックします。
［プリンタ属性］テーブルは、指定されている各プリンタ属性を実際のプリンタコマンド
群に、また参照用として個々の色に関連付けています。
［プリンタ属性］テーブルに示されるプリンタコマンドは、［プリンタコマンド一覧］に入っている各種の構成要素で構成されています。この一覧は、Magic システム内のあらゆるコマンドファイルに含まれているプリンタコマンドを全部まとめたものから生成されます。

リファレンス
Magic eDeveloper V9 Plus

631

第 10 章 - 出力フォーム
プリンタテーブルでは Magic プリンタや論理プリンタ名が、プリンタコマンドファイル
および物理プリンタを表したキュー名に関連付けられています。

図 10-4 プリンタ構成要素間の関係

印刷属性の実行時における展開
フォームレイアウトで指定したプリンタ属性は実行時に、指定されている Magic 論理プ
リンタやコマンドファイルに従って、また入出力ファイルテーブルやプリンタ属性テーブルの設定値に従って展開されます。

図 10-5 印刷処理

632

リファレンス
Magic eDeveloper V9 Plus

データ管理11

データ管理機能によって、保存されたデータの更新時期や方法を決定したり、物理デー
タベース内に保存されたデータを編成することができます。
本章では、次の内容について説明します。
• トランザクション処理• トランザクションと実行レベル• 遅延トランザクション• ネストトランザクション• トランザクションツリー
• トランザクション処理リカバリ• Magic の内部トランザクション• デッドロックとトランザクション処理• ロールバック• Magic キャッシュ• エラー処理

リファレンス
Magic eDeveloper V9 Plus633

第 11 章 - データ管理

トランザクション処理
トランザクション処理は、データベースの整合性を保つために使用されるデータ処理技法です。トランザクション処理は、論理的に関連する一連のデータ修正の実行であるといえます。この一連の処理は、1 つのまとまりとして「コミット」（完了してディスクに書き込む）またはアボートされます。このようなトランザクションの典型的な例として、
予約業務と信用調査業務などがあります。
トランザクションは、読み取り／書き込み操作とは反対に、読み取り操作を安全に実行するためにも使用できます。読み取りトランザクションでは、トランザクション内で読み取られたデータが他のユーザによって修正されていないことが保証されます。
トランザクション処理技法では、トランザクションのすべての更新が、一時トランザク
ションファイルに自動的に記録されます。このファイルに記録された更新内容は、トラ
ンザクションが完了した場合、つまりすべての通常データベーステーブルの更新が正常に完了した場合に限って消去されます。トランザクションが影響するテーブル内で問題が検出されると、トランザクション全体がキャンセルされ、データベースは「ロールバッ
ク」されます。つまり、トランザクションが発生する前の元の状態に復元されます。ロー
ルバックでは、トランザクションログファイル内に保存された情報を使用してアプリ
ケーションが復元されます。
トランザクション処理の主な利点は、コンピュータシステムのクラッシュから保護されることです。オンラインデータ入力やバッチ処理の途中でコンピュータがクラッシュした場合には、トランザクション全体がアボートします。このため、データベースが不完
全に更新されるのを防ぐことができ、データベースの一貫性が保たれます。

トランザクションと実行レベル
次に示すトランザクションパラメータを［タスク特性］ダイアログ内で設定することにより、トランザクション処理を任意のタスク実行レベルで有効にすることができます。

トランザクションモード
• D= 遅延……データ操作（DM）ステートメントはキャッシュ内に保存されます。タス
クフロー中は、DM ステートメントが物理データベースに送信されることはありません。ステートメントは、予期されるコミット時にのみデータベース内で実行されます。
キャッシュに蓄積されたすべての DM ステートメントは 1 度に実行され、トランザク
ションは終了します。
• N= ネスト遅延……遅延と同じですが、このようなタスクが別の遅延タスクから呼び出されると、ホスト側の内部にネストされている新たな遅延トランザクションが開きます。
• W= 親と同じ……タスクは親トランザクション内で実行されます。親タスクが物理ト
ランザクションの場合、このタスクは物理トランザクションになります。親タスクが遅延トランザクションの場合、遅延トランザクションになります。
• P= 物理……データ操作（DM）ステートメントは、レコード後処理の後で実行されます（前バージョンと同じです）。

トランザクション開始• T= タスク前処理の前……トランザクションは、タスク前処理の前に開き、タスク後処理の後で閉じます。
• G= グループ……トランザクションはグループ前処理の前に開きます。ユーザは、グ
ループトランザクションをトリガするための項目を指定する必要があります。この項
目は、タスクのグループイベントの 1 つに指定する必要があります。グループトラン
ザクションは、タスク特性をバッチに定義した場合に限り設定することができます。
• L= レコードロック時……トランザクションは、レコードがロックされる前に開き、レ
コードの更新後に閉じます。

634

リファレンス
Magic eDeveloper V9 Plus

トランザクションと実行レベル• P= レコード前処理の前……トランザクションは、レコード前処理の前に開き、レコー
ド更新後に閉じます。
• S= レコード後処理の前……トランザクションは、レコード後処理の前に開き、レコー
ド更新後に閉じます。
• U= レコード更新前……トランザクションは、データベースに更新される前に開きます。
• N= なし……ブラウザタスクでトランザクションをオープンしません。トランザクショ
ンをオープンしたタスクから「N= なし」のタスクを呼び出した場合、［トランザクションモード］が「W= 親と同じ」タスクを実行した場合と同じ動作をします。
［タスク特性］ダイアログ内で［タスクタイプ］を変更すると（たとえばオンラインからバッチに）、そのタスクのすべてのトランザクションパラメータ（トランザクションモー
ド、トランザクション開始、ロック方式、キャッシュ範囲など）は、そのタスクタイプに固有の元のデフォルト値に戻ります。

タスクレベルの物理トランザクション
タスク前処理の前［トランザクション開始］特性を「T= タスク前処理の前」に定義した場合、Magic では次のことが実行されます。
• タスクを取り出す前にトランザクションを開きます。
• タスク後処理の実行に続くデータファイル更新後のみにトランザクションをコミットします。
• サブタスクも含む、オープンとコミット間のすべての処理コマンドをトランザクショ
ン範囲内に組み込みます。

考慮事項
トランザクションをタスクレベルで定義すると、タスクの実行中に行われるすべての更
新は 1 つのトランザクションとして記録されます。このため、次のことに注意してください。
• データビューに数レコードしか含まれていない状態で、バッチタスクのタスクレベル
でトランザクションを使用して、平行処理を向上させます。パフォーマンスが重要である場合は、バッチタスクのタスクレベルでトランザクションを使用する（SQL デー
タベース）。ISAM タイプのデータベースでは、バッチの拡張トランザクションに大量のディスク容量が必要になることがあります。
• オンラインタスクのタスクレベルでトランザクションを使用すると、トランザクショ
ン中にテーブルが長時間ロックされる可能性があるため、マルチユーザアプリケー
ションでは、同じテーブルにアクセスする他のユーザに問題が発生することがあります。
• 大量のレコードをカバーするタスクレベルトランザクションでは、トランザクション
ログファイルが大きくなり、ディスクドライブ上の空き容量が減少します。ディスク
容量が不足しないように注意してください。ディスク容量が不足すると、トランザク
ションはアボートします。

グループレベルの物理トランザクション
グループレベルは、バッチタスクのみで使用することができます。

リファレンス
Magic eDeveloper V9 Plus

635

第 11 章 - データ管理

考慮事項
グループレベルトランザクションを使用すると、大きいテーブルの処理をレコードグルー
プごとの処理に分割することができます。このため、トランザクションの範囲が狭くなり、
トランザクション処理の利点を活かすことができます。

レコードレベルの物理トランザクション［タスク特性］ダイアログの［トランザクション開始］欄のレコードレベルのトランザク
ションには、5 種類の値を指定できます。
「L= レコードロック時」、「P= レコード前処理の前」、「S= レコード後処理の前」、「U= レコード更新前」、「N= なし」です。

レコードロック時［トランザクション開始］欄を「L= レコードロック時」に定義すると、Magic では、レ
コードがロックされる前にトランザクションが開きます。

レコード前処理の前［トランザクション開始］欄を「P= レコード前処理の前」に定義した場合、Magic では次のことが実行されます。
• レコードを取り出す前にトランザクションを開きます。
• レコード後処理の実行に続くデータテーブル更新後にのみトランザクションをコミットします。
• サブタスクも含む、オープンとコミット間のすべての処理コマンドをトランザクショ
ン範囲内に組み込みます。

考慮事項
レコードメイン処理の間トランザクションが開いているので、通常マルチユーザ環境ではオンラインのタスクレベルでトランザクションを定義しないでください。トランザク
ションにはロックが関係し、同じレコードやテーブルにアクセスする他のユーザに問題が発生することがあります。

レコード後処理の前［トランザクション開始］欄を「S= レコード後処理の前」に定義した場合、Magic では次のことが実行されます。
• レコード後処理を実行する前にトランザクションを開きます。
• レコード後処理の実行に続くデータビュー更新後のみにトランザクションをコミッ
トします。

考慮事項
サブタスクの呼び出しも含め、すべてのレコード後処理操作がトランザクションに含まれます。
トランザクションでエラーが発生した場合、［タスク特性］ダイアログのエラー発生時パ
ラメータの設定に従って、エンジンは実行を復旧またはアボートします。また、独自のエラーハンドラを定義してエラーを中断することもできます。

レコード更新前［トランザクション開始］欄を「U= レコード更新前」に定義した場合、Magic では次のことが実行されます。

636

リファレンス
Magic eDeveloper V9 Plus

遅延トランザクション• レコード後処理の実行後、データテーブル更新の実行直前にトランザクションを開きます。
• データファイル更新が実行された後にのみトランザクションをコミットします。

考慮事項
このトランザクション内には、レコード後処理のコマンドが含まれないことに注意してください。マルチユーザアプリケーションには、更新トランザクションをお勧めします。
エンドユーザ間の平行処理の潜在的な問題が減少します。

なし
他のレベルと同様、レコードレベルでトランザクション処理が必要ない場合に設定します。

遅延トランザクション
前バージョンの Magic では、データ操作（DM）ステートメント（挿入／更新／削除）は必ずレコード後処理の後で実行されていました。物理トランザクションと呼ばれるこの処理では、物理データベースの内容がレコード毎に更新されます。このためアプリケー
ションの実行時に、データビュー内のレコードの変更を処理する度にレスポンスが長くかかることがあります。
遅延トランザクションでは、データビューのレコードに対する変更をコミットする必要が出るまで、DM ステートメントの実行を遅らせます。すなわち、DM ステートメントはキャッシュ内に保存されます。変更をデータベースにコミットする準備が整うと、すべての変更が同時に実行されます。これにより、トランザクションの時間が可能な限り短縮されます。

トランザクション開始
トランザクションモードを遅延に設定すると、それぞれのトランザクション開始オプ
ションに対し、次に示すアクションが発生します。
• P= レコード前処理の前……レコードレベルのすべての更新がグループにまとめられます。レコード更新時にトランザクションが開き、変更が適用されてトランザクショ
ンがコミットされます。
• T= タスク前処理の前……タスクレベルのすべての更新がグループにまとめられます。タスク後処理後にトランザクションが開き、変更が適用されてトランザクション
がコミットされます。
• G= グループ……更新はタスクレベルで集められ、特定の項目で値が変化するたびに更新されます。グループレベルトランザクションの使用時は、グループ項目を定義する必要があります。

ロック方式
遅延トランザクションには、次のロックパラメータがあります。
• O= 入力時……遅延トランザクションタスクで入力時ロック方式を選択すると、Magic
ロックメカニズムで処理されます。必要な場合は、Magic ロック設定を使用してください。Magic ロックの詳細については、第 23 章「マルチユーザ環境」を参照してくだ
さい。
• N= なし……Magic ロックメカニズムを使用しません。

リファレンス
Magic eDeveloper V9 Plus

637

第 11 章 - データ管理

DB SQL Where 句［DB SQL Where 句］の設定は、遅延トランザクションモードタスクに適用されません。
［Magic SQL Where 句］という新しい設定を使用することにより、遅延トランザクションのタスクでデータベースに Where 句を直接送信することができます。
詳細については、第 7 章「プログラム」の「範囲と位置付の特性」を参照してください。

埋込み SQL
埋込み SQL タスクは、物理トランザクションモードのみ、組み込むことができます。

数値型項目の更新
このパラメータは、遅延トランザクションモードのタスクで利用します。
前バージョンの Magic では、たとえば、FLD1 という項目を X という値に更新する場合、（FLD1=X）の形式でコマンドを発行します。
Magic Ver.9 では、差分更新も可能になりました。たとえば、上の例では、更新前の FLD1と X の差分 x を Magic 内部で求めて（FLD1=FLD1+x）の形式でコマンドを発行します。
この制御を行うために、セレクト特性に更新形式パラメータが追加されました。パラメー
タの値は次のとおりです。
• A= 値更新……旧バージョンと同じ方法で値を更新します：（FLD1=X）• D= 差分更新……差分の値で更新します：（FLD1=FLD1+x）
このパラメータは、通常の保存タイプで SQL テーブルに関係する数値型フィールドタイ
プにのみ有効です。ISAM のテーブルではサポートされていません。
また、［遅延モード］と［ネスト遅延モード］のタスク、または実行に遅延と評価される［親と同じ］トランザクションモードのタスクで有効です。
この更新方法の設定は、実データの［セレクト］コマンドの特性ダイアログにも追加されました。
［値更新］と［差分更新］のほかに、［テーブルに依存］オプションを選択することができます。このオプションでは、カラム特性の更新形式パラメータに基づきます。
詳細については、第 4 章「テーブル」の「カラムテーブル」、または第 7 章「処理コマンド」の「セレクト」を参照してください。

更新／削除ステートメント
このパラメータは、遅延トランザクションモードのタスクで利用します。
発行されるそれぞれの更新ステートメントや削除ステートメントについて、Magic で
WHERE 句を作成する手続きを決定することができます。選択できる値は次のとおりです。
• P= 位置……位置の一部であるフィールドのみが組み込まれます。
• U= 位置と更新項目……更新されるフィールドと位置フィールドの元の値。
• S= 位置と選択項目……選択されたすべてのフィールドと位置フィールドの元の値。

638

リファレンス
Magic eDeveloper V9 Plus

ネストトランザクション
テーブル特性には、［更新レコードの識別］という新しいパラメータが追加されました。
このパラメータでは、上のすべての値を使用できます。このパラメータは、遅延トランザクションタスクとネスト遅延トランザクションタスク、または実行に遅延トランザク
ションモードと評価される［親と同じ］トランザクションモードでのみ有効です。
［更新
レコードの識別］パラメータは、タスクの［DB テーブル］テーブルにも追加されました。
詳細については、第 4 章「テーブル」の「テーブルリポジトリ」、または第 6 章「プログラム」の「DB テーブル」を参照してください。

コール前のレコード未更新への対応
この遅延トランザクションパラメータでは、DM ステートメントの実行順序を制御することができます。
Magic Ver8 以前では、レコード後処理の順序に従って DM ステートメント（挿入、更新、削除など）が送信されていました。
たとえば、次のようになります。
親タスクが子タスクを呼び出す場合、子タスクが、処理を完了してから親タスクに戻って親タスクが処理を完了します。このため Magic では、子タスクを呼び出す前に親タスクの変更を実行する場合でも、子タスクのレコード後処理操作を処理してから親タスクのレコード後処理操作を処理していました。

ネストトランザクション
親タスクが子タスクを呼び出すと、次の動作が実行されます。
親トランザクション
モード

子トランザクション
モード

トランザクション動作

遅延／ネスト遅延物理

子トランザクションによって物理トラ
ンザクションが開く。更新は、親タスクに関係なくデータベースに送信されます。

遅延／ネスト遅延

遅延／親と同一／なし子トランザクションは親トランザク
ション内で実行されます。子タスクのデータ操作（DM）ステートメントは、
親タスクがコミットされたときに送信されます。

遅延／ネスト遅延

ネスト遅延

子タスクは新しい遅延トランザクショ
ンとして開く。トランザクションは、
親タスクに関係なくデータベースにコミットされます。

物理

物理／親と同一

子タスクは、各レコードかタスクの後で親とともにデータベースへの更新を行なう。親タスクと子タスクは、同じトランザクションを共有します。

物理

遅延／ネスト遅延

実行エラー

なし

なし

データ変更は許可されません。

なし

遅延／ネスト遅延／
親と同一

子タスクは新しい遅延トランザクショ
ンとして開く。トランザクションは、
トランザクションは、親タスクに関係なくデータベースにコミットされます。

親が物理トランザクションを実際に開いていない場合は、遅延の子タスクか、ネスト遅延の子タスクを含めることができます。
リファレンス
Magic eDeveloper V9 Plus

639

第 11 章 - データ管理
あるタスクが、別のタスク用に定義されたイベントハンドラから開かれると、トランザ
クションのネスト関係は、開発モードの定義ではなく実行時トランザクションを元に決定されます。
たとえば、次のようになります。
1. 遅延トランザクションとして定義されているタスク A が、物理トランザクションとして定義されているタスク B を開きました。
2. タスク B は物理トランザクションとしてデータベースを更新し、イベントがトリガされます。このイベントのハンドラはタスク A 内に定義されており、遅延トランザクションであるタスク C を呼び出します。
3. 遅延トランザクションであるタスク C は、物理トランザクションであるタスク B の下では実行できないので、実行エラーが発生します。しかし、タスク C が［親と同じ］として定義されていたとすれば、物理トランザクションとして開くので実行エラーは発生しません。
トランザクションなしのタスク Ａ が、遅延タスク Ｂ をコールした場合、タスク Ｂ をク
ローズしないで、別の遅延タスク Ｃ をコールすると、以下の実行エラーが発生します。
「１つのコンテキストでは、複数の遅延トランザクションをオープンすることができません。」

トランザクションツリー
ブラウザ‐ベースのプログラムを実行しているとき、ユーザーは、１度に複数のブラウ
ザを開くことができます。
個々のブラウザは、トランザクションとの接続を持たない異なるタスクを実行することができます。Magic は、論理的に枝分かれしている遅延トランザクションを分割することによって個々のブラウザをサポートします。各枝は、他の枝との接続のない個別のト
ランザクションツリーとなります。
Magic は、遅延トランザクションに対するモーダレスタスク中にネストトランザクショ
ンをオープンします。親子タスク間の動作は、前のバージョンと変わりません。

オープントランザクション
イベントツリー上で呼び出すタスクがトランザクションをオープンしない場合、起動されたタスクは、タスク特性に従ってトランザクションをオープンします。タスクが、ト
ランザクションをオープンするように定義されていれば、レコードまたはタスクレベル
でトランザクションをオープンします。
イベントツリー上で呼び出すタスクがトランザクションをオープンする場合、起動されたタスクは、タスク特性に従って以下のように動作します。
• 遅延トランザクション …… タスクは新たにトランザクションをオープンしません。
• ネストトランザクション …… タスクは新しいトランザクションをオープンします。
• なし …… 遅延タスクと同じように動作します。

クローズトランザクション
トランザクションは、オープンされたタスクでクローズされます。
例外として、親と同じトランザクションをもつ子プログラムが起動された場合です。ト
ランザクションが親プログラムによってクローズされ、子プログラムがオープン状態のままの時、トランザクションなしで残ります。

640

リファレンス
Magic eDeveloper V9 Plus

トランザクションツリー
子プログラムは、トランザクションの一部でなければなりません。最初に呼ばれた子プ
ログラムは、トランザクションとトランザクション内の全ての子プログラムを管理します。親タスクがクローズすると、トランザクションの管理は、イベントツリー上の下位に移動します。トランザクション階層は、タスクがオープンされる順番によって決まります。トランザクションがクローズされ、そのトランザクションの中にまだタスクがオープンされているとき、別のトランザクションが即オープンされ、最初の子タスクによって管理されます。
トランザクション管理が新しいタスクに移動すると、新しいトランザクションは、タス
ク特性に定義された値に関係なく常にタスクレベルでオープンされます。

実行時のツリーの例
以下に示す実行時のツリーの例は、多くのブラウザがオープンされたブラウザベースのタスクでのものです。

図 11-1 トランザクションツリーの例

この例は、5 つのトランザクションが同時にオープンされることを表しています。
5 つのトランザクションは、次のタスクで開始されます :
1. A
2. C
3. D
4. H
5. I
各トランザクションの終りに、タスクの処理に従ってデータがコミットされるかロール
バックされます。
データがコミットされる前は、キャッシュデータは、異なる枝の間で共有することはできません。
「タスク E」は、「タスク I 」からデータを参照することができません。「タスク I 」が変
更内容をデータベースにコミットした後であれば、「タスク E」は、更新されたデータをデータベースから参照できます。

リファレンス
Magic eDeveloper V9 Plus

641

第 11 章 - データ管理

トランザクション処理リカバリ
トランザクション処理リカバリでは、さまざまなデータベースエラー用にMagicのデフォ
ルト動作を決めることができます。詳細については、「エラー処理」を参照してください。

Magic の内部トランザクション
Magic には、次のように２つのタイプの内部トランザクションがあります。
• 読込……データファイルに対する読み取り専用操作に使用します。
• 書出……データファイルに対する書き込み操作に使用します。
詳細は、第 6 章「プログラム」の「DB テーブル」を参照してください。

データベースにトランザクションをマップする
トランザクション処理メカニズムを実行するため、Magic では、基礎となるデータベー
スのトランザクション処理機能を活用します。それぞれのデータベースには独自のトラ
ンザクション機能があるので、Magic では、さまざまなデータベース内で使用できるトランザクションに内部トランザクションがマップされます。

ISAM データベース
ISAM データベースがトランザクション処理を実行する方法に基づいて、Magic では内部
トランザクションが次の方法でマップされます。
• 読み取りトランザクションとロックトランザクションは ISAM データベース内で実行されていません。したがって、Magic ではこのトランザクションを ISAM データベー
スゲートウェイに転送しません。
• 書き込みトランザクションを ISAM トランザクションにマップし、更新を記録してロールバックも実行します。このようなトランザクションでは、テーブルのすべてまたは一部をロックすることができます。

SQL データベース
SQL データベースがトランザクション処理を実行する方法に基づいて、Magic では内部
トランザクションが次の方法でマップされます。
• 読み取りトランザクションを R/O（読み取り専用）トランザクションにマップします。
このトランザクションでは、トランザクションが開いた場合にデータベースのスナッ
プショットが取得されます。
• ロックトランザクションか書き込みトランザクション内ですべてのテーブルのアク
セスモードが読み取りである場合は、このロックトランザクションや書き込みトラン
ザクションを R/O（読み取り専用）トランザクションにマップします。アクセスモー
ドが読み取りでない場合は、ロックトランザクションや読み取りトランザクションをR/W（読み取り／書き込み）トランザクションにマップします。このトランザクショ
ンでは、トランザクション範囲内で参照されるすべてのレコードがロックされます。

642

リファレンス
Magic eDeveloper V9 Plus

デッドロックとトランザクション処理

デッドロックとトランザクション処理
マルチユーザ環境では、デッドロックがトランザクションエラーの一般的な原因となります。デッドロック状況は、2 人のユーザが、相手が所有する（ロックしている）リソー
スを互いに待つ場合に発生します。
各データベース管理システム（DBMS）によって、デッドロックが発生した際の動作はさまざまです。一部の DBMS では、デッドロックを検出して警告を発することができます。この場合、Magic はトランザクションをロールバックし、トランザクションのエラー特性の設定に従って実行を続けます。
一部の ISAM データベースではデッドロック状況でハングアップすることがあるので、Magic では ISAM データベースと SQL データベース用にデッドロック防止メカニズムを提供しています。デッドロック防止メカニズムを有効にするには、［動作環境］ダイアロ
グ内で［デッドロック防止］設定を「Yes」に設定します。デッドロック防止メカニズム
では、トランザクションが続く間、定義された順序に従って、書き込みアクセスで開かれたすべてのテーブルが排他的にロックされます。一時テーブルはロックされません。

ロールバック
Magic には、処理中にタスク内で発生する可能性がある状況に従ってトランザクション
を強制的にロールバックする機能があります。この機能は、Rollback 関数として提供されます。Rollback 関数を使用すると、指定されたネストレベルまでトランザクションを
ロールバックしたり、トランザクションを完全にアボートしたりすることができます。
Rollback 関数は、ロールバックするネストレベル数をパラメータとして受け取ります。この数値は、開いたネストトランザクション数の範囲内でなければなりません。Rollback 関
数でパラメータ値が「0」である場合は、トランザクション全体が最初のレベルトランザ
クションまでロールバックされます。ロールバックが行われた後は、レベルがロールバッ
クされた［エラー発生時］パラメータの設定に従って処理が再開されます。
Rollback 関数では、エンドユーザに確認ダイアログを表示してから実際のロールバック
操作を開始するかどうかを指定することができます。
詳細は、第 8 章「関数」を参照してください。

ブラウザベースプログラムでのロールバックの動作
ブラウザベースプログラムでロールバック実行されると、トランザクション内にオープンしている全てのタスクは、トランザクションをオープンしたタスクを除いて終了されます。ネストされたタスクは影響しません。
例えば、異なるトランザクション内のタスクがロールバックし、小屋のトランザクショ
ンをオープンした場合、子タスクは、オープンし続け影響されません。
例外は、子プログラムが上位のレベルからのトリガによるハンドラで起動されたときです。
子プログラムは、自分のレベルのトランザクションをオープンします。子プログラムが複数ある場合、全て新しいトランザクション内にあり最初に起動されたプログラムによって管理されます。
コール処理コマンドで起動される場合は、タスク内の子プログラムは閉じていなければなりません。

リファレンス
Magic eDeveloper V9 Plus643

第 11 章 - データ管理

同期
このパラメータは、［コール特性］ダイアログに含まれます。このパラメータでは次のことを実行することができます。
• Yes……親タスクのデータ操作ステートメントが送信されてから子タスクのデータ操作ステートメントが送信されます。
• No……Magic の処理フローに従って、DM ステートメントの実行を行います。
• 式……「Yes」か「No」に評価される論理式を定義します。
同期パラメータは、レコードレベル（レコード前処理、レコードメイン、レコード後処理）のタスクコール処理コマンドでのみ有効です。
詳細については、第 7 章「処理コマンド」の「コール」を参照してください。

Magic キャッシュキャッシュという機能が求められる基本的な背景として、同じデータを複数回読み込まなければならない場合が想定されています。この場合、ディスク I/O 操作を実行せずにデータを再び取り出すことができれば、全体的なパフォーマンスが向上します。
キャッシュに一般的なアルゴリズムを採用している汎用ディスクキャッシュとは異なり、Magic キャッシュでは、物理データとアプリケーションの性質に関する知識に従ってキャッシュを微調整することができ、アプリケーション内でユーザごとに微調整することもできます。
Magic キャッシュでは、その他のハードウェアキャッシュ手法やソフトウェアキャッシュ手法のようにファイルマネージャを呼び出しません。このため Magic キャッシュでは、
これまでの手法のファイルマネージャのオーバヘッドを回避することができます。

キャッシュできるもの
Magic キャッシュは、メインテーブルとリンクテーブルに使用できます。Magic キャッ
シュは、タスクとメインテーブルおよびリンクごとに実現されます。つまり、親タスクとサブタスクが同じテーブルにアクセスしており、両方のタスクでテーブル上のキャッシュが有効になっている場合は、2 つのキャッシュが使用されます。1 つのタスク内における、同じテーブルへの 2 つのリンク操作にも同じことが当てはまります。この場合も、
2 つのキャッシュが使用されます。

キャッシュを使用するタイミング
Magic が行をロックする必要がない場合に限り、データはキャッシュから読み取れます。
ロックが必要かどうかは、次の 3 つの要素から判断されます。
• ［タスク特性］ダイアログの［拡張］タブで定義されている［ロック方式］• ［タスク特性］ダイアログの［拡張］タブで定義されている［キャッシュ範囲］• ［DB テーブル］テーブルの［アクセスモード］と［共有モード］の定義
ロックは、書き込みアクセスと共有で開いているテーブルのみにかけられます。ロックのタイミングは、ロック方式で決まります。
照会モードから修正モード、また修正モードから照会モードへの移行は、キャッシュを使用して行われます。読み込まれているレコードは、モードの切り替えが行われても、
リフレッシュされません。
ソート操作では、ソートファイル用のキャッシュが自動的に作成されます。

644

リファレンス
Magic eDeveloper V9 Plus

Magic キャッシュ作成モードにアクセスした場合や、ユーザ位置付け、ユーザ範囲、およびソート処理コ
マンドが実行された場合には、キャッシュは解放されます。
Magic Ver9 では、修正モードと照会モードとの間で切り替えを行うと、キャッシュにアクセスされるので、データベースからデータを再び取り出す必要がなくなります。

キャッシュの有効化［DB テーブル］テーブルの設定により、タスク単位でリンクテーブルのキャッシュを無効または有効に定義することができます。この定義は、キャッシュパラメータを「Yes」
または「No」で設定します。
• Yes……テーブルキャッシュが使用されます。
• No…… タスク内のリンクテーブルのキャッシュは無効になります。
［DB テーブル］テーブルのデフォルト値は、［テーブル特性］ダイアログの［キャッシュ範囲］欄の設定によって決まります。

プログラム動作の変更
Magic キャッシュを使用すると、プログラムの動作が変化します。データがキャッシュ内で見つかった場合には、そのデータがテーブル内のデータと同一でない可能性があります。従って Magic はデータの更新前に、必ずレコードをディスクから読み取ります。
APG で作成した単純なオンラインプログラムを例に考えてみましょう。ある行から別の行にカーソルを移動した場合は、必ず新しい行のデータビューが自動的に再度読み取られます。
別のユーザがデータを変更した場合、データがキャッシュ内にあって、その行に留まっていると、変更内容を確認することはできませんが、データを修正しようとしたときに、現在の値がディスクから読み取られて次のメッセージが表示されます。
「このレコードは他のユーザーが更新しました−再読み込みを行います。
」
アプリケーションによっては、キャッシュを使用してはいけない場合があります。たと
えば、書込共有で読み取り用に価格テーブルにアクセスする受注入力アプリケーションがあるとします。あるエンドユーザが価格を変更した場合、その項目の新価格がそのユー
ザのキャッシュ内に常駐すると、その他のエンドユーザは新しい価格を確認できません。

キャッシュと常駐タスク
Magic キャッシュが常駐タスク内で割当てられていると、タスクが終了してもキャッシュは終了しませんが、Magic がメニューに戻った場合に限り、キャッシュが終了します。このため、あるタスクで同じデータをリンクテーブルから読み取っており、すべてのデー
タがキャッシュされている場合、次回そのタスクが呼び出された際はキャッシュが再利用されます。

キャッシュとロールバック処理コマンド
ロールバック処理コマンドの場合、トランザクション中に更新されたすべてのキャッシュは無効になります。無効になると、すべてのデータはキャッシュから消去されます。
更新、削除、挿入処理コマンドが行われたキャッシュのみが無効になります。

キャッシュとクライアント／サーバ
Magic キャッシュはクライアントに常駐します。Magic キャッシュをクライアント／サー
バ環境で使用すると、ディスクのアクセスが減るだけでなく、生成されるネットワーク
トラフィックが少なくなります。クライアント／サーバアプリケーションでは、一般にネットワークがボトルネックになるため重要な要因となります。
リファレンス
Magic eDeveloper V9 Plus

645

第 11 章 - データ管理

Magic キャッシュの内部実行
Magic が読み込むすべての行はキャッシュに挿入されます。新しい行の修正、削除、挿入もキャッシュに置かれます。すでに存在する行が Magic で再度読み取られると、前の値は破棄されます。キャッシュ内に存在しない行が読み取られると、Magic キャッシュはそれをキャッシュに自動的に配置します。キャッシュが不足した場合は、LRU（Least
Recently Used）アルゴリズムによってキャッシュから破棄される要素が決まります。
LRU メカニズムの使用により、頻繁に読み取られるデータはキャッシュからスワップア
ウトされる確率が低くなります。

エラー処理
Magic のエラー処理機能により、アプリケーションの実行中に発生するさまざまなエ
ラーに対する Magic のデフォルト動作を変更することができます。

エラー処理の仕組み
エラー発生時の Magic の動作を制御するレベルは 2 つあります。
最初のレベルは、［タスク特性］ダイアログの［エラー発生時］欄から選択できる、2 つの事前定義された処理方式です。
2 つ目のレベルは、より細やかな対応を行わせることのできるエラー処理レベルで、エラーに対応する処理内容を Magic のプログラムとして記述し、エラーハンドラとして使用するものです。Magic エンジンは、検出できる既知のエラーや予想されるエラーの一覧を表示するとともに、使用する DBMS 特有のエラーコードなど、その他のエラーに対応する処理を取り扱うことができるようにします。このレベルでは、新しいエンジンの動作仕様が組み込まれており、エラーハンドラ実行後の Magic エンジンの動作を選択制
御することができます。
この章では、データベース関連のエラーのみを説明します。

エラー発生時の処理方式
エラー発生時の処理方式として、「アボート」と「復旧」という 2 つの事前定義された対応方法が用意されています。
このオプションは、タスクレベルの設定として、図 11-2 に示すように［タスク特性］ダ
イアログの［拡張］タブにある、［エラー発生時］で設定します。

646

リファレンス
Magic eDeveloper V9 Plus

エラー処理図 11-2 エラー発生時の選択

通常は、オプションを適切に選択することで、エラー処理のために特別なハンドラは必要ありません。デフォルトのオプションでは対応が適さない場合に、エラーハンドラを作成することでデフォルト設定を変更します。

アボート
エラーが発生すると、現在のトランザクションがロールバックされます。
物理トランザクションおよび遅延トランザクションのいずれの場合にも、現在のデータビューを削除し、エラーが発生したタスクをアボートします。
この方式は、「ロックエラー」や「不正ログオン」のような、エンドユーザが回復できる
エラーに対しては、適用されません。

復旧
できる限り現在のデータビューを維持して現行タスクにとどまり、エンドユーザがエラーから回復できるようにします。復旧を使用すると、エンドユーザはエラー発生後でもアプリケーション内で作業を続行することができます。
この方式では、「ロックエラー」や「最大接続数超過」のエラーなどに対しては、エンドユーザの介入なしに、Magic は自動的に処理を繰り返します。

処理方式とエラー発生時の動作
次に示すのは、エラーとそのときに選択している処理方式によって自動的に適用される
Magic の動作一覧です。
各方式の動作の詳細については、本章の「詳細／対応」の節を参照してください。

エラー

アボート

復旧

テーブルロック不可

自動リトライ

自動リトライ

自動リトライ

自動リトライ

レコードロック
リファレンス
Magic eDeveloper V9 Plus

647

第 11 章 - データ管理
最大接続数超過アボート

自動リトライ

重複インデックス

アボート

ユーザリトライ

制約違反

アボート

ユーザリトライ

トリガ失敗

アボート

ユーザリトライレコードが更新されていた

アボート

ロールバック／
ユーザリトライレコードを別ユーザが変更

アボート

ロールバック／
ユーザリトライタスクのオープンに失敗

アボート

アボート

エラーハンドラ
エラーハンドラは、プログラムリポジトリの［処理レベル］テーブルとそのエントリに対応する［処理］テーブルにて作成することができます。これは、イベントハンドラの場合と同様です。

図 11-3 エラーハンドラの作成

エラーハンドラには次のような設定欄があります。

レベル
タスク定義の［レベル］欄は、「H= ハンドラ」を指定します。

イベント［イベント］欄からズームすると、［イベント］ダイアログが開きます。
ここでは、［イベントタイプ］として、「R= エラー」を選択します。
また［イベント］でズームすると、下記内容の［エラー一覧］テーブルが表示されるので、この中からエラーハンドラの対象とするエラータイプを指定します。
• 任意• レコードロック• 重複インデックス• 制約違反• トリガ失敗• レコードが更新されていた• レコードを別ユーザが変更• 挿入 / 更新 / 削除に失敗• 未定義エラー
エラータイプのデフォルトは、「任意」になります。このエラータイプは、発生するすべてのエラータイプが対象になります。

648

リファレンス
Magic eDeveloper V9 Plus

エラー処理

詳細／対応
ユーザ定義のエラーハンドラを定義する場合、この欄でエンジンの対応動作内容を指定することにより、エラーハンドラの処理実行後にどのような Magic の動作が起きるかを制御できます。

S= タスク特性に依存［タスク特性］ダイアログの［エラー発生時］欄の処理方式に依存します。

A= アボート
トランザクションを開始したタスクのアボート、データのロールバック、データビューの削除が行われます。

B= ロールバックして再起動
すべてのエラーモードとトランザクションモードで同じ動作になりますが、［タスク特性］ダイアログの［タスクタイプ］欄、および［トランザクション開始］欄の指定によって変化します。
タスクタイプ

トランザクション開始

動作

オンラインまたはブラウザ

レコード前処理の前

カーソルはトランザクションを開始
したレコードに留まる。

タスク前処理の前

カーソルはトランザクションを開始
したタスク上に留まり、最初のレ
コードに位置付ける。

レコード前処理の前

次のレコードに進む。

タスク前処理の前

タスクをアボートします。

バッチ

R= 自動的にリトライする
ロックや最大接続数の超過のような一部のエラーの復旧では、エンドユーザによる入力なしに処理が自動的にリトライされます。Magic が自動的にリトライできるのは、次の表に示すエラーのみです。ほとんどのエラーでは、「ユーザがリトライする」の節で説明するような、ユーザによる介入が必要です。

リファレンス
Magic eDeveloper V9 Plus

649

第 11 章 - データ管理

エラー

動作

テーブルロック不可
レコードロック
最大接続数超過

Magic により、処理コマンドが自動的にリトライされます。物理トランザクションであるか遅延トランザクションであるかに関係なく、トランザクションもデータビューもロールバックされません。カーソルは同じレコードに留まり、タイムアウト値に達するまでロッ
クまたは接続がリトライされます。

重複インデックス
制約違反
トリガ失敗

遅延トランザクションのみ。

不正なログオンレコードが更新されていたレコードを別ユーザが変更
未定義エラー
トランザクションのコミット失敗
トランザクションのオープン失敗
トランザクションの内部エラー
デッドロック
致命的なエラー
挿入 / 更新 / 削除に失敗
SQL 実行エラー
不当な SQL コマンド
不当なオープン Query 式
不当なテーブル名
テーブルが存在しない
読込専用テーブルを更新
レコード紛失不適用、設定はできません。

Magic により、フラッシュ段階で物理トラン
ザクション全体が自動的にリトライされます。

遅延トランザクションモードでは、自動リトライによって、遅延トランザクション中に蓄積されたコマンドについてトランザクションのフラッシュ段階で発生したすべてのエラーが参照されます。物理トランザクションは、ロールバックされてから再起動されます。これには、実行済みのすべての処理コマンドも含まれます。

U= ユーザがリトライする
トランザクションやデータビューは自動的にロールバックされず、エラーが発生したレ
コード上にカーソルが置かれた状態で制御がエンドユーザに返されます。

650

リファレンス
Magic eDeveloper V9 Plus

エラー処理エンドユーザが回復できるエラーを、次の表に示します。
エラー

動作

不正なログオン

ユーザインタフェースがあるオンラインプログラ
ムとバッチプログラムでは、ログオンダイアログ
が開き、エンドユーザがログオンをリトライできます。
ブラウザタスク、またはユーザインタフェースがないオンラインプログラムやバッチプログラムには適用されません。

重複インデックス
制約違反
トリガ失敗

オン ラ イ ン
遅延 ト ラ ン ザ ク シ ョ ン
データビューが現在の値のままになります。
［トランザクション開始］欄が「レコード前処理の前」の場合、カーソルは現在のレコードに留まります。
［トランザクション開始］欄が「タスク前処理の前」の場合、カーソルはそのタスクに留まり、トランザクションキャッシュから値を再び取り出して、カーソルを最初のレコードに位置付けます。
物理 ト ラ ン ザ ク シ ョ ン
トランザクションはロールバックされません。
データビューは現在の値のままになります。
カーソルは、現在レコードの先頭に表示されます。
バッチタスクには適用されません。

リファレンス
Magic eDeveloper V9 Plus

651

第 11 章 - データ管理
エラー

動作

レコードが更新されていた

オン ラ イ ン
データビューには更新後に値が表示され、カーソルは現在のレコードに留まります。
［トランザクション開始」欄が「レコード前処理の前」の場合、そのレコードはロールバックされます。
［トランザクション開始」欄が「タスク前処理の前」の場合、そのタスクはロールバックされません。
バッチタスクには適用されません。

不正なログオンレコードが更新されていたレコードを別ユーザが変更
未定義エラー
トランザクションのコミット
失敗
トランザクションのオープン
失敗
トランザクションの内部エラー
デッドロック
致命的なエラー
挿入 / 更新 / 削除に失敗
SQL 実行エラー
不当な SQL コマンド
不当なオープン Query 式
不当なテーブル名
テーブルが存在しない
読込専用テーブルを更新
レコード紛失不適用。設定できません。

I= 無視する
エラーがスキップされ、次に説明するように次のレコードから処理が続行されます。
• 物理トランザクション•

バッチ……次のレコードに進みます。

•

オンライン／ブラウザクライアント……実行された処理コマンドに従って次のレコードに進みます。レコードがロックされていて次のレコードに移動できな
い場合、前のレコードにとどまります。

• 遅延トランザクション
フラッシュ以外の段階でエラーが発生した場合、Magic は物理トランザクションであるかのように動作します。フラッシュ段階でエラーが発生した場合、Magic は現行コ
マンドをスキップし、次のコマンドに進みます。
物理モードの「N= 無視する」オプションは、Magic の前バージョンのスキップオプ
ションに相当します。そのため、レコードサイクル全体（レコード前処理、レコード
メイン、レコード後処理）がスキップされます。一方、遅延モードの「無視する」オ
プションでは、レコードサイクル全体ではなく、関連コマンドのみがスキップされます。遅延モードのコマンドは、レコードサイクルとの関連で実行されないためです。

詳細／メッセージ
致命的なエラーや予期せぬエラーに対して DBMS メッセージを表示するかどうかを指定することができます。

652

リファレンス
Magic eDeveloper V9 Plus

エラー処理• Yes……DBMS メッセージを表示します。この場合、［動作環境／動作設定］の［メッ
セージの詳細表示］が「Yes」と同じ動作になります。
• No……DBMS メッセージを表示しません。

スコープ［スコープ］特性には、次のオプションがあります。
• T= タスク……特定タスク内でトリガされたエラーハンドラを実行します。
• S= サブツリー……特定タスクとそのサブタスク内でトリガされたエラーハンドラを実行します。
• G= グローバル……メインプログラムでトリガされたエラーハンドラのみ実行します。
このオプションはコンポーネントに定義されたハンドラのみに関連しており、内部ア
プリケーションには関連しません。

伝播
イベントは、上位レベルで定義されたイベントハンドラに処理を伝播させることができます。「Yes」に設定した場合、イベントハンドラ実行後に Magic がイベントを未処理とみなし、次のレベルでイベントハンドラを検索します。

有効
エラーハンドラを有効化または無効化することができます。この特性は定義式で指定できます。「No」と評価された場合、ハンドラは有効にならず、エラーを検出しません。

処理
処理テーブルにあるコマンド数が表示されます。

エラー情報
エラーに関する情報は、ハンドラでの処理に入る前に、一連の関数を使用することで得ることができます。この情報を使用して、ユーザ定義エラーハンドラを無効化するか有効化するかを決定することができます。
エラー情報を取得する関数には以下のものがあります。
• ErrTableName……エラーが発生したテーブルの物理名を返します。メインテーブルとリンクテーブルがある場合は、この関数を使用することでエラーの発生場所を判断できます。この関数は、テーブルに関連するエラーにのみ関係します。
• ErrDatabaseName……エラーが発生したデータベースの名前を返します。
• ErrDbmsCode……DBMS エラーコードを返します。DBMS 内部エラーコードに精通している場合は、致命的エラーと予期せぬエラーを識別するのに役立ちます。
• ErrDbmsMessage……DBMS エラーメッセージを返します。致命的エラーと予期せぬエラーを識別するのに役立ちます。
• ErrMagicName……エラーハンドラを「任意」エラーに設定している場合に関連します。エラー名（Magic リテラル）を返します。この関数を使用すると、同じ処理コマ
ンドで発生する複数のエラーの処理を取り扱うことができます。
• ErrPosition……エラーが発生したレコードのポジション情報（BLOB 型）を返します。
詳細については、第 8 章「関数」を参照してください。

リファレンス
Magic eDeveloper V9 Plus653

第 11 章 - データ管理

実行時のエラー処理
Magic がエラー状態になった場合、Magic のエラー処理メカニズムは、同じタスク内でエラーを検出し処理するために、定義されたエラーハンドラをエラー名に基づいて検索します。発生したエラーに対応するエラーハンドラが存在する場合は、そのハンドラに定義された処理コマンドが実行され、次にハンドラが指定するエンジンの対応動作に従って対応するアクションが実行されます。
エラーハンドラの検索は、イベントハンドラの検索に似ています。ハンドラがタスク内に存在しない場合は、より上位のタスクレベルでエラー名に従って適切なハンドラが検索されます。
必要なエラーハンドラが存在せず、「任意」のハンドラが定義されている場合、「任意」のエラーハンドラが実行されます。

エラーレコードの位置に基づくタスクの範囲／位置付
エラー処理の重要な機能は、エラーレコードやレコードの範囲をそのポジション情報に応じて表示する方法を提供することです。
Magic Ver.9 では、• ポジション情報に従ってタスクに位置付けることができます。
• CurrPosition 関数で現在レコードのポジション情報を返します。
• ErrPosition 関数でエラーが発生したレコードのポジション情報を返します。
関数の詳細については、第 8 章「関数」を参照してください。

ポジションおよび方法
メニューの「タスク環境］／［範囲 / 位置付］ダイアログの［方法］欄に指定できるポジションの方法は、次のとおりです。
• O= このポジションで絞り込む……タスクが表示する 1 つのレコードの位置を示す式
を入力できます。
［セレクト］コマンドの範囲欄、［タスク制御］ダイアログの範囲式、「このポジションで絞り込む」特性の間には AND 関係があります。レコードが存在しない場合、レコードは表示されません。
• F= このポジションから開始する……タスクが範囲を開始するレコードの位置を示す
式を入力できます。
［セレクト］コマンドの範囲欄、［タスク制御］ダイアログの範囲
式、「このポジションから開始する」特性の間には AND 関係があります。レコードが存在しない場合、レコードは表示されません。
• L= このポジションに位置付ける……タスクが位置付けされるレコードの位置を示す
式を入力できます。
［セレクト］コマンドの位置付欄、［タスク制御］ダイアログの位
置付式、「このポジションに位置付ける」特性の間には、AND 関係があります。
この設定は、タスクのメインテーブルのみに適用されるものです。リンクテーブルについては、そのポジション情報から範囲指定や位置付けはできません。

Magic Ver8.2 からのアプリケーション移行
ISAM データベースを使用した Ver8.2 のアプリケーションを Ver9 へ移行する場合、MAGIC.INI の設定によってエラーハンドラの追加内容が変わります。

設定パラメータ：［MAGIC_SPECIALS］ImportCreateErrHandler

654

リファレンス
Magic eDeveloper V9 Plus

エラー処理• Yes …… レコードアクセス失敗時の設定を優先• TRAN …… トランザクションの設定を優先• No…… デフォルト指定

レコードアクセス失敗時の設定を優先
Magic Ver8.2

Magic Ver9.x

トランザクションエラー時

エラー発生時• アボート• アボート• リトライ• アボート• スキップ• アボート

レコードロック時

エラーハンドラ• リトライ• なし• アボート• レコードロック（対応：アボート）• スキップ• レコードロック（対応：無視する）

アクセス失敗時

エラーハンドラ• スキップ• 挿入／更新／削除に失敗（対応：無視する）
重複インデックス（対応：無視する）• リトライ• なし• アボート• なし

トランザクションの設定を優先
Magic Ver8.2

Magic Ver9.x

トランザクションエラー時

エラー発生時• アボート• アボート• リトライ• 復旧• スキップ• アボート

レコードロック時

エラーハンドラ• リトライ• なし• アボート• レコードロック（対応：アボート）• スキップ• レコードロック（対応：無視する）

トランザクションエラー時

エラーハンドラ• アボート• なし• リトライ• 挿入 / 更新 / 削除に失敗（対応 : 無視する）• スキップ• 重複インデックス（対応 : 無視する）

リファレンス
Magic eDeveloper V9 Plus

655

第 11 章 - データ管理

デフォルト指定
Magic Ver8.2

Magic Ver9.x

トランザクションエラー時

エラー発生時• アボート• アボート• リトライ• 復旧• スキップ• 復旧

レコードロック時• リトライ• なし• アボート• レコードロック（対応：アボート）• スキップ
アクセス失敗時• レコードロック（対応：無視する）
エラーハンドラ• スキップ• なし• リトライ• なし• アボート• なし

トランザクションエラー時

656

エラーハンドラ

エラーハンドラ• アボート• なし• リトライ• なし• スキップ• なし

リファレンス
Magic eDeveloper V9 Plus

エンドユーザメニュー & ヘルプ

12

この章では、アプリケーションのエンドユーザメニューとヘルプの設定について説明します。
メニューは、実行させる内容や、サイズ、使用権利を指定することができます。また、メニューをプルダウンメニューまたはコンテキストメニュー（ポップアップメニュー、ショートカットメニュー）のどちらにするかも指定できます。
Magic では、2 種類のヘルプの表示方式をユーザに提供できます。１つは、一般的なヘルプの表示方式で、エンドユーザがフォームまたはフォームのコントロールで必要に応じて表示し、内容を読むことができます。もう１つは自動ヘルプやツールチップで、フォー
ムのコントロールにカーソルを置くと自動的に表示されます。どちらのヘルプも、デー
タ項目、モデル、フォーム、コントロール、メニュー項目を定義する際に併せて定義できます。
本章では、次の内容について説明します。
• メニューの種類• メニューリポジトリ• メニュー定義テーブルの設定欄• 権利設定• メニュー特性• メニューのリポジトリ入力• ヘルプリポジトリ• ヘルプのタイプ

リファレンス
Magic eDeveloper V9 Plus

657

第 12 章 - エンドユーザメニュー & ヘルプ

メニューの種類
メニューには、プルダウンメニューとコンテキストメニューがあります。プルダウンメ
ニューとは、メニューバーから下に向かって表示されるメニューをいいます。このメ
ニューは、エンドユーザがコマンドを選択すると元に戻ります。一方、コンテキストメ
ニューは、画面上に表示され、エンドユーザがコマンドを選択した後も消えません。コンテキストメニューはマウスの右ボタンをクリックすると表示されます。また、ツール
バーにはツールバーボタンがあり、このボタンを使用することでコマンドを簡単に実行できます。

プルダウンメニュー
Magic では、アプリケーションを作成すると自動的にデフォルトのプルダウンメニューが生成されます。このデフォルトのプルダウンメニューは、［ファイル］、［編集］、［オプ
ション］、［ヘルプ］のほか、アプリケーションの実行に必要な基本メニューで構成されます。デフォルトのプルダウンメニューの内容は、変更、削除、追加が可能です。
プルダウンメニューは、最大で 10 レベルまで指定できます。この場合、［メニューバー］
レベルが最上位になり、このレベルも 1 レベルとして数えます。実行時、エンドユーザ
がアプリケーションを選択すると、［メニューバー］レベル（の名前）が表示されます。
また、通常、プルダウンメニューとしては、少なくても 1 つにプログラム名を指定します。このプログラム名を使用して、メニューとプログラムリポジトリのプログラムが関連付けられます。
ツールバールボタンは、プルダウンメニューに対して定義することができます。

コンテキストメニュー
コンテキストメニューは、実行モードでマウスの右ボタンをクリックすると表示されるメニューの総称です。
デフォルトのプルダウンメニューと同じく、アプリケーションを作成すると、デフォル
トのコンテキストメニュー（これを「ポップアップメニュー」といいます）も作成されます。別のコンテキストメニュー（これを「ショートカットメニュー」といいます）を定義することでデフォルトのコンテキストメニューが無効になります。
「ショートカット
メニュー」を定義した場合、そのメニューが「ポップアップメニュー」より優先されます。
定義したコンテキストメニューはタスクに関連付けることができ、この関連付けにより、
コンテキストメニューは状況対応メニューとなります。コンテキストメニューは、実行時、エンドユーザが右クリックすると表示されます。
アプリケーションに設定できるコンテキストメニューの最大レベルは、10 レベルです。

メニューリポジトリ
プルダウンメニューとコンテキストメニューの構成は、メニューリポジトリで定義します。
メニューリポジトリには、デフォルトのプルダウンメニュー構成とコンテキストメ
ニュー構成が 1 つずつ含まれています。これらのデフォルトのメニュー構成は、メニュー
リポジトリから削除できません。
メニューリポジトリでは、別のコンテキストメニュー構成（ショートカットメニュー）を定義して、アプリケーションに必要な数だけコンテキストメニューを作成できます。
ただし、プルダウンメニューは、各アプリケーションに 1 つしか持つことができないので、別のプルダウンメニュー構成は定義できません。

658

メニューリポジトリの各メニュー構成項目からは、［メニュー定義］テーブルを表示して、各メニュー構成の具体的なメニューとオプションを定義できます。各メニュー構成には、最大 10 レベルのメニューを定義できます。
リファレンス
Magic eDeveloper V9 Plus

メニューリポジトリ
デフォルトのコンテキストメニュー（ポップアップメニュー）は自動的に生成されます。
デフォルト以外の別のコンテキストメニュー（ショートカットメニュー）を定義して、そのメニューを特定のタスクに関連付けると、追加したショートカットメニューがデフォルトのポップアップメニューよりも優先します。どのコンテキストメニューにも関連付けられていないタスクの場合は、そのタスクの各状況でマウスの右ボタンをクリッ
クすると、デフォルトのポップアップメニューが表示されます。
メニュー構成は、［タスク特性］ダイアログの［高度な設定］タブにある、［ショートカットメニュー］で特定のタスクに関連付けることができます。
メニューリポジトリの項目は、デフォルトまたはユーザ定義のいずれかになります。
メニュー構成説明

デフォルト

Magic により用意されるメニューで、タスクにプルダウンメ
ニューやコンテキストメニューが定義されていない場合、このデフォルトのメニューが表示されます。また、前バージョンのプル
ダウンメニューまたはコンテキストメニューをインポートすると、そのメニューはデフォルトのメニューとして扱われます。

ユーザ定義

デフォルト以外のメニューです。このメニューは、GUI アプリ
ケーションのオンラインタスクに対してのみ関連付けが可能で
す。

メニュー名
メニューリポジトリでは、設定できるのは、この欄だけです。ここには、メニュー（プルダウンメニューまたはコンテキストメニュー）の論理名を指定します。この名前は、エンドユーザのメニューには表示されません。

メニュータイプ
この欄は、入力はできません。デフォルトで「プルダウンメニュー」、「ポップアップメ
ニュー」の２行が表示され、変更や削除はできません。
メニューリポジトリで新規の行を作成した場合、この欄は必ず「ショートカットメ
ニュー」となります。

メニューフォームの作成
メニューリポジトリ上で［オプション / フォーム作成］（Ctrl ＋ G）を実行すると、複数のプログラムに対するメニュー登録を行うことができます。
［メニューフォーム作成］ダイアログの［開始プログラム］および［終了プログラム］パ
ラメータからズームして、［プログラム］一覧からこのメニューの最初と最後のプログラ
ムを選択し、［OK］ボタンをクリックすることで登録処理が実行されます。

リファレンス
Magic eDeveloper V9 Plus

659

第 12 章 - エンドユーザメニュー & ヘルプ

メニュー定義テーブルの設定欄
メニューリポジトリの各メニュー構成項目からは、［メニュー定義］テーブルを表示して、各メニュー構成の具体的なメニューとオプションを定義できます。各メニュー構成には、最大 10 レベルのメニューを定義できます。

図 12-1 ［メニュー定義］テーブルの設定欄

タイプ［メニュー定義］テーブルのメニュー項目タイプには、次のものがあります。
• P ＝プログラム……この値を指定した場合、［パラメータ］欄を使用してプログラム
リポジトリのプログラム番号を指定します。実行時には、指定したプログラムをエンドユーザが選択すると、そのプログラムが実行されます。また、各欄では、実行するプログラムに関する設定を行います。
• E ＝ OS コマンド……この値を指定した場合、［パラメータ］欄を使用してオペレー
ティングシステムのコマンドを指定します。実行時には、指定したオペレーティング
システムのコマンドをエンドユーザが選択すると、そのコマンドが実行されます。
• V ＝イベント……この値を指定した場合、［パラメータ］欄を使用してイベントを指定します。設定できるイベントタイプは［S= システム］、［I= 内部］、［U= ユーザ］のいずれかとなります。実行時にエンドユーザによって選択されるとイベントが発生し、そのイベントに関連付けられたイベントハンドラがあれば、それが実行されます。
• L ＝ライン……この値を指定しておくと、メニュー上、この位置に横線（区切り線）
が表示されます。
• M ＝メニュー……メニューを階層化する場合に、この値を指定します。プルダウン
メニューで、このメニューが最上位の場合、［パラメータ］欄で指定した名前がメ
ニューバーに表示されます。一方、メニューが下位のメニューの場合、またはコンテ
キストメニューの場合は、［パラメータ］欄で指定した名前は、メニューの中のテキスト（コマンド名）になります。
実行時、このメニューの中のテキストをエンドユーザが選択すると、その下位のメニューが表示されます。また、プルダウンメニューの最上位を除くレベル、またはコンテキストメニューのすべてのレベルで、実行時にメニューの中でテキストの文字の前に下線が表示されるように設定できます。その場合、下線付きで表示したい文字の前にアンパサンド（＆）を付けます。これで、実行時、メニューが表示されたとき、この文字をエンドユーザが入力すると、このテキスト（コマンド）を選択したことになります。
なお、プルダウンメニューの最上位のレベル（メニューバーのレベル）の場合には、

Alt キーとの組み合わせ文字によるショートキーが自動生成されます。ただし、ショー
トキーは、テキストベースのシステムだけ有効です。

660

リファレンス
Magic eDeveloper V9 Plus

メニュー定義テーブルの設定欄

ユーザメニュー名
この欄には、実行時にメニューに表示されるテキスト（コマンド名）を定義します。エンドユーザは、このテキストを見ることになります。

論理メニュー名
この欄には、メニュー項目（コマンド）の論理名を設定します。この論理名は、エンドユーザには見えません。プログラム内で指定する場合はこのメニュー名を使用します。

パラメータ
この欄の値は、［タイプ］欄に指定した値（メニューのタイプ）によって異なります。この欄をズームすると、［タイプ］欄に指定した値に応じたメニュー定義画面が表示されます。
次の画面では、［パラメータ］欄に「サブメニュー」と表示されています。
［パラメータ］
欄でズームすると 1 つ下位のレベルの［メニュー定義］テーブルが開きます。
タイプ

パラメータ

意味

値

P ＝プログラムプログラム番号

ズームしてプログラム一
覧を表示し、プログラム
番号を選択します。

プログラム番号E ＝ OS コマンドOS コマンド

一時的に OS に抜け、OSのコマンドを実行することができます。スクリプ
トやバッチファイルなどの実行可能なオペレー
ティングシステムのコマンドを指定できます。
Windows の「ファイルを開く」ダイアログでファイルを選択することもできます。

文字列。広域ウィンド
ウをオープンして入力することもできます。
OS コマンドを指定しなかったときには、実行時、このメニュー項
目をエンドユーザが選択すると OS シェルへ移行します。

V ＝イベントイベント

イベントを実行し、イベ
ントハンドラを駆動させます。

［システム］、［内部］、［ユーザ］のいずれかのタイプに属するイベ
ント

L ＝ライン

N/A

前のメニュー項目と次のメニュー項目との間に横の区切り線を表示することができます。

なし

M ＝メニュー

サブライン

ズームして、［メニュー定義］テーブルを表示します。このテーブルは、１つ下のレベルのメニュー
定義画面です。

このサブメニューレベ
ルのオプション数

ショートキー
この欄をズームすると、ダイアログが表示されます。このダイアログを使用して、メニューまたはメニュー項目のショートキー（組み合わせキー）を指定できます。
この設定は、デフォルトのプルダウンメニューに限り有効です。

リファレンス
Magic eDeveloper V9 Plus

661

第 12 章 - エンドユーザメニュー & ヘルプ

権利設定
メニューを定義するときには、［オプション／権利設定］コマンドを使用して、オプションを設定することができます。
［メニュー］リポジトリの画面で、［オプション／権利設定］を選択すると、［権利設定］
ダイアログが表示されます（図 12-2）。このダイアログでは、メニューシステムに対する開発者の使用権利を設定できます。使用権利は、「照会権利」、「修正権利」、「削除権利」、「登録権利」の 4 つについて個別に設定が可能です。

図 12-2［権利設定］ダイアログ

メニュー特性による権利設定［メニュー特性］ダイアログの［特性］タブの［権利］欄を使用して、メニューの使用権利を指定することもできます。［権利］欄には使用権利を番号で指定します。
この番号により、エンドユーザが、そのメニューを使用できるかどうかが決まります。
指定した使用権利が付与されていないユーザは、このメニューにはアクセスできず、メニュー項目を選択することもできません。具体的には、メニューは表示されず、他のメニューが寄せられて表示されます。
使用権利の詳細については、第 13 章「使用権利」を参照してください。

662

リファレンス
Magic eDeveloper V9 Plus

メニュー特性

メニュー特性［メニュー定義］テーブル上で、［編集／特性］を選択すると、［メニュー特性］ダイア
ログが表示されます。［特性］タブに表示される欄は、［メニュー定義］リポジトリの［タイプ］欄の値によって異なります。

図 12-3［メニュー特性］ダイアログ［メニュー特性］ダイアログは、次の 3 つのタブで構成されます。
• ［特性］タブ• ［イメージ］タブ• ［初期設定］タブ［特性］タブ権利
この欄には使用権利を指定します。この使用権利により、実行時、エンドユーザがメ
ニューにアクセスできるかどうかが決まります。

ヘルプ画面
この欄を使用して、アプリケーションメニューにヘルプ画面を関連付けることができます。ズームすると［ヘルプ一覧］が表示されますので、ここからヘルプ画面を指定します。
詳しくは、「ヘルプリポジトリ」を参照してください。

自動ヘルプ
アプリケーションメニューに自動ヘルプを設定します。ズームすると［ヘルプ一覧］が表示されますので、ここから自動ヘルプを指定します。

リファレンス
Magic eDeveloper V9 Plus663

第 12 章 - エンドユーザメニュー & ヘルプ

パラメータ［パラメータ］欄からズームすると、パラメータ一覧が開きます。パラメータ一覧の左側には渡されるパラメータが表示され、右側には項目一覧が表示されます。データ項目の一覧にアクセスするには、パラメータ一覧内の［項目］欄からズームします。
詳細は、第 7 章「処理コマンド」の「コール」の節を参照してください。

表示
メニュー項目のタイプが［OS コマンド］の場合には、外部プログラムの表示形式を指定します。値は、「H= なし」、「N= 通常」、「Ｘ ＝最大化」、「Ｍ ＝最小化」のいずれかが指定できます。
• H ＝なし……この値にしておくと、外部プログラムが、現在表示されているウィンド
ウの裏で実行されます。つまり、外部プログラムはエンドユーザには見えません。
• N ＝通常……デフォルト値です。この値にしておくと、外部プログラムが最前面のウィンドウで実行されます。
• X ＝最大化……外部プログラムが最前面のウィンドウで実行されるとともに、そのウィンドウが画面いっぱいに最大化されます。
• M ＝最小化……外部プログラムが最小化されて実行されます。つまり、外部プログ
ラムはアイコン化されますます。

ウェイト［ウェイト］欄では、呼び出されているプログラムの実行と並行して Magic のプログラムを実行するか、または、プログラムの完了まで Magic のプログラムをいったん待機させるかどうかを指定できます。
この欄は、［メニュー定義］リポジトリの［タイプ］欄を「E=OS コマンド」にしているときにだけ表示されます。
• アンチェック……デフォルト値です。呼び出されているプログラムの実行と並行して
Magic のプログラムが実行されます。
• チェック…… 呼び出されているプログラムの完了後、Magic のプログラムが再開されます。

［イメージ］タブ
イメージ場所
この特性は、オプションイメージが表示される場所を指定します。次のオプションから選択します。
• N ＝なし……メニューイメージを表示しません。
• B ＝両方……メニューイメージをツールバーとメニューに表示します。
• T ＝ツールバー……メニューイメージをツールバーだけに表示します。
• M ＝メニュー……メニューイメージをメニューだけに表示します。

ボタンイメージ
Magic イメージファイルの記述に基づいて定義したユーザイメージファイルです。指定
したイメージがツールバーボタンに表示されます。

664

リファレンス
Magic eDeveloper V9 Plus

メニューのリポジトリ入力

イメージ番号
内部 Magic ツールボタンイメージの番号です。これらのイメージは Magic の内部に埋め込まれており、選択時に使用できます。イメージは、［表示内容を取得］ダイアログから選択します。

表示グループ
ツールボタンをグループ分けする場合のグループの番号です（0 〜 9999）。グループ間にはセパレータが挿入されます。

ツールチップ50 文字以内の文字列です。マウスカーソルをツールボタン上に置いたときに表示されます。ボタンの機能に関する簡単なヒントを記述します。

［初期設定］タブ
チェックマーク
メニュー項目の左にチェックマークを付けるかどうかを指定します。ツールボタンを指定している場合、このチェックを付けると、そのボタンが押されている状態で表示されます。

可視
メニュー項目またはツールバーボタンの表示、非表示の切替が可能です。

有効メニュー項目またはツールバーボタンの有効、無効の切替が可能です。
注意：外部アプリケーションが非表示もしくはバックグラウンドで実行されている場合、
外部プログラムの標準出力メッセージは、画面ではなくディスクファイルか、NULL ファ
イルにリダイレクトしてください。
ツールバーのボタンを指定している場合、そのボタンをクリックすると、ボタンが定義されているメニューと同等の処理が実行されます。
ツールバーのボタンが多い場合、ツールバーからはみ出したボタンは表示されません。

メニューのリポジトリ入力
メニューのリポジトリ入力を行うと、既存のメニュー内容に対してどのような処理を行うかを確認するダイアログが表示されます。ここには以下の確認が表示されます。
• 「デフォルトのプルダウンメニューを上書きしますか？」• 「デフォルトのコンテキストメニューを上書きしますか？」
ここで「Yes」を入力するとメニューの内容が上書きされ、「No」を入力すると既存のメニュー内容を残した状態で追加されます。

ヘルプリポジトリ
ヘルプリポジトリでは、エンドユーザヘルプを定義します。このリポジトリには以下のカラムがあります。
リファレンス
Magic eDeveloper V9 Plus

665

第 12 章 - エンドユーザメニュー & ヘルプ• #……この欄には、ヘルプ画面を識別するための連番が表示されます。この値は変更できません。
• 名前……ヘルプ画面を示す名前です。
• タイプ……ヘルプの種類を指定します。
• フォルダ……ナビゲータで定義したヘルプフォルダの 1 つにヘルプを格納する場合
は、［フォルダ］ボックスをクリックして格納先のフォルダを選択します。
• 公開ヘルプ名……ヘルプの公開名を指定します。そのヘルプ定義をコンポーネントとして外部から利用する場合に必須です。公開名はアプリケーションファイル内でユ
ニークでなければなりません。

図 12-4［ヘルプ］リポジトリ

ヘルプのタイプ
Magic では、次の 5 種類のヘルプが使用できます。
• I= 内部……Magic 独自の形式のヘルプ• P= 自動……カーソルを置いた場合に自動的にステータスバーに表示されるヘルプ• W=Windows 形式……Windows ヘルプまたは HTML ヘルプシステムへの接続• T= ツールチップ……ツールバーのボタンにカーソルを置いた場合に自動的に表示されるヘルプ• U=URL……ブラウザ形式のヘルプ
図 12-4 に示すように、それぞれのタイプをヘルプリポジトリで定義します。タイプのデ
フォルト値は「I= 内部」です。
［タイプ］のコンボボックスをクリックすると、別のタイプを選択できます。Windows ヘルプと URL ヘルプの実際の内容は、Magic 外部で定義されることに注意してください。

666

リファレンス
Magic eDeveloper V9 Plus

ヘルプのタイプ

内部ヘルプ
Magic 独自の形式のヘルプを、内部ヘルプといいます。ヘルプのテキストは、［特性］シートの［テキスト］欄で設定します。

図 12-5 内部ヘルプの［ヘルプ特性］［内部ヘルプエディット］画面で、［編集］、［特性］の順に選択するか、Ctrl+P キーを押して、［ヘルプ特性］シートを開きます。
［ヘルプ特性］シートの［テキスト］をクリックし、表示内容を入力します。用意されているスペースが十分でない場合は、図 12-5 に示すようにダイアログボックスボタンをクリックしてテキストボックスを開き、メッセージ全体を表示することができます。
設定可能な内部ヘルプの［ヘルプ特性］は［入力］、［表示］、［位置とサイズ］で構成されています。

入力• タイトルバー……タイトルバーの見出しスタイルを指定します。
「Yes」か「No」のいずれを指定します。タイトルバーのテキストは、［ヘルプ］リポジトリの［名前］欄から取り込まれます。
• システムメニュー……タイトルバーを「Yes」とした場合、エンドユーザがシステムメ
ニューからヘルプ画面にアクセスできるかどうかを指定します。システムメニューは、
ここで「Yes」が設定されている場合のみ表示されます。

表示• フォント……ヘルプ画面のフォントスタイルを指定します。ズームすると［フォント］
テーブルが表示されます。
• 色……ヘルプ画面の色を指定します。ズームすると［基本色一覧］が表示されます。
• 境界……フレームの種類を指定します。選択肢は以下の通りです。
•

T ＝細線

•

H ＝太線（デフォルト）

•

N ＝なし

リファレンス
Magic eDeveloper V9 Plus

667

第 12 章 - エンドユーザメニュー & ヘルプ

位置とサイズ• 左辺位置……ヘルプ画面の左辺位置を指定します。
• 上辺位置……ヘルプ画面の上辺位置を指定します。
• 幅……ヘルプ画面の幅を指定します。
• 高さ……ヘルプ画面の高さを指定します。

自動ヘルプ［ヘルプ］リポジトリの［自動ヘルプ］行から、［編集 / 特性］（Ctrl+P）を実行して［ヘルプ特性］シートを開き、自動ヘルプを作成します。
［テキスト］をクリックすると、自動ヘルプを起動した際にステータスバーに表示されるメッセージ（最大 :250 桁）を入力できます。

Windows 形式ヘルプ
Windows 形式のヘルプは、Windows ヘルプシステムにより指定された Windows 形式ヘル
プを開きます。Windows 形式ヘルプを［ヘルプ］リポジトリで指定してズームすると、［ヘルプ特性］シートを開くことができます。

図 12-6 Windows 形式ヘルプの［ヘルプ特性］

Windows 形式ヘルプの設定項目には以下のものがあります。

ヘルプファイル名
ここには、専用のオーサリングツールなどを使用して作成した Windows ヘルプのファイ
ル名（*.Hlp/*.CHM）を入力します。ここからズームして［ファイルを開く］ダイアログ
を開き、ヘルプファイルを指定することもできます。

668

リファレンス
Magic eDeveloper V9 Plus

ヘルプのタイプ

ヘルプコマンド
Windows のヘルプコマンドを指定します。この欄には、デフォルトのヘルプコマンドが表示され、そのまま使用することもできます。また、コンボボックスを開いて、そこでコマンドを指定しても結構です。指定できるコマンドは、次の通りです。
• C ＝コンテキスト……HELP_CONTEXT コマンドを発行します。
［キー値］欄には、トピックのコンテキスト番号を示す数値を指定します。この設定の場合、.HPJ ファイルの［MAP］セクションで定義されているコンテキストのうち、［キー値］欄で指定したコンテキスト番号（マップ ID）に対応するトピックのヘルプが表示されます。
• O ＝目次……HELP_CONTENTS コマンドを発行します。
［キー値］欄の値は無視されます。この設定の場合、.HPJ ファイルの［OPTIONS］セクションの「CONTENTS」オプションで定義されている目次トピックが表示されます。
• S ＝セットコンテンツ……HELP_SETCONTENTS コマンドを発行します。
SetContent マクロを呼び出し、ヘルプ システムの目次トピックのコンテキスト文字列を定義します。
［キー値］欄には、アプリケーションで目次トピックとして表示したいトピックのコ
ンテキスト番号を指定します。エンドユーザが F1 キーを押したとき、この欄で指定した目次トピックが表示されます。
• P ＝コンテキストポップアップ……HELP_CONTEXTPOPUP コマンドを発行します。
［キー値］欄には、トピックのコンテキスト番号を示す数値を指定します。この設定の場合、.HPJ ファイルの［MAP］セクションで定義されているコンテキストのうち、［キー値］欄で指定したコンテキスト番号に対応するトピックのヘルプがポップアップウィンドウに表示されます。
• K ＝キーワードで検索……HELP_KEY コマンドを発行します。
［キー値］欄には、表示したいトピックのキーワード文字列を指定します。この設定の場合、キーワード一覧のキーワードのうち、［キー値］欄で指定したキーワードに合致するキーワードがあった場合、そのキーワードで示されるトピックが表示されます。キーワード一覧に合致するキーワードが複数見つかったときには、［キーワード
で検索］ダイアログが表示され、合致するキーワードがすべて［ジャンプ一覧］に表示されます。
• M ＝ヘルプマクロ……HELP_COMMAND コマンドを発行します。
［キー値］欄には、ヘルプマクロの文字列を指定します。この設定では、［キー値］欄で指定したヘルプマクロが実行されます。
• F ＝ ForceFile……HELP_FORCEFILE コマンドを発行します。
［キー値］欄の値は無視されます。この設定の場合、指定したヘルプファイルが表示されます。ヘルプファイルが適当でない場合、処理は行われません。
• H ＝ Help on Help……HELP_HELPONHELP コマンドを発行します。
［キー値］欄の値は無視されます。この設定の場合、「ヘルプの使い方」の目次トピッ
クが表示されます。
• Q ＝終了……HELP_QUIT コマンドを発行します。
［キー値］欄の値は無視されます。この設定の場合、WinHelp に対してヘルプが必要でない旨のメッセージが送られ、ヘルプ表示をクローズします。

キー値
ここには、数値または文字列を指定しますが、この数値または文字列により Windows のヘルプシステムのヘルプ画面が識別されます。
Windows のヘルプシステムについては、Windows のヘルプ作成用のオーサリング
ツールのマニュアルを参照してください。

リファレンス
Magic eDeveloper V9 Plus

669

第 12 章 - エンドユーザメニュー & ヘルプ

HTML ヘルプ
Magic は、HTML ヘルプ（CHM）ファイルをサポートします。
［Windows 形式］ヘルプを選択し、［ヘルプファイル名］特性に CHM ファイルを指定することでアクセスできるよ
うになります。HTML ヘルプで使用できるヘルプコマンドは以下の通りです。
• C ＝コンテキスト……HH_HELP_CONTEXT コマンドを発行します。
［キー値］欄には、トピックのマップ番号（トピック ID ではありません。）を示す数
値を指定します。
• K ＝キーワードで検索……［キー値］欄には、トピックに定義されたキーワードを指定します。
• Q ＝終了……［キー値］欄の値は無視されます。表示中のヘルプを閉じます。

ツールチップ
ツールチップは、エンドユーザがコントロール上にカーソルを置いたときに自動的に表示されます。
ツールチップヘルプを作成するには、ヘルプリポジトリのツールチップヘルプ項目の［名前］設定から、［ヘルプ特性］シートにズームします。
ツールチップをコントロールに付加するには、［コントロール特性］シートの［ツールチップ］欄を使用します。この表示は、［設定／動作環境］で表示される［動作環境］ダイアロ
グの［動作設定］タブにある［ツールチップ表示タイムアウト］設定に定義した時間まで、あるいはカーソルが移動するまでユーザの画面に残ります。
使用されるフォントは、フォントテーブルの［ツールチップ］で定義したフォントです。
色は選択できません。ツールチップは最大 500 桁です。

URL
URL ヘルプは、ブラウザタスクにだけ有効なヘルプで、Web ブラウザから F1 キーを押したときに開くブラウザページを指定します。
［URL ヘルプ特性］シートの［URL］をクリックし、URL を入力します。

670

リファレンス
Magic eDeveloper V9 Plus

使用権利

13

Magic には使用権利システムが用意されています。このシステムを使うことで、ユーザの識別やパスワードの認証が可能になります。このシステムでは、エンドユーザの管理のほか、アプリケーションの内容の管理も行えます。管理は、ユーザに対して権利を割当てるという方法で行います。
本章では、次の内容について説明します。
• 権利リポジトリ• 権利設定ダイアログ• セキュリティキー• 動作環境の使用権利• ユーザ ID テーブル• ユーザグループテーブル• シークレット名テーブル• データのセキュリティ• HTTP 認証• Active ディレクトリによる認証方法• LDAP サーバによる認証方法

リファレンス
Magic eDeveloper V9 Plus

671

第 13 章 - 使用権利

使用権利システムの用途
使用権利システムにより、開発中のアプリケーションの構成要素に対してアクセスを制限したり、また、プログラムの実行やメニューの選択など、操作に関しての制限が可能になります。また、Magic の使用権利システムは、データベース自体に用意されている
セキュリティ機能にも対応しています。このため、データテーブルへのアクセスを制限したり、データを暗号化したりといった処理も可能です。
使用権利を設定する場合、まず、必要なグループをいくつか定義し、各グループに権利を割当てます。その後、ユーザの種類や性格に応じて、各ユーザをグループに割当てます。この作業は、システム管理者の仕事になります。ユーザは、どのグループにも割当てることができます。また、同一のユーザを複数のグループに割当てることもできます。
以下、実際の例を使用して、Magic の使用権利システムを説明します。ここでは、「ユー
ザ名「Magic」は、顧客ファイルの情報を更新する権利を持つ」と仮定し、この前提で解説を進めます。

Magic のセキュリティとユーザの役割
Magic の使用権利システムは、アプリケーション層と動作環境層という 2 つの層で構成されています。最初のアプリケーション層は、アプリケーションを組み立てている要素の集合で、こういった要素に対しては、ユーザに権利が付加されている場合、作成や修正などの処理が可能になります。また、動作環境層には、エンドユーザや開発者の役割が保存されます。たとえば、「管理者」などと規定された役割と、「顧客削除の権利」などといったアクセス権などがあります。こういった役割とアプリケーションの要素に対する使用権利の組み合わせにより、どういったユーザがどういった要素にアクセスでき、どういった処理ができるかが決まります。
セキュリティシステムを構築する場合、通常、データのセキュリティと処理のセキュリ
ティという 2 つの側面を考慮する必要があります。Magic の場合、データのセキュリティ
は、Magic 自体のセキュリティ機能と、使用しているデータベースのセキュリティ機能の両方を使用して実現されます。この方法では、アプリケーションファイル自体とアプ
リケーションのデータファイルの両方が保護されます。また、処理のセキュリティに関しては、アプリケーション層と動作環境層の 2 つの層によってセキュリティが確保されます。
以下は、アプリケーション層と動作環境層の詳細です。
• アプリケーション層……この層によって、アプリケーションのセキュリティが確保されます。この層に関する設定は、開発者が行います。設定は、アプリケーションのディレクトリや構成要素に対して、使用権利を割当てるという方法で行います。アプ
リケーションの要素に対して権利を割当てた場合、その権利が与えられていないユー
ザは、その要素に対してアクセスすることはできません。アプリケーション層に関する設定は、開発時にだけ行えます。
• 動作環境層……アプリケーションの外部にあり、ユーザとユーザの使用権利に関する情報が保存されます。この層は、Magic を初めてインストールしたときに自動的に定義されますが、その後、スーパーバイザが内容を修正することができます。この層には、ユーザ、ユーザグループ、その他、認証に関する情報が置かれます。この層に関する設定は、実行時と開発時の両方で行うことができます。ただし、スーパーバイザのユーザでなければなりません。

スーパーバイザ新規の Magic 環境を開くと、デフォルトとして、スーパーバイザ（Supervisor）が自動的に定義されます。ただし、このスーパーバイザのパスワードは空白になっています。したがって、Magic の使用権利システムには、最初はパスワードなしでスーパーバイザとしてアクセスすることができます。アクセスは、［ログオン］ダイアログを使用して行います（図 13-1）。［ログオン］ダイアログは、［設定／ログオン］を選択すると開きます。

672

リファレンス
Magic eDeveloper V9 Plus

権利リポジトリ

図 13-1 ［ログオン］ダイアログ

権利リポジトリ
権利リポジトリを使用して、権利の名前とキーを定義できます。ここで定義した権利がアプリケーションで使われます。たとえば、「顧客ファイルの情報を更新する権利」という権利を定義したい場合、権利リポジトリの［キー］欄に「XYZ」と入力し、［名前］欄に「登録−顧客」という名前を指定します。
権利リポジトリは、最大 9,999 の権利を設定できます。

権利リポジトリの設定欄
権利リポジトリの設定欄は、スーパーバイザ以外は設定できません。内容の照会は、すべてのユーザが可能です。ただし、ユーザが使用権利を照会した場合、そのユーザに付与されている使用権利だけが表示されます。ユーザに割当てられていない権利は、アスタリスク（＊）で示されます。
権利リポジトリは、オープンしているアプリケーションで［ワークスペース／権利］を選択すると開きます。

図 13-2 権利リポジトリ

権利リポジトリの設定欄は、次の通りです。

リファレンス
Magic eDeveloper V9 Plus673

第 13 章 - 使用権利

名前
この欄には、たとえば「登録−顧客」など、権利を示す名前を指定します。ここで指定した名前は、［利用可能権利一覧］などに表示されます。この名前は、Rights 関数のパラメータとして指定できます。

キー
この欄には、コード名を指定します。このコード名を使用して、権利が識別されます。
たとえば、「顧客ファイルの情報を更新する権利」という例では、キーとして XYZ を使用しています。この場合、この XYZ というキーをユーザの［権利テーブル］に定義する
ことで、そのユーザに権利（例では、「顧客ファイルの情報を更新する」という権利）が付与されます。

公開
この欄に設定できる値は、次のいずれかです。
• Yes……ユーザまたはユーザグループの権利リポジトリで定義されている権利が、ア
プリケーション外部から見えるようになります。つまり、スーパーバイザが、ユーザ
ID またはユーザグループに関する処理を行う場合、権利リポジトリを開いて権利（ただし、公開されている権利のみ）を見ることができます。
• No……スーパーバイザは、ユーザ ID またはユーザグループに関する処理を行っているとき、権利リポジトリを開いて権利を見ることができなくなります。アプリケー
ションの重要な要素に対するアクセスを制限したい場合、通常はこの設定にしておきます。
スーパーバイザは、公開権利のキーを記録しておく必要はありません。これは、［権利一覧］に表示される権利名を使用して、その権利のキーを取得できるためです。スーパー
バイザは、ユーザやユーザグループに対して非公開の権利を割当てることができます。
この場合は、［権利一覧］には非公開の権利の名前は表示されません。スーパーバイザが直接、権利のキーを指定します。
通常、開発者だけに関係があり、エンドユーザには関係のない権利は、非公開にしておきます。また、アプリケーションの開発者は、別の開発者に非公開の権利を割当てることができます。これによって、この権利を付与された開発者だけが、アプリケーションの変更を行うことができるようになります。この方法を使うことで、たとえば、アプリ
ケーションの開発元のソフトウェアハウスが、ほかのプログラマにアプリケーションを販売したときでも、そのアプリケーションが無制限にカスタマイズされることを防ぐことができます。つまり、使用権利の内容を制限することで、ある程度のカスタマイズは可能ですが、その使用権利の範囲に制限されることになります。
公開権利が表示される［権利一覧］は、アプリケーション外部にあります。また、［権利一覧］の公開権利の名前を使用して、その権利のキーを取得することもできます。このため、公開権利は、状況によっては保護する必要があります。保護したい場合、［CTL 特性］ダイアログで［公開権利アクセスキー］を定義します。この場合、［公開権利アクセ
スキー］をスーパーバイザの［権利テーブル］に定義しない限り、［権利一覧］を表示できなくなります。この公開権利アクセスキーは、スーパーバイザでも取得することはできないようになっています。
ユーザに付与されている権利は、Rights 関数を使用してチェックできます。この関数は、［式］テーブルの［権利］ボタンを使用して実行できます。このボタンをクリックすると、［利用可能権利一覧］が開きます。

674

リファレンス
Magic eDeveloper V9 Plus

権利設定ダイアログ

フォルダ
権利が登録されているフォルダ名が表示されます。権利の内容を必要に応じて整理した
いばあいに使用します。ナビゲータペインで権利アイコンをクリックしてハイライト状
態にし、行作成（F4）を実行することで登録できます。
詳細は、第 1 章「導入とインタフェース」を参照してください。

公開権利名
権利をコンポーネントとして公開する場合、この欄にユニークな名前を入力してください。

権利設定ダイアログ［権利設定］ダイアログを使用して、アプリケーションの各部に対してアクセスできるか
どうか、また、どういった処理をできるかどうかを指定することができます。
［権利設定］ダイアログの設定は、開発モード、実行モードのどちらにも有効です。開発モード
では、アプリケーションに対して何らかの処理を行おうとした場合（たとえば、テーブ
ルリポジトリで新規行の作成、プログラムの実行など）、その処理に関する権利が開発者に与えられているときに限って、処理が可能になります。同様に、エンドユーザが顧客ファイルに新規の顧客を追加しようとした場合、その権利が付与されているときにだけ、
顧客の追加が可能になります。
［権利設定］ダイアログは、［オプション／権利設定］を選択すると開きます。また、［モデル］、［プログラム］、［ヘルプ］、［メニュー］の各リポジトリ、［CTL 特性］ダイアログ
から開くこともできます。
［権利設定］ダイアログに対しては、スーパーバイザとアプリケーションのスーパー権利
キーのオーナーは、制限なしにアクセスが可能です。たとえば、スーパーバイザとスー
パー権利キーのオーナーは、［権利設定］ダイアログで権利番号を入力することもできま
すし、［利用可能権利一覧］を開いて権利の番号や名前を選択することもできます。ここで指定した権利が与えられているユーザまたは開発者が、［権利設定］ダイアログで定義されている処理を行うことができるようになります。また、権利を指定すると、その権利を持つユーザは権利の名前と番号を見ることができるようになります。
同じ権利を複数の Magic の処理に割当てることもできます。
処理に権利を指定していない場合、その処理は保護されません。この場合、処理へのア
クセスに制限がないため、すべてのユーザが処理を実行できます。
ユーザまたは開発者に対して、［権利設定］ダイアログのいずれかの権利が付与されている場合、そのユーザまたは開発者は、［権利設定］ダイアログを開いて、その権利を別の権利に変更することができます。また、その権利を削除することもできます。
たとえば、あるユーザに 4 番の権利（テーブルに APG を実行できる権利）が付与されているとします。このほかにも 4 と 6 番の権利を持つユーザがいる場合、そのユーザは、
テーブルリポジトリから［権利設定］ダイアログを開き、［実行／ APG 権利］欄の値を4 から 6 に変更するといった操作が可能です。この場合、4 番の権利しか持っていない
ユーザは APG を使用できなくなります。
権利が付与されていないときには、［権利設定］ダイアログの設定の変更や表示はできません。たとえば、ユーザや開発者に 6 番の権利が与えられていないときには、［実行／APG 権利］欄では、番号、名前ともアスタリスクが表示され、その内容を見ることはできません。

リファレンス
Magic eDeveloper V9 Plus

675

第 13 章 - 使用権利

モデルリポジトリの［権利設定］ダイアログ

図 13-3 モデルリポジトリに権利を定義する

モデルリポジトリで［権利設定］ダイアログを表示した場合、［権利設定］ダイアログに
次のような欄が表示されます。

照会権利
この欄には、［利用可能権利一覧］の権利のうち、いずれかの権利（アクセス権）を番号で指定します。この権利を与えられているユーザが、モデルを表示できるようになります。この権利では、モデルの更新は可能ですが、保存はできません。なお、この権利がない場合、ユーザはモデル、テーブル、プログラム、ヘルプ、メニュー、コンポーネン
トの特性値を参照することができません。

修正権利［権利用可能権利一覧］の権利のうち、いずれかの権利を番号で指定します。この権利を与えられているユーザが、モデルを編集できるようになります。この欄を使用して、モデル定義出力の処理の内容を制御できます。

削除権利
この欄には、［利用可能権利一覧］の権利のうち、いずれかの権利を番号で指定します。
この権利を与えられているユーザは、モデルを削除できるようになります。なお、モデルの削除には削除権利のほか、ユーザに修正権利も付与されていることが必要です。

登録権利
この欄には、［利用可能権利一覧］の権利のうち、いずれかの権利を番号で指定します。
この権利を与えられているユーザが、新規のモデルを登録できるようになります。

676

リファレンス
Magic eDeveloper V9 Plus

権利設定ダイアログ

テーブルリポジトリの［権利設定］ダイアログ

図 13-4 テーブルリポジトリに権利を定義する

テーブルリポジトリから［オプション／権利設定］（F9）を選択すると［権利設定］ダイ
アログがオープンします。このダイアログを使用して、修正、削除、登録、APG の権利を設定できます。タイトル行をズームして設定を行った場合、その設定は、新たに作成するテーブルの権利の初期値となります。
また、テーブルリポジトリの既存の行をズームしても［権利設定］ダイアログがオープンします。この場合、その行のテーブルについて、権利の設定が可能です。ダイアログの欄は、次の通りです。
• 照会権利• 修正権利• 削除権利
• 登録権利これら 4 つの欄の詳細については、本章の「モデルリポジトリの［権利設定］ダイア
ログ」の節（676 ページ）を参照してください。

実行 /APG 権利
この欄には、［利用可能権利一覧］の権利のうち、いずれかの権利を番号で指定します。
この権利を与えられているユーザが、APG を使用してプログラムを作成できるようになります。

プログラムリポジトリの［権利設定］ダイアログ
プログラムリポジトリのタイトル行をズームすると［権利設定］ダイアログがオープンされます。このダイアログでは、プログラムについて、修正、削除、登録、APG の権利を設定できます。タイトル行をズームして設定を行った場合、その設定は、新たに作成するプログラムの権利の初期値となります。

リファレンス
Magic eDeveloper V9 Plus

677

第 13 章 - 使用権利

図 13-5 プログラムリポジトリに権利を定義する

また、テーブルリポジトリの既存の行をズームしても［権利設定］ダイアログがオープンします。この場合、その行のプログラムについて、権利の設定が可能です。ダイアロ
グの欄は、次の通りです。
• 照会権利• 修正権利• 削除権利これら 3 つの欄の詳細については、本章の「モデルリポジトリの［権利設定］ダイア
ログ」の節（676 ページ）を参照してください。

実行／ APG 権利［実行／ APG ］欄には、［利用可能権利一覧］の権利のうち、いずれかの権利を番号を指定します。この権利を与えられているユーザが、実行時、プログラムを実行できるようになります。
この欄では、プログラムの実行または実行不可という基本的な設定しかできません。
ただし、Rights 関数と User 関数を使うことで、ユーザごとにプログラムに実行または実行不可を細かく指定できます。たとえば、この 2 つの関数を使用して、ユーザに付与されている権利をもとにカーソルの停止や入力の制限といった処理が可能です。さらに、ユーザ ID と、そのユーザに与えられている権利をもとに、コントロールの可視特性を制御することもできます。そのほか、条件付きの［項目更新］コマンドを使うことで、一定範囲外の値を項目に入力できるようにするといったことも可能です。
Rights 関数と User 関数については、それぞれ、第 8 章「関数」を参照してください。

［実行／ APG 権利］欄の設定は、実行時にだけ有効です。その他の欄の設定は、開発時にだけ有効です。

登録権利
この欄は、プログラムリポジトリの行がいずれもハイライトされてない状態で、タイトル行から［権利設定］ダイアログを開いたときにのみ表示されます。この欄に、［利用可能権利一覧］のいずれかの権利（アクセス権）を指定しておくと、その権利を付与されているユーザが新規にプログラムを作成できるようになります。

678

リファレンス
Magic eDeveloper V9 Plus

権利設定ダイアログ

ヘルプリポジトリの［権利設定］ダイアログ

図 13-6 ヘルプリポジトリに権利を定義する

ヘルプリポジトリから［権利設定］ダイアログを開くと、［権利設定］ダイアログには、
次のような欄が表示されます。
• 照会権利• 修正権利• 削除権利
• 登録権利
各欄についての詳細は、本章の「モデルリポジトリの［権利設定］ダイアログ」の節（676 ページ）を参照してください。

メニューリポジトリの［権利設定］ダイアログ

図 13-7 ［メニュー］リポジトリに権利を定義する

メニューリポジトリから［権利設定］ダイアログを開くと、［権利設定］ダイアログには、次のような欄が表示されます。
• 照会権利• 修正権利• 削除権利
• 登録権利リファレンス
Magic eDeveloper V9 Plus

679

第 13 章 - 使用権利

各欄についての詳細は、本章の「モデルリポジトリの［権利設定］ダイアログ」の節（676 ページ）を参照してください。

実行時のメニューのアクセス権
上記の 4 つの欄は、いずれも、メニュー定義に対して開発者がアクセスできるかどうかを指定するするための欄です。このほか、実行時、個々のメニュー項目に対してユーザがアクセスできるかどうかを指定することもできます。特定のメニュー項目についてユーザが権利を付与されていない場合、ユーザに対しては、そのメニュー項目と下位のメニュー項目は表示されません。
特定のメニュー項目について権利を設定したい場合、メニューリポジトリで、権利を設定したいメニュー項目をハイライトさせた後、［編集／特性］を選択します。選択後、［メ
ニュー特性］ダイアログが開きますので、このダイアログの［使用権利］欄に使用権利の番号を指定します。

コンポーネントリポジトリの［権利設定］ダイアログ

図 13-8 コンポーネントに権利を定義する

コンポーネントリポジトリから［権利設定］ダイアログを開くと、［権利設定］ダイアロ
グには、次のような欄が表示されます。
• 照会権利• 修正権利• 削除権利。
各欄についての詳細は、本章の「モデルリポジトリの［権利設定］ダイアログ」の節（676 ページ）を参照してください。

登録権利
この欄は、エントリが強調表示されていないときに、コンポーネントの最初の行からのみ表示できます。［登録権利］欄には、アプリケーションに新しいコンポーネントを登録できる権利の番号が示されます。

実行／ APG 権利［実行／ APG 権利］欄には、実行モードでコンポーネントを実行するための権利番号が示されます。

680

リファレンス
Magic eDeveloper V9 Plus

［CTL 特性］ダイアログの［権利設定］ダイアログ［CTL 特性］ダイアログの［権利設定］ダイアログ
照会権利
この欄には、［利用可能権利一覧］のいずれかの権利を番号を指定します。この権利を与えられているユーザが、［CTL 特性］ダイアログを表示できるようになります。ただし、内容の修正はできません。

修正権利
この欄には、［利用可能権利一覧］のいずれかの権利を番号で指定します。この権利を与えられているユーザが、［CTL 特性］ダイアログの各欄の値を修正できるようになります。この修正権利がない場合、ユーザは、リポジトリ入出力ユーティリティを使用して［モデル］リポジトリなど、Magic のオブジェクトをインポートまたはエク
スポートする際、そのオブジェクトに関連する権利所有者一覧をインポートまたはエクスポートすることはできません。

図 13-9 CTL 特性に権利を定義する

リファレンス
Magic eDeveloper V9 Plus

681

第 13 章 - 使用権利

セキュリティキー
［ファイル／ CTL 特性］で開く［CTL 特性］ダイアログの［セキュリティ］タブで各セ
キュリティキーの定義を行います。

図 13-10 ［セキュリティ］タブ

CTL アクセスキー
アプリケーションに CTL アクセスキーが定義されている場合、開発時または実行時のいずれも場合も、そのキーが付与されているユーザまたは開発者以外は、そのアプリケー
ションを開くことはできません。
［CTL 特性］ダイアログの［CTL アクセスキー］にキーを設定し、また、ユーザに CTL
アクセスキーを付与した後は、CTL アクセスキーが付与されていないユーザが［CTL 特性］ダイアログを開いたときでも、［CTL アクセスキー］欄の内容は表示されません。

公開権利アクセスキー
公開権利アクセスキーを設定することにより、アプリケーションのセキュリティを強化できます。USR STD.JPN ファイルには、すべてのユーザのパスワードが保存されていますが、このファイルを破壊することで、第三者はシステムのパスワード保護メカニズムを削除できます。これで、第三者は、スーパーバイザとしてログオンが可能になります。
こういった行為は、スーパーバイザを公開権利アクセスキーの所有者にすることで防御できます。公開権利アクセスキーがない場合、アプリケーションで定義されている使用
権利とキーの対応関係を見ることができなくなります。つまり、公開権利アクセスキーがない場合、［ユーザ ID ］テーブルの［権利］欄をズームしても、［権利名］欄には内容は表示されず、したがって、使用権利とキーの関係は保護されます。また、［キー］欄をズームしても［利用可能権利一覧］は表示されません。

スーパー権利キー
スーパーバイザは、アプリケーションにスーパー権利キーを作成することができます。
作成したスーパー権利キーは開発者やユーザに割当てることができ、このスーパー権利キーが付与されている場合、開発者やユーザはアプリケーションの処理に対してすべての使用権利を所有することになります。この使用権利は、アプリケーション全体で有効
で、アプリケーションの個々の機能や処理について別個に権利を持つ必要はありません。

682

リファレンス
Magic eDeveloper V9 Plus

動作環境の使用権利［スーパー権利キー］欄にスーパー権利キーを指定し、そのスーパー権利キーを開発者やユーザに割当てた場合、その後、スーパー権利キーを持たないユーザが［CTL 特性］ダ
イアログを開いても、［スーパー権利キー］欄の内容は表示されません。

強制 MVCS 設定キー
この欄には、強制 MVCS 設定キーが登録できます。ユーザが強制 MVCS 設定キーの所有者でない場合、この欄は表示されません。
アプリケーションの強制MVCS 設定キーは、
スーパーバイザのみ設定できます。
強制MVCS
設定キーの所有者は、ユーザを指定し、そのユーザだけが共同開発トランザクションにア
クセスできるようにするといった操作が可能です。
詳細については、第 2 章「設定」を参照してください。

リモートフローモニタ権利
特定のユーザだけがリモートフローモニタでアプリケーションをアクセスできるように制限することができます。ズームして、権利一覧から選択することで権利を設定できます。

リポジトリ入出力の制限
Magic アプリケーションオブジェクトのリポジトリ入出力
権利のないユーザが Magic アプリケーションオブジェクトを出力し、それらを別のアプ
リケーションに入力するのを防ぐため、Magic アプリケーションオブジェクトの入出力
権利は、これらのオブジェクトを修正および登録する権利と暗黙的に関連付けられています。
ユーザがテーブル（モデルリポジトリ、テーブルリポジトリ、プログラムテーブル、メ
ニュー定義、ヘルプ画面、コンポーネント、CTL 特性）を修正する権利を所有している
場合、そのユーザは自動的にオブジェクトの出力権利を所有します。また、テーブルにエントリを登録する権利を所有する場合は、そのユーザはテーブルの入力権利を所有します。

権利自体のリポジトリ入出力
使用権利のうち、Magic アプリケーションの要素に大きく影響するような使用権利（たとえば、［プログラム］リポジトリの登録権利など）は、その権利自体をアプリケーションのデータとともにリポジトリ出力または入力することができます。ただし、権利自体を出力する場合、ユーザに［CTL 特性］ダイアログの修正権利が付与されていなければなりません。また、権利を入力する場合も同じく、ユーザに［CTL 特性］ダイアログの修正権利が付与されていなければなりません。

動作環境の使用権利
Magic の使用権利システムの動作環境層には、使用権利に関する情報が格納されますが、この情報はいずれもアプリケーションとは直接関係のないものです。この動作環境層の情報は、Magic システム環境のすべてのアプリケーションに対して使用されます。動作
環境層に関連するテーブルとしては、次のものがあります。
• ［ユーザ ID ］テーブル
リファレンス
Magic eDeveloper V9 Plus

683

第 13 章 - 使用権利
• ［ユーザグループ］テーブル• ［シークレット名］テーブル• ［ログオン］ダイアログ

ユーザ ID テーブル
［ユーザ ID ］テーブルでは、ユーザごとにパスワードを割当てることができます。また、ユーザをグループに割当てることも可能です。［ユーザ ID ］テーブルにアクセスできるのは SUPERVISOR だけに限られます。スーパーバイザは、［設定／ユーザ ID ］を選択して［ユーザ ID ］テーブルを編集できます。また、SUPERVISOR は、開発時、実行時にかかわらず、ユーザ ID の追加や編集を行うことができます。
［ユーザ ID ］テーブルには、最大 9,999 までのユーザを登録できます。
ただし、SUPERVISOR でも、ユーザのパスワードをすべて確認できるわけではありません。たとえば、登録済みのパスワードは、アスタリスク（*）で示されパスワード自体は見えません。また、SUPERVISOR は既存のパスワードは変更でき、その場合にはパス
ワードを知ることができますが、既存のパスワードは SUPERVISOR には分かりません。
パスワードを変更するときには、ズームしてパスワードボックスを表示した後、パスワー
ドを 2
回 入 力 し ま すが、このときにも入力した文字は表示されません。一方、SUPERVISOR 以外のユーザは、［ユーザ ID ］テーブルで自分のパスワードを変更できます。ただし、SUPERVISOR 以外のユーザは、［ユーザ ID ］テーブルでは、自分のパス
ワード変更以外の作業はできません。

［ユーザ ID］テーブルの設定欄
ユーザ ID
この欄には、ユーザ ID （文字列）を入力します。ログオン時には、ユーザは［ログオン］ダイアログの［ユーザ ID ］欄に自分のユーザ ID を入力しますが、そのユーザ IDと、この欄で指定したユーザ ID が比較されます。なお、［動作環境］ダイアログの［パスワード入力］パラメータが「No 」に設定されている場合は、［ログオン］ダイアログは表示されません。この［ユーザ ID ］欄の値は、プログラムで User 関数（User（0））を使うことで照会できます。

名前
ユーザの名前です。この欄の値は、ユーザ ID と異なり、ログオン時にはチェックされません。この名前は、SUPERVISOR の参考用です。この欄の値は、User 関数（User（1））
を使用して照会できます。

パスワード
この欄には、ユーザのパスワード（文字列）を入力します。ログオン時には、ユーザは［ログオン］ダイアログの［パスワード］欄に自分のパスワードを入力しますが、そのパスワードと、この欄で指定したパスワードが比較されます。なお、［動作環境］ダイアロ
グの［パスワード入力］パラメータが「No」に設定されている場合は、［ログオン］ダイ
アログは表示されません。

権利
この欄には、ユーザに割当てられている権利キーの数が表示されます。この欄をズームすると、このユーザの［権利］テーブルが開きます。なお、複数の権利に同じ権利キーを指定することもでき、そのため、この欄に表示される権利キーの数は、ユーザに付与されている実際の権利の数より少ないこともあります。

684

リファレンス
Magic eDeveloper V9 Plus

ユーザグループテーブル
ユーザの権利は、SUPERVISOR が割当てます。手順は、［権利］欄をズームして［権利］
テーブルを表示し、そのユーザの権利を割当てます。権利の割当は、開発時、実行時にかかわらず、いつでも行うことができます。
権利は、ユーザグループにユーザグループを割当てることで設定できます。したがって、
必ずしも、［権利］テーブルを使用して、そのユーザだけの権利を割当てる必要はありま
せん。

グループ
［グループ］欄には、ユーザが属するグループの数が表示されます。ユーザのユーザグルー
プへの割当は、SUPERVISOR が行います。手順は、［グループ］欄をズームして［グループ］テーブルを表示し、ユーザの所属先となるグループを選択します。ユーザは、複数のグループに割当てることもできます。
［グループ］テーブルの詳細は、この後にあります。
［ユーザ ID ］テーブルでは、SUPERVISOR は、ユーザに関する情報を入力するとこともできます。Ctrl+P キーを押すと、［ユーザ特性］ダイアログが表示されますので、ここでユーザに関する情報を入力します。このユーザ情報情報は、User 関数（User（2））で照会できます。
ログオン時、ログオン画面でユーザが入力したユーザ ID とパスワードは、それぞれ、［ユーザ ID ］テーブルの［ユーザ ID ］と［パスワード］の各欄の値と比較されます。この比較によるユーザのチェックは、セキュリティの第 1 段階で、その後、ユーザに付与されている権利に基づいてチェックが行われます。つまり、［ユーザ ID ］テーブルにユーザが登録されている場合、まず、ログオン時にチェックが実行され、その後、ユーザがデータやプログラムに何らかのアクセスを試みた場合、使用権利のチェックが行われます。このチェックで、ユーザに所定の権利が付与されていなければ、ユーザが試みた処理は拒否されるとともに、メッセージ行にメッセージが表示されます。
［権利設定］ダイアログの各欄を使用して、開発時のアプリケーションへのアクセスを制御できます。また、実行時のユーザによるプログラムへのアクセスも制御できます。実行時、特定のプログラムに対してユーザのアクセスを制限したい場合、Rights 関数と User関数を使用します。この 2 つの関数を使うことで、たとえば、タスク内のコンポーネン
トに対するアクセスを個別に制御するといった操作が可能になります。
また、プログラム全体に対してアクセスを制限することも可能です。
Rights 関数と User 関数については、第 8 章「関数」を参照してください。

ユーザグループテーブル［ユーザグループ］テーブルでは、ユーザグループの設定と、各ユーザグループに対する権利の設定が可能です。

［ユーザグループ］テーブルの設定欄［ユーザグループ］テーブルの設定欄は、次のものがあります。

名前
この欄には、ユーザグループの名前を指定します。

リファレンス
Magic eDeveloper V9 Plus

685

第 13 章 - 使用権利権利
この欄には、グループに割当てられている権利キーの数が表示されます。この欄をズー
ムすると、このグループの［権利］テーブルが開きます。なお、複数の権利に同じ権利キーを指定することもでき、そのため、この欄に表示される権利キーの数は、グループに付与されている実際の権利の数より少ないこともあります。
スーパーバイザは、グループに割当てられている権利を見ることができます。
［権利］欄
をズームするとグループの［利用可能権利一覧］が表示されますので、ここで確認が可能です。
異なるアプリケーションで、それぞれ、グループの権利キーが同じであっても、権利キーに関連付けられている権利の内容は異なることがあります。この相違は、スーパーバイザが確認できます。確認したい場合、［ユーザグループ］テーブルの［権利］欄をズームします。これで、［利用可能権利一覧］が表示されますが、ここに表示される権利は、［アプリ
ケーション一覧］の最初のアプリケーションの権利です。また、このアプリケーションの
名前は、グループの［権利］リポジトリの上部に表示されます。このほかのアプリケーショ
ンの権利を確認したい場合、［権利］テーブルの右下にある［アプリケーション］ボタンをクリックします。この後、一覧で別のアプリケーションを選択します。

SUPERVISOR グループ
この欄を使用して、ユーザを SUPERVISOR グループに割当てることができます。この割
当は、スーパーバイザが行います。ユーザを SUPERVISOR グループに割当てた場合、そのユーザには、スーパーバイザの権利がすべて自動的に付与されます。

シークレット名テーブル
シークレット名は、非認証ユーザに対し、使用権利システムの実装情報を隠す［シークレット名］テーブルでは、シークレット名を設定できます。シークレット名を使うこと
で、第三者による情報の不正取得を防止できます。たとえば、CTL ファイルのアクセス
キーやデータテーブルのアクセスキーをシークレット名としておくことで、こういった
アクセスキーの第三者への漏洩を防ぐことができます。
［シークレット名］テーブルの内容は、［論理名］テーブルとほぼ同じです。ただし、次の点が異なります。
• ［シークレット名］テーブルにアクセスできるのは、スーパーバイザ、およびスーパー
バイザグループに登録されているユーザに限られます。
• シークレット名は、［動作環境］ダイアログの［セキュリティファイル］欄に設定されているセキュリティファイルに保存されます。このセキュリティファイルは暗号化されます。
シークレット名は、論理名が使用できるところであれば、どこでも使用できます。また、構文も同じです。
［シークレット名］テーブルと［論理名］テーブルでは、［シークレッ
ト名］テーブルが先に処理されます。
論理名については、第 2 章「設定」を参照してください。

686

リファレンス
Magic eDeveloper V9 Plus

データのセキュリティ

データのセキュリティ
アプリケーションデータテーブルへのアクセスの制限
Magic では、アクセスキーを使用してデータテーブルへのアクセスを制限できるようになっています。また、アクセスキーを使用して、データテーブルを暗号化できる機能も用意されています。ただし、この 2 つの機能は、使用するデータベース側でサポートされていなければ使用できません。アプリケーションのデータテーブルに対してアクセスを制限したい場合、［リポジトリ／テーブル］を選択します。その後、［テーブル］リポ
ジトリでテーブルをハイライトし、［編集／特性］を選択します。これで、［テーブル特性］ダイアログが開きますので、［高度な設定］タブの以下の設定欄を使用してアクセス制限を行います。

アクセスキー
この欄には、アクセスキーを指定します。このデータテーブルにアクセスする場合、ここで指定したアクセスキーが必要になります。別のアプリケーションからアクセスする
場合も、Magic 以外のアプリケーションからアクセスする場合も、このアクセスキーが必要になります。このアクセスキーがない場合、データテーブルに対するアクセスは拒否されます。また、アクセス元のアプリケーションが Magic アプリケーションのときには、その旨のメッセージが表示されます。
このアクセスキーは、必ず、シークレット名にします。アクセスキーをシークレット名にすることで、このテーブルだけにアクセスを絞ることができます。また、スーパーバイザ以外には、アクセスキーの内容は分からなくなります。シー
クレット名は、アプリケーションごとに異なるものを使うこともできます。

テーブル暗号化
この欄を「Yes」にしておくと、テーブルが暗号化されます。暗号化は、アクセスキーをシードとして実行されます。なお、テーブルを暗号化した場合、外部では暗号方式と暗号シードが認識されないため、外部からのアクセスができなくなります。
アクセスキーを設定するか、または暗号化を指定した場合、アクセスキーは大切に保管しなければなりません。アクセスキーが分からないときには、テーブルにはアクセ
スできません。
暗号化およびアクセスキーが使用されている場合、ユーザはアクセスキーの保管場所に注意してください。アクセスキー無しでテーブルにアクセスする方法はありません。

CTL ファイル自体へのアクセスの制限
CTL ファイルにアクセスキーを設定した場合、そのアプリケーションに対する書込アク
セスには、必ず、そのアクセスキーが必要になります。この場合、ユーザの種類にかか
わらず、また、アプリケーションが Magic アプリケーションであるか、外部アプリケー
ションであるかにかかわらず、アクセスキーが必要になります。アクセス元のアプリケー
ションでアクセスキーが供給されない場合、書込アクセスはすべて拒否されます。CTL
ファイルにアクセスキーを設定しておくと、データベース側では、アクセスキーを暗号シードとしてファイルが暗号化されます。このファイルに対しては、Magic システムからは、読み取り専用でアクセスが可能です。一方、外部アプリケーションからは、このCTL ファイルにアクセスはできません。したがって、外部プログラムによる CTL ファイ
ルの解析を防ぐことができます。なお、アプリケーションの配布の際には、アクセスキーの提供は不要です。ただし、その CTL ファイルを改良するときには、アクセスキーが必
要になります。

リファレンス
Magic eDeveloper V9 Plus

687

第 13 章 - 使用権利
アクセスキーの追加や削除の際には、暗号化や削除、アクセス制限に関する変更の確認が求められます。この確認は、［アプリケーション］テーブルで編集を完了したときに表示されます。
［アプリケーション］テーブルで編集を完了すると、すべてのアプリケー
ションについてアクセスキーの値が変更されたかどうかがチェックされます。また、暗号化を確認するとファイルの暗号化が始まりますが、この作業には多少時間がかかることがあります。
なお、アプリケーションのアクセスキーは、必ず、シークレット名にします。アプリケー
ションのアクセスキーは、MAGIC.INI ファイルに保存されますが、このファイルは保護されません。したがって、シークレット名を使用してアクセスキーを保護する必要があります。

HTTP 認証
情報を有効にし、POST する HTTP アドレスを表す文字列です。
Magic クライアントが、ユーザー名とパスワードを必要とする Web サーバーにアクセスする場合は、以下のような URL で指定できます。
HTTP://User:Password@[URL]
シークレット名が使用できます。たとえば以下のようになります。
HTTP://%user_secretname%:%pass_secretname%@[URL]
HTTP 認証は、HTTPGet 関数や、HTTPPost 関数、WSDL アシスト機能で使用することができます。

Active ディレクトリによる認証方法
Magic では、Active ディレクトリに登録されているアカウントを使用して Magic にログ
インすることができます。これにより、ドメインにログオンされている PC から Magic を起動した場合、自動的にこのドメインユーザとして Magic にもログインされます。この場合、Magic のログオンダイアログやユーザ／グループの登録処理は無効になります。

Active ディレクトリサーバ側のアカウント設定［Active Directory ユーザとコンピュータ］でユーザとグループを登録します。グループのメンバにユーザを含めてください。

Magic の動作環境の設定
シークレット名の登録Supervisor で Magic にログインし、［設定／シークレット名］で［シークレット名］テーブルを開きます。ここに以下のようにシークレット名を登録します。
• 名前……Directory_Binding• 実行名……WinNT:［// ドメイン名 /[ クライアントのコンピュータ名 /]］例：
WinNT://MyDomain/YourComputerName/（文字列の末尾に ‘/’ を必ず入れてください。）

688

リファレンス
Magic eDeveloper V9 Plus

LDAP サーバによる認証方法

ユーザグループの登録
Activeディレクトリサーバに登録したグループ名と同じグループを登録してください。このグループに Magic オブジェクトに対する権利設定（権利キー）を割り当ててください。

動作環境の設定［動作環境］ダイアログの［システム］タブを開き、［システムログオン］を「D=Active
ディレクトリ」に変更します。
これで、Magic を再起動することにより Active ディレクトリによる認証が実行され、ス
テータスバーにユーザ名が表示されます。
ユーザ名が表示されない場合は、正常に認証されていません。ドメインの登録内容やシー
クレット名の指定を確認してください。

LDAP サーバによる認証方法
Magic では、LDAP サーバに登録されているアカウントを使用して Magic にログインすることができます。これにより、アカウントの管理はLDAPサーバ上で行うことができます。
LDAP 認証の場合に、ログインダイアログ（または Logon 関数）でログオン処理を行うと、Magic は LDAP サーバに対してアカウントの問い合わせを行います。登録されているユーザ情報でログインされた場合のみログインができます。

LDAP サーバ側のアカウント設定
登録内容は LDAP サーバによって異なります。ご使用のサーバのマニュアルを参考にしてください。ここでは、iPlanet（または、Netscape）のディレクトリサーバを使用した場
合を前提に説明いたします。
LDAP サーバ上にユーザ（ou=People）とグループ（ou=Groups）を登録します。グループのメンバにユーザを含めてください。
この場合のディレクトリ構成を以下のように想定します。

リファレンス
Magic eDeveloper V9 Plus

689

第 13 章 - 使用権利
図 13-11 ディレクトリ構成の例

ユーザグループの登録
LDAP サーバに登録したグループ名と同じグループ（この例では：Account）を登録してください。このグループに Magic オブジェクトに対する権利設定（権利キー）を割り当ててください。

Magic の動作環境の設定
動作環境の設定［動作環境］ダイアログの［外部参照］タブに以下のように指定します。
• LDAP アドレス : ポート番号……servername:389• LDAP 接続文字列 …… uid=$USER$,ou=People,o=Airius.com,dc=MyDomain• LDAP ドメインコンテキスト …… ou=Groups,o=Airius.com,dc=MyDomain［動作環境］ダイアログの［システム］タブを開き、［システムログオン］を「L=LDAP」に変更します。
これで、ログオンダイアログ（または Logon 関数）によってユーザ ID とパスワードを入力することでログオンすることができます。
ユーザ ID やパスワードが間違っている場合は、ステータスバーに「Invalid credentials」と表示されます。

690

リファレンス
Magic eDeveloper V9 Plus

コンポーネント

14

MagicVer.9 では、アプリケーションオブジェクトをコンポーネントとして定義できます。
コンポーネントをエクスポートすることにより、Magic アプリケーション間でリソースを共有することができます。
本章では、次の内容について説明します。
• コンポーネントの概要• コンポーネントリポジトリ• 動作環境のコンポーネント• Magic インタフェースビルダ• Web サービスインタフェースビルダ• EJB インタフェースビルダ• Java コンポーネントジェネレータ
• XML コンポーネントジェネレータ

V9 Plus から、「コンポーネントインタフェースビルダ」の機能が各コンポーネン
トごとに別のユーティリティに分割されました。このため、Ver9.3 以前で使用していた、「コンポーネントインタフェースビルダ（CIB）という名称を使用しない
ように変更いたしました。
Magic のオブジェクトをを別の Magic アプリケーションのコンポーネントとして使用するためのインタフェースファイル作成機能を、「Magic インタフェースビル
ダ（MIB）」と表記いたします。

リファレンス
Magic eDeveloper V9 Plus691

第 14 章 - コンポーネント

コンポーネントの概要
アプリケーションのオブジェクトを Magic コンポーネントとして定義することができます。以下に示すように、コンポーネントを出力することにより、アプリケーション間でリソースを共有することができます。また、アプリケーションの修正内容を簡単に配布することもできます。

図 14-1 コンポーネントの枠組みの構造

Magic コンポーネントはコンポーネントリポジトリに一覧表示されます。画面には、ほかのアプリケーションと共有できるオブジェクトが表示されます。共有できるオブジェ
クトは次のとおりです。
• モデル• テーブル• プログラム• ヘルプ• 権利……［実行／ APG 権利］及び定義式でのみ参照できます。
• イベント• 動作環境Magic コンポー
読み込まれた Magic コンポーネントは別のアプリケーションに統合され、ネントリポジトリに表示されます。コンポーネントオブジェクトは、それぞれに該当す
るリポジトリから選択できます。
ロードするコンポーネントアプリケーションが、ロード元のアプリケーションを
コンポーネントとして再帰的に利用することはできません。このような場合、以下のようなメッセージが表示されます。
「再帰的にコンポーネントが使用されているため、アプリケーションはロードできません。：アプリケーションファイル名」

692

リファレンス
Magic eDeveloper V9 Plus

コンポーネントリポジトリ

図 14-2 コンポーネントの再帰使用

他のアプリケーションでコンポーネントとして使用している CTL ファイルを、MagiceDeveloper でオープンすることはできません。

コンポーネントアプリケーションのメインプログラム
コンポーネントリポジトリに登録されたアプリケーションのメインプログラムのタスク
前処理の内容は、アプリケーションの初期時に必ず実行されます。

コンポーネントリポジトリ
コンポーネントリポジトリには、Magic アプリケーションのコンポーネントとして定義されたオブジェクトが表示されます。コンポーネントリポジトリには次のようなカラムがあります。
• #……行番号• 名前……MCI（Magic Component Interface）ファイルに登録されているコンポーネント
名• フォルダ……登録されたコンポーネントが保存されているフォルダ名• 説明……MCI ファイルに記述されたコンポーネントに関する説明

図 14-3 コンポーネントリポジトリ

コンポーネントリポジトリでは、次のことを実行できます。
• MCI ファイルの読込／再読込（［オプション］メニューの［読込／再読込］を選択する）。
• コンポーネントの削除（F3 キーを押す）。
リファレンス
Magic eDeveloper V9 Plus693

第 14 章 - コンポーネント• コンポーネントの特性の表示（Ctrl+P キーを押す）。
• コンポーネント項目の表示（［名前］カラムからズームする）。
• コンポーネントに権利を割当てる（F9 キーを押す）。

Magic コンポーネントの読み込み
空のコンポーネント行を作成したら、［オプション］メニューの［読込／再読込］オプ
ションを使用して MCI ファイルを選択してください。コンポーネントインタフェースとそれに対応するアプリケーションファイルが読み込まれます。

図 14-4 コンポーネントインタフェースファイルを開くダイアログ

最後に「¥」文字のある公開名の使うと、コンポーネントの読み込み時に正常にロードされず、「Item Not Available」というエラーが表示されます。公開名の最後には「¥」文字を使わないようにしてください。

Magic コンポーネントの削除
コンポーネントを削除すると、アプリケーションファイルからコンポーネントインタ
フェースが削除されます。アプリケーション内のコンポーネントへの参照は削除されません。削除されたコンポーネントにアクセスしようとすると、参照先が不明であることを示
す 2 つのクェスチョンマーク（??）が表示されます。

コンポーネント特性
選択したコンポーネント上で Ctrl+P キーを押すと、次のような特性情報をもつダイア
ログが表示されます。コンポーネント特性は、［特性］と［設定］の２つの区分で表示さ
れます。

694

リファレンス
Magic eDeveloper V9 Plus

コンポーネントリポジトリ［特性］タブは、以下の図のように読み込んだ MCI ファイルの内容に基づいてコンポー
ネントの情報が表示されます。

図 14-5 コンポーネント特性−［特性］タブ

表示される内容は以下の通りです。
• レビジョン……読み込まれたコンポーネントの改訂番号。変更できません。
• CTL ファイル……ソースアプリケーションの CTL ファイル名がフルパスで表示されます。デフォルトは、MCI ファイルに保存された値ですが変更可能です。
• 識別子……ソースアプリケーションの識別子が表示されます。変更可能です。
• アプリケーションデータベース……ソースアプリケーションをアクセスするためのデータベース名が表示されます。ここからデータベース一覧にズームすることで変更可能です。［フラット CTL］が「オン」の場合この設定は無効になります。
• アクセスキー……ソースアプリケーションにアクセスキーが設定されている場合、ここにアクセスキーを指定する必要があります。変更可能です。
• フラット CTL……ソースアプリケーションがフラットファイルの場合、ここをオン にする必要があります。変更可能です。MFF 形式については、第 2 章「 設定」を参照
してください。
• 即時有効……アプリケーションを読み込む際にコンポーネントアプリケーションも読み込むか否かを指定します。変更可能です。

リファレンス
Magic eDeveloper V9 Plus695

第 14 章 - コンポーネント［設定］タブは、以下の図のように、読み込んだ MCI ファイルの内容に基づいてコンポー
ネントの情報が表示されます。

図 14-6 コンポーネント特性−［設定］タブ表示される内容は以下の通りです。
• ヘルプファイル……コンポーネントについての説明が記述されたWindowsヘルプファ
イル名が表示されます。デフォルトのパスは、MCI と同じです。変更可能です。
• キー値……コンポーネントについての説明が記述されたWindowsヘルプファイル名の該当するキー値が表示されます。変更可能です。

コンポーネント項目
コンポーネント項目は、Magic コンポーネントに含まれるオブジェクトを、タブで種類別に表示されます。各タブには、モデル、テーブル、プログラム、ヘルプ、権利、イベ
ント、動作環境のコンポーネントオブジェクトが表示されます。また、動作環境には、システム、マルチユーザ、動作設定、国別設定、外部参照ファイル、アプリケーション
サーバのタブが表示されます。
本章の「Magic インタフェースビルダ」も参照してください。

動作環境のコンポーネント
動作環境のコンポーネントは、対応する Magic コンポーネントオブジェクトがアクセスするものです。動作環境のコンポーネントは、［コンポーネント項目］ダイアログボックスに表示されている［環境設定］ボタンをクリックすることで表示されます。
コンポーネントで指定されて動作環境は、アプリケーションの動作環境が継承されます 。
コンポーネントと関連付けることができる環境情報は、次のとおりです。
• 西暦基準年• バッチイベント間隔（ミリ秒）• 修正モードでの登録許可• 照会モードでの修正許可

696

リファレンス
Magic eDeveloper V9 Plus

Magic コンポーネントとメインプログラム• ISAM トランザクション• キーボード休止秒数• カーソルの画面中央位置付• 修正後の再位置付• 日付タイプコンポーネントが新しいアプリケーションに読み込まれると、MAGIC.INI ファイルに次の特性設定が追加されます。
• データベース特性• DBMS 特性• サーバ特性• サービス特性• 論理名
Magic コンポーネントが新しいアプリケーションに読み込まれた後、コンポーネントと関連付けられた特性は、すべてのアプリケーションオブジェクトで利用することができます。
コンポーネントを削除しても、MAGIC.INI ファイルに追加されたコンポーネントに関す
る設定行は削除されません。

INIPut 関数の動作
マルチスレッドモードで Magic が動作している場合、INIPut 関数の動作は、エンドユー
ザがコンポーネントにアクセスするコンテキストによって異なります。エンドユーザがコンポーネントのタスクにアクセスして INIPut 関数を使用する場合、次のように動作します。
• ［強制書き込みフラグ］が「True」の場合、MAGIC.INI が更新され、変更内容はすべてのアクティブなコンテクストに影響を及ぼします。
• ［強制書き込みフラグ］が「False」の場合、環境特性がコンポーネントのタスクに関連付けられている場合、変更内容は現在のコンテクスト内のすべてのプログラムに影響を及ぼします。エンドユーザがコンポーネントタスクを再開した場合、環境変数は、コンポーネントと関連付けられている特性から再度環境値を受け取る必要があります。
• ［強制書き込みフラグ］が「False」の場合、環境変数がコンポーネントで指定されていない場合、環境変数は現在のタスクに対してのみ更新されます。

Magic コンポーネントとメインプログラム
メインプログラムは、コールコマンドでは実行できないので、コンポーネントの一部として出力することはできません。
プログラム、テーブル、イベントなど、別のコンポーネントのオブジェクトを使用する
場合は、まずそのオブジェクトのアプリケーションのメインプログラムが実行されます。
つまり、最初に別の Magic コンポーネントのオブジェクトを使用するときには、そのメインプログラムのタスク前処理が実行され、その変数が初期化されます。
ただし、コンポーネントをすぐに使用する場合（即時有効 =Yes）、つまり、コンポーネン
トを実際に使用するときではなく、アプリケーションを開いたときにコンポーネントを読み込む場合は例外です。このようなコンポーネントの場合は、読み込まれるとすぐにコンポーネントのメインプログラムが実行されます。
実行タスク用スタックは、コンポーネントのメインプログラムの実行による影響を受けません。このコンポーネントのプログラムは、メインプログラムではなく、親プログラムによって呼び出されます。コンポーネントのメインプログラムは、アプリケーションのメインプログラムの直後、その他のすべてのプログラムの前に実行タスク用スタックに挿入されます。
リファレンス
Magic eDeveloper V9 Plus697

第 14 章 - コンポーネント
メインプログラムのタスク後処理が実行される前にアプリケーションを終了すると、タ
スク後処理は、タスク前処理の実行と逆の順序で実行されます。

Magic インタフェースビルダ
Magic インタフェースビルダユーティリティ（以降、MIB と略します。）を使用すること
で、MCI（Magic Component Interface）ファイルを作成することができます。
［コンポーネント］メニューの［Magic インタフェース］をクリックすると MIB が起動され、以下のようなテーブルが表示されます。

図 14-7 コンポーネントビルダテーブル

MIB による Magic コンポーネント情報は、MIB 実行時はメモリテーブルで管理されますが、終了時 BLOB データ化されファイルとして保存されます。このため、
Ver9.3 までの ’COMPONENT’ データベースは使用しなくなりました。

Magic インタフェースビルダテーブル
MIB テーブルには、MIB に登録されているコンポーネント情報が次の属性に基づいて表示されます。
• #……自動生成されるコンポーネントのエントリ番号。
• コンポーネント名……コンポーネントの名前を入力できます。
• アプリケーション名……対応するアプリケーション名が表示されます。
• オブジェクト……各オブジェクトの登録数
MCI ファイルを作成するためのオブジェクトは、次のとおりです。
• モデル• テーブル• プログラム• ヘルプ• 権利• イベント• 動作環境それぞれのタブをクリックすると、新規または既存のインタフェースに追加可能なオブジェクトが一覧表示されます。
MCI ファイルの作成または編集に使用できる操作は、次のとおりです。

698

リファレンス
Magic eDeveloper V9 Plus

Magic インタフェースビルダ• 削除……MIB テーブルから Magic コンポーネントを削除します。
• 作成……MIB テーブルに新しい Magic コンポーネントを作成します。
•

MCI ファイル作成……MCI ファイルを作成します。

• 特性……Magic コンポーネントの特性を表示します。
• 複写……コンポーネントとそのすべてのオブジェクトを新しいエントリにコピーします。
• 位置付け……エントリ番号を使用して、特定のコンポーネントに位置付けます。
• コピー……エントリ名をクリップボードにコピーします。
• 貼り付け……クリップボードのエントリ名を貼り付けます。

MIB の特性
次のコンポーネントの特性の値を変更することができます。
• 説明……コンポーネントに関する注釈• レビジョン……コンポーネントの改訂番号• フラット CTL……フラット CTL として実行します。
• CTL ファイル名……アプリケーションの CTL ファイル名• アプリケーションデータベース……CTLをオープンする場合に使用するデータベース
名• ヘルプファイル……コンポーネントの説明用に使用する Windows ヘルプファイルのファイル名• ヘルプキー……コンポーネントの説明用に使用するWindowsヘルプファイルにリンク
するキー値

オブジェクトテーブル
各オブジェクトテーブルには、公開名を持つ特定のオブジェクト（モデル、テーブル、プログラムなど）を登録することができます。
［追加］ボタンをクリックすることで、オブジェクトの追加／削除ができます。オブジェクトテーブルには、次のカラムがあります。
• #……自動生成されるコンポーネントのエントリ番号• 名前……オブジェクト一覧から選択したオブジェクトの名前が自動的に表示されます。ここは表示だけで変更することはできません。
• 公開名……選択したオブジェクトの公開名が自動的に表示されます。
• コメント……オブジェクトに関する情報を入力できます。
• ヘルプキー……ヘルプファイル内の特定の場所にアクセスするキー値を入力できます。
最後に「¥」文字のある公開名は選択できません。

［環境設定］テーブル［環境設定］テーブルでは、以下の区分から選択してコンポーネント項目を追加することができます。
• 環境設定• サーバ• サービス• データベース• 論理名
リファレンス
Magic eDeveloper V9 Plus699

第 14 章 - コンポーネント［追加］をクリックすることで、指定した区分に対応した動作環境項目を選択することができます。

オブジェクトの追加
オブジェクトを追加する場合は以下のようにします。
1. Magic のプルダウンメニューから［コンポーネント／ Magic インタフェース］を実行し MIB を起動し、現在オープン中のアプリケーションと同じアプリケーション名の行にカーソルを合わせます。（アプリケーション名が合わないと、メンテナンスができません。）
2. 追加したいオブジェクト（例、モデル、テーブル、プログラム）のカラムにカーソ
ルを合わせます。
3. ［追加］ボタンをクリックして［選択一覧］を開きます。
4. ［選択一覧］から、追加したい項目のチェックボックスをチェック状態にしてください。OK ボタンをクリックすると選択した項目が追加されます。オブジェクトカラ
ムにカーソルを戻すと選択された項目数が更新されて表示されます。
［選択一覧］に表示される項目は、各リポジトリ内で公開名を設定したものだけです。公開名によってコンポーネントのリンクが成立します。同じ種類のオブジェ
クト内に重複した公開名が存在する場合、最初に見つかった公開名が有効になります。重複した公開名を登録することはしないでください。

インタフェースファイルの作成
コンポーネント化するオブジェクト項目を指定し MIB 特性を指定後、［MCI ファイルの作成］（Ctrl+I）を実行すると、選択した Magic コンポーネントの MCI ファイルが作成されます。拡張子は、「.MCI」です。

図 14-8 MCI ファイル作成ダイアログ［MCI ファイル作成］ダイアログの［参照］ボタンをクリックすると保存先のフォルダを指定することができます。
［OK］ボタンをクリックするとイ MCI ファイルの作成処理が実行されます。
MCI ファイルの作成ディレクトリが存在しない場合は、MIB が作成します。同じ名前のファイルが存在する場合、上書き確認のダイアログを表示します。

MCI ファイルのサンプル//
COMPID = 76050384676477
NAME = “Comp1”
DESC = “Description of Component file”
IMMED = Y
APPLFILE = “d:¥magic¥newmci¥newmci.mcf”
APPLDB = “Default Database”
FLATCTL = N

700

リファレンス
Magic eDeveloper V9 Plus

Web サービスインタフェースビルダ
VRSN = REV5
HLPFILE = “d:¥magic¥newmci¥mgcomp1.hlp”
APPREFIX = d:¥magic¥newmci¥ne
MODEL=PUBLIC=”PUBLIC_M01” RMK="" HELPKEY=”HLPK1”
MODEL=PUBLIC=”PUBLIC_M02” RMK="" HELPKEY=”HLPK2”
FILE=PUBLIC=”PUBLIC_F01” RMK="" HELPKEY=”HLPK3”
FILE=PUBLIC=”PUBLIC_F02” RMK="" HELPKEY=”HLPK4”
PRG=PUBLIC=”PUBLIC_P01” RMK="" HELPKEY=”HLPK5”
PRG=PUBLIC=”PUBLIC_P02” RMK="" HELPKEY=”HLPK6”
HLP=PUBLIC=”PUBLIC_H01” RMK="" HELPKEY=”HLPK7”
HLP=PUBLIC=”PUBLIC_H02” RMK="" HELPKEY=”HLPK8”//

Web サービスインタフェースビルダ
WSDL(Web Services Description Language) は、Web サービスとそのパラメータの記述に使用される XML ベースの言語です。
［コンポーネント］メニューの［Web サービスインタフェース］をクリックすると以下のような WSDL ファイルを作成するための Web サービスインタフェースビルダ（以下、WIB）が実行されます。

図 14-9Web サービスインタフェースビルダ

WIB には以下のカラムがあります 。
• コンポーネント名 …… ここは必須です。30 文字以内で指定してください。
• アプリケーション名 …… 現在のアプリケーション名が自動的に表示されます。変更
できません。
• プログラム …… WSDL ファイルに割り当てるプログラムの数を自動的に表示します。

Web サービスプログラムテーブル
Web サービスプログラムテーブルには以下のカラムがあります 。
• プログラム名 …… プログラム一覧から選択されたプログラムの名前が自動的に表示されます。選択できるのは、公開名を持ったバッチプログラムだけです。ここは変更できません。
リファレンス
Magic eDeveloper V9 Plus

701

第 14 章 - コンポーネント• 公開名 …… 選択されたプログラムの公開名が自動的に表示されます。
• パラメータ／戻り値 …… パラメータの総数が表示されます。パラメータ名、XSD タ
イプ、方向を修正する場合は、このカラムでズームしてください。
1 つのだけの文字型または BLOB 型のパラメータをもつプログラムに対してはドキュ
メント形式の Web サービスとして出力することができます。この場合、パラメータダ
イアログの［スキーマ］ボタンが有効になります。

図 14-10 公開プログラムのパラメータ

パラメータダイアログの［スキーマ］ボタンをクリックすると以下のようなスキーマ
ダイアログが表示されます。ここで、XSD ファイルのパスを指定します。

図 14-11 スキーマの設定

XSD ファイルのパスを指定し、［>>］をクリックします。ネームスペースとエレメン
トパラメータが自動的に設定されます。
• コメント …… このプログラムに関する情報を入力することができます。
［確認］ボタンをクリックすると設定内容をチェックします。パラメータや構成に問題がなければ、その旨を表示します。エラーがあれば警告メッセージを表示します。

702

リファレンス
Magic eDeveloper V9 PlusEJB インタフェースビルダ

WSDL ファイルの設定［WSDL ファイル設定］ダイアログには、以下の設定欄があります。
• 説明 …… WSDL ファイルの説明を指定します。
• レビジョン …… WSDL ファイルの改訂番号を指定します。
• WSDL ファイル …… WSDL ファイルのパスとファイル名を指定します。
• サービス終端 …… Web サービスが実行される URL アドレスを指定します。
• WSDL ネームスペース…… WSDL ネームスペースの識別子を指定します。
• ヘッダ情報……SOAP ヘッダにユーザ名やパスワードを付加する必要がある場合は、
このチェックボックスをオンにしてください。

WSDL ファイルの作成
WSDL ファイルプログラムと設定を指定した後、［オプション］メニューの［WSDL ファ
イルの作成］（Ctrl+I）を実行すると［WSDL ファイル作成］ダイアログが表示されます。
WSDL ファイルの保存先ディレクトリが存在しない場合、自動的に作成します。
同名の WSDL ファイルが存在する場合は、以下のような上書き確認のメッセージを表示します。
WSDL はすでに存在します . 上書きしますか？
上書きする場合は、「Yes」、しない場合は「No」をクリックします。

作成された WSDL ファイル
全てのメソッド定義と SOAP ヘッダ用の２つの変数（ユーザとパスワード）を自動的に作成します。呼び出す際のリクエストにユーザー名とパスワードが含まれる時、Magic はこの内容でログオンしユーザー権を獲得します。この機能は強制ではなく、WSDL ファ
イルで定義されたメソッドのアクセスを制限するために使われます。

EJB インタフェースビルダ
EJB(Enterprise Java Bean) インタフェースビルダ（以下、EIB）によって、Magic アプリ
ケーションを J2EE サーバ上の EJB としてアクセスするためのインタフェースファイル（Proxy EJB）を作成します。
［コンポーネント］メニューの［EJB インタフェース］をクリックすると、EIB が実行されます。EIB は、ウイザード形式になっており、ダイアログの指示に従って操作することによりインタフェースファイルが作成されます。
詳細は、第 22 章「 J2EE との連携」を参照してください。

リファレンス
Magic eDeveloper V9 Plus703

第 14 章 - コンポーネント

Java コンポーネントジェネレータ
Java コンポーネントジェネレータ（以下、JCG と略します。）Java クラスや EJB を呼び出すプログラムのコンポーネントを作成します。
詳細は、第 16 章「 Java との連携」を参照してください。

XML コンポーネントジェネレータ
XML コンポーネントジェネレータ ( 以下、XCG と略します。) は、XML スキーマに基づ
いて、XML タイプとアクセスできる Magic のオブジェクトを作成するものです。
詳細は、第 17 章「 XML コンポーネントジェネレータ」を参照してください。

704

リファレンス
Magic eDeveloper V9 Plus

COM オブジェクトサポート

15

Magic アプリケーションで COM オブジェクトを簡単にアクセスすることができます。
GUI 表示フォームに追加された ActiveX コントロールか、OLE オートメーションによって処理される一般的な OLE オブジェクトとして扱うことができます。
COM オブジェクトは ActiveX 型や OLE 型として定義される項目を通して処理されます。
本章では、次の内容について説明します。
• OLE と ActiveX• COM オブジェクト項目の定義• COM オブジェクトの呼び出し• ActiveX イベントの処理• 実行時の動作• COM のエラーの取得• フォームへの ActiveX コントロールの配置• OLE 項目と OLE コントロールとしての BLOB 項目• COM オブジェクトを使用した Magic エンジンの呼び出し

Magic リファレンス
Magic eDeveloper V9 Plus705

第 15 章 - COM オブジェクトサポート

OLE と ActiveX
COM オブジェクト項目は、OLE か ActiveX のどちらかで定義できます。
ActiveX オブジェクトは、COM オブジェクトのグループを参照します。これは、ユーザー
インタフェースが埋め込まれていたり GUI 表示フォームに置配置されることを想定して提供されます。
ActiveX オブジェクトの実行時の操作は、GUI 表示や OLE オートメーションコマンドによって行われます。
OLE オブジェクトは、ActiveX オブジェクトを含む全ての登録された COM オブジェクトを参照します。OLE オブジェクトはフォームに配置できず、実行時の操作は OLE オート
メーションコマンドによってのみ行われます。

COM オブジェクト項目の定義
COM オブジェクト項目は、タスク内で変数項目としたり、テーブルのカラムやモデルリ
ポジトリでの項目モデルとして定義できます。

型
COM オブジェクト項目ように二種類の［型］が用意されています。
この指定によって、表示用オブジェクト（ActiveX 型）か一般的 COM オブジェクト（OLE型）かを定義することができます。

オブジェクト名とタイプライブラリの設定
COM オブジェクト項目には、項目特性シートにてオブジェクトの定義を行う必要があります。

OLE オブジェクトの場合
OLE オブジェクトの場合は、項目特性の［タイプライブラリ］を最初に定義しなければなりません。
［タイプライブラリ］でズームすると、PC に登録されている全ての OLE オブジェクトが表示されます。
オブジェクトの［タイプライブラリ］を設定したら、［オブジェクト名］からズームして実際のオブジェクトを選択します。

ActiveX オブジェクトの場合
ActiveX オブジェクトの場合、最初に［オブジェクト名］でズームして、使用したい
ActiveX のメソッドを指定します。
［オブジェクト名］を指定すると、［タイプライブラ
リ］に適切な値が自動的に設定されます。
２ つの特性が設定され項目特性が確定されると、オブジェクト名は修正できなくなります。
［タイプライブラリ］は、既に選択されたタイプライブラリの異なるバージョンへの変更のみ可能になります。

フォームへの ActiveX コントロールの配置
ActiveX コントロールの項目は、GUI 表示フォームに配置することができます。

706

Magic リファレンス
Magic eDeveloper V9 Plus

COM オブジェクトの呼び出し
オブジェクトが定義された項目をフォームにドラッグ＆ドロップした場合のみ配置できます。
コントロールパレットから配置することはできません。

OLE 項目と OLE と定義された BLOB 項目
OLE 型の項目と表示スタイル特性で「O=OLE」と定義された BLOB 項目には大きな違いがあります。
OLE に定義された BLOB 項目は、フォーム上では、埋め込み OLE オブジェクトとして表示され、OLE アプリケーション側で内容の表示や動作を扱います。Magic は、単にオブジェクトを表示するだけで、ユーザは埋め込まれたアプリケーションを実行させることで操作が可能になります。
OLE 型項目は、OLE オートメーション機能用に使用されます。OLE 型項目は、フォームには配置できず、Magic アプリケーションとして表示させることはできません。

COM オブジェクトの呼び出し
コール処理コマンドで「C=COM」を選択することで COM オブジェクトを扱うことができます。
コール COM 処理コマンドを使用して COM オブジェクトのメソッドを呼び出したり、COM オブジェクトのプロパティの設定／取得ができます。
コール COM 処理コマンドで必要な設定は、［コール COM オブジェクト］ダイアログから可能です。このダイアログは、コール COM 処理コマンドの 3 番目のカラムからズー
ムすると表示されます。

図 15-1［コール COM オブジェクト］ダイアログ［コール COM オブジェクト］ダイアログには以下の設定欄があります。
• オブジェクト …… 実行したいオブジェクトを定義します。ズームすると、項目一覧が表示されます。OLE か ActiveX 項目のみ選択できます。
• オプション …… コンボボックスより実行したい処理のタイプを選択します。利用可
能なオプションは、「C= メソッドの呼び出し」、「G= プロパティの取得」、「S= プロパ
ティの設定」です。
• メソッド / プロパティ …… ここは選択されたオプションによって変わります。
• 「C= メソッドの呼び出し」の場合：
呼び出したいメソッドを選択できます。ここからズームすると、選択したオブジェクトでサポートされているメソッドが表示されます。
COM オブジェクトによっては、サブオブジェクトのコレクションを持つものがあります。コレクションは通常 ID フィールドにより識別されますが、ID が非連続的な場合には、ID をすべて知っていない限りコレクションをすべてアクセス
Magic リファレンス
Magic eDeveloper V9 Plus707

第 15 章 - COM オブジェクトサポート
することができませんでした。
このようなコレクションサブオブジェクトを扱う場合は、「MGItemSequential」という名前の（Magic が追加した）メソッドを指定してください。このメソッドにより、非連続なコレクションであっても、0 より始まる連続なインデックス番号を指定してアクセスできるようになります。

図 15-2MgItemSequential メソッドの選択• 「G= プロパティの取得」及び「S= プロパティの設定」の場合：処理したいプロパティを選択できます。ここからズームすると選択したオブジェクトでサポートされているプロパティが表示されます。

図 15-3 COM のプロパティの設定［パラメータ］ダイアログは、必要なパラメータ名や内部タイプ（Magic での型と外部型）、そのパラメータが必須か否かを表示します。

708

Magic リファレンス
Magic eDeveloper V9 Plus

COM オブジェクトの呼び出し

図 15-4 パラメータテーブル［外部データ型］が「Enumerator」（列挙型）のパラメータでは、いくつかの定数が取り得る値（列挙値）として予め決められています。
列挙値の一覧を表示する場合は、［値］ボタンをクリックしてください。

図 15-5 列挙値の選択

この一覧は列挙型名と列挙値を表示します。一覧から列挙値を選択することで、パラメータとしてその値を式に追加することができます。
• パラメータ …… オプションが「C= メソッドの呼び出し」の場合に、メソッドに渡すパラメータを選択します。
• 戻り値／ プロパティ値…… ここは、選択されたオプションによって異なります。
• 「C= メソッドの呼び出し」の場合は、［戻り値］になります。起動するメソッド
が戻り値を持つ場合、ここから戻り値を受け取る項目を指定します。ここからズームして［パラメータ］テーブルを表示し、［項目］カラムに項目を割り当てます。
• 「G= プロパティの取得」の場合は、［戻り値］になります。プロパティの戻り値を受け取る項目を指定します。ここからズームして［パラメータ］テーブルを表示し、［項目］カラムに項目を割り当てます。
• 「S= プロパティの設定」の場合は、［プロパティ値］になります。プロパティに設定する値を指定できます。ここからズームして［パラメータ］テーブルを表示し、［項目］カラムに項目を割り当てます。
Magic リファレンス
Magic eDeveloper V9 Plus709

第 15 章 - COM オブジェクトサポート• エラーコード……処理が成功したか失敗したかを示すコードが返ります。ここからズームして［項目一覧］からエラーコードを受け取る項目を選択します。

ActiveX イベントの処理
実行時、ActiveX オブジェクトがイベントを発行することがあります。Magic のイベント
ハンドラは、これらのイベントを処理することができます。ActiveX イベントを処理するには、ハンドラを作成し、イベントタイプとして 「X=ActiveX」を指定します。［イベント］欄からズームすることでオブジェクトを選択できます。

図 15-6 ActiveX イベント の選択［イベント］欄でズームするとハンドルするオブジェクトを指定するダイアログが表示されます。

図 15-7 ActiveX イベントの設定

このダイアログの［オブジェクト］欄でズームすることで、ActiveX オブジェクトが定義されている項目を選択することができます。また、［イベント］欄からズームすると、指定したオブジェクトに対応したイベントを選択することができます。これによって、オブジェクトのインスタンスが発行するイベントをトリガとして Magic のハンドラ処理を実行させることができます。

710

Magic リファレンス
Magic eDeveloper V9 Plus

実行時の動作
オブジェクトを選択し、［イベント］欄でズームすると、サポートされたイベントを確認して選択できます。

図 15-8 COM のイベント選択

イベントを選択すると、オブジェクトがパラメータを必要とするかどうかがチェックされます。パラメータが必要であれば、以下のような確認ダイアログを表示の上、自動的にハンドラに変数項目が定義されます。

図 15-9 変数の追加確認

イベント登録できるのは ActiveX コントロールのみで、OLE オブジェクトはサポー
トされません。

実行時の動作
OLE 項目や ActiveX 項目が定義されたタスクがオープンしたとき、Magic エンジン は定義されたオブジェクトを自動的にインスタンス化します。
コール COM 処理コマンドは、インスタンス化されたオブジェクトを呼び出します。
ActiveX オブジェクトが Magic アプリケーションによって処理されたイベントをトリガ
すると、対応するハンドラが実行されます。
オブジェクトをインスタンス化したタスクが終了すると、オブジェクトは自動的に解放されます。

Magic リファレンス
Magic eDeveloper V9 Plus711

第 15 章 - COM オブジェクトサポート

パラメータとしてオブジェクトを渡すパラメータとして OLE オブジェクトを別のタスクに渡すことができます。これによって、パラメータを渡されたタスクは、継続してオブジェクトを処理することができます。
この場合、起動されるタスクでは、パラメータ項目を定義する必要があります。このタ
スクは、開発時に コール COM 処理コマンドや、イベントハンドラを使用してオブジェ
クトを処理できます。これによって、起動するタスクはインスタンス化されたオブジェ
クトを渡すことができます。
この時、パラメータ項目の［保存データ］特性は、「R= 参照」にしてください。これは、このパラメータ項目が COM オブジェクトをインスタンス化するのではなく、すでにイ
ンスタンス化されているオブジェクトを参照していることを意味しています。

オブジェクトを手動でインスタンス化する
OLE 項目 や ActiveX 項目のデフォルト設定は、これらの項目が定義されたタスクをオープンしたときに、Magic エンジンによって自動的にオブジェクトがインスタンス化されるように設定されています。タスクが終了するとそのオブジェクトは解放されます。
オブジェクトを手動でインスタンス化したり解放したりしたい場合は、項目特性の ［インスタンス化］の指定を「N= なし」に指定し、COMObjCreate や COMObjRelease 関数を使用してオブジェクトの作成や解放を行ってください。
関数についての詳細は、第 8 章「関数」を参照してください。

作成されたオブジェクトの参照
全ての COM オブジェクトは、「ハンドル」という内部管理番号を持っています。
タスク上でオブジェクトを手動でインスタンス化し、そのハンドルを保持し、そのハンドルを使用してオブジェクトを別のタスクから参照させることができます。
このような処理は、COMHandleGet や COMHandleSet 関数を使用して行います。
関数についての詳細は、第 8 章「関数」を参照してください。

COM のエラーの取得
COMError 関数を使用して、最後に発生した COM のエラーに関する情報を取得することができます。
関数についての詳細は、第 8 章「関数」を参照してください。

フォームへの ActiveX コントロールの配置
ActiveX オブジェクトの項目は、GUI 表示フォームに配置できます。
ActiveX オブジェクトが定義されている項目をドラッグ & ドロップすることによってのみ ActiveX コントロールをフォームに置くことができます。コントロールパレットから配置することはできません。

712

Magic リファレンス
Magic eDeveloper V9 Plus

OLE 項目と OLE コントロールとしての BLOB 項目

OLE 項目と OLE コントロールとしての BLOB 項目
OLE 型項目と［スタイル］特性で「OLE」として設定された BLOB 型項目には大きな違いがあります。
OLE コントロールとして設定された BLOB 項目は、OLE オブジェクトとしてフォームに埋め込まれ、OLE アプリケーションを表示したり手動で操作したりできます。Magic は、
オブジェクトを単に表示するだけで、エンドユーザがオブジェクトを操作します。
一方、OLE 項目は OLE オートメーション用に使用されます。OLE 項目は、フォームに配置できず、アプリケーションによって表示することができません。

COM オブジェクトを使用した Magic エンジンの呼び出し
COM(Component Object Model) は、カスタムアプリケーションを統合する際に使用するコンポーネントを作成させ、種々のコンポーネントが相互に作用することを可能にする
API(Application Programming Iinterface) を定義します。これらのコンポーネントは、マイクロソフトによって指定されたバイナリ構造を持ち、これによって異なる言語で書かれたコンポーネントの相互アクセスが可能になります。
ここでは、Magic のプログラムを COM オブジェクト化する方法について説明いたします。

COM インタフェースビルダ
Magic の COM インタフェースビルダ（以下、CIB と略します。）は、MCI(Magic COM
Interface) という COM オブジェクト (DLL) を作成することができます。
この COM オブジェクトが OLE オートメーション用のインタフェースとなることで、Magic を含む様々なツールやアプリケーションが Magic エンジンを呼び出すことを可能とします。

CIB の起動CIB を起動するには、［コンポーネント］メニューから［COM インタフェース］を選択します。CIB は Magic アプリケーションで、Magic のインストールディレクトリ内のAdd_On サブディレクトリにある compbldr.mff というアプリケーションファイルが実行されます。Magic 起動時の作業フォルダを変更する場合は、この作業フォルダに Add_On
サブフォルダをコピーする必要があります。

Magic リファレンス
Magic eDeveloper V9 Plus713

第 15 章 - COM オブジェクトサポート

COM インタフェースビルダテーブル
CIB テーブルから COM オブジェクトを作成することができます。

図 15-10 COM インタフェースビルダ

CIB のテーブルには、以下のカラムがあります 。
• オブジェクト名 …… オブジェクト名のデフォルトは、現在のアプリケーション名と同じです。この名前は修正できます。アプリケーション名がない場合は、デフォルト
名として、COMObjectXX が設定されます。( XX ：識別番号 )。この名前が、MCI ファ
イルのデフォルトになります。MCI ファイルの名前は 18 桁以内にしてください。
• エンジンタイプ …… ローカルまたはリモートエンジンのどちらかを選択します。ロー
カルエンジンを選択した場合、COM オブジェクトホストと同じ PC に Magic エンジン
がロードされる必要があります。リモートエンジンを選択した場合、MRB を使用してアプリケーションサーバに対して Magic アプリケーションプログラムの実行要求を出します。
• アプリケーション名 …… 自動的に現在のアプリケーション名を表示します。ここにはパークできません。
• メソッド …… COM インタフェースファイルに含まれるメソッドの数が表示されます。ここでズームするとメソッドテーブルが表示されます。
• プロパティ …… タイプに従って事前に定義されたオブジェクトのプロパティの数を表示します。ズームするとプロパティテーブルが表示されます。

メソッドテーブル
メソッドテーブルには、オブジェクトに定義された全てのメソッドが一覧表示されます。
これらのメソッドはアプリケーションの公開プログラムで、COM インタフェースを使用
してメソッドとして使用できるものです。ローカルエンジンの場合、CIB は２ つの事前
定義メソッドを作成します。
［メソッド］カラムにカーソルがパークしている状態で、［プログラムの選択］ボタンをクリックすると、利用可能な公開プログラムの一覧を表示されます。各プログラムのチェックボックスを選択することで追加／削除ができます。
メソッドテーブルには以下のカラムがあります。

714

Magic リファレンス
Magic eDeveloper V9 Plus

COM オブジェクトを使用した Magic エンジンの呼び出し• メソッド名 …… COM インタフェースで指定されたメソッド名です。この名前は変更
できますが、使用できない文字があります。メソッド名には、数字から始まる名前を指定できません。
• 公開名 …… 選択されたプログラムの公開名が自動的に表示されます。ここは変更できません。
• パラメータ／戻り値 …… パラメータの総数が表示されます。ここでズームすると［パラメータ／戻り値］ダイアログが表示され、メソッドに渡すパラメータや戻り値を指定できます。
• ヘルプキー …… 関連するヘルプのトピックを開くことができるようにコンテキスト
ID( マップ ID) を指定できます。ヘルプキーは、4 桁以内の数値で指定します。コール
COM 処理コマンドでプロパティを選択する際に F1 キーを押下することで指定したヘルプが表示されます。
• ヘルプ文字列 …… ヘルプメッセージを 512 文字まで入力できます。OLE/COM ビューワーなどでオブジェクトを参照する場合や、コール COM 処理コマンドでプロパティを選択する際に表示されます。
［確認］ボタンをクリックするとチェック機能が実行されます。メソッドの構成にエラーがなければその旨を表示し、エラーがあれば警告を表示します。
メソッド名やオブジェクト名に DBCS（全角文字や半角カタカナ）は使用できません。また、以下の文字も指定できません。
• ~!@#$%^&*()-+=|\/?_ ,''<.>;:"`{}[]_［パラメータ／戻り値］ダイアログ［パラメータ／戻り値］ダイアログには、Magic プログラムに定義されたパラメータ変数と戻り値が表示され、それぞれの COM での型が表示されます。Magic のデータ型と COMでのデータ型は以下の関係で対応されます。
Magic の型

COM のデータタイプ

文字型 (Alpha)

VT_BSTR

数値型 (Numeric) 小数点なし

VT_I4

〃

小数点有り

VT_R8

日付型 (Date)

VT_DATE(Date)

時刻型 (Time)

VT_DATE(Time)

論理型 (Logical)

VT_BOOL

メモ型 (Memo)

VT_BSTR

Blob 型 (Blob)

VT_ARRAY|VT_UI1

ベクトル型 (Vector)

VT_ARRAY|VT_UI1• 小数点なしの数値型データの場合、10 桁以上にするとオーバフローを起こす可能性があるため、警告メッセージを表示します。
• Blob 型とベクトル型は、リモート COM の場合のみ有効です。また、戻り値にはBlob 型やベクトル型を指定できません。
• 呼び出しプログラム側の型指定は、使用する言語によって異なります。
• パラメータ名に DBCS コードを含めると ITypeViewr などでパラメータ名が正しく表示されない場合があります。

Magic リファレンス
Magic eDeveloper V9 Plus715

第 15 章 - COM オブジェクトサポート

ローカルエンジンの事前定義メソッド
ロ ー カ ル エ ン ジ ン を 選 択 し た 場 合、メ ソ ッ ド テ ー ブ ル に 事 前 定 義 メ ソ ッ ド（MagicEngineLoad と MagicEngineUnload ）を自動的に表示します。これらのメソッドは、
ヘルプキーやヘルプ文字列を除いて修正できません。

プロパティテーブル［プロパティ］カラムからズームすると、オブジェクトに対してサポートされたプロパ
ティが表示されます。
プロパティの一覧は、オブジェクトタイプに従ってあらかじめ定義されたものです。こ
の内容を追加／削除することはできません。
各プロパティに対して、デフォルト値が適用できれば設定でき、ヘルプキーやヘルプ文
字列の指定もできます。

ローカルエンジンのプロパティ
ローカルエンジンのプロパティには、以下の指定があります。詳細の説明は、719 ページを参照してください。
• ApplicationName• WindowHandle• CommandLineParamters• MagicEnginePath• EngineLoadTimeout

リモートエンジンのプロパティ
リモートエンジンのプロパティには、以下の指定があります。
詳細の説明は、720 ページを参照してください。

• ApplicationName• MessagingServer• BrokerTimeout• RequesterTimeout• Priority• UserName• Password• AltMessagingServer• RetryMainTime

オブジェクトの設定
CIB の［オプション］メニューから［オブジェクトの設定］を選択するか、Ctrl+S で［オブジェクトの設定］ダイアログが表示されます。
［オブジェクトの設定］ダイアログは、以下のタブに分類されており、COM オブジェク
トに対するオプション情報を設定することができます。
• 一般• ヘルプの設定

716• クラス ID
Magic リファレンス
Magic eDeveloper V9 Plus

COM オブジェクトを使用した Magic エンジンの呼び出し• 情報一般［一般］タブには、以下の設定項目があります。
• バージョン …… COM オブジェクトのバージョン番号を入力できます。デフォルト値
は、1.0 です。
• プログラム ID …… オブジェクトが登録されている COM プログラム ID を表示します。プログラム ID はオブジェクト名に基づいて CIB が自動的に設定ます。変更できません。
• タイプライブラリ名 …… オブジェクトが登録されているタイプライブラリ名を表示します。タイプライブラリ名は、オブジェクト名やバージョンに基づいて CIB が自動的に作成します。変更することはできません。

ヘルプの設定メソッドにヘルプキーが定義されている場合、ここで設定されたヘルプファイルをもとにヘルプトピックを表示させることができます。
• ライブラリヘルプファイル名 …… ライブラリに対応したヘルプファイルを定義します。
• ライブラリヘルプキー …… ライブラリについて説明をしたトピックにリンクするためのコンテキスト ID を指定します。
• ライブラリヘルプ文字列 …… ライブラリに関する初期情報を提供する文字列を定義します。
• オブジェクトヘルプ …… COM オブジェクトに対応したヘルプファイルを定義します。
• オブジェクトヘルプキー …… COM オブジェクトについて説明をしたトピックにリンクするためのコンテキスト ID を指定します。

クラス ID
すでに設定済みのクラス ID を変更しオブジェクトを作成したい場合、［クラス ID の設定］をクリックし、［クラス ID の変更］ダイアログを開いてください。新しくオブジェ
クトを作成する場合、クラス ID の割り当ては自動的に行われます。意図的に変更する必要がある以外は空白のままにしてください。

図 15-11 クラス ID の修正

情報COM オブジェクトに関する参考情報を入力することができます。この情報は、生成されるオブジェクトの一部にはなりません。しかし、今後の保守のために利用できます。
Magic リファレンス
Magic eDeveloper V9 Plus

717

第 15 章 - COM オブジェクトサポート

COM オブジェクトの作成
COM オブジェクトを定義しメソッド、プロパティの設定を行ったら、［オプション］メ
ニューの［オブジェクトの作成］（Ctrl+I）を実行してください。
［COM ファイルの作成］
ダイアログが表示されます。

図 15-12 COM ファイルの作成

COM オブジェクトのためのディレクトリが存在しない場合、CIB は、デレクトリを作成します。COM オブジェクトファイルの名前のデフォルト値は、'( コンポーネント名 ).dll'になります。
CIB は、OLE、ActiveX の各データ型をサポートしていません。

オブジェクトの登録
オブジェクトが作成された後、使用する PC に COM オブジェクトを手動で登録する必要があります。
regsvr32.exe を使用することでオブジェクトの登録 / 削除ができます。

ローカル COM オブジェクトの実行時の動作
ローカルな Magic の COM オブジェクトがロードされても、Magic エンジンは自動的には起動されません。
ユーザーは、MagicEngineLoad メソッドを使用してMagicエンジンを起動するように COM
オブジェクトに指示しなければなりません。

MyObject.MagicEngineLoad メソッド
オブジェクトがエンジンをロードするように指示されると、MagicEnginePath プロパティ
によって定義されたパスに位置する Mgrntw.exe が実行されます。パスが設定されていな
い場合、インストールディレクトリから 実行されます。
エンジンが起動されると、COM オブジェクトはエンジンに接続され、メソッドコールで呼び出すことができます。

公開プログラムのためにメソッドを有効にする
Magic COM エンジンへの接続が確立されると、コンテナは、指定されたプログラムを実行する COM オブジェクトのメソッドをアクティブにします。
例 :MyObject.AddCustomer('John','Smith' )該当するプログラムが見つかると、これを実行します。プログラムが終了すると、メソッ
ドは戻り値を返します。
公開プログラムは、同期モードで実行します。これは、呼ばれた公開プログラムが実行を完了した後でのみ、コールメソッドが完了するという意味です。

718

Magic リファレンス
Magic eDeveloper V9 Plus

COM オブジェクトを使用した Magic エンジンの呼び出し

プロパティ
ローカル COM オブジェクトのプロパティには、以下のものがあります。
• ApplicationName …… 全てのメソッドが処理されるアプリケーションの名前です。
メソッドコールに対応する公開プログラムは、ここで設定されたアプリケーション内になければいけません。
アプリケーション名を修正すると、次のメソッドコールに影響を及ぼします。
• WindowHandle …… 起動された Magic エンジンのウィンドウハンドル値を保持します。Window ハンドルは、自動的に取得される値で変更できません。
例 :MyObject.WindowHandle は、数値を返します。
オブジェクトによって起動された Magic エンジンが存在しない場合や、エンジンがバックグラウンドで起動された場合は、「0」が返ります。
• CommandLineParameter …… Magic エンジンの起動時に指定されるコマンドライン
パラメータです。MagicEngineLoad メソッドを呼び出す前に設定された場合のみ、この設定が有効になります。
例 : MyObject.CommandLineParams="/ApplicationStartup=B" は、バックグラウンドモー
ドでエンジンを起動します。
• MagicEnginePath …… Magic の実行エンジンのパスを設定します。
MagicEngineLoad メソッドを呼び出す前に設定された場合のみ、この設定が有効になります。パスが設定されない場合、Magic のインストールディレクトリから起動されます。
• EngineLoadTimeout …… Magic エンジンがロードできなかったり接続できなかったりして、MagicEngineLoad メソッドが失敗したときのタイムアウトを秒数で指定します。
ゼロが指定された場合、MagicEngineLoad メソッドが即失敗することを意味します。

リモート COM オブジェクトの実行時の動作
リモート Magic エンジン用に設定された COM オブジェクトを使用することで、リモー
トリクエストによるアプリケーションサーバ上の公開プログラムの起動が可能になります。各メソッドコールは、Magic のリモートリクエストとして実行されます。COM オブ
ジェクトは、この場合リクエスタとして動作し、様々なプロパティを設定することで動作を制御することができます。
リモートエンジン用の COM オブジェクトを利用可能にするには、Magic アプリケーショ
ンサーバの動作環境を設定し、COM オブジェクトからアクセス可能になるようにしなけ
ればなりません。リモートの場合、MagicEngineLoad と MagicEngineUnload の各メソッドはありません。
詳細は、第 20 章「分散アプリケーション アーキテクチャ」を参照してください。

メッセージレイヤ
リモート COM オブジェクトがリクエスタとして動作する為には、オブジェクトを実行するアプリケーションがメッセージレイヤを有効に使用できることが必要となります。
リモート COM オブジェクトを実行するアプリケーションが、メッセージレイヤ用の DLLファイル（Mgrqgnrc9x.dll）をロードできるように設定しなければなりません。このファ
イルをホストアプリケーションの作業フォルダに置くか、OS の PATH 環境変数でこのファイルが配置されているパスを指定してください。

Magic リファレンス
Magic eDeveloper V9 Plus719

第 15 章 - COM オブジェクトサポート

公開プログラムのメソッドを有効にする
Magic の公開プログラムに対してメソッドコールを実行すると、COM オブジェクトは、
MRB を使用して アプリケーションサーバに同期リクエストを発行します。
以下のように COM オブジェクトの設定を行ってください。
• メッセージサーバとして MRB が動作しており、利用可能な状態になっていなければなりません。COM オブジェクトの［MessagingServer］プロパティで、MRB のサーバ
アドレスとポート番号を指定してください。
• Magic エンジンは、MRB と接続していなければなりません。
• COM オブジェクトの ［ApplicationName］プロパティで指定されたアプリケーション
が、アプリケーションサーバ側で定義されていなければなりません。

プロパティ
リモート COM オブジェクト用のプロパティとして、以下のものがあります。この設定は、次のメソッドコールから反映されます。
• ApplicationName …… 全てのメソッドが処理されるアプリケーションの名前を保持します。
メソッドコールに対応する公開プログラムは、ここで設定されたアプリケーション内になければいけません。
• MessagingServer …… リクエストを受け取る MRB のアドレスを指定します。
「localhost¥3300」のように、ホスト名とポート番号の組み合わせで指定します。
• BrokerTimeout …… COM オブジェクトが MRB によって Magic エンジンが有効になるまでを待つ最大の秒数。MRB が指定された時間内にエンジンを起動できなかった場合、メソッドコールは失敗します。
• RequesterTimeout …… COM オブジェクトが起動プログラムからの戻りを待つ最大の秒数。「0」の場合は、無期限に 待つことになります。
• Priority …… メソッドコールによって生成されたリクエストに対する優先順位。その優先順位は、0 から 9 までの数値で指定され、9 が最も優先度が高くなります。
• UserName …… コールメソッド実行時に Magic アプリケーションサーバに渡される
ユーザー名• Password …… コールメソッド実行時に Magic アプリケーションサーバに渡されるパスワード• AltMessagingServer …… 代替えの MRB のアドレスを定義します。メインのメッセー
ジサーバとの接続に失敗した場合は、こちらの MRB との接続を試みます。
以下のプロパティは、最初のメソッドコールの前にのみ有効です。メソッドが呼ばれた
後で値を変更しても無効です。
• RetryMainTime …… COM オブジェクトが代替サーバ (MRB) に接続する時に、メインの MRB との接続処理を繰返す時間を指定します。この時間を超えて接続できない場
合は、代替えサーバへの接続に切り替えます。デフォルト値は 5 で最小値は 1 です。

COM オブジェクトエラーとトラブルシューティング
エラーの値は、結果ハンドルの書式で返ります。これは HRESULT として知られている
32 ビットの数値です。

720

Magic リファレンス
Magic eDeveloper V9 Plus

COM オブジェクトを使用した Magic エンジンの呼び出し

ローカル Magic エンジン
以 下 の 表 は、ロ ー カル Magic エンジンの COM オブジェ クトによって返される
HRESULTS の値です。
HRESULT説明

0x803307D2

Magic エンジンがロードさ メソッドが呼ばれたが、Magic エンジンがれていない
動作していない場合に通常発生します。

対応

他のメソッドをコールする前に
MagicEngineLoad メソッドを使って Magic
エンジンをロードしてください。
0x803307D3

Magic エンジンのロードに MagicEngineLoad メソッドが、Magic 実行
失敗した
エンジンのロードに失敗しました。このエラーは以下のような場合に発生します。
• Magic の実行エンジンが、MagicEnginePath
プロパティによって定義されたパス上に見つからなかった。
• MagicEnginePath プロパティが、空白で、Magic 実行エンジンのインストールディ
レクトリがレジストリから見つからなかった。
• ライセンス上の制限により実行できないなど、実行環境に誤りがあった。Magic の実行エンジンが完全にインストールされているかどうか、また実行できる環境に設定されているかどうかを確認してください。

0x803307D4

Magic エンジンがロードで MagicEngineLoad メソッドは、レジストリきなかった - 間違ったレジ に登録されているインストールディレクト
リ上の Magic の実行エンジンをロードできストリパスませんでした。これは、レジストリ上に該当するキーが見つからなかった場合に発生します。このエラーは以下のような場合に発生します :
• 想定していたバージョンの Magic 製品が、インストールされていない。
• レジストリキーが、修正されていた。
• Magic 製品が正しくインストールされな
かった。
Magic 製品が完全にインストールされたかどうかを確認してください。また、
MagicEnginePath プロパティの指定が合っているかどうかも確認してください。

0x803307D5

Magic エンジンの終了ができなかった

MagicEngineUnload メソッドは、Magic エ
ンジンの終了処理に失敗しました。このエラーは以下のような場合に発生します。
• Magic エンジンが即、終了してしまった。
• Magic エンジンが、COM オブジェクトからの処理以外の処理を行っている。

Magic リファレンス
Magic eDeveloper V9 Plus721

第 15 章 - COM オブジェクトサポート
HRESULT説明

0x803307D6

Magic エンジンのロードに EngineLoadTimeout プロパティによって定失敗した。エンジンとの同 義されたタイムアウト時間が Magic のロー期中にタイムアウトが発生 ド中に経過してしまった。
した。
Magic エンジンの起動に十分な時間をEngineLoadTimeout プロパティに設定してください。

0x803307D7

Magic エンジンのロードに MagicEngineLoad メソッドは、Magic エンジ
ンと HTTP 接続を確立することができませ
失敗した - エンジンとのHTTP 接続がないんでした。このエラーは以下の場合に発生
します。

対応

• TCP/IP 層（ドライバ）が、インストール
されていない。
• Magic エンジンは、リモートリクエストを処理するように設定されていた。
TCP/IP 層がインストールされていることと、Magic エンジンがリクエストサーバとして実行するように設定されていないことを確認してください。
0x803307D1

一般的なエラー

上記外のエラー

リモート Magic エンジン
リモート Magic エンジン用の COM オブジェクトは、リモートリクエストとしてメソッドを実行します。
このため想定されるエラーは、リクエストに関連するエラーになります。リクエストエ
ラー番号は、HRESULT の一部（DWORD の 16 進番号）として送られます。HRESULT の
下位の Word（16 ビット）は、実際のエラー番号を表します。
例えば、「メッセージサーバが見つからない」というエラーは、エラーコードは ’102’ で、HRESULT の下位ワードはこの数値の 16 進表記として「0066」になります。これにより、
HRESULT は「0x80330066」になります。

722

Magic リファレンス
Magic eDeveloper V9 Plus

Java との連携

16

Java との連携機能とは、Java クラスや EJB(Enterprise Java Beans) のインスタンスを表す「疑似参照」を用いることによって 、Magic が Java クラスや EJB と接続する機能です。
Java クラスに対しては、疑似参照を使用しないでスタティックメソッドや変数にアクセスすることもできます。インスタンスやスタティックメソッドまたは、変数は、Java やEJB 用の関数を使用してアクセスされます。
Java コンポーネントジェネレータは、Java クラスや EJB 関数を呼び出すプログラムを含んだコンポーネントを作成するウィザードです。
本章では、次の内容について説明します。
• Java の用語• Java と EJB 用の関数
• コードページ• タイプシグニチャ• 実行エンジンの動作• Java コンポーネントジェネレータ

リファレンス
Magic eDeveloper V9 Plus723

第 16 章 - Java との連携

Java の用語
以下の用語は、様々な Java クラスの要素を表しています。
Java クラス(Java Class)Java クラスは、特別な種類のオブジェクト内にあるメ
ソッドと変数のテンプレート定義です。オブジェクトは、クラスの特定のインスタンスとなることができ、変数の代わりに実数値を含めることができます。

クラスインスタンス(Class Instance)

Java クラスの実体

スタティッククラスメ
ソッド(Static Class Method)

クラスをインスタンス化せずに呼び出す事のできるクラ
スメソッド

スタティッククラス変数(Static Class Variable)

クラスをインスタンス化せずにアクセスできるクラス変数

コンストラクタメソッド(Constructor Method)

新しいクラスオブジェクトがインスタンス化されたときに自動的に初期化される機能

疑似参照(Pseudo-Reference)

クラスインスタンスを表す Magic の BLOB 項目。新しいクラスインスタンスを作成するメソッドは、作成されたオブジェクトの「疑似参照」を返します。後で、オブジェクトと一緒に処理するプログラムは、ID を使用しなければなりません。

Java のネイティブインタ
フェース(Java Native Interface)

非 Java プログラムと Java プログラムを連動させます。

Java 仮想マシン(Java Virtual Machine)

実際のマシン上で Java のバイナリコードを実行させるソ
フトウェア

JNDI
(Java Name Directory
Interface)Java アプリケーションが複数のネームサービスやディレ
クトリサービスへアクセスを可能にする機能

J2EE エンタープライズ
サーバ(J2EE Enterprise Server)

標準化され再利用可能なコンポーネントモジュール (EJB)
を実行する Java プラットフォーム

EJB(Enterprise JavaBeans)

オブジェクト指向の分散型エンタープライズレベルアプ
リケーションの開発および配備に使用するコンポーネン
トアーキテクチャ。

JNI(Java Native Interface )Java から C++ など他の言語で書かれたライブラリを呼び出すための仕様です。既存のシステムとの接続や、実行速度が特に求められる場合などに使用することができます。

Java 開発キット(Java Development Kit)

Java アプレットやアプリケーションを開発するためのプ
ログラム開発環境

Java と EJB 用の関数
Magic は、メソッドを実行したり、疑似参照を使用して変数を参照したり更新したりす
る Java クラスのインスタンスを作成することができます。疑似参照とは、Java クラスのインスタンスを表す BLOB 項目です。メソッドが呼び出されると関数の戻り値として
BLOB 値を Magic に返します。
クラスのスタティックメソッドや変数は、クラス名とメソッドまたは変数名を指定する
ことで、Java クラスのインスタンスを作成しないでアクセスすることができます。

724

リファレンス
Magic eDeveloper V9 Plus

コードページ
以下の Magic の関数は、Java でのメソッド呼び出しのように使用することができます。
エンジンの各コンテキストは疑似参照と実参照の間で内部マップを作成します。
例えば、Magic プログラムは、変数項目（A）として疑似参照を作成する場合、JCreate 関数を使用します。インスタンスに対する実参照は、変数項目（A）と内部的にリンクしています。コンテキスト内のあらゆる Magic プログラムは、JCall(A,….) を使用することでメソッドやオブジェクトの変数にアクセスすることができます。
Java 関数を Magic プログラムから呼び出すことで次のようなことができます。
• Java クラスの新しいインスタンス作成• Java クラスかインスタンスのメソッド呼び出し• 例外報告の取得• 変数の値の照会や更新
Magic の Java 関数には、以下のものがあります。
JCreateJava クラスの新しいインスタンスを作成します。

JCallJava クラスのインスタンスのメソッドを呼び出します。

CodePageJava の文字を Magic の文字型データに変換したり、その逆を行う場合に使用するコードページを指定します。

JCallStatic

Java クラスのスタティックメソッドを呼び出します。

JException

現在のコンテキストの最後の例外処理に対する疑似参照を返します。

JExceptionOccurred

最後の Java 関数または、EJB 関数が例外をスローしたときに「True」値を返します。

JExceptionText

最後の例外情報やスタックの任意のトレースの内容を返します。この関数は、最後の Java 関数または、EJB 関数の処理の間にスローされた例外処理の内容を参照します。

JExplore

Java クラスの内容を返します。

JGet

インスタンス変数の値を返します。

JGetStatic

クラス変数の値をを返します。

JInstanceOf

Java の instanceof 演算子（あるオブジェクトの実行時の型が指定した型に合致するかどうかを判定します。）と同じような動作をします。

JSet

インスタンス変数を更新します。

JSetStatic

クラス変数を更新します。

以下の EJB 関数によって、Magic は EJB を探して呼び出すことができます。
EJBCreate

EJB のインスタンスを作成し、実行可能な関連する Java 関数
から疑似参照を返します。

EJBExplore

EJB インスタンスの内容を返します。

Java と EJB 関数については、第 8 章「 関数」を参照してください。

コードページJava の文字と Magic の文字を変換する際に使用される CodePage 関数で、指定できるコードページの ID は以下の通りです。
ID037
リファレンス
Magic eDeveloper V9 Plus

言語
EBCDIC

725

第 16 章 - Java との連携

726

ID

言語

437

Latin( 米国 )500

EBCDIC 500V1

708

アラビア語 (ASMO 708)

709

アラビア語 (ASMO 449+, BCON V4)710

アラビア語 (Transparent Arabic)

720

アラビア語 (Transparent ASMO)

737

ギリシャ語 (formerly 437G)

775

Baltic

850

MS-DOS 西欧諸言語 (Latin I)

852

MS-DOS 東欧諸言語 (Latin II))

710

Arabic (Transparent Arabic)

720

Arabic (Transparent ASMO)

737
775

ギリシャ語
Baltic850

Latin1( 西欧諸言語 )852

Latin2( 東欧諸言語 )855

IBM キリル文字 (primarily Russian)857

IBM トルコ語

860

MS-DOS ポルトガル語

861

アイスランド語

862

ヘブライ語

863

MS-DOS カナダフランス語

864

アラビア語

865

MS-DOS 北欧語

866

キリル語 ( ロシア語 )

869

ギリシャ語

874
875

タイ語
EBCDIC932

日本語 Shift-JIS936

中国語 簡体字949

韓国語 ハングル

950

中国語 繁体語

1026

EBCDIC

1200

Unicode (BMP of ISO 10646)

1250

Windows 3.1 西欧諸国

1251

Windows 3.1 キリル文字

1252

Windows 3.1 US (ANSI)

1253

Windows 3.1 ギリシャ語

1254

Windows 3.1 トルコ語

1255

ヘブライ語

1256
1257

アラビア語
Baltic1361

Korean (Johab)

10000

Macintosh Roman

10001

Macintosh Japanese
リファレンス
Magic eDeveloper V9 Plus

タイプシグニチャ
ID
10006

言語
Macintosh Greek I

10007

Macintosh Cyrillic

10029

Macintosh Latin 2

10079

Macintosh Icelandic

10081

Macintosh Turkish

65001

Unicode(UTF-8)

タイプシグニチャ
以下の表で示されるように、JNI では、JVM で定義されている タイプシグニチャを使用します。
タイプシグニチャ

Java タイプZ

boolean

B

byte

C

char

S

short

I

int

J

long

F

float

D

doubleL クラス名 :

クラス名

[ タイプ

タイプ []( パラメータタイプ ) 戻り値のタイプ

メソッドのタイプ

例：Java のメソッド long f (int n, String s, int[] arr) は、(ILjava/lang/String;[I]J というタイプ
シグニチャを持っています。
この場合以下のように対応します。
• int n …… I
• String s …… Ljava/lang/String;• int[] arr …… [I• long f …… J
（クラスファイルを逆アセンブルする）JDK のコマンドラインユーティリティ、'javap -s〈クラス名〉' は、クラスを分析し、そのメソッドと変数のシグニチャーを出力します。

例：class HelloJava{
public static void main(String s[]){System.out.println("Hello Java Java.");}}
この場合、javap -s HellowJava は以下のように返ります。
Compiled from HelloJava1.javaclass HelloJava1 extends java.lang.Object {HelloJava1();/* ()V */リファレンス
Magic eDeveloper V9 Plus727

第 16 章 - Java との連携
public static void main(java.lang.String[]);/* ([Ljava/lang/String;)V */}実行エンジンの動作
ここでは、Java 関数を呼び出すプログラムの動作について説明します。Java 関数が実行時に機能するためには、Java 開発キット (JDK) や、Java の実行モジュール（JRE) がイン
ストールされている必要があり、呼ばれる Java クラスは、環境変数に定義されたクラス
パス上に配置しなければなりません。

ライフサイクル
コンテキストの終了時、Java 関数や EJB 関数により獲得された全ての疑似参照が JVM から解放されます。

マルチスレッド
各エンジンのコンテキストは、自身の疑似参照を持っています。1 つのエンジンのコン
テキストの疑似参照は、同じ Java クラスのものであっても、別のエンジンのコンテキス
トの疑似参照に対して影響を与えません。スタティックなクラスメソッドや変数のアクセスは、メソッド内の同期化されたキーワードを使うことによって Java サイドで同期化される必要があります。

ブラウザベースのプログラム
Magic は、コンテキストのライフサイクル内ではいつでも JCreate 関数を使用して疑似参照を作成し、エンジンコンテキストのサブシーケンスイベント内で利用することができます。

変換テーブル
以下のテーブルは、JCreate、JCall、JSet、JCallStatic、JsetStatic の各関数に渡される値と、
Jcall、JGet、JCallStatic、JGetStatic の各関数の戻り値のシグニチャによって自動変換される内容です。
Magic の型

Java の型
基本関数型

オブジェクト型

文字、メモ、BLOB

char, byte, char[ ],byte [ ]String, StringBuffer,Character,
Byte, Byte [ ], Character [ ]論理booleanBoolean

数値、日付、時刻

byte, short, int, long, float,
doubleByte, Short, Integer,Long, Float,
Double以下のテーブルは、戻り値の型に対応したデフォルトマッピングを表示しています。
Java の型
基本関数型

オブジェクト型

char, char[ ]String, StringBuffer,Characterbyte[ ]

728

Magic の型
文字 (32K まで )BLOB (32K 超 )BLOB
リファレンス
Magic eDeveloper V9 Plus

実行エンジンの動作
Java の型
基本関数型

オブジェクト型

Magic の型

booleanBoolean論理

byte, short, int, long,float,
doubleByte, Short, Integer,Long, Float,
Double

数値

疑似参照の戻り値
signaTrue*p を使用することで前のセクションで説明した自動変換を無効にすることができます。
• 自動変換するには以下のようにします。
JCall(A, increment2 ,'()Ljava/lang/Long;') …… 関数は Long 型の数値を返します。
• 自動変換を無効にするには以下のようにします。
JCall(A,’increment2’,'()Ljava/lang/Long;*p’) …… 関数は、Long 型の疑似参照 (BLOB 項
目 ) を返します。

エラーと例外処理
Magic の Java 関数は、クラスをロードしないようにしたり、指定されたタイプシグニチャ
によって要求されたコンストラクタを設置したり、例外をキャッチしたりできます。

メソッドに対する外部エラー
Java クラスのメソッドによって例外がスローされた場合、JCreate、JCall、JcallStatic の各関数は、Null 値を返します。
例外や例外テキストの疑似参照を受け取るためには、JException か JExceptionText のいず
れかの関数を呼び出す必要があります。
Magic は、別の関数が呼ばれるまで JException か JexceptionText 関数を繰り返し呼び出すことができます。
JexceptionOccurr 関数で、発生した例外の内容を確認することができます。

Java クラスに対する内部エラー
内部のエラーの場合、Null か、False が返ります。
JExceptionText 関数は、以下のメッセージのうちのどれか 1 つを返します。
• JVM could not be loaded• Class not found• Method not found• Failure to convert parameters to JNI• Failure to convert return value from JNI
JException 関数は、Java の実行エラーをフックします。

ガーベッジコレクション機能
タスクの終了時、更新されたパラメータや戻り値の更新内容を反映後、Magic は、疑似参照の値を自動的に解放します。この値は、タスクを含むタスクツリー内の変数には割り当てられません。この動作によって、不必要なリソースを解放します。

リファレンス
Magic eDeveloper V9 Plus729

第 16 章 - Java との連携

環境
Magic は、OS の環境変数を設定せずに Java クラスをロードして有効化することができます。Java の設定のための必要な環境変数は、Magic.ini ファイルの［MAGIC_JAVA］セク
ションに指定します。
［MAGIC_JAVA］セクションには、以下の設定を行うことができます。
• JAVA_HOME …… JDK のインストールフォルダー。この設定は、OS で指定されている環境変数「JAVA_HOME」を上書きします。
• CLASSPATH …… 追加クラスが配置されたパス。この設定が使用されると、OS で指定されている「CLASSPATH」の文字列の先頭に追加されます。セミコロンは、複数のパス名を指定する時の区切り文字として使用されます。
例えば、OS の「CLASSPATH」として「C:¥;C:¥temp」となっている状態で、Magic.iniの［MAGIC_JAVA］セクションで「CLASSPATH=D:¥」と指定された場合、Magic 実行時の OS のクラスパスは「D:¥;C:¥C:¥temp」と認識されます。
JCG を使用したり、JMS と連携する場合、以下の指定が必要です。
CLASSPATH=Support¥edevUtils.jar;.;• JVM_ARGS …… JVM に渡す追加パラメータ。例えば以下のように指定します。
JVM̲ARGS=Djms.properties=F:¥j2ee¥config¥jms̲client.properties

Java コンポーネントジェネレータ
Java コンポーネントジェネレータ（以下 JCG と略します。）は、特定の JNI シグニチャを指定することなく、コンポーネントを作成することによって、Java クラスや EJB ファ
イルに Magic が自動的にアクセスできるようになるウィザードです。
JCG は、以下の内容を定義することで Java コンポーネントを指定できます。
• Java タイプ• Java クラス• Java インタフェースオブジェクト

730

リファレンス
Magic eDeveloper V9 Plus

Java コンポーネントジェネレータ

Java クラスや EJB タイプの指定
Magic の［コンポーネント］メニューの［Java インタフェース］をクリックすると JCGが起動されます。

図 16-1Java クラスか EJB タイプの選択

Java クラスか EJB のどちらかを選ぶダイアログが表示されます。作成したいタイプをここで選択します。
EJB を選択した場合以下の指定が有効になります。
• EJB 名 …… JNDI に表示される EJB 名を指定します。
• JNDI プロパティ文字列 …… 必要であれば、JNDI プロパティ文字列を指定します。例
えば以下のように指定します。
java.naming.factory.initial=com.sun.jndi.cosnaming.CNCtxFactory,java.
カンマは区切り文字として使用されます。
EJB タイプが選択されると、EJB の定義を取得するために EJBExplore 関数が自動的に呼ばれます。
Java クラスを選択した場合、次に説明する ［Java オブジェクトブラウザ］ダイアログが表示されます。

リファレンス
Magic eDeveloper V9 Plus731

第 16 章 - Java との連携

Java オブジェクトブラウザ
ツリーや［クラス名］欄から Java クラスを選択できます。

図 16-2Java クラスオブジェクトの選択［次へ］ボタンが押された後に、ウィザードが自動的に JExplore 関数を起動し、［Java ク
ラス構造］ダイアログが表示されます。Java クラスにアクセスできなかった場合、以下のメッセージを表示します。
Java ク ラ スが見つか り ません . ク ラ ス を選択 し 直 し て く だ さ い .

732

リファレンス
Magic eDeveloper V9 Plus

Java コンポーネントジェネレータ

Java クラス構造
コンポーネントインタフェースを作成するためのオブジェクトを選択できます。

図 16-3Java クラスオブジェクトの選択

各 Java クラスの下に、次のインタフェースオブジェクトが表示されます。
• コンストラクタ• メンバー変数• メソッド• スタティックメンバー変数• スタティックメソッド
コンテンツを持った Java クラスのクラス構造だけが表示されます。例えば、スタティッ
クメンバーがない場合、スタティックメンバーオブジェクトはツリーに表示されません。
メソッドはパラメータを含めて表示されます。
JCG は、配置されたノードから、そのノードの全ての子要素のオブジェクトを呼ぶプロ
グラムを作成します。

リファレンス
Magic eDeveloper V9 Plus733

第 16 章 - Java との連携作成された Java コンポーネント
Java コンポーネントが作成されると、JCG は、［完了］画面を表示します。

図 16-4 Java コンポーネント作成完了画面

JCG によって以下のような Magic プログラムが作成されます。
ID

オブジェクトタイプ

Magic でのオブジェクト

1

Java クラスまたは、EJB(
コンストラクタが選択された場合 )

JCreate 関数か EJBCreate 関数を持つプログラ
ムで、疑似参照の BLOB 値を返します。

メソッド

JCall 関数を持つプログラム。

2

各コンストラクタに対応したプログラムが作成されます。

プログラムには、メソッドに渡すパラメータや戻り値用の変数も定義されています。

3

メンバ変数

各メンバーのために、2 つのプログラムが作成されます。
変数に値を設定する Jset 関数を持つプログラム。その関数の処理が成功したら「True」を返します。失敗した場合は、「False」を返します。
値を参照する JGet 関数を持つプログラム。

4

スタティックメンバー変数

各スタティックメンバごとに 2 つのプログラ
ムが作成されます。
JSetStatic 関数をもつプログラム
JGetStatic 関数をもつプログラム

5

スタティックメソッド

JCallStatic 関数をもつプログラム。プログラムには、メソッドに渡すパラメータや戻り値用の変数も定義されています。

作成されるファイル
JCG は、指定されたディレクトリに以下のファイルを作成します。

734

リファレンス
Magic eDeveloper V9 Plus

Java コンポーネントジェネレータ• MCI（Magic Component Interface）ファイル …… 作成されたコンポーネントを公開するためのファイル。
• リポジトリ出力ファイル（Exp）…… 作成されたコンポーネントアプリケーションを
リポジトリ出力したファイル。

リファレンス
Magic eDeveloper V9 Plus735

第 16 章 - Java との連携

［このページは意図的に空白にしています。］

736

リファレンス
Magic eDeveloper V9 Plus

XML コンポーネントジェネレータ

17

XML（Extensible Markup Language） スキーマは、Magic アプリケーションと他のアプリ
ケーション間でのデータ転送を行うために使用するデータビューの階層について記述するものです。Magic の XML コンポーネント・ジェネレーター (XCG) は、スキーマファ
イルを元に、Magic アプリケーションが XML ファイルをデータベースとして扱うためのコンポーネントを作成する処理を支援するユーティリティです。
XCG は、上記の処理のために XML スキーマ定義 (XSD) ファイルを使用します。
本章では、次の内容について説明します。
• XCG ウイザード• データタイプ• XCG プログラム• コンポーネントの作成• ネームスペースのサポート

XCG によって出力される XML ファイルは、すべて Shift-JIS でエンコードされたものになります。

リファレンス
Magic eDeveloper V9 Plus

737

第 17 章 - XML コンポーネントジェネレータXCG ウイザード［コンポーネント］メニューをクリックし、［XML インタフェース］をクリックしてくだ
さい。XCG が起動されます。
XCG は、［アプリケーション新規作成］ダイアログから開くこともできます。
XCG では以下のことが可能です。
• スキーマ定義に従って新しいコンポーネントの追加／削除• 既存のスキーマ内容の表示や修正• リポジトリ出力ファイルや MCI ファイルをもとに XML ファイルのアクセス用コン
ポーネントプログラムを作成
XCG が起動されると、図 17-1 で表示されるような、［ウェルカム］ダイアログが表示されます。

図 17-1XML ウイザード ウェルカムダイアログ738

リファレンス
Magic eDeveloper V9 PlusXCG ウイザード

XCG メインオプション
XCG の［メインオプション］ダイアログは、図 17-2 のように表示され、アプリケーショ
ンの XML コンポーネントを作成するか修正／削除するかを指定することができます。.

図 17-2 メインオプション

ここでは以下のオプションがあります。
• 作成……XML スキーマをもとにコンポーネントを作成します。
• 修正……既存のコンポーネントを修正します。
• 削除……既存のコンポーネントを削除します。

コンポーネントの修正
コンポーネント定義を修正したり、削除することができます。定義内容を変更しても実際のコンポーネントには影響しません。
XCG では、図 17-3 で表示されるような、作成されたすべての XML アプリケーションのリストを表示します。

リファレンス
Magic eDeveloper V9 Plus739

第 17 章 - XML コンポーネントジェネレータ
図 17-3 コンポーネントの修正／削除

表示されている行を選択し、XML スキーマの位置を確認することができます。
コンポーネントが指定されない場合は、コンポーネントは削除され、XCG ウイザードは自動的に次画面に移動します。
［次へ］をクリックすると、選択された XML スキーマ定義の修正または削除の処理に移行します。

XML スキーマの詳細
図 17-4 で表示されているように、コンポーネントの作成／修正／削除では、［XML スキーマの詳細］ダイアログが表示されます。ここで、コンポーネントについて様々な詳細を定義することができます。

図 17-4XML スキーマの詳細

ここには以下のオプションがあります。
• コンポーネント名……コンポーネントの名前を入力します。
• コンポーネントの説明……コンポーネントの説明を 256 桁まで入力できます。
• ＸＭＬ スキーマパス……スキーマファイルの場所を指定します。ズームしてファイルを参照することができます。
• データタイプの表示／修正……グローバルな XCG データ型を修正する場合は、このチェックボックスをチェック状態にしてください。
• スキーマの再読込……XML スキーマを再読込するには、ここをチェック状態にしてください。グローバルな XCG データ型や Magice の定義を変更する場合に再読込が必要です。詳細は、「XML スキーマインタフェースの詳細」を参照してください。
コンポーネント名は、半角のアルファベットと数字のみ有効です。また、空白を含めることもできません。
読込／書込／モデルのすべてのタイプのコンポーネントを公開することができます。
XCG は以下に説明するプログラムを作成し、このプログラムをアクセスするためのインタフェースを公開するようにします。
• 読込用プログラムの作成……このプログラムは、XML ファイルを読み込み、コンポー
ネントの中の適切なテーブルの中にデータを入力します。

740

リファレンス
Magic eDeveloper V9 PlusXCG ウイザード• 書込用プログラムの作成…… このプログラムは、コンポーネントテーブルから XSD
構造とデータに基づいて XML ファイルを書き込みます。
プログラムの公 開名は、「Read_schema_name」と「Write_schema_name」になります。
「schema_name」は、XML スキーマの名前です。
• モデルの作成……作成されるモデルをコンポーネントとして公開する場合に指定します。

XSD の表示
図 17-5 に示すように［XSD の表示］ボタンをクリックすることで、XSD ファイルが表示され、XML の構造を確認することができます。

図 17-5XSD ファイルの表示［XSD の表示］ボタンをクリックしても XSD ファイルを修正することはできません。こ
の画面は、表示のみのものです。

リファレンス
Magic eDeveloper V9 Plus741

第 17 章 - XML コンポーネントジェネレータ

XML スキーマインタフェースの詳細
スキーマインタフェースの詳細では、左側のペインにコンポーネントの合成ツリーが表示されます。図 17-6 に示すように、ツリーにカーソルを置くことで、簡単な要素詳細テーブルやコンポーネント合成オプションを確認することができます。

図 17-6XML スキーマインタフェースの詳細

簡単な要素詳細テーブルは、対応する Magic のデータ型と書式を表示します。
簡単な要素詳細テーブルは、Magic のテーブルを表します。テーブルは、最初 XSD デ
フォルト値を表示しますが、これらの定義内容を変更することができます。例えば、stringの XSD デフォルト値は 30 桁の文字型ですが、100 桁に変更することができます。
XCG は、要素データタイプを取り出すことができません。string の要素データタイ
プのデフォルトマッピングの値を返します。
簡単な要素詳細テーブルでは、以下の設定項目があります。
• テーブルの公開……このチェックボックス有効にすると、テーブルは MCI に反映され、コンポーネントとして他のアプリケーションから参照することができます。
• テーブル名……公開テーブル名を変更することができます。
• Get プログラムを作成……Parent_ID と Table_ID に基づいて、合成テーブルからデータ読み込むプログラムを作成します。このプログラムの名前は、「Get_ 合成テーブル」になります。
• Put プログラムを作成……Parent_ID と Table_ID に基づいて、合成テーブルにデータ書
き込むプログラムを作成します。このプログラムの名前は、「Put_ 合成テーブル」になります。
• Searchプログラムを作成……合成テーブルから構成要素に該当するレコードを検索するプログラムを作成します。このプログラムの名前は、「Search_ 合成テーブル」になります。
• Count プログラムを作成……合成テーブルのレコード数を取得するプログラムを作成します。このプログラムの名前は、「Count_ 合成テーブル」になります。
Get, Put, Search, Count プログラムの各出力指定が選択されない場合、プログラムは作成されますが、公開名が付加されません。このため、他のアプリケーションから呼び出すことができません。

742

リファレンス
Magic eDeveloper V9 Plus

データタイプ

データタイプ作成されたコンポーネントのデフォルトデータタイプは、XSD で定義できる範囲で変更できます。［XML スキーマ詳細］ダイアログで［データタイプの表示／修正］のチェックボックスをチェックすると、図 17-7 で示される［データタイプ変換デフォルト］ダイ
アログが表示されます。

図 17-7 データタイプ変換デフォルト

F4 を押すことにより新しいエントリーを加えることができます。また、Magic の書式を変更することもできます。デフォルトのデータタイプは、XCG が起動されたときに XCG
ディレクトリに作成される Default.txt から読み込まれます。

コンポーネントの詳細
コンポーネントの出力ファイルは、図 17-8 に示すように［コンポーネントパス］ダイア
ログで指定されたパスに作成されます。

図 17-8 コンポーネントのパス

リファレンス
Magic eDeveloper V9 Plus743

第 17 章 - XML コンポーネントジェネレータ
ここには以下のオプションがあります。
• ファイル名……コンポーネント出力ファイルがどこに保存されるかを指定します。出
力ファイルがすでに存在している場合、ウイザードは以下のメッセージを表示して上書き確認を行います。
コ ンポーネ ン ト 出力フ ァ イルはすでに存在 し ています。 上書き し ますか？上書きする場合は、 ［Yes］ を ク リ ッ ク し て く だ さ い。
• コンポーネントの入力……コンポーネントが現在のアプリケーションに入力するかどうかを指定します。
XCG が新しい［新規アプリケーション作成］ダイアログから実行された場合は、自動的に入力されるので、このオプションは表示されません。
指定されたディレクトリが存在しない場合、以下のメッセージダイアログが表示されます。

図 17-9 ディレクトリが存在しない

XCG プログラム
XCG は、XML データの階層構造を表わすテーブルで構成される Magic のコンポーネン
トを作成します。開発者はデータに異なるデータベースを選ぶことができます。
新しいコンポーネントを作成する場合、XCG はいくつかの種類のプログラムを作成します。各プログラムは、そのプログラムの種類毎にフォルダに分かれて作成されます。
各プログラムはパラメータを受け取り、適切な値を返します。プログラムは作成された
MCI のファイルに定義されます。

Count プログラム
Count プログラムは Parent_ID を受け取り、合成テーブルのレコード数を返します。

DbDel プログラム
DbDel プログラムは、与えられた XML ファイルの読込プログラムを実行する前に特定のテーブル中のデータをすべて削除します。このプログラムは、新しい XML 出力ファイル
用データを作成する前にテーブル内容をクリアにする場合に使用することができます。

Get プログラム
Get プログラムは Parent_ID と Table_ID を受け取り、該当するレコードデータを返します。

744

リファレンス
Magic eDeveloper V9 PlusXCG プログラム

Put プログラム
Put プログラムは Parent_ID と Table_ID およびすべての要素を受け取り、テーブルの追加／更新を行います。

Read プログラム
Read プログラムは入力値としてファイル名か BLOB パラメータを受け取ります。読み取
りの一貫性を保証するために、一端既存のテーブル内容を削除し、その後、XML ファイ
ルからデータを読みとります。
読み取り中に、リスト上の各要素の Parent_ID を割り当て、合成要素に ID を割り当てます。
Read プログラムは、ネストされます。最初の Read プログラム は、ルートデータを入力
し、サブプログラムを実行します。サブプログラムは、Parent_ID に対応した子の要素を読みとります。

Search プログラム
Search プログラムは指定したテーブル内のデータを検索するものです。各テーブルは合成のオブジェクトを表わします。Search プログラムは、与えられた値による特定のレコー
ドのユニークな値を検索します。
Search プログラムは、パラメータとしてテーブルの要素を受け取り、レコードの Parent_IDと Table_ID を返します。Parent_ID もパラメータとして渡すことができます。Parent_IDなし（=0）で呼ばれる場合、プログラムは一致する最初のレコードを返します。この場
合、Search プログラムは親とレコードの ID を返します。

Write プログラム
Write プログラムは、XML データファイルを作成する HTML マージフォームを使ったプ
ログラムです。XML データを BLOB で返します。
Write プログラムはネストされます。最初の書き込みプログラムは、最初にルートテーブ
ルもとに実行し、次に、サブプログラムをすべて呼びます。

リファレンス
Magic eDeveloper V9 Plus745

第 17 章 - XML コンポーネントジェネレータ

コンポーネントの作成
図 17-10 に示すように、［XCG ウィザードの完了］ダイアログで［完了］ボタンをクリッ
クするとコンポーネント用の出力ファイルを作成します。

図 17-10XML ウィザードの終了

ファイルは［コンポーネントパス］で指定された場所に作成されます。
赤色表示のテキストは、設定内容に関するエラーを示しています。エラーの例として、
ディレクトリが存在していなかったり、同じ名前のパスやパス名が存在する場合があります。エラーがある時は、コンポーネントは作成されません
コンポーネントの作成後、以下のメッセージダイアログが表示されます。

図 17-11 別の XML コンポーネントの作成［Yes］をクリックすると、別の XML コンポーネントを作成するために、［メインオプション］ダイアログに戻ります。
［コンポーネントパス］ダイアログで指定されたコンポーネントを入力した場合、ダイア
ログを表示しないでウイザードは終了し、開発モードに戻ります。
MgSchemaParser.dll ファイルは、XML スキーマを解析し、XCG のテーブルにデータを入力するために使用されます。
XCG は、チーム開発が有効になったアプリケーショでは使用できません。

出力ファイルコンポーネントを作成するとデフォルトでは、XCG ディレクトリにサブディレクトリを作成します。ディレクトリー名は構成要素の名前と ID から構成されます。

746

リファレンス
Magic eDeveloper V9 Plus

ネームスペースのサポート

例：
address が構成要素の名前で、1 が構成要素のID である場合。ディレクトリ名は、「address1」となります。
以下のファイルが同じディレクトリの中に作成されます。
• MCI ファイル……XCG で作成したコンポーネントを他のアプリケーションからアクセスするためのファイル• TPL ファイル……XML ファイルを出力する場合、コンポーネントアプリケーションが使用するマージテンプレートファイル。実行環境に移す場合、このファイルを同じディレクトに置く必要があります。
MAGIC.INI の MergePrefix、および MergeSuffix の設定は無効にして下さい。

XCG ディレクトリの変更
XCG フォルダのデフォルトは、Magic のインストールディレクトリ内の Component¥XCG
サブディレクトリです。Magic.ini ファイルの指定によってこのデフォルトを変更することができます。
[Interface_Builders］セクションを Magic.ini ファイルに追加してください。ここに、以下のようにパスを指定してください。
XCG_Data=[file path name]
この設定によって、XCG のデータの保存先を指定することができます。

ネームスペースのサポート
Magic は、ネームスペースを含んだスキーマをサポートします。
詳細は、第 8 章「 関数」の「XML ネームスペース」を参照してください。

XCG はまた、以下のようなネームスペースを含んだ XSD をサポートします。
• メインプログラムには、XSD ファイルの中で定義された各ネームスペース用に文字型
変数項目が作成されます。この文字型項目には、ネームスペースの URI が含まれます。
• メインプログラムには、「UseNamespaces」という名前の論理型変数項目が作成されます。この項目は、読込／書込用の XML ファイルがネームスペースを使用するかどうかを指定します。
• メインの読込／書込用プログラムには、「UseNamespaces」と呼ばれる論理型のパラ
メータ項目が作成されます。
この項目は読込／書込用の XML ファイルがネームスペー
スを使用するかどうかを指定します。デフォルトは、「True」です。
XSD ファイルがネームスペースを含んでいて、出力ファイルを既存のアプリケー
ションに入力した場合、アプリケーションのメインプログラムは上書きされます。

リファレンス
Magic eDeveloper V9 Plus747

第 17 章 - XML コンポーネントジェネレータ

［このページは意図的に空白にしています。］

748

リファレンス
Magic eDeveloper V9 Plus

外部アプリケーションへの接続

18

Magic は、DDE、OLE オートメーション、DLL や第 3 世代言語に対するコール処理コマ
ンドなどを利用して、外部アプリケーションとの連携を行うことができます。
本章では、次の内容について説明します。
• DDE• Magic と OLE オートメーション• Call 関数• 第 3 世代言語のコール

リファレンス
Magic eDeveloper V9 Plus749

第 18 章 - 外部アプリケーションへの接続

DDE
DDE（Dynamic Data Exchange）とは、動作中の２ つのアプリケーション間でデータを交換する機能をいいます。Magic で DDE を使用する場合、DDEML.DLL が必要になります。
この DDEML.DLL は、Windows に付属しています。DDEML.DLL は、Windows の SYSTEMまたは SYSTEM32 ディレクトリに置かれています。
DDE は、Magic の関数を使用して実行します。関数には、DDEBegin（DDE の開始）、
DDEEnd（DDE の終了）、DDEGet（DDE サーバから文字列を取得）、DDEPoke（DDE サー
バに対する文字列の転送）、DDERR（DDE エラーの検出）DDExec（DDE サーバに対するコマンド文字列の転送）があります。
これらの DDE 関数は Windows 環境でのみ使用できます。DDE 関数を別のオペレーティ
ングシステムで実行しようとすると、次のような結果になります。
• DDEGet の場合、空の文字列が戻されます。
• DDEPoke と DDExec の場合、「False」が戻されます。
• DDERR の場合、コード「15」が戻されます。この戻り値は、Windows 以外のオペレー
ティングシステムで DDE 関数を実行した場合にのみ表示されます。
各関数の詳細については、第 8 章「関数」を参照してください。

750

リファレンス
Magic eDeveloper V9 Plus

Magic と OLE オートメーション

Magic と OLE オートメーション
Magic は OLE オートメーションクライアントとして、OLE オートメーションをサポートするアプリケーションや OLE コントロールのオブジェクト（OLE オートメーションサー
バ）を制御することができます。
対象となるオブジェクトは、OLE コントロールを予め GUI 形式のフォームに配置しておく他、オペレーションシステムに登録済みのクラスから新規に生成することもできます。
Magic における OLE オートメーションは、MG_OCX.DLL 内に一連の関数（OLE オート
メーション関数）として実装されています。この MG_OCX.DLL が Magic と OLE オート
メーションサーバとの仲介役となります。OLE オートメーション関数を［コールユーザ
PRC］処理コマンドを用いてコールすることによって、Magic からの OLE オートメーションの利用が実現されます。
OLE オートメーションの機能としては、プロパティの取得（PropGet 関数）と設定（PropSet
関数）、およびメソッド呼び出し（MethodCall 関数）が提供されています。OLE コントロー
ル側からのイベント通知を受け取る機能はありません。
［コールユーザ PRC］処理コマンドによる外部 DLL の関数呼び出しについては、本章の「第 3 世代言語のコール」も参照してください。

OLE オートメーションの実装
OLE オートメーションを実装するには、次の手順に従います。
1. OLE コントロールを GUI 形式のフォーム上に配置することにより、OLE オブジェ
クトを Magic アプリケーション内で定義します（この手順は任意であり、省略することも可能です）。
2. objectLoad 関数をコールする［コールユーザ PRC］処理コマンドを定義することにより、このオブジェクトへの参照を確立します。
［パラ］欄をズームして、この関数のパラメータを定義します。OLE コントロール
をすでに配置してある場合は、そのコントロール名を参照します。それ以外の場合
は、オブジェクトのクラス名を指定することで参照を確立します。
3. PropSet、PropGet、MethodCall の各関数をコールする［コールユーザ PRC］処理コ
マンドを定義し、オブジェクトのプロパティとメソッドを指定します。［パラ］欄をズームして、これらの関数のパラメータを定義します。
4. オブジェクトへの参照が不要となったら、［コールユーザ PRC］処理コマンドでobjectRelease 関数をコールします。これにより、オブジェクトとその子オブジェク
ト（もしあれば）が解放されます。

引数型文字列とパラメータ型文字列「引数型文字列」と「パラメータ型文字列」は、どちらも［コールユーザ PRC］処理コマ
ンドで OLE オートメーション関数（MG_OCX.DLL 内の関数）を呼び出す際に使用するパラメータです。この 2 つのパラメータは似て非なるものです。両者を混同しないようにご注意ください。以下に詳細を記します。

引数型文字列［引数型文字列］パラメータは［コールユーザ PRC］処理コマンドの第 1 パラメータとなる文字列です。
［コールユーザ PRC］処理コマンドで OLE オートメーション関数を呼び出す際には、通常２個以上のパラメータが必要となります。最初のパラメータには、２つ目以降のパラメータのタイプ（型）を示す［引数型文字列］パラメータを設定します。
リファレンス
Magic eDeveloper V9 Plus751

第 18 章 - 外部アプリケーションへの接続［引数型文字列］パラメータは、各パラメータのタイプを表す「4」「L」「A」などの文字（タイプ文字）から構成されます。タイプ文字を第２パラメータ以降のパラメータ個数分
並べて、１つの文字列としたものが［引数型文字列］パラメータとなります。
パラメータが n 個ある場合、［引数型文字列］パラメータは次のような構文となります。
［第２パラメータのタイプ］［第３パラメータのタイプ］...
［第 n パラメータのタイプ］

パラメータ型文字列［コールユーザPRC］処理コマンドを使用して、OLEオートメーション関数のうちPropGet、
PropSet、および MethodCall の各関数を呼び出す場合には、それぞれのプロパティ／メ
ソッドに受け渡しされるパラメータ（［プロパティ／メソッドのパラメータ］パラメー
タ）を定義します。
［プロパティ／メソッドのパラメータ］パラメータのタイプを表すために必要なパラメータが、［パラメータ型文字列］です。
上記の関数を使用する場合、［パラメータ型文字列］パラメータは［コールユーザ PRC］
処理コマンドの第４パラメータとなります。
［プロパティ／メソッドのパラメータ］パラメータが複数ある場合には、２文字以上の文字列となります。
［パラメータ型文字列］パラメータ自体のタイプは文字なので、［引数型文字列］パラメータには「A」と記述します。
［プロパティ／メソッドのパラメータ］パラメータが n 個ある場合、［パラメータ型文字列］パラメータは次のような構文となります。
［第１パラメータのタイプ］［第２パラメータのタイプ］...
［第 n パラメータのタイプ］

パラメータのタイプ文字［引数型文字列］と［パラメータ型文字列］で使用されるタイプ文字は次の通りです。
•

1…Char

•2…Short•

4…Long•F…Float•

8…Double•

D…Double へのポインタ•

E…Float へのポインタ•

L…Long へのポインタ•

A…Null で終了する文字列へのポインタ•

0（ゼロ）…Void（戻り値でのみ使用可）•

I…HBITMAP として渡されたイメージ•

M…オプションのパラメータを省略する場合•

O…オブジェクト参照（objectLoad 関数により戻されるオブジェクト参照、または呼び出されたメソッドに対するプロパティやパラメータとして戻されるオブ
ジェクト参照を含む Long）•

o…オブジェクト参照へのポインタ（Long へのポインタ）

OLE オートメーション関数
objectLoad752

OLE オブジェクトへの参照を確立します。（シングルスレッド用）
構文：

次の式を使用する［コールユーザ PRC］処理コマンド「@mg_ocx.objectLoad」

パラメータ：

次のパラメータを順に定義します。
リファレンス
Magic eDeveloper V9 Plus

Magic と OLE オートメーション
1. 引数型文字列…「AAL4」
2. コントロール名…Magic アプリケーションで定義されている
OLE コントロール名です。OLE コントロールを使用していな
いときは、空白の文字列を指定します。
3. クラス名…OLE コントロールを使用していない場合、新規
OLE オブジェクトのクラス名を指定することで OLE オブジェ
クトをロードします。たとえば、Microsoft Excel 2000 の新規オ
ブジェクトをロードするには、クラス名を「Excel.Sheet.9」と定義します。OLE コントロールを使用しているときは、空白の文字列を指定します。
4. オブジェクトインスタンス…オブジェクトインスタンス番号が格納される 10 桁の数値型データ項目。
5. 戻り値…関数の戻り値が渡される数値型データ項目。詳細については、後述する「［戻り値］パラメータの値」を参照してく
ださい。

objectLoadMT

objectRelease

戻り値：［オブジェクトインスタンス］パラメータに格納される OLE オブ
ジェクトへの参照、および関数の戻り値

注意：

マルチスレッドの場合は、objectLoadMT を使用してください。

OLE オブジェクトへの参照を確立します。（マルチスレッド用）
構文：

次の式を使用する［コールユーザ PRC］処理コマンド「@mg_ocx.objectLoadMT」

パラメータ：（objectLoad を参照してください。）

戻り値：（objectLoad を参照してください。）

注意：シングルスレッドの場合は、objectLoad を使用してください。

参照している OLE オブジェクトを解放します。
構文：

次の式を使用する［コールユーザ PRC］処理コマンド「@mg_ocx.objectRelease」

パラメータ：

次のパラメータを順に定義します。
1. 引数型文字列…「L4」2. オブジェクトインスタンス…オブジェクトインスタンス番号（数値型のデータ項目または式）。
3. 戻り値…関数の戻り値が渡される数値型データ項目。詳細については、後述する「［戻り値］パラメータの値」を参照してく
ださい。

戻り値：

関数の戻り値注意：

OLE オブジェクトが解放されると、［オブジェクトインスタンス］パラメータが「0」に設定されます。

リファレンス
Magic eDeveloper V9 Plus753

第 18 章 - 外部アプリケーションへの接続
PropGetOLE オブジェクト内のプロパティの値を取得します。この値は、指定した Magic
データ項目に配置することができます。
構文：

次の式を使用する［コールユーザ PRC］処理コマンド「@mg_ocx.PropGet」

パラメータ：

次のパラメータを順に定義します。
1. 引数型文字列…「4AA［type］...［type］4」（［type］には［プロパティのパラメータ］パラメータのタイプを表すタイプ文字を、［プロパティのパラメータ］パラメータの個数分記述します。）
2. オブジェクトインスタンス…オブジェクトインスタンス番号（数値型のデータ項目または式）。
3. プロパティ名…プロパティ名（文字型のデータ項目または式）。
4. パラメータ型文字列…プロパティとの受け渡しが行われる各パ
ラメータ用のタイプ文字です。文字列長は［プロパティのパラ
メータ］パラメータの個数分となります。値を受け渡す必要がないオプションパラメータを表すには「M」を使用します。
5. プロパティのパラメータ…プロパティとの受け渡しが行われる
パラメータ。
6. 戻り値…関数の戻り値が渡される数値型データ項目。詳細については、後述する「［戻り値］パラメータの値」を参照してく
ださい。

戻り値：

関数の戻り値

例 1：

Excel のオブジェクトからアクティブなワークシートのインスタンスを受け取るには、次の手順に従います。
1. objectLoad 関数の説明に従い、OLE オブジェクトをロードしてそのインスタンスを受け取ります。
2. PropGet をコールする［コールユーザ PRC］処理コマンドを定義します。
3.［パラメータ］一覧にズームして、次のパラメータを定義します。
• 引数型文字列…「4AAL4」• OLE のインスタンス…これまでに受け取った値を使用 （4）• プロパティ名…「ActiveSheet」（A）• パラメータ型文字列…「o」（この場合、「o」はワークシー
トへのオブジェクト参照を表す）（A）• プロパティのパラメータ…ワークシートのインスタンスが渡されるデータ項目（L）• 戻り値…戻り値データ項目 （4）4. 以上の操作の結果、Excel アプリケーションのアクティブなワークシートのインスタンスが生成されます。このインスタン
スはそのデータを参照するために使用されます。

例 2：

Excel ワークシートでセルまたはセル範囲のインスタンスを受け取るには、次の手順に従います。
1. objectLoad 関数の説明に従い、OLE オブジェクトをロードしてそのインスタンスを受け取ります。
2. 例 1 で説明されているように、OLE インスタンスでアクティ
ブなシートのインスタンスを取得します。
3. PropGet をコールする［コールユーザ PRC］処理コマンドを定義します。
4.［パラメータ］一覧にズームして、次のパラメータを定義します。

754

リファレンス
Magic eDeveloper V9 Plus

Magic と OLE オートメーション• 引数型文字列…「4AALA4」• ワークシートのインスタンス…これまでに受け取った値を使用 （4）• プロパティ名…「Range」（A）• パラメータ型文字列…「oA」（この場合、「o」はセル範囲へのオブジェクト参照を表す。「A」はセルの範囲を指定する
文字列を表す）（A）• プロパティのパラメータ 1…セル範囲のインスタンスが渡されるデータ項目（L）• プロパティのパラメータ 2…「A1:A5」のようにセルの範囲を示すデータ項目または式（A）• 戻り値…戻り値データ項目。（4）5. 以上の操作の結果、セル範囲のインスタンスが生成されます。
このインスタンスはそのプロパティおよびメソッドを参照する
ために使用されます。
注意事項 :

PropSetワークシートやセルなどの子オブジェクトのインスタンスを取得した後、objectRelease 関数を使用して解放します。

PropSet 関数は、指定された OLE オブジェクトの既知のプロパティの値を設定します。
構文：

次の式を使用する［コールユーザ PRC］処理コマンド「@mg_ocx.PropSet」

パラメータ：

次のパラメータを順に定義します。
1. 引数型文字列…「4AA［type］...［type］4 」（［type］には［プロパティのパラメータ］パラメータのタイプを表すタイプ文字を、［プロパティのパラメータ］パラメータの個数分記述します。）
2. オブジェクトインスタンス…オブジェクトインスタンス番号（数値型のデータ項目または式）。
3. プロパティ名…プロパティ名（文字型のデータ項目または式）。
4. パラメータ型文字列…プロパティとの受け渡しが行われる各パ
ラメータ用のタイプ文字です。文字列長は［プロパティのパラ
メータ］パラメータの個数分となります。値を受け渡す必要がないオプションパラメータを表すには「M」を使用します。
5. プロパティのパラメータ…プロパティに設定されるパラメー
タ。
6. 戻り値…関数の戻り値が渡される数値型データ項目。詳細については、後述する「［戻り値］パラメータの値」を参照してく
ださい。

戻り値：

関数の戻り値例：

Excel ワークシートでセルまたはセル範囲の値を設定するには、次の手順に従います。
1. objectLoad 関数の説明に従い、OLE オブジェクトをロードしてそのインスタンスを受け取ります。
2. PropGet 関数の例 1 で説明されているように、OLE インスタン
スでアクティブなシートのインスタンスを取得します。
3. PropGet 関数の例 2 で説明されているように、ワークシートでセル範囲のインスタンスを取得します。
4. PropSet をコールする［コールユーザ PRC］処理コマンドを定義します。
5.［パラメータ］一覧にズームして、次のパラメータを定義しま

リファレンス
Magic eDeveloper V9 Plus755

第 18 章 - 外部アプリケーションへの接続す。
• 引数型文字列…「4AA44」• 範囲のインスタンス…これまでに受け取った値を使用• プロパティ名…「Value」• パラメータ型文字列…所定の値に「4」を設定• プロパティのパラメータ…設定対象の値• 戻り値…戻り値データ項目
MethodCall

OLE オブジェクトのメソッドを呼び出します。
［メソッドのパラメータ］パラメータの１個目は、メソッドの戻り値を「void」またはポインタのいずれかとして受け取るデータ項目です。
戻り値が「void」である場合は、［メソッドのパラメータ］パラメータにデータ項目を指定する必要はありません。パラメータ型文字列には「M」を指定します。
構文：

次の式を使用する［コールユーザ PRC］処理コマンド「@mg_ocx.MethodCall」

パラメータ：

次のパラメータを順に定義します。
1. 引数型文字列…「4A［type］...［type］4 」（［type］には［メソッドのパラメータ］パラメータのタイプを表すタイプ文字を、［メソッドのパラメータ］パラメータの個数分記述します。）
2. オブジェクトインスタンス…オブジェクトインスタンス番号（数値型のデータ項目または式）。
3. メソッド名…メソッド名（文字型のデータ項目または式）。
4. パラメータ型文字列…メソッドとの受け渡しが行われる各パラメータ用のタイプ文字です。文字列長は［メソッドのパラメー
タ］パラメータの個数分となります。値を受け渡す必要がない
オプションパラメータを表すには「M」を使用します。
5. メソッドのパラメータ…メソッドに受け渡しするパラメータ。
6. 戻り値…関数の戻り値が渡される数値型データ項目。詳細については、後述する「［戻り値］パラメータの値」を参照してく
ださい。

戻り値：

関数の戻り値例：

ワークシートの任意のページを印刷するには、次の手順に従います。
1. objectLoad 関数の説明に従い、OLE オブジェクトをロードしてそのインスタンスを受け取ります。
2. PropGet 関数の例 1 で説明されているように、OLE インスタン
スでアクティブなシートのインスタンスを取得します。
3. MethodCall 関数をコールする［コールユーザ PRC］処理コマ
ンドを定義します。
4.［パラメータ］一覧にズームして、次のパラメータを定義します。
• 引数型文字列…「4AA2224」• ワークシートのインスタンス…これまでに受け取った値を使用• メソッド名…「PrintOut」• パラメータ型文字列…「0222MMMM」
各文字の意味は、次の通りです。
「0」…関数からの戻り値でない場合には無効、「222」…渡される 3 つの数値（開始ページ、終了ページ、印
刷部数）

756

リファレンス
Magic eDeveloper V9 Plus

Call 関数
「MMMM」…次の 4 つのオプションパラメータがないことを表します。
• メソッドのパラメータ 1… 開始ページの番号（数値型のデー
タ項目または式）• メソッドのパラメータ 2…最終ページの番号（数値型のデー
タ項目または式）• メソッドのパラメータ 3…印刷部数（数値型のデータ項目または式）• 戻り値…戻り値データ項目［戻り値］パラメータの値
OLE オートメーション関数に渡す［戻り値］パラメータに格納されるコードは次の通り
です。
コード

シンボル

説明

0

OK

正常終了

1

E_BADPARAMCOUNT

パラメータ数が誤っている。

3

E_EXCEPTION

例外が発生した。

4

E_MEMBERNOTFOUND

指定したオブジェクトのプロパティまたはメソッドが存在しない。

5

E_OVERFLOW

オーバーフローが発生した。

6

E_TYPEMISMATCH

不適切なタイプのデータが渡された。

8

E_PARAMNOTOPTIONAL

必要なパラメータが不足している。

9

E_INTERNAL_ERROR

内部エラーが発生した。

10

E_NOOBJECT取得されたオブジェクトのインスタンスが指定されていない。

11

E_CTRLNOTFOUND

objectLoad 関数で設定されたコントロール名が見つからない。

12

E_BADPARAM

objectLoad 関数でコントロール名またはクラス名のどちらかが設定されていない。

OLE オートメーション関数を使用して OCX コンポーネントから Variant 型データを受け取り、Magic の文字型項目に格納する場合は、あらかじめ書式の長さ分のダミー
文字列を代入しておく必要があります。

Call 関数
Call 関数を利用して、Magic のアプリケーションから外部のプログラムを呼び出すことができます。
• CallDLL……CDECL 呼び出し規約の DLL を呼び出します。
• CallDLLF……FASTCALL 呼び出し規約の DLL を呼び出します。
• CallDLLS……STDCALL 呼び出し規約の DLL を呼び出します。
• CallJS……ブラウザタスクで、HTML テンプレートファイルに埋め込まれた JavaScriptの関数を呼び出します。
• CallOBJ……ブラウザタスクで、HTML テンプレートファイルに埋め込まれたオブジェ
クト (ActiveX) を呼び出します。

リファレンス
Magic eDeveloper V9 Plus757

第 18 章 - 外部アプリケーションへの接続

各関数の詳細については、第 8 章「関数」を参照してください。

第 3 世代言語のコール
コールユーザ PRC［コールユーザ PRC］処理コマンドを使用することにより、第 3 世代言語（C など）によるプログラムを実行することができます。必要であれば、パラメータを渡すこともできます。このコマンドでプログラムを呼び出す場合、C の呼び出し規則が使われます。また、呼び出しはメモリ上で実行され、したがって、ユーザプロシージャは Magic の内部
ルーチンとして扱われます。この場合の呼び出しには、マシンのコールまたはジャンプ
命令のうち一番簡単なものが使われます。
次のような用途で［コールユーザ PRC］処理コマンドを使用します。
• このコマンドを使用して、Magic の機能を拡張できます。たとえば、ユーザが作成したルーチンを呼び出して、Magic ではサポートされていないタスクや機能の実現が可能です。
• Magic 以外の環境で作成されたコードを Magic 上で利用できます。
• 外部プロシージャを使用して、特殊な計算を高速で処理できます。
［コールユーザ PRC］処理コマンドの詳細については、第 7 章「処理コマンド」を参照してください。

UDF 関数UDF 関数には以下の三種類があります。
• UDF……CDECL 呼び出し規約の関数用• UDFF……FASTCALL 呼び出し規約の関数用• UDFS……STDCALL 呼び出し規約の関数用UDF 関数については、第 8 章「関数」を参照してください。

UDF/UDP/CallDLL のマルチスレッド対応について
V9 アプリケーションサーバは、マルチスレッドエンジンになっており、マルチ スレッド
環境で、UDF/UDP/CallDLL を使用する場合は、UDF/UDP/DLL もマルチスレッド対応しておく必要があります。ここでは、UDF/UDP/DLL とマルチスレッドエンジンの組み合わせについて、留意点を説明します。

マルチスレッド非対応の UDF/UDP/DLL の問題点
マルチスレッド非対応の UDF/UDP/DLL を、アプリケーションサーバのマルチスレッド
エンジンで実行すると、データの破壊や最悪の場合にはアプリケーショ ンサーバの異常終了などの問題が発生する可能性があります。

758

リファレンス
Magic eDeveloper V9 Plus

第 3 世代言語のコール
これを例を使って説明します。以下の C 言語の関数は、マルチスレッド非対応の UDF の例です。
long *add_sub (char *op, long *num1, long *num2){
static long num3;
switch (*op){
case 'A':
num3 = *num1 + *num2;
break;
case 'S':
num3 = *num1 - *num2;
break;
default:
num3 = 0;
break;}
return (&num3);}
この関数をマルチスレッド環境で実行した場合に問題になるのは、赤色で示した static
long num3; の部分です。この変数は、static として定義されているので複数のスレッドで共有して参照される変数となります。このため、複数のスレッドが並行して この関数を実行した場合、タイミングが悪いと、他のスレッドが実行結果を上書きしてしまう可能性があります。動作不正は、タイミングによって発生したり発生しなかったりする上に、発生しても、同時並行実行していたスレッドによって結果が異なってくるので、再現性が低く、デバッグが困難な不具合になります。
上記の UDF の場合には、戻り値が long 型の整数値であるので、結果として返ってくる値が異なるという現象として現れますが、戻り値が文字型の場合には、あるスレッドが文字列の終端 NULL 文字をまだ正しく設定していない状態で、別スレッドが読み込んでしまう可能性もあり、最悪の場合には Magic アプリケー ションエンジンが異常終了します。

マルチスレッド非対応 UDF/UDP/DLL の条件
次の条件をすべて満たす変数があった場合には、マルチスレッド非対応 UDF/UDP/DLLとなります。
• ある変数が、複数のスレッドから共有される可能性がある。static 変数やグローバル変数がこれにあたります。
• その変数が、実行中に変更されます。変更されることのない定数の場合には共有されていても該当しません。
• その変数が、何らかの同期メカニズム（クリティカルセクションなど）を使 って同期制御されていない。
ただし、上の例の num3 変数のように、UDF の戻り値として使われている場合には、Magicの UDF の実行メカニズムの特性により、たとえ UDF 内で正しく同期制御がされていても、データ破壊が起こる可能性があります。
また、UDF/UDP/DLL 自体が大丈夫でも、UDF/UDP/DLL が別の DLL やライブラリなどの外部モジュールを呼び出している場合、その DLL やライブラリがマルチスレッ ド非対
応であれば、UDF/UDP/DLL も非対応になります。

対応方法
Mgaic V9 マルチスレッドエンジンで UDF/UDP を使う場合、データ破壊や異常終了などを起こさないようにするには、以下のような対応方法が考えられます。

リファレンス
Magic eDeveloper V9 Plus759

第 18 章 - 外部アプリケーションへの接続

シングルスレッドでエンジンを動作させる
一番簡単な対応方法で、Magic エンジンをシングルスレッドで動作させるように設定することにより対応します。Magic エンジンがシングルスレッドで動 作すれば、UDF/UDP/DLL がマルチスレッド非対応のままであっても、マルチスレッド環境における問題は発生しなくなります。Magic エンジンをシングルスレッドで動作させるには、MAGIC.INI
ファイル中に以下の設定を行います。
[MAGIC_ENV]MaxConcurrentRequests = 1
ひとつの Magic アプリケーションサーバのインスタンス（プロセス）につき、ひとつの実行スレッドしか実行されないので、運用時には必要に応じて、複数 のインスタンスを起動するようにしてください。
• 利点……UDF/UDP/DLL に一切手を加えることなく使用できます。また、UDF/UDP/DLL が別のマルチスレッド非対応 DLL などを呼び出している場合は、唯一の対応方
法となります。
• 欠点……Magic の 1 インスタンスが 1 スレッドしか実行しないので、マルチス レッド
エンジンの利点（オーバヘッドの少なさ）が犠牲にされます。

UDF を使わず、UDP で引数のみを使用するようにする
UDF/UDP をマルチスレッド対応させるために UDF を使わず UDP で行う方法で、以下の要領で変更を行います。
1. UDF はすべて UDP に変更し、戻り値が必要な場合には、引数をひとつ追加して 戻り値をそこへ格納するようにします。
2. 変更される可能性のある共有変数（static 変数、グローバル変数）には、すべてクリティカルセクションなどで同期制御を行うようにします。
3. Magic プログラムで、UDF(…) を使っていたところは、すべて「コール ユーザ PRC」
コマンドに変更します。
•

利点……後述の TLS を使った本格的なマルチスレッド対応に比べ、UDF/UDP の変更 が単純であり、また変更箇所も少なくなります。

•

欠点……この方法では、UDF を UDP に変更し、Magic プログラムも変更する作業が 必要になります。

TLS により本格的にマルチスレッド対応とする
マルチスレッド対応方法の中でもっとも本格的なもので自由度も一番高いものですが、修正も複雑になります。この方法は、戻り値だけでなく、処理の途中で必要となる一時
データ領域やさまざまな情報を保存する領域がスレッドごとに必要となるような場合に必要となります。TLS (Thread Local Storage) というのは、スレッドごとにシステムが自動的に割り当てる配列で、スレッドが終了するときにはシステムが自動的に領域を解放します。この配列の各要素は LPVOID 型で、配列要素数はシステムによりあらかじめ決められています。TLS の詳細については、Win32 の書籍などを参照してください。

760

リファレンス
Magic eDeveloper V9 Plus

ユーティリティ

19

Magic には多数のユーティリティが用意されています。こういったユーティリティを利用して、Magic アプリケーションの開発や修正、保守や移植などを容易に行うことができます。
本章では、次の内容について説明します。
• アプリケーションウィザード• APG（自動プログラムジェネレータ）• プログラムチェックユーティリティ• 定義取得ユーティリティ• クロスリファレンスユーティリティ• 検索と置換• テキストの検索と置換• リポジトリ入出力ユーティリティ• フローモニタ／デバッガ• リモートフローモニタ• Magic プロファイラ• ODBC チェックドライバ ユーティリティ• テーブル変換ユーティリティ• Magic フラットファイル• データ出力ウィザード• ユーザ定義開発メニュー• モニタユーティリティ• ドキュメントテンプレート機能

リファレンス
Magic eDeveloper V9 Plus761

第 19 章 - ユーティリティ

アプリケーションウィザード
アプリケーションウイザードは、アプリケーションを簡単に作成する機能です。
このウイザードによって、データオブジェクトやオンラインプログラム、印刷やバッチ
プログラムを作成することができます。
［ツール］メニューの［アプリケーションウィザード］をクリックするとウイザードが起動されます。
• アプリケーションウィザードを実行する場合は、［設定／プリンタ］の［プリンタ］テーブルの１行目の［行］の値を大きくしてください。特に実行するアプリ
ケーションのテーブルのカラム数やインデックス数、インデックスセグメントの数が多い場合は、200 行以上の値に指定することをお勧めします。
• テーブルを作成した場合、DBMS に依存するカラム特性の［格納形式］の値は設定されません。テーブルの［データベース］の指定を他のデータベース（例えば、「DefaultDatabase」→「Memory」）に変更してまた元に戻すことで設定されます。
• １対 N の関係を持つプログラムを作成した場合、子タスクの初期モードは、「P=親と同じ」になります。必要に応じて変更して下さい。
• データテーブルの作成の場合、カラムにはメモ型、BLOB 型、OLE 型、ActiveX
型は指定できません。また、書式には、数値のみ指定できます。
• テーブルの定義取得を行った場合、作成されたテーブルの［テーブル特性／位置］が設定されません。

APG（自動プログラムジェネレータ）
APG（Auto Program Generator）は、１つのデータテーブルをもとにして、自動的にプログラムを作成するユーティリティです。APG で作成できるプログラムは、主に以下のとおりです。
• オンラインによるデータの入力と保守を行うためのプログラム• データベーステーブルのデータをテキストファイルとして出力するためのプログラム• テキストファイルのデータをデータベーステーブルに入力するためのプログラム• 帳票の印刷用プログラム• インターネット用プログラムの作成• ブラウザクライアント用プログラムの作成

テーブルリポジトリからの［APG］ダイアログ［APG］ダイアログには、次のようなタブがあります。
• ［APG］タブ• ［スタイル］タブ• ［インターネット］タブ

762

リファレンス
Magic eDeveloper V9 PlusAPG（自動プログラムジェネレータ）

図 19-1［APG］ダイアログ［APG］タブ
処理モード
APG の処理モードは、実行モード（E ＝実行）と作成モード（G ＝作成）の 2 つがあります。実行モードは、暫定プログラムの作成と実行を行いたいときに使います。実行モードで作成したプログラムは一時的なもので、実行後は消去されます。
一方、作成モードで作成したプログラムは保存され、［プログラム］リポジトリに追加されます。作成モードでは、作成されたプログラムは自動的に実行されません。デフォル
トは、実行モードです。
この［処理モード］欄は、［テーブル］リポジトリで行を選択しているときに有効に
なります。

オプション
［オプション］欄では、プログラムの機能を指定します。指定できる機能は、「B ＝照会」、「E ＝出力」、「I ＝入力」、「P ＝印刷」、「N ＝ Inet」「R= ブラウザ」の６種類のいずれかです。
「N ＝ Inet」と「R= ブラウザ」を指定する場合は、［プログラム］リポジトリで APGを実行するか、［処理モード］で［G= 作成］を指定しなければなりません。
• B ＝照会……オンラインでのデータ入力／保守用のプログラムを作成、実行します。
• E ＝出力……現在、選択しているデータテーブルのデータを出力するプログラムを作成、実行します。
• I ＝入力……テキストファイルからデータを取り込むためのプログラムを作成、実行します。読み込むファイル構造は、「E= 出力」で出力したファイル構造と同じにしなければなりません。
• P ＝印刷……データテーブルの内容を印刷するプログラムを作成、実行します。
• N ＝ Inet……インターネット環境でのデータの入力または保守を行うプログラムを作成します。なお、作成したプログラムは、Magic のプログラムに対してのみ有効です。
• R ＝ブラウザ……ブラウザベースでのプログラムを作成します。作成されたプログラ
ムとは別にテンプレートファイルが作成されます。
バッチタスクの「メニュー使用」／「ウインドウ表示」オプションのデフォルトは「No」です。このため、「E= 出力」／「I= 入力」／「P= 印刷」を実行した場合、実行確認ウィンドウや実行中のウィンドウは表示されません。
リファレンス
Magic eDeveloper V9 Plus763

第 19 章 - ユーティリティ

選択カラム数
この欄には、現在選択しているテーブルのカラム数が表示されます。カラム選択テーブ
ルの３番目のカラムである［カラム］欄の順番を変更することができます。0 を入力することで表示させないようにできます。（外部キーによる）リンクテーブルの順番は変更
できません。

作成フォーム［オプション］が「N=Inet」のときのみ選択でき、どのようなプログラムを作成するかを指定できます。「Q ＝照会」、「O ＝出力」、「B ＝照会と出力」のいずれかを指定できます。
• Q ＝照会……HTML フォームが定義されたスケルトンプログラムが作成されます。このプログラムを使用して、HTML フォームエディタで照会フォームを編集したり、フォームを HTML フォーム形式で保存したりできます。
照会用のプログラムを作成する場合、フォームと HTML ファイルとして自動的に保存するかどうかも指定できます。
• O ＝出力……インターネットリクエスタに対して HTML レポートを送出するようなプ
ログラムを作成したい場合、この設定にします。作成されたプログラムは、インター
ネットリクエスタを介して HTML フォームから呼び出すことができます。この HTML
レポートには、HTML フォームのレコードがすべて含まれています。
• B ＝照会と出力……照会フォームと HTML レポートフォームの両方の機能を持ったプ
ログラムを作成したい場合、この設定にします。このプログラムの場合、照会フォー
ムから呼び出されると、HTML レポートがリクエスタに対して送出するという機能を果たします。レポートには、呼び出し元のフォームに定義されている範囲に該当するレコードが含まれます。

プログラム名プログラムリポジトリに定義されるプログラムの名前です。

照会カラム
この欄には、テーブルのかラムを指定します。ここで指定したカラムが、作成された照会用プログラム（「Q ＝照会」または「B ＝照会と出力」を指定した場合）で使われます。

出力カラム
この欄には、テーブルのかラムを指定します。ここで指定したカラムが、作成された出力用プログラム（「O ＝出力」または「B ＝照会と出力」を指定した場合）で使われます。
また、指定した項目は、プログラムにより作成された HTML レポートに出力されます。

HTML ファイル名
ブラウザクライアント用の HTML ファイルの名前です。

HTML テンプレートファイル名
ブラウザクライアント用の HTML ファイルの基になるテンプレートファイルの名前です。

テキストファイル名
ここには、入力または出力対象のテキストファイルの名前が表示されます。

リンク

764

リファレンス
Magic eDeveloper V9 PlusAPG（自動プログラムジェネレータ）［リンク］欄でズームすると、外部キーの選択ダイアログが表示されます。このダイアロ
グより、外部キーとリンクされたテーブルが作成されるプログラムに定義されます。外部キーを選択するごとに、プログラムにはリンクコマンドが追加されます。メインテー
ブルかリンクテーブルのどちらかが ISAM データベースの場合、照会リンクが作成されます。メインテーブルとリンクテーブルの両方が RDBMS のデータベースで、さらに「DBに作成」フラグがチェックされている場合は、結合リンクが作成されます。
［リンク］欄は、外部キーを含んだテーブルを使用してプログラムを作成する場合のみ表示されます。

［スタイル］タブ
表示モード
この欄には、画面上に表示されるレコードの形式を指定します。指定できる形式は、「L＝ライン」または「S ＝スクリーン」のいずれかです。
• L ＝ライン……レコードは横に一列に表示されます。画面には、入るだけのレコードが各行に表示されます。
• S ＝スクリーン……レコードは 1 画面に 1 つずつ表示されます。

スタイル
この欄では、画面を 2 次元または 3 次元のどちらの形式で表示するかを指定します。
［スクリーン］モードの場合、次のオプションを選択することができます。
• 3= 平面• 2= 平面• O= オリジナル

タイトルバー
この欄では、タイトルバー（キャプション）を表示するかどうかを指定します。

モデルを使用作成するプログラムのフォームに対して使用するフォームモデル定義できます。

フォームサイズ
実行モードで 照会オプションを指定した場合に下のオプションがあります。

GUI フォームの表示を定義します。以• M ＝モデルに依存……フォームの幅と高さは指定したモデルによって定義されます。
• C ＝表示内容に依存……フォームの幅と高さは画面に表示される内容に依存します。
ラインモードの場合は、フォームの高さは、「M ＝モデルに依存」のときと同じになります。
• D ＝ MDI 内に納める……フォームの幅と高さは画面に表示される内容に依存します。
しかし、各寸法は、MDI よりは大きくなりません。
表示内容の幅が、MDI より大きい場合は、MDI と同じになります。MDI より小さい
場合は、表示内容に依存した幅になります。

［インターネット］タブ
照会ウィンドウタイトル

リファレンス
Magic eDeveloper V9 Plus765

第 19 章 - ユーティリティ
この欄には、HTML 照会フォームのウィンドウタイトルとテーブルタイトルを指定します。

照会ウィンドウ背景
この欄には、イメージファイル名を指定します。指定したイメージファイルは、HTML 照
会フォームの背景イメージとして使われます。イメージは、インターネットアプリケーショ
ンのイメージ位置定義にしたがって配置されます。

出力ウィンドウタイトル
この欄には、HTML 出力フォームのウィンドウタイトルとテーブルタイトルを指定します。

出力ウィンドウ背景
この欄には、イメージファイル名を指定します。指定したイメージファイルは、HTML 出
力フォームの背景イメージとして使われます。イメージは、インターネットアプリケーショ
ンのイメージ位置定義にしたがって配置されます。

照会フォームの保存ファイル名
この欄には、照会フォームのファイル名を指定します。作成される照会フォームのファ
イルには、この名前が付けられます。この名前は、「Q ＝照会」または「B ＝照会と出力」を指定したときに作成されるプログラムで使われます。

［プログラム］リポジトリまたはタスクツリーでの APG の実行［APG］タブオプション［オプション］欄では、プログラムの機能を指定します。指定できる機能は、「B ＝照会」、「E ＝出力」、「I ＝入力」、「P ＝印刷」、「N ＝ Inet」「R= ブラウザ」の６種類のいずれかです。
• B ＝照会……オンラインでのデータ入力／保守用のプログラムを作成します。
• E ＝出力……現在、選択しているデータベーステーブルのデータを出力するプログラ
ムを作成します。データは、OS に対応したテキストファイルとして出力されます。
• I＝入力……テキストファイルからデータを取り込むためのプログラムを作成します。
• P ＝印刷……データテーブルの内容を印刷するプログラムを作成します。
• N ＝ Inet……インターネット環境でのデータの入力または保守を行うプログラムを作成します。なお、作成したプログラムは、Magic のプログラムに対してのみ有効です。
• R= ブラウザ……ブラウザベースでのプログラムを作成します。 作成されたプログラムとは別のテンプレートファイルが作成されます。

メインテーブル
この欄には、テーブルリポジトリのテーブルを指定します。APG で作成されたプログラ
ムは、このテーブルに対して有効になります。
プログラムリポジトリから APG を実行する場合は、このパラメータを必ず指定しなけらばなりません。

作成フォーム766

リファレンス
Magic eDeveloper V9 PlusAPG（自動プログラムジェネレータ）
オプションが「N=Inet」のときのみ選択できます。どのようなプログラムを作成するかを指定できます。「Q ＝照会」、「O ＝出力」、「B ＝照会と出力」のいずれかを指定できます。

照会カラム
この欄には、テーブルのかラムを指定します。ここで指定したカラムが、作成された照会用プログラム（「Q ＝照会」または「B ＝照会と出力」を指定した場合）で使われます。

出力カラム
この欄には、テーブルのかラムを指定します。ここで指定したカラムが、作成された出力用プログラム（「O ＝出力」または「B ＝照会と出力」を指定した場合）で使われます。
また、指定した項目は、プログラムにより作成された HTML レポートに出力されます。

HTML ファイル名
ブラウザクライアント用の HTML ファイルの名前です。

HTML テンプレートファイル名
ブラウザクライアント用の HTML ファイルの基になるテンプレートファイルの名前です。

テキストファイル名
ここには、入力または出力対象のテキストファイルの名前が表示されます。

［スタイル］タブ
表示モード
この欄には、画面上に表示されるレコードの形式を指定します。指定できる形式は、「L＝ライン」または「S ＝スクリーン」のいずれかです。
• L ＝ライン……レコードは横に一列に表示されます。画面には、入るだけのレコードが各行に表示されます。
• S ＝スクリーン……レコードは 1 画面に 1 つずつ表示されます。

スタイル
この欄では、画面を 2 次元または 3 次元のどちらの形式で表示するかを指定します。
［スクリーン］モードの場合、次のオプションを選択することができます。
• 3= 平面• 2= 平面• O= オリジナル

タイトルバー
この欄では、タイトルバー（キャプション）を表示するかどうかを指定します。

モデルを使用作成するプログラムのフォームに対して使用するフォームモデル定義できます。

フォームサイズリファレンス
Magic eDeveloper V9 Plus767

第 19 章 - ユーティリティ
実行モードで 照会オプションを指定した場合に GUI フォームの表示を定義します。以下のオプションがあります。
• M ＝モデルに依存……フォームの幅と高さは指定したモデルによって定義されます。
• C ＝表示内容に依存……フォームの幅と高さは画面に表示される内容に依存します。
ラインモードの場合は、フォームの高さは、「M ＝モデルに依存」のときと同じになります。
• D ＝ MDI 内に納める……フォームの幅と高さは画面に表示される内容に依存します。
しかし、各寸法は、MDI よりは大きくなりません。
表示内容の幅が、MDI より大きい場合は、MDI と同じになります。MDI より小さい
場合は、表示内容に依存した幅になります。

［インターネット］タブ
照会ウィンドウタイトル
この欄には、HTML 照会フォームのウィンドウタイトルとテーブルタイトルを指定します。

照会ウィンドウ背景
この欄には、イメージファイル名を指定します。指定したイメージファイルは、HTML 照
会フォームの背景イメージとして使われます。イメージは、インターネットアプリケーショ
ンのイメージ位置定義にしたがって配置されます。

出力ウィンドウタイトル
この欄には、HTML 出力フォームのウィンドウタイトルとテーブルタイトルを指定します。

出力ウィンドウ背景
この欄には、イメージファイル名を指定します。指定したイメージファイルは、HTML 出
力フォームの背景イメージとして使われます。イメージは、インターネットアプリケーショ
ンのイメージ位置定義にしたがって配置されます。

照会フォームの保存ファイル名
この欄には、照会フォームのファイル名を指定します。作成される照会フォームのファ
イルには、この名前が付けられます。この名前は、「Q ＝照会」または「B ＝照会と出力」を指定したときに作成されるプログラムで使われます。

プログラムチェックユーティリティ
プログラムチェックユーティリティは、モデル、テーブル、プログラムおよび個々のタ
スクについての文法についてのエラーをチェックします。
開発者が迅速に開発を進めるために、Magic はプログラムが完成するまで、構文エラー
やロジックのチェックによって、作業を妨げることはありません。作成したプログラムのチェックを行うのは、開発者の判断に任せられています。
もし、エラーが内在したプログラムを実行すると、予期できない動作を引き起こし、場合によってはデータを失うことがありますので、作成後には、常にプログラムチェックを行うようにして下さい。

768

リファレンス
Magic eDeveloper V9 Plus

プログラムチェックユーティリティ

チェックメッセージの区分
チェック結果は、以下の３つに分類されます。
• E= エラー……予期しない動作を起こしかねない記述を示します。
• W= 警告……必要ではないが、場合によっては予期しない動作を起こしかねない記述を示します。
• R= 推奨……よりよい設定内容に関する情報を提供します。
チェックレベルについての詳細は、第 2 章「設定」の「最小チェックレベル」の説明を参照してください。

チェック結果表示
構文チェックの結果は、［チェック結果］ウィンドウに表示されます。

図 19-2［チェック結果］ウィンドウ［チェック結果］ウィンドウは、Magic の MDI スクリーンとドッキングさせたり、フローティングウィンドウとして表示させることができます。特性シートや、ナビゲーターにも結合できます。
チェック結果はツリー表示され、結果表示グループを選択すると、最初のレベルのツリーが表示されます。構文チェックの結果は、以下のように表示されます。
• タイプ ……メッセージタイプ（エラー、警告、推奨）によって区分けされます。メッ
セージは、発見された順に表示されます。
• オブジェクト……Magic のオブジェクト（モデル、テーブル、プログラム、サブタス
ク、ヘルプ、メニュー）によって区分けされます。メッセージは、発見された順に表示されます。
• オブジェクトとタイプ……Magic のオブジェクトと、メッセージタイプの両方によって区分けされます。
チェック結果の表示については、第 2 章「設定」の「メッセージのグループ化」を参照してください。

リファレンス
Magic eDeveloper V9 Plus769

第 19 章 - ユーティリティ

構文チェック処理
構文チェックユーティリティを実行すると、メッセージボックスが表示されます。

図 19-3 構文チェック処理

チェック処理の終了前にキャンセルされた場合、チェック結果 ウィンドウは、チェックユーティリティが中止された時点でのチェック内容を表示します。
構文チェック処理が終了すると、以下のようなメッセージのうちの 1 つが表示されます。
• エラーまたは警告 レベル
構文チェックが終了しました - チェック結果ペインを確認して下さい .
• 推奨または 未使用オブジェクト レベル
プログラムは正常です .：チェック結果ペインを参照して下さい .
• 不正な構文が見つからなかったプログラムは正常です .
［動作環境］の［チェック項目の自動位置付］の指定が「No」の場合、最初のチェッ
ク項目をハイライト表示せず位置付けも行いません。

未使用オブジェクト
構文チェッカーが、使用していないオブジェクトを見つけた場合、次のコマンドのうちの 1 つを選択するよう要求を出します。
• 削除 …… 現在のオブジェクトを削除します。
• 全て削除 …… 現在のオブジェクトと、同一オブジェクト内の全ての未使用オブジェ
クトを削除します。
• スキップ …… 現在のオブジェクトを保持します。
• 全てスキップ …… 現在のオブジェクトと、全ての未使用オブジェクトをそのまま残します。
未使用オブジェクトに対するメッセージは、［チェック結果］ウィンドウに表示されます。

［チェックメッセージ］テーブル［チェックメッセージ］テーブルで、構文チェッカーの各メッセージのレベルを変更することができます。
各メッセージに対して、エラー、警告、推奨、または無視のレベル設定を行うことができます。全てのメッセージがテーブルに表示されます。

770

リファレンス
Magic eDeveloper V9 Plus

定義取得ユーティリティ［設定］メニューの「チェックメッセージ」をクリックすると、［チェックメッセージ］
テーブルが開きます。

図 19-4 ［チェックメッセージ］テーブル

ここでは、メッセージを追加したり、削除したり、メッセージ内容を変更したりすることはできません。
チェックメッセージテーブルにおいてユーザによって変更された区分情報は、外部のChk_std.dat ファイルに保持されます。
［動作環境］ダイアログの［外部参照ファイル］タブの「チェックメッセージテーブルファイル」でこのファイル名を指定できます。指定されない場合は、Magic のデフォルト設定が有効になります。

定義取得ユーティリティ
定義取得ユーティリティを使うことで、RDBMS のデータディクショナリから Magic のテーブルリポジトリにテーブル定義を直接読み込むことができます。1 つまたは複数のテーブル定義をデータベースから読み込むこともできます。ただし、このユーティリティ
では、Magic と RDBMS のデータディクショナリ間でテーブル定義のどちらか一方が変更されても、もう一方の定義が自動で変更されることはありません。このため、テーブ
ル定義の同期化は手動で処理を行わなければなりません。
この機能は、既存のシステムで使われているデータベースを Magic で利用する場合、そのテーブル定義を、手動でテーブルリポジトリに定義する手間を省きます。これにより、エラー発生の可能性も低くなるため、作業を迅速に進めることができます。
［定義取得］オプションは、SQL 系のゲートウェイでのみ機能します

テーブルをロードする
1 つのテーブル定義でも、複数のテーブルでもロードすることができます。SQL データ
ベースのうち１つでも指定されていれば、［定義取得］のメニューが有効になります。

１つのテーブルをロードするには：
1. テーブルリポジトリを開きます。
2. カーソルを新しい行に移動させます。
3. データベースを選択します。
4.［DB テーブル］カラムに、ロードするテーブルの名前を入力します。

リファレンス
Magic eDeveloper V9 Plus771

第 19 章 - ユーティリティ
5.［オプション］メニューをクリックします。［定義取得］のオプションが有効になっています。
6.［定義取得］オプションをクリックします。ロード中であることを示すウィンドウが表示されます。
7. ロード中であることを示すウィンドウは自動的に閉じます。テーブルには、定義取得されたカラムやインデックス、外部キーを持っています。

同時に複数のテーブルをロードするには：
1. カーソルをタイトル行に移動させ、［オプション］メニューから［定義取得］を選択します。
2.［定義取得］ウィンドウが表示されます。
3.［データベース］欄でズームします。
4. ロードしたいデータベースを選択します。
5.［タグテーブル］のコンボボックスに移動して、テーブルの選択方法を指定します。
6. データベースにアクセスできるすべてのテーブルを選択する場合は［A= 全部］、複数のテーブルをいくつか選ぶ場合は［S= 選択］ を指定します。データベースには、
ユーザ ID やパスワードがすでに定義されているものとします。
7.［テーブル選択］ウィンドウが表示されます。
8. 必要な項目をハイライト表示させます。
9. スペースキーを押します。［選択］欄にチェックマークが表示され、ロードの選択がされたことを示します。
10.ロードする各テーブルでスペースキーを押します。
11.［選択］ボタンを押してウィンドウを閉じます。
12.［OK］ボタンを押して処理を実行させます。
定義取得はデータ型によって以下のように動作します。
• Magic はデータベースの各カラムのデータ型はそれぞれ、最も近いデータ型を使用します。
• Magic は、データベース固有のデータ型に対しても、サポートされている限り対応します。

ビューの定義取得
SQL ではまた、テーブルの定義取得と同じ方法でビューの定義情報を取得できます。SQLのビューは、クエリによって定義される仮想テーブルです。SQL ビューはテーブルと同じようにアクセスできますが、格納されている行は物理行ではありません。SQL ビュー
へは照会モードでアクセスできます。また、RDBMS によっては、RDBMS のテーブルと同じように行の更新ができるものもあります。
ビューには、インデックスはありません。しかし、ビューを取得するときは仮想のユニー
クなインデックスが必要です。これは、Magic は処理を行う上でテーブルの位置情報が必要なためです。

772

リファレンス
Magic eDeveloper V9 Plusクロスリファレンスユーティリティ
ROWID を持つ Oracle では、ビューが 1 つのテーブルに基づいている場合、その ROWIDが取得され、この ROWID が位置情報になります。ROWID がない RDBMS の場合は、仮想ユニークインデックスを定義しなければなりません。

図 19-5 データベーステーブルの選択

クロスリファレンスユーティリティ
Magic のクロスリファレンスユーティリティを使って、モデル、カラム、プログラムな
どがどこで使用されているかという情報を取得できます。たとえば、特定のカラム、インデックス、またはテーブルを参照するプログラムの一覧を表示させることができます。
クロスリファレンスユーティリティでは、以下のオブジェクトについての情報を検索することができます。
• モデル• テーブル• インデックス• プログラム• ヘルプ画面• 権利• メニュー• モデル• イベント• コンポーネント• 定義式• フォーム• 入出力ファイル
クロスリファレンスの結果は、［ナビゲータ］ペインの［クロスリファレンス］タブに表示され、印刷することができます。また、削除することもできます。

リファレンス
Magic eDeveloper V9 Plus773

第 19 章 - ユーティリティ

オブジェクトの検索を実行する場所
次のテーブルはクロスリファレンスが起動する場所によってどのオブジェクトが検索対象になるかを示したものです。

774

検索対象となるオブジェクト

実行される場所

テーブル

プログラム
チョイスコントロール
チョイスコントロールモデル
外部キー

カラム

プログラム
インデックス
外部キー
チョイスコントロール
チョイスコントロールモデル

インデックスプログラム
チョイスコントロール
チョイスコントロールモデル

プログラム

プログラム
モデル / コントロールモデル
テーブル / カラム
メニュー
コールタスク / プログラムコマンド
変数項目
コントロール特性
サブフォーム

ヘルプ画面

テーブルカラムプログラム / 実、変数項目
フォーム特性コントロールメニュー
項目モデル
コントロールモデル
フォームモデル

自動ヘルプ

テーブルカラム
ウログラム / 実、変数項目
コントロールメニュー
項目モデル
コントロールモデル

ツールチップテーブルカラム
ウログラム / 実、変数項目
フォーム特性コントロール項目モデル
コントロールモデル

権利

モデル
テーブル
プログラム / タスクの権利リテラル
ヘルプ
メニュー
アプリケーションイベント
コンポーネント

メニュー

プログラム

リファレンス
Magic eDeveloper V9 Plusクロスリファレンスユーティリティ
検索対象となるオブジェクト

実行される場所

項目モデル

テーブル / カラム
プログラム / タスク（変数 , パラメータ）

コントロールモデル

テーブル / カラム
プログラム / タスク（変数 , パラメータ）
コントロール
項目モデル

タスクモデルプログラム

ヘルプモデル

ヘルプ

フォームモデルフォーム

コンポーネントコンポーネントは全体をオブジェクトとしたり、コンポーネントの単一のアイテムとしてリファレンス対象となります。

CTL 特性

権利リポジトリメインプログラムのイベント

プログラム［オプション］メニューから［クロスリファレンス］（Ctrl+X）を実行することで、Magicのリポジトリの選択したオブジェクトから実行することができます。以下のようなクロ
スリファレンスダイアログが表示されます。

図 19-6［クロスリファレンス］ダイアロイグ

リファレンス
Magic eDeveloper V9 Plus775

第 19 章 - ユーティリティ
クロスリファレンスの結果は、クロスリファレンスの［ナビゲータ］ペイン上にリポジ
トリ名で表示されます。クロスリファレンスの結果は、複数の結果が一緒に表示されます。

図 19-7 クロスリファレンスの結果

各オブジェクトは、以下の情報とともに表示されます。
• リポジトリ名• エントリ名• （エントリ番号）
末端のノード（その下に別のノードが表示されていないもの）をクリックするとワーク
スペースペインの関連するリポジトリが表示され、選択した内容にパークします。
クロスリファレンスには次のような特徴があります。
• クロスリファレンスの結果を削除できます。
• 検索結果を印刷したりテキストファイルに出力することができます。
• クロスリファレンス検索が完了すると、自動的に［ナビゲータ］ペインがクロスリ
ファレンス結果とともに開きます。結果はグレーで強調表示されます。
• アプリケーションが閉じると、クロスリファレンスの結果は、アプリケーションファ
イルの存在するパス名や CTL ファイル名、ファイル拡張子（.xrf）を基にファイル名が決定され、ユーザのパーソナルディレクトリ（「マイドキュメント」）にバイナリ形
式で保存されます。

クロスリファレンス結果の削除
クロスリファレンスの結果を削除するには以下のようにします。
1. ［ナビゲータ］ペインで「クロスリファレンス」をクリックし、クロスリファレンス
結果を選択します。
2. F3 キーを押して削除します。

クロスリファレンス対象の選択
クロスリファレンスの対象オブジェクトを選択するには以下のようにします。
1. Magic のリポジトリ上で Ctrl+X を押します。
2. X-Ref ダイアログボックスで、検索するリポジトリを選びます。
3.［OK］をクリックします。クロスリファレンスの結果が［ナビゲータ］ペインの［クロスリファレンス］タブに表示されます。
２回目のクロスリファレンスが実行する場合、検索オブジェクトは、結果ツリーがルートとなります。

776

リファレンス
Magic eDeveloper V9 Plus

検索と置換クロスリファレンス結果の保存
クロスリファレンスの結果を保存するには以下のようにします。
1. ［ファイル］メニューから［クロスリファレンス結果／結果を保存］をクリックします。

クロスリファレンス結果の印刷
クロスリファレンスの結果を印刷するには以下のようにします。
1. ［ファイル］メニューから［クロスリファレンス結果／結果を印刷］をクリックします。

クロスリファレンス結果の最大保存数の変更［ナビゲータ］ペインのクロスリファレンス結果の最大数を変更するには以下のようにします。
1. ［設定／動作環境］をクリックします。
2.［動作設定］タブをクリックし、［クロスリファレンス結果の最大登録数］の値を入
力します。

検索と置換
［検索と置換］ユーティリティは、クロスリファレンスユーティリティを拡張したものです。指定したオブジェクトを使用しているオブジェクトを検索し、別のオブジェクトに置き換えることができます。例えば、特定の項目モデルを使用しているテーブル全てに対して別の項目モデルに置き換えることができます。
対象となるオブジェクトや使用方法は、クロスリファレンスユーティリティとほぼ同じです。ここでは、異なる点のみ説明いたします。

起動オプションメニューから［検索と置換］を選択することで、以下のようなダイアログが表示されます。

図 19-8［検索と置換］ダイアログ

リファレンス
Magic eDeveloper V9 Plus

777

第 19 章 - ユーティリティ
検索対象を指定したい場合は、［>>］ボタンをクリックすることで、以下のようにダイア
ログ表示が拡張されます。

図 19-9［検索と置換］ダイアログを拡張する［検索］欄は、検索するオブジェクトのリポジトリ上の番号と名前が表示されます。
［置換］欄には、置き換えたいオブジェクトの番号を指定します。ズームすることで、選択
テーブル一覧が表示されます。
コンポーネントリポジトリでは、ホストアプリケーションのオブジェクトを含めた番号になるので、リポジトリテーブル上の番号と、［検索と置換］ダイアログ上に表示される番号が異なります。
OK をクリックするとクロスリファレンス処理が実行されます。

置換
指定したオブジェクトが見つかると、以下のような置換処理に対する確認ダイアログが表示されます。

図 19-10 確認ダイアログ• 置換……置換処理を実行し、次の置換対象に進みます。
• 全て置換……検索されたオブジェクトを全て置換します。
• スキップ……置換処理を行わず、次の置換対象に進みます。
• キャンセル……置換処理を行わず、処理を中断します。

778

リファレンス
Magic eDeveloper V9 Plus

テキストの検索と置換
検索、置換の結果は、［ナビゲータペイン］のクロスリファレンスの結果に表示されます。
「全て置換」を選択した場合は、［ナビゲータペイン］で置換結果を確認するようにしてください。
テーブル A に外部キーの参照テーブルとしてテーブル B を設定し、テーブル B に対して「検索と置換」を行いすべて別のテーブルに置き換えた場合、テーブル A の外部キーの設定がクリアされます。

テキストの検索と置換［テキスト検索］／［テキスト置換］ユーティリティは、アプリケーション内で使用されるテキスト（文字列）を検索することができます。また、検索した文字を別の文字に置換することができます。
これらのオプションは、[ 編集 ] メニューで使用できます。

起動［編集］メニューから［テキスト検索］または［テキスト置換］選択することで、以下のようなダイアログが表示されます。

図 19-11［テキスト検索］ダイアログ

図 19-12［テキスト置換］ダイアログ

リファレンス
Magic eDeveloper V9 Plus779

第 19 章 - ユーティリティ
検索対象を指定したい場合は、［>>］ボタンをクリックすることで、以下のようにダイア
ログ表示が拡張されます。

図 19-13［テキスト置換］ダイアログの拡張表示［検索］欄は、検索するオブジェクトのリポジトリ上の番号と名前が表示されます。
［置換］欄には、置き換えたいオブジェクトの番号を指定します。ズームすることで、選択
テーブル一覧が表示されます。フォルダ名とコメント以外の全てのオブジェクトが検索対象となります。
OK をクリックすると検索処理が実行されます。
正規表現は以下のメタキャラクタ（半角文字 ) が使用できます。
• . …… 任意の文字（例）あい .. えお（任意の文字が DBCS の場合は、2 文字にします。）• ^ ……行の先頭 ( 例）^ あい• $ ……行の末尾 ( 例）えお $置換
指定したオブジェクトが見つかると、以下のような置換処理に対する確認ダイアログが表示されます。

図 19-14 確認ダイアログ• 置換……置換処理を実行し、次の置換対象に進みます。
• 全て置換……検索されたオブジェクトを全て置換します。
• スキップ……置換処理を行わず、次の置換対象に進みます。
• キャンセル……置換処理を行わず、処理を中断します。

780

リファレンス
Magic eDeveloper V9 Plus

リポジトリ入出力ユーティリティ
検索、置換の結果は、［ナビゲータペイン］のクロスリファレンスの結果に表示されます。
「全て置換」を選択した場合は、［ナビゲータペイン］で置換結果を確認するようにしてください。

リポジトリ入出力ユーティリティ
Magic のリポジトリ入出力ユーティリティを使うことで、アプリケーションのオブジェ
クトを外部に出力したり、または入力したりできます。このユーティリティでできる処理は次のとおりです。
• 移植……アプリケーションのオブジェクトを出力できます。また、異なるプラット
フォームで使われている Magic アプリケーションに入力することや、Ver8.2 のアプリ
ケーションからの移行も可能です。
• 再構成……アプリケーションのオブジェクトを出力し、再度、同じアプリケーションに入力できます。これで、CTL ファイルの内容を再構成できます。この場合、新規の CTL ファイルが作成されます。
• 文書化……仕様書の作成が可能です。
入力ユーティリティでは、出力ユーティリティを使用して出力したコンポーネントを取り込むことができます。コンポーネントを取り込むと、コンポーネントが所定のリポジ
トリに追加されます。たとえば「顧客ファイル」という名前のデータテーブルを取り込むと、そのテーブルがカレントのアプリケーションのテーブルリポジトリの最後に追加されます。また、「顧客一覧印刷」という名前のプログラムを取り込むと、そのプログラ
ムがプログラムリポジトリに追加されます。
出力または入力を行いたい場合、［ファイル／リポジトリ入出力］（Shift+F10）を選択します。選択後、［リポジトリ入出力］ダイアログが開きます（図 21-6）。
［リポジトリ入出力］ダイアログの設定欄では、いずれも、ユーザが入力した値がチェックされます。つまり、ユーザが設定欄に値を入力すると、その値が Magic によりチェッ
クされます。

リファレンス
Magic eDeveloper V9 Plus781

第 19 章 - ユーティリティ［リポジトリ入出力］ダイアログボックス

図 19-15 ［リポジトリ入出力］ダイアログ

Magic Ver.9 の出力はすべて ANSI で行います。
入力ユーティリティは、以前のバージョンの Magic からのデータを入力する場合 、OEMで出力されているファイルを ANSI に変換して入力します。Magic が ANSI に変換する際、
OEM_ANSI 変換ファイルを使用します。
［リポジトリ入出力］ダイアログには、以下のようなパラメータがあり、必要に応じて設定いたします。

操作実行する処理を指定します。処理としては、「E ＝出力」、「D ＝仕様書出力」、「I ＝入力」のいずれかが指定できます。
リポジトリ入出力ユーティリティを初めて起動したときには、この欄にはデフォルトとして「E ＝出力」が指定されています。この設定を変えた場合、次回には、その設定がデフォルトとして表示されます。
• E ＝出力……アプリケーションのオブジェクトを出力します。
• D ＝仕様書出力……アプリケーションに関するレポートを作成します。レポートには、出力されたオブジェクトが一覧で表示されます。この処理では、デフォルトでは、
DOC_STD.JPN が使用されます。このドキュメントテンプレートファイルでは、特殊な記述言語が使われており、この言語で仕様書が出力されます。DOC_STD.JPN ファ
イルは、テキストエディタを使用して内容を必要に応じて編集できます。また、Magicのドキュメントテンプレート機能を使用して編集することもできます。
DOC_STD.JPN ファイルのほか、DOC_EXT.JPN というファイルも用意されており、このファイルを使うことでさらに詳しい仕様書の出力も可能です。ドキュメントテンプ
レート機能と、仕様書出力用の記述言語については、本章で後述しています。
• I ＝入力……Magic Ver9 または Ver8 で作成されたアプリケーションを入力したいときに指定します。
”CALL-MODAL が解読不可能な文字 ” である旨のエラーが出た場合は、出力ファ
イルからこの文字を削除してください。

782

リファレンス
Magic eDeveloper V9 Plus

リポジトリ入出力ユーティリティ

リポジトリタイプ
出力を行うときに使用します。ここには、出力するアプリケーションのコンポーネントを指定します。
出力対象となるコンポーネントを指定します。アプリケーションのコンポーネントであれば、どのコンポーネントでも指定できます。この欄をクリックするとコンボボックスが開きますので、ここでコンポーネントを選択します。コンボボックスには、次のようなオプションが表示されます。
• O= モデル……モデルリポジトリを出力します。
• B= テーブル……テーブルリポジトリを出力します。
• P= プログラム……プログラムリポジトリを出力します。
• H= ヘルプ……ヘルプリポジトリを出力します。
• R= 権利……権利リポジトリを出力します。
• M= メニュー……メニューリポジトリを出力します。
• C= コンポーネント……コンポーネントリポジトリを出力します。
• D=CTL 特性……アプリケーションの CTL 特性データを出力します。
• A= アプリケーション……アプリケーション全体を出力します。
アプリケーションは、「A ＝アプリケーション」を指定することで全体を出力することもできますが、「O= モデル」などを使用してコンポーネント別（たとえば、モデル、テーブル、プログラムなど）に出力し、アプリケーション全体を出力することもできます。その場合、出力した各コンポーネントを入力ユーティリティで取り込むときの順序が問題になります。これは、コンポーネントとコンポーネントとが相互に参照関係にあるためです。参照
関係は決まっており、そのため、各コンポーネントは次のような順序で入力しなければな
りません。
1. 権利
2. コンポーネント
3. ヘルプ
4. モデル
5. テーブル
6. プログラム
7. メニュー
8. CTL 特性
コンポーネントは、相互に参照関係にあるため、すべて取り込まなければなりません。また、コンポーネントの取り込みは、1 回のセッションで行うようにします。これで、リポジトリとリポジトリ、またはリポジトリ内の参照関係が維持されます。たとえば、プログラムリポジトリを何回かに分けて入力すると、最初の入力で取り込まれたプログラムの間でだけ参照関係が維持されます。また、既存のアプリケーションにプログラムを取り込むと、内部の参照関係が崩れることがあるため、この処理は避けるようにします。

モデルの出力「E ＝出力」操作を行う場合、リポジトリタイプが「A ＝アプリケーション」以外のとき、リポジトリ入出力ダイアログに「モデルも出力する」チェックボックスが表示されます。
ここをチェックすることで、アプリケーションのオブジェクトモデルが出力されるようになります。チェックしない場合にはモデル情報は出力されないため、リポジトリ入力を行うアプリケーションのモデル情報か、またはデフォルトモデルが利用されるようになります。ただし項目モデルについては、入力先に対応するモデルが存在していないと書式が未定義状態になり、アプリケーションが正しく動作しなくなりますので注意してください。
リファレンス
Magic eDeveloper V9 Plus783

第 19 章 - ユーティリティ

開始番号と終了番号
モデル、テーブル、プログラム、ヘルプを出力する場合、このパラメータを使用して、出力の範囲を指定することができます。たとえば、テーブルリポジトリのデータベース
テーブルのうち、最初の 3 つのテーブル（テーブルリポジトリの最初の 3 行のテーブル）を出力したい場合、［開始番号］欄を「1」、［終了番号］欄を「3」とします。
［開始番号］または［終了番号］のどちらの欄も、ズームすると［テーブル一覧］、［プログラム一覧］、［ヘルプ一覧］が表示されます。どの一覧が表示されるかは、［リポジ
トリタイプ］欄の設定によります。図 19-16 は、［テーブル一覧］の例です。

図 19-16 テーブル一覧

フォルダ
ここでは、リポジトリに登録されているフォルダ名を選択することができます。フォル
ダを選択すると、フォルダ内のオブジェクトのみ出力されます。選択しない場合は、全てのオブジェクトが出力対象となります。

フォルダ情報を入力
このチェックボックスをチェック状態にすることによりフォルダ情報を入力します。
フォルダがすでに存在している場合、既存のフォルダの最後に追加されます。チェックをはずすとフォルダ情報は入力されません。

ファイル名
ファイルの名前を指定します。出力の場合、このファイルにアプリケーションのオブジェ
クトが保存されます。また、入力の際には、このファイルにデータが取り込まれます。
なお、出力の場合、下の規則にしたがって、自動的にファイルの名前が設定されます。
• ファイル名の最初の部分は、アプリケーション識別子になります。この識別子は、［設
定／アプリケーション］テーブルで定義されているものです。
• アプリケーション識別子の右には、リポジトリタイプに応じて決まった文字が付加されます。つまり、出力対象のコンポーネントを示す文字で、たとえば、［タイプ］欄の値が「O= モデル」の場合は「E」、「B ＝テーブル」の場合は「F」という文字が付加されます。

784

リファレンス
Magic eDeveloper V9 Plus

フローモニタ／デバッガ• 単一のファイル、プログラム、ヘルプを出力する場合は、3 または 4 桁の数字が付加されます。たとえば、DMF001、DMP0003、DMH0005 のようなファイル名が付けられます。
• ファイル名には、「C:¥MYDIR¥DMP」と言うようにパスを指定することができます。パスを指定しないと、カレントのディレクトリを参照します。別の場所に出力する際は、ファイル名またはパス名、あるいはその両方を変更してください。
Magic は、ディスク上に指定されたファイルあるかどうかをチェックします。指定したディレクトリに同じ名前のファイルがある場合は、上書き確認のダイアログが表示されます。
入力時は、現在のアプリケーションの識別子が表示されます。必要に応じて取り込むファ
イルの名前（必要な場合は、パス名も）を入力してください。Windows の［ファイルを開く］ダイアログにもズームできます。

フローモニタ／デバッガ
フローモニタは、Magic のデバッグ用ユーティリティです。フローモニタを使用することで、実行中のプログラムがどのようなコマンドを発行しているかなどを確認することができます。
フローモニタはプログラムの実行時に処理されるコマンドフロー（例：タスク、レベル、
処理フローなど）を表示します。
デバッガは、フローにブレイクポイントを設定することができます。デバッガがブレー
クポイントに到達すると、フローは停止します。ここで、どのように処理が動いたかを確認したり、次の処理に進めたり、動作を継続させたりすることができます。

図 19-17 Magic のフローモニタ

フローモニタは、Magic とは別のスレッドで、並行に動作します。フローモニタは、Magic
エンジンからアクティブメッセージを受け取ります。

リファレンス
Magic eDeveloper V9 Plus785

第 19 章 - ユーティリティ

フローモニタのツールバー
Magic Ver.9 のフローモニタでは、以下のようなボタンが表示されます。

モニタ内容の保存します。

モニタ処理の開始します。

モニタ処理の停止します。

［実行フィルタ］ダイア
ログを開きます。ここで、モニタする内容を指定できます。

モニタ表示をクリアします。

項目ダイアログを開き、現在のデータ項目の内容を表示します。

ステップイン：子タス
クを含めて１ステップ
ずつ処理を進めます。

継続：次のブレイクポ
ステップオーバ：子タ
イントまで処理を継続
スクを含めず１ステッ
プずつ処理を進めます。 します。

ブレイクポイントの設定／解除を行います。

対応する処理の開始か終了に移動します。

モニタ内容の文字列を検索します。

次の検索対象に移動します。

フローモニタのメッセージグループフィルタ［実行フィルタ］ダイアログで以下のようなフィルタ項目をしていることによりモニタに表示する内容を選択できます。

786

タスク

タスクのメッセージ
タスクの動作が記録されます。
（例：タスクのオープン／クローズ、タスクイベント）

タスクレベルフローレベルのメッセージ
タスクレベルが記録されます。
（例：レコード前／後、レコードメイン）

データビュー

データビューメッセージ
データビューの動作が記録されます。
（例：範囲、位置付け、など）

フロー

処理コマンドのメッセージ
処理コマンドのフローが記録されます。
（例：セレクト、リンク、ブロック など）

ゲートウェイゲートウェイのメッセージ
ゲートウェイの動作が記録されます。
（例：ゲートウェイへの接続、SQL ステートメントなど）

トランザクションキャッシュ

遅延トランザクションのトランザクションキャシュ内に DML ス
テートメントとデータ内容が記録されます。
リファレンス
Magic eDeveloper V9 Plus

フローモニタ／デバッガ
再計算

再計算のメッセージ
値が再計算される動作が記録されます。
（例：項目の更新）

ブラウザクライア
ントの動作

コンテキスト情報が記録されます。

トリガされたイベ
ント

Magic エンジンによって処理されるイベント

アクションのロギ
ング

ログメッセージ
ログの動作が記録されます。
開始：複合アクション開始が記録されます。（例：タスク前処理）
停止：複合アクション停止が記録されます。

フローモニタの特徴• 開始 / 終了メッセージを含む動作については、ユーザはいずれかのメッセージまたは両方のメッセージを取得できます。
• プログラムで使用しているビューの内容をフローティングウィンドウに表示することができます。
• プログラムにブレイクポイントを設定することができます。ブレイクポイントが設定されるとプログラムのフローの色が変わります。
• ブレークポイントが設定されている場合、フローモニタはその設定位置でフロー実行
を停止します。さらにユーザは、プログラムの実行中にいつでも FlwMtr 関数を使用することによりブレークポイントを設定することができます。カウンタもブレークポ
イントに設定できます。これにより、フローは数回実行後停止します。
• ブレイクポイントで停止しているときは、フローのステップイン、ステップオーバ、
継続を実行することができます。
•

ステップイン……１ステップずつ確認しながらフローを進めることができます。

•

ステップオーバ……サブタスクの実行処理など飛ばしてフローを進めることが
できます。

•

継続……現在のブレイクポイントを無視し、次のブレイクポイントまで処理が継続されます。

サーバ上でのフローモニタ
フローモニタは、実行エンジンがアプリケーションサーバとして動作していても実行することができます。フローモニタのメッセージはログファイルとして出力されます。
サーバ上でバックグラウンドモードで動作する場合は Magic.ini ファイルに以下のように設定することでフローモニタが実行されます。
［MAGIC_ENV］
LoadMonitor=Y
Monitor2File= フ ァ イル名［動作環境］ダイアログの［システム］タブの以下のパラメータでも設定できます。

• モニタ起動……Yes• モニタの出力ファイル……ファイル名
フローモニタのメッセージフィルタは MGFlwMtr.INI ファイルに アプリケーション名のセクションを設定し、その下に定義できます。たとえば、［MY APP］ というセクショ
ンの下に以下のようなキーワードを指定することで制御できます。

リファレンス
Magic eDeveloper V9 Plus787

第 19 章 - ユーティリティ
各アプリケーションごとに以下のメッセージフィルタを指定できます。
キーワードの値

説明

BeginMSG=Yes

メッセージ開始
一連のコマンド処理の開始が記録されます。
（例：ブロックコマンド）

EndMSG=Yes

メッセージの終了
一連のコマンド処理の終了が記録されます。
（例：ブロック終了コマンド）

TaskMSG=Yes

タスクのメッセージ
タスクの動作が記録されます。
（例：タスクのオープン／クローズ、タスクイベント）

FlowMSG=Yes

フローレベルのメッセージ
タスクレベルが記録されます。
（例：レコード前／後、レコードメイン）

ViewMSG=Yes

データビューメッセージ
データビューの動作が記録されます。
（例：範囲、位置付け、など）

RecomputeMSG=Yes

再計算のメッセージ
値が再計算される動作が記録されます。
（例：項目の更新）

OperationsMSG=Yes

処理コマンドのメッセージ
処理コマンドのフローが記録されます。
（例：セレクト、リンク、ブロック、など）

LogMSG=No

ログメッセージ
ログの動作が記録されます。

ブラウザクライアントでのフローモニタ
ブラウザクライアントでもフローモニタ機能が使用できます。文字色の違いによって
サーバ側オペレーションとブラウザクライアント側オペレーションを区別できます。文
字色はフローモニタのプルダウンメニューで設定することができます。

リモートフローモニタ
リモートフローモニタを使用することでリモートクライアントから Magic アプリケー
ションの動作をモニタできます。デバッグ機能は含まれていません。
スタートメニュー上の Magic のメニューフォルダにある「リモートフローモニタ」をクリックすることで起動します。
リモートフローモニタは、Magic エンジン とは独立した実行ファイルです。リモート上の Magic エンジンと通信するために TCP/IP を使用します。
リモートフローモニタによって監視されるためには、リモートエンジン側の［動作環境］
ダイアログで、［リモートフローモニタ］の設定を「Yes」に設定し、［リモートフローモ
ニタの使用ポート］に TCP のポート番号を指定しなければなりません。

788

リファレンス
Magic eDeveloper V9 Plus

リモートフローモニタ

フローモニタクライアント
リモートフローモニタを実行すると、リモートフローモニタのウィンドウが表示されます。

図 19-18 フローモニタクライアント

リモートフローモニタクライアントでは以下のことができます。
• モニタするリモートアプリケーションの定義• モニタの開始• アクセスの制限• モニタデータの保存• 統計表示• 動作フィルタの設定• メッセージカラーの定義• コンテキストの選択• キャッシュサイズの設定• モニタの停止

リファレンス
Magic eDeveloper V9 Plus789

第 19 章 - ユーティリティモニタするリモートアプリケーションの定義［ファイル］メニューの［アプリケーション登録］をクリックすることで、モニタするリ
モートアプリケーションを登録するダイアログが開きます。

図 19-19 リモートアプリケーションの設定

このダイアログでは以下のことができます。
• モニタするアプリケーションの追加……［追加］をクリックすると、設定用のダイアログが表示されます。
• 登録済みのアプリケーション情報の編集……アプリケーション名にカーソルを置き、［編集］をクリックすると、設定用のダイアログが表示されます。
• 登録済みのアプリケーションの削除……アプリケーション名にカーソルを置き、［削除］をクリックすると、削除されます。
［追加］または、［編集］ボタンをクリックすると以下のような詳細ダイアログが表示されます。
ここにリモートアプリケーションの情報を指定します。

図 19-20 リモートアプリケーションの詳細

設定ダイアログでは以下の内容を設定します。
• アプリケーション名……アプリケーション名前を入力します。この名前は、モニタするアプリケーションの名前と同じでなければなりません。

790

リファレンス
Magic eDeveloper V9 Plus

リモートフローモニタ• ホスト名……アプリケーションが動作している PC のホスト名。Host IP アドレスが指定されている場合は設定しないでください。
• ホスト IP アドレス……アプリケーションが動作している PC の IP アドレス。ホスト
名が指定している場合は設定しないでください。
• ポート番号……Magic エンジンが接続を監視するために使うポート番号。Magic の動
作環境の設定と同じにしてください• 対象ユーザ……サーバから送られるメッセージをフィルタリングできます。カンマ区
切りで Magic にログオンしているユーザ名を複数指定できます。全てのユーザのメッ
セージを受け取る場合は、「All」、または、「*」を指定します。

リモートフローモニタの開始
リモートフローモニタ を開始するには、まず、モニタメニューの中からアプリケーショ
ンを選択します。選択すると、（Magic）ユーザー名とパスワードを入力するダイアログが表示されます。

図 19-21 ログインウィンドウ

入力内容が正しければ、Magic はメッセージをフローモニタに送ります。情報は、フローモニタ上で指定された情報に基づいてフィルタリングされます。
ユーザ名やパスワードが正しくない場合は、フローモニタを開始できず、エラーメッセー
ジが表示されます。

図 19-22 接続エラーメッセージ

アクセスの制限CTL 特性の［セキュリティ］タブの「リモートフローモニタ権利」を設定することでリ
モートフローモニタのアクセスを制限することができます。
詳細は、第 2 章「設定」の「CTL 特性」を参照してください。

アプリケーションをモニタできるクライアントは１クライアントのみです。モニタ中のリモートアプリケーションを別のクライアントからモニタすることはできません。
リファレンス
Magic eDeveloper V9 Plus791

第 19 章 - ユーティリティ

モニタデータの保存
モニタの内容をテキストファイルに保存することで、モニタを終了した後で内容を確認することができます。
［ファイル］メニューの［ログの保存］をクリックすると［名前を付けて保存］ダイアログ表示されます。パスとファイル名を指定することで保存できます。

パフォーマンス統計
モニタするアプリケーションのパフォーマンスについての統計情報を表示することができます。［表示］メニューの［統計］をクリックすると、［統計表示］ウィンドウが表示されます。

図 19-23 統計表示

［経過時間］欄は、選択されたモニタメッセージから別のものまで経過した合計時間を表示します。モニタ上の開始したいメッセージをクリックし、次に終了したいメッセージをクリックすると、2 つの選択されたメッセージの間で発生した動作 （タスクオープン／クローズ、データベースオープン／クローズなど ）の数を表示します。

フローの開始と終了を合わせる
Magic プログラムのフローには、開始と終了のポイントが含まれています。例えば、モ
ニタは、レコード前処理の開始と終了を表示します。モニタ上のカーソル行がフローの初めに選択されているとき、［編集］メニューの［対応 先頭／最終］をクリックするとカーソル行がフローの終り移動します。先ほどの例でいくと、レコード前処理の開始から終了に移動するということです。
この機能を使うことで、特定の処理の開始と終了の間のフローを確認することができます。

792

リファレンス
Magic eDeveloper V9 Plus

リモートフローモニタ

実行フィルタ［表示］メニューの［実行フィルタ］をクリックすることでモニタデータのフィルタリン
グ指定のダイアログが表示されます。設定内容は、ローカルのフローモニタと同じです。

図 19-24 フィルタの設定

色の指定
モニタのメッセージの色をタイプごとに指定することができます。

図 19-25 色の設定

モニタメッセージのタイプには、以下のものがあります。
• エンジン動作の文字色……サーバ側の処理の色を指定します。
• ブラウザ動作の文字色……ブラウザベースのプログラムのようなクライアント側の処理の色を指定します。
リファレンス
Magic eDeveloper V9 Plus793

第 19 章 - ユーティリティ• コンテキスト変更時の背景色……コンテキストの変更を表示するためのバックグラ
ウンドカラーを指定します。
選択された背景色は、デフォルトの白に置き換えられます。

コンテキストマネージャ［表示］メニューの［コンテキストマネージャ］をクリックするとモニタしたいコンテキストを選択できます。

図 19-26 コンテキストマネージャ

コンテキスト番号は、IE のアドレスバーで確認できます。
［コンテキストマネージャ］ウィンドウには、以下のカラムが表示されます。
• コンテキスト ID……コンテキスト番号が表示され、表示したいコンテキストをチェッ
クボックスで選択できます。
• ユーザ名……コンテキストを実行しているユーザー名を表示します。
• ユーザー状態……コンテキストが実行中か否かの状態を表示します。
• IP アドレス……コンテキストの IP アドレスを表示します。

キャッシュサイズの設定
リモートフローモニタは、入力されるメッセージコードをクライアント側のキャッシュに格納します。
［表示］メニューの［キャッシュサイズ］をクリックするとことによってこのキャッシュのサイズを変更できます。最小値は、100 KB で、最高値は、9999 KB です。リモートフローモニタのキャッシュは、FIFO（First In First Out）方式です。

モニタの停止モニタを停止するには、［モニタ］メニューの［モニタ停止］をクリックするか、［モニタ停止］アイコン

794をクリックしてください。

リファレンス
Magic eDeveloper V9 Plus

Magic プロファイラ

リモートフローモニタの設定の保存
クライアント側
フローモニタの［アプリケーション登録］の内容は、Windows のレジストリに個別のサブキーでバイナリ形式で保存されます。

サーバ側
リモートフローモニタでアプリケーションをモニタするには、サーバ側の Magic の［動作環境］ダイアログの［システム］タブの以下のパラメータを設定する必要があります。
• リモートフローモニタ… Yes• リモートフローモニタの使用ポート…TCP のポート番号
この設定を変更しても、即メッセージを送るわけではありません。その代わり、Magic
は、接続するリモートのフローモニタのユーザをチェックし、承認されればメッセージを送ります。
サーバは、定期的にクライアントとの接続状態をチェックします。もし、クライアントからの応答がない場合、クライアントを切断しメッセージを送りません。サーバは、’Listering’ モードを返すようになり、新しい接続要求を待ちます。
アプリケーションは１つのフローモニタクライアントでしたモニタできません。
モニタ中のアプリケーションに対する他のクライアントからの接続要求は拒否されます。

Magic プロファイラ
Magic プロファイラは、アプリケーションに関する情報の収集ツールです。また、収集した情報をもとにアプリケーションの実行時の性能や状態を分析することもできます。
収集される情報としては、タスクの実行状況や経過時間、計算処理、入出力処理などがあり、こうしたデータを使用してアプリケーションの欠陥や修正すべき点を把握できます。
Magic プロファイラを使ってアプリケーションの性能を改善させたい場合、基本的に次の 4 つのステップで作業を進めます。
1. データの収集
2. 結果の分析
3. 問題の特定
4. 問題の解決

プロファイラの操作
Magic プロファイラを使いたい場合、オペレーティングシステムの環境変数を設定する必要があります。設定は次のようにします。
1. 環境変数（MGPROF）を設定します。
2. たとえば、Windows の場合は、以下のようなバッチファイルを作成して Magic を起動します。
MGPROF=1
MGxxxW.EXE
SET MGPROF=

リファレンス
Magic eDeveloper V9 Plus795

第 19 章 - ユーティリティ

プロファイラの出力
Magic プロファイラでは、処理対象のプログラムについてそれぞれ、2 つの出力ファイルが作成されます。1 つはプログラム実行トレースファイルで、このファイルには、アプ
リケーションのツリー情報（イベント情報も記録されます）とタスク実行に関連する各種の要素のタイミングが格納されます。もう 1 つはオープンファイルトレースファイル
で、このファイルには、タスクで使用されているファイルに関する情報が収められます。
どちらの出力ファイルも ASCII ファイルで、スプレッドシートプログラムに読み込んで編集や解析、印刷ができます。

プログラム実行トレースファイル
プログラム実行トレースファイルには、プログラムのコール順が保存されています。ファ
イルでは、各タスクが別々に記録されます。また、各タスクは、その階層構造にしたがって右にインデントされて記述されています。
プログラム実行トレースファイルは、次の項目で構成されています。
#

796

項目名

内容

参考

1

#

行番号

2

Task Number［プログラム］リポジトリのプログラム
番号またはタスクのタスク番号3

Task Name

プログラム名またはタスク名

4Start/End Task

Start……タスク実行開始
End ……タスク実行終了

5

Event

タスクがイベントの場合、Event と表示
されます。

6

Total Task Time

タスクが開始してから終了するまでの時
間

7Resident

タスクが常駐タスクの場合、Y と表示されます。

8

Sort Time

データビューのソートに要した時間

9# of Open Files

タスクの［DB］テーブルに定義されているテーブルの数

10

Task Open Time

タスクのロードに要した時間

この時間は、タスクのすべてのファイルがロー
ドされるまでの時間です。

11

Task Close Time

タスクの実行後、タスクが閉じるまでの時間

この時間は、タスクのすべてのファイルが閉じるまでの時間です。

12Open Files Time

タスクで使われるテーブルのオープンに
要した時間

13

Close Files Time

タスクで使われるテーブルのクローズに
要した時間

14

# of UpDated Records

更新されたレコードの数

この項目は、コール順に応じて階層で表示されます。

この時間は、呼び出されたすべてのタスクが終了するまでの時間です。

リファレンス
Magic eDeveloper V9 PlusODBC チェックドライバ ユーティリティ
#

項目名

内容

Average UpDate Time

各データビューを更新するために要した
平均時間

16

# Load Records

ロードされたレコードの数

17

Average Load Time

各データビューのロードに要した平均時
間

15

参考

プログラム実行トレースファイルの名前は、MGPROFT.LOG です。
この名前は、以下のコマンドを使用して変更できます。
SET

MGTLOG=< ファイル名 >オープンファイルトレースファイル
オープンファイルトレースファイルには、タスクでオープンされたテーブルがすべて保存されます。また、何らかの理由で Magic によりオープンされたテーブル、さらに、アクセスモードや共有モードが変更されたため Magic によりオープンされたテーブルも記録されます。
オープンファイルトレースファイルの項目は次のとおりです。
#

項目名

内容

1

#

プログラム実行トレースファイルの行番号2

Task Number［プログラム］リポジトリのプログラム番号、またはタスク
番号

3

File

テーブル番号

4

New

初めてテーブルがオープンされた場合、New が表示されます。

5

Original Open Mode

親タスクで定義されているアクセスモード、共有モード、
オープンモード

6

Open Mode

タスクで定義されているアクセスモード、共有モード、オー
プンモード

オープンファイルトレースファイルの名前は、MGPROFM.LOG です。
この名前は、以下のコマンドを使用して変更できます。
set MGTCNF=< ファイル名 >時間は、55 ミリ秒の精度で計測されます。

ODBC チェックドライバ ユーティリティ
ODBC チェックドライバユーティリティ（Mgchkdrv.exe）は、ODBC ドライバに付属しています。このプログラムを実行すると ODBC データソースがテストされ、ドライバによって作成される関数の一覧が印刷されます。このテストによって、ODBC に対して
Magic データベースゲートウェイでそのドライバが使用できるかどうかがわかります。
詳細は、第 25 章「SQL に関する考慮事項」を参照してください。

リファレンス
Magic eDeveloper V9 Plus797

第 19 章 - ユーティリティ

テーブル変換ユーティリティ
テーブル変換は、テーブルの物理構造が変更され、データテーブルが存在する場合に、自動で実行される処理です。たとえば、テーブルにカラムが追加されたり削除されたり、カラムの属性が変更されたりインデックスの定義が変更されたり、テーブルで使用されているモデルが変更された場合に自動的に変換処理が実行されます。
インデックスを重複可から重複不可なものに変換した場合、インデックスが重複したレ
コードは自動的に削除されてしまいますので注意してください。
テーブル変換処理が開始されるのは、テーブルリポジトリの行の設定を終了しようとしたとき、テーブルリポジトリを終了しようとしたときです。
モデルリポジトリを変換した場合は、自動的に変更処理が実行されません。変更が必要
であることを示す警告を表示します。この場合は、テーブルリポジトリで一旦プログラ
ムチェックを実行し、該当するテーブル上で手動で変換ユーティリティを実行してください。実行するには、［オプション／テーブル変換（Ctrl+O ）］をクリックしてください。
変更する前に存在していたテーブル構造は、テーブルリポジトリでのレコードの設定またはテーブルリポジトリを終了するまで新規のテーブル構造とともに維持されます。変
換処理を途中でキャンセルしたときには、テーブルの物理構造と論理構造に矛盾が生じることがあります。この場合、その後、自動変換が不可能になります。このため、Magicが矛盾が起こっているテーブルにアクセスすると、エラーメッセージが表示されることもあります。
変換処理は、次のようにして作業を進めます。
1. ［変換処理確認］ダイアログボックスが開きます。「Yes」を選択すると、テーブルが自動的に変換されます。「取消」を選択すると、変換処理は実行されません（この場
合、修正された部分を手動で元に戻さなければならないこともあります）。
2. 変換処理の開始を確認すると、使用しているデータベースによっては、［バックアッ
プ処理確認］ダイアログボックスが表示されます。オリジナルのテーブル（修正される前のテーブル）のバックアップを作成したいときには、「Yes」を選択します。
バックアップファイル（たとえば、DMBCK001.DAT というファイル名）は、カレン
トディレクトリ上に作成されます。ここには、十分な空きスペースを確保しておく必要があります。
3. 変換処理の開始を確認すると、［テーブル変換］ダイアログボックスが表示されます。このダイアログボックスで、データベーステーブルを既存のインデックスのいずれかに従って再構成するように Magic に対して要求できます。「インデックス 0」
では、行を物理順番で配置し直します。インデックスを使ってテーブルを再構成す
るには、インデックスの番号（［インデックス］テーブルのものを使います）を入力するか、［インデックス一覧］にズームしてインデックスを選択します。選択したイ
ンデックスによるテーブルのスキャンや入出力処理において処理速度を向上させるために、使用頻度が一番高いインデックスを指定してテーブルを再構成するようにしてください。
4.［テーブル変換］ダイアログで「Yes」を選択すると、Magic 側で変換が行われます。
［テーブル変換］ウィンドウが表示され、変換済みの行数が表示されます。テーブルの変換が完全に終了すると、ウィンドウが閉じます。

Magic フラットファイル
Magic フラットファイル （MFF）は、データベースに依存することなく実行できるアプ
リケーションファイルです。そのアプリケーションはバイナリファイルとして作成され、ユーザのコンピュータシステムのどこにでも保存することができ、実行でのみ利用できるものです。
MFF ファイルは、マルチプラットフォーム環境での使用を想定しています。Windows 版で開発したアプリケーションを MFF ファイルに出力することで、Unix 版で実行させることができます。

798

リファレンス
Magic eDeveloper V9 Plus

データ出力ウィザード
既存の Magic アプリケーションを MFF ファイルとして保存するには、［ファイル］メニューから［MFF として保存］コマンドを選択します。

データ出力ウィザード
オンラインタスクの場合、［タスク制御］ダイアログの［データ出力ウイザード］を「Yes」に設定すると「データ出力ウィザード」を使用することができるようになります。
「デー
タ出力ウィザード」を使用することで、エンドユーザが実行時に画面に表示されているデータを印刷したり、テキストファイルに出力したりすることができます。

実行時の処理実行モード時に［オプション］メニューの［データ出力］（Ctrl+G）を実行するかことで起動されます。
データ出力ウィザードは、ダイアログボックスが開いて実行時に画面に表示されている
データを以下の設定を元に出力することができます。
• 出力タイプ• カラムの順序
• 区切り

出力タイプ

図 19-27 ［データ出力］ダイアログボックス

画面に表示されているデータを HTML 、XML、または、テキスト 形式で出力できます。
データは、プリンタで印刷したり、他のアプリケーションで使用することができます。
プリンタで印刷する場合は、［アクション］欄で「ファイルの作成と印刷」を選択し、必要に応じて［プリンタダイアログを開く］を指定してください。
データをファイルに出力する場合、［アクション］欄で「ファイルの作成」を選択し、ファ
イル名をパス付きで指定します。パスが指定されていない場合は、Magic の作業フォル
ダに作成されます。
［ファイル名］欄でズームすることで［ファイルを開く］ダイアログが表示されるのでここからパスを指定することもできます。
［アクション］欄で「ファイルの作成とオープン」を選択することで、作成したファイルを参照することができます。ファイルをオープンする場合、指定したファイル名の拡張子に関連づけられているアプリケーションが起動されます。例えば、.txt の拡張子の場合
は、メモ帳などのテキストエディタによって開きます。

リファレンス
Magic eDeveloper V9 Plus799

第 19 章 - ユーティリティ
HTML、または、XML ファイルを出力する場合は、［テンプレート］を指定することができます。XML テンプレートの場合、XSL ファイルを選択してください。ここで指定されたテンプレートファイルは、［環境設定］ダイアログの［データ出力用 HTML テンプ
レートファイル］や［データ出力用 XML テンプレートファイル］で設定されたデフォル
トファイルを上書きします。この設定が空白の場合は自動的にデフィルトのテンプレー
トファイルを使用するようになります。
カラムの順番や、区切りをデフォルトの設定で出力する場合は、ここで［終了］をクリッ
クしてください。カラムの順番や区切り文字を変更したい場合は、［次へ］をクリックして選択ダイアログを開いてください。

カラムの順番
出力したくないカラムは、［カラムの順番］欄を「0」にしてください。
「0」以外の数値を指定することで、出力する順番を変更することができます。順番を変更した後、出力したい場合は、［終了］をクリックしてください。

図 19-28 カラムの順番

テキストファイルの場合は、［次へ］をクリックすることで出力時の区切り文字を指定す
るダイアログを開くことができます。

800

リファレンス
Magic eDeveloper V9 Plus

データ出力ウィザード

区切り文字と文字識別子
テキストファイルの場合は、区切り文字を選択したり、文字識別子を指定することができます。

図 19-29 区切り文字と文字識別子

文字列識別子として、シングルかダブルのクオーテーションマークを指定するか、任意の文字を指定することができます。
［終了］をクリックすると指定した内容でファイルが出力されます。
データは、常に一覧形式で出力されます。また、マルチマーキングでの選択は無効になります。

実行時の動作
以下のコントロールについては、表示されている値が出力されます。
• ラジオボタン• エディット• リストボックス• コンボボックス• RTF
チェックボックスの場合、チェック状態ならば「1」が、チェックがはずされている状態
ならば「0」が出力されます。
コントロールのデータが、項目を特定できない式で指定され、かつコントロール名が空欄の場合、データが出力されません。
データがない場合は、「出力するデータがありません．」が表示されます。指定したテン
プレートファイルが見つからない場合、「テンプレートファイルがオープンできません．」、内容が間違っている場合、「テンプレートファイルにエラーがあります．」のエラーがステータス行に出力されます。
スタイル定義がない場合は、データはスタイルシートに定義されていない形で出力されます。

リファレンス
Magic eDeveloper V9 Plus801

第 19 章 - ユーティリティ

XML テンプレートの構造
XML を出力タイプにした場合、以下のような XML テンプレートにデータをマージして出力します。XML テンプレートは、<Print_data> タグと </Print_data> タグの間にテキス
トを記述しない XML ファイルです。Magic は、このタグの間に <Record> タグを使用してレコードデータをマージします。
テンプレートの使用は必須ではありません。テンプレートに、以下のように XSL スタイ
ルシートを指定することにより表示内容をカスタマイズすることができます。
<?xml-stylesheet type="text/xsl" href="sample.xsl" ?><Print_data></Print_data>
この場合、データ出力ウイザードは、以下のように <Print_data> タグ の間に <Record> タグとレコードのデータを挿入します。
<?xml-stylesheet type="text/xsl" href="sample.xsl" ?><Print_data><Record><Emp_ID>1</Emp_ID><Name>David</Name><Email>david@mse.com</Email></Record><Record><Emp_ID>2</Emp_ID><Name>Dan</Name><Email>dan@mse.com</Email></Record><Record><Emp_ID>3</Emp_ID><Name>John</Name><Emil>John@mse.com</Email></Record></Print_data>

XSD データタイプ［スキーマファイル作成］のチェックボックスがチェックされた場合、以下に示す XSD
データタイプに基づいて Magic は XML ファイルにデータを作成します。
Magic 型

XSD データタイプ

文字型

string

論理型

boolean

数値型（浮動小数点がない）

integer

時刻型

time

日付型

date

メモ型

stringMagic の日付型と時刻型は、XSD の date と time タイプに変換されます。

XSD データタイプは、書式に従って定義されます。数値、日付、および時刻では、書式には数字と小数点のみ含めることができます。書式に他の文字が含まれている場合、
Magic は String データタイプを含んだ XSD ファイルを作成します。

802

リファレンス
Magic eDeveloper V9 Plus

データ出力ウィザード

XSD ヘッダ
XSD ヘッダを、以下に示します。
<?xml version="1.0" encoding="UTF-8"?><!--W3C Schema generated by eDevelper 9.4 (http://
www.magicsoftware.com)--><schema targetNamespace="http://www.magicsoftware.com/printdata94"
xmlns="http://www.w3.org/2001/XMLSchema">要素
XML ファイルの全ての要素は、XML スキーマに定義する必要があります。
要素名に不正な文字が含まれている場合、以下に示されるように下線表示になります。
<xs:element name="element_name"><xs:simpleType ><xs:restriction base="xs:type"><xs: maxLength value="n"/></xs:restriction></xs:simpleType></xs:element>

注意事項 :「element_name」は、コントロール名に置き換えられます。
「xs:type」は、コントロールのデータ型に基づいて設定されます。
「value」は、コントロールの書式に置き換わります。
「Record」という Complex Type は以下のように表します。
<xs:complexType name="Record"><xs:sequence><xs:element ref="element1"/><xs:element ref="element2"/><xs:element ref="element3"/><xs:element ref="element14"/></xs:sequence></xs:complexType>XML の例
要素は、以下に表示されるように、XML ファイルに定義された順に要素名に置き換わります。
<?xml version="1.0" encoding="UTF-8"?><!--W3C Schema generated by eDeveloper 9.4 (http://
www.magicsoftware.com)--><schema targetNamespace=http://www.magicsoftware.com/printdata94
xmlns="http://www.w3.org/2001/XMLSchema"><xs:element name="EMPLOYEE_ID"><xs:simpleType ><xs:restriction base="xs:integer"><xs: maxLength value="5"/></xs:restriction></xs:simpleType></xs:element><xs:element name="FIRST_NAME">
リファレンス
Magic eDeveloper V9 Plus803

第 19 章 - ユーティリティ<xs:simpleType ><xs:restriction base="xs:string"><xs: maxLengthvalue="30"/></xs:restriction ></xs:simpleType></xs:element><xs:element name="HIRE_DATE"><xs:simpleType ><xs:restriction base="xs:date"><xs: maxLengthvalue="8"/></xs:restriction></xs:simpleType></xs:element><xs:element name="LAST_NAME"><xs:simpleType ><xs:restriction base="xs:string"><xs: maxLengthvalue="30"/></xs:restriction></xs:simpleType></xs:element><xs:element name="PHONE_NUMBER"><xs:simpleType ><xs:restriction base="xs:string"><xs: maxLengthvalue="15"/></xs:restriction></xs:simpleType></xs:element><xs:complexType name="Record"><xs:sequence><xs:element ref="EMPLOYEE_ID"/><xs:element ref="FIRST_NAME"/><xs:element ref="LAST_NAME"/><xs:element ref="PHONE_NUMBER"/><xs:element ref="HIRE_DATE"/></xs:sequence></xs:complexType></xs:schema>

HTML テンプレート構造
HTML を出力タイプにした場合、以下のような HTML テンプレートにデータをマージして出力します。
<html><head><title> </title></head><body><MGTABLE></body></html><MGTABLE> タグに RowStyle 、ColumnStyle を指定することができます。

RowStyle• All …… 各行に対して異なったスタイル（MG_ROWn：n は行番号）を指定します。

804

リファレンス
Magic eDeveloper V9 Plus

データ出力ウィザード• EvenAndOdd …… MG_Even_Row（偶数行）と MG_Odd_Row（奇数行）の２つのスタ
イルを指定します。
• Equal …… 全ての行に対して同じスタイル（MG_ROW）を指定します。

ColumnStyle• All …… 各カラムに対して異なったスタイル（MG_TITLEn：n はカラム番号）を指定します。
• Equal …… 全てのカラムに対して同じスタイル（MG_TITLE）を指定します。

指定例：
4 つのカラムを持つテーブルに対して HTML を出力した場合で、テンプレートの<MGTABLE> タグに、
<MGTABLE RowStyle=ALL ColumnStyle=ALL >と定義されている場合、以下のような HTML ファイルが出力されます。
<table border="1" width="100%" class="MG_TABLE"><THEAD><tr ><td width="25%" class="MG_TITLE1">t1</td><td width="25%" class="MG_TITLE2">t2</td><td width="25%" class="MG_TITLE3">t3</td><td width="25%" class="MG_TITLE4">t4</td></tr></THEAD><TBODY><tr class="MG_ROW1"><td width="25%" class="MG_DATA1">d11</td><td width="25%" class="MG_DATA2">d12</td><td width="25%" class="MG_DATA3">d13</td><td width="25%" class="MG_DATA4">d14</td></tr><tr class="MG_ROW2"><td width="25%" class="MG_DATA1">d21</td><td width="25%" class="MG_DATA2">d22</td><td width="25%" class="MG_DATA3">d23</td><td width="25%" class="MG_DATA4">d24</td></tr></TBODY></table>また、テンプレートファイルには、以下のタグを指定することができます。
• <MGDate>……システム日付とシステム時刻を「DD/MM/YYYY HH:MM」の形式で出力します。
• <MGOwner >……［動作環境］の［オーナ名］が出力されます。
• <MGUser>……Magic の ログインユーザーが出力されます。
• <MGCAPTION>……現在のタスク名が出力されます。

リファレンス
Magic eDeveloper V9 Plus805

第 19 章 - ユーティリティ

ユーザ定義開発メニュー
開発時に使用する様々な Magic アプリケーションの起動メニューを提供するものです。
このメニューに、「アプリケーションウイザード」や他のウィザードなどのツールを含めることができます。このメニューは、開発モードでアプリケーションを開いたときに［ツール］というプルダウンメニューとして表示されます。

メニューの登録ユ ー ザ 定 義 開 発 メ ニ ュ ーは、開発エンジンでのみ有効です。Magic.ini ファイルの［TOOLS_MENU］セクションを修正することで次のセッションから有効になります。
［TOOLS_MENU］セクションへの登録順に ツールメニューの表示順とサブメニューが定義されます。
開発メニューは、Magic.ini ファイルに以下のような構文で定義します。
メニュー名 = メニュータイプ , 表示メニュー名 , 親メニュー名 ,MFF のパス / コマ
ンド , アクセスキー , 事前処理ファイル , 事後処理ファイル、ツールメニュー番号
構文に誤りがある場合は、メニューは表示されません。指定したファイルがない場合は、メニューは表示されますが実行時にエラーが表示されます。
以下、構文の詳細を説明します。

メニュー名
内部管理用の名前です。ユニークな名前を指定してください。

メニュータイプ
メニュータイプとして以下の文字を指定できます。
• A …… アプリケーション。MFF 形式の Magic アプリケーションを実行する場合に指定します。（MCF は指定できません。）• O …… OS コマンド
• M …… サブメニュー。別のメニューのサブメニューにする場合に指定します。
• S …… 区切り。メニューとメニューの間に区切り線を表示します。

表示メニュー名
実行時に表示されるメニュー名を指定します。
表示メニュー名には、アクセラレータキーとして、アンパサンド (&) を含めることができます。メニュータイプが、「A」（アプリケーション）、「O」（OS コマンド）、及び、「M」（サブメニュー）の場合は必須です。「S」（区切り）の場合は不要です。

親メニュー名親のメニュー名を指定します。指定されていない場合は、［ツール］メニューの下に表示されます。

MFF パス / コマンド
メニュータイプが「A」（アプリケーション）の場合、ここにアプリケーションの MFF
ファイルをパスを付けて指定します 。
指定されたアプリケーションが起動される前に、現在のアプリケーションは一旦終了します。アプリケーションに関する情報は、グローバルパラメータとして設定されます。

806

リファレンス
Magic eDeveloper V9 Plus

ユーザ定義開発メニュー
MFF パスが指定されていない場合は、このメニューは無効となり表示されません。
メニュータイプが「O」（OS コマンド）の場合は、実行する OS コマンドを指定します。
MFF のパスとコマンドでは、論理名を使用することができます。

アクセスキー
定義されたメニューを起動するためのアクセスキーを割り当てます。この設定はオプションで、メニュータイプが、「A」（アプリケーション）、「O」（OS コマンド）で有効です。

事前処理ファイル
現在のアプリケーションを閉じる前に、実行される処理の手順リストを提供する自動処
理手順ファイル名を指定します。このパラメータは、論理名をサポートします。利用可
能な処理については、「処理コマンド」を参照してください。

事後処理ファイル
起動したアプリケーションが終了して、現在のアプリケーションが再開するときに、実行される処理の手順を提供する自動処理手順ファイル名を指定します。このパラメータ
は、論理名をサポートします。利用可能な処理については、「処理コマンド」を参照してください。

ツールメニュー番号
オプションイメージが表示される場所（ImageFor）、内部 Magic ツールボタンイメージの番号（ToolNumber）、ツールボタンのグループを指定します。
ImageFor には次の値が指定できます。
• N……表示しない• T……ツールバー• M……プルダウンメニュー• B……両方
指定内容については、第 12 章「エンドユーザメニュー & ヘルプ」の「［イメージ］
タブ」の説明を参照してください。

指定例
ImageFor = B ToolNumber= 60 ToolGroup = 1

開発メニュー指定の例［TOOLS̲MENU］
Menu1 = A, 検索と置換ツール (&S),Add̲On¥SearchReplace.mff,Ctrl+W,pre.txt,
post.txt,ImageFor = B ToolNumber= 60 ToolGroup = 1
Menu2 = O, メモ帳 (&N), ,notepad.exe magic.ini,
Menu3 = S,,,,,
Menu4 = M, サブメニュー (&U),,,,
Menu5 = M, ウイザード集 (&M),Menu4,,,
Menu6 = A, ウイザード &1,Menu5,Add̲On¥wizard1.mff
Menu7 = A, ウイザード &2,Menu5,Add̲On¥wizard2.mff

リファレンス
Magic eDeveloper V9 Plus807

第 19 章 - ユーティリティ
Menu8 = A, ウイザード &3,Menu5,%Tools%wizard3.mff
上記の例は、折り返しで記述されているように見えますが、実際は、1 つのメニュー
指定に改行を含めないでください。
この例の場合以下のように表示されます。

図 19-30 開発メニューの例［検索と置換ツール］メニューを実行すると以下のような手順で動作します。
1. pre.txt という名前の事前処理ファイルに記述された処理が実行されます。（例：アプ
リケーションのリポジトリ出力）
2. 現在のアプリケーションを終了します。（例：customers.mcf）
3. Magic エンジンが SearchReplace.mff ファイルをオープンします。
4. SearchReplace.mff をクローズすると Magic は、自動的に元のアプリケーション（customers.mcf）に戻ります。
5. post.txt という名前の事後処理ファイルに記述された処理が実行されます。（例：ア
プリケーションのリポジトリ入力）「メモ帳」のメニューを選んだ場合、ノートパッドが起動され、Magic.ini ファイルを開きます。（現在のアプリケーションはクローズされません。）

処理コマンド
事前／事後処理ファイルで定義する処理コマンドは、以下の構文で指定できます。
処理タイプ , メイン情報 , 番号 , スイッチ
事前／事後処理で指定できる処理タイプには以下のものがあります。
• Export …… アプリケーションのリポジトリ出力• Document …… アプリケーションのドキュメント出力• Import …… アプリケーションのリポジトリ入力• MFF …… アプリケーションを MFF として保存• Application …… アプリケーションを切り替える• Getdef …… SQL の定義取得を行う• OS …… OS コマンドを実行• Simulate …… キーボード処理をシミュレートする（例：リポジトリにパークする）• Objectlist …… アプリケーションのオブジェクト一覧を出力
以下、各処理毎にパラメータを説明します。

アプリケーションのリポジトリ出力
この処理では以下のように指定します。

808

リファレンス
Magic eDeveloper V9 Plus

ユーザ定義開発メニュー
Export, < ファイル名 >, < スイッチ >• ファイル名……出力ファイル名を指定します。ファイル名の指定には、論理名が使用できます。
• スイッチ……追加情報を指定します。
•••

Repository=X……出力するリポジトリを指定します。以下の文字が指定できます。
M …… モデル
T …… テーブル
P …… プログラム
H …… ヘルプ
R …… 権利
U …… メニュー
C …… コンポーネント
D …… CTL 特性
A …… アプリケーション
Range=……リポジトリを出力する場合の範囲を指定します。ハイフンによって開始と終了の値を指定します（例：13-18）。１つだけ出力する場合は、その番号だけを指定するか、同じ番号で範囲指定してください（例：7 または 7-7）。
現在カーソルのあるオブジェクトのみを出力する場合は、「Range=@」と指定してください。この時、指定されたリポジトリと異なるリポジトリ上にカーソルがある場合は、指定されたリポジトリの内容を全て出力します。
範囲指定がなかったり、正しくない場合、指定したリポジトリ全体を出力します。
出力するリポジトリが、メニュー、権利、CTL 特性、アプリケーションの場合
は、範囲指定は不要です。
WithModels=Y\N……テーブルかプログラムのリポジトリ出力を行う際に、関連するモデルを出力するかどうかを指定します。デフォルト値は、「No」です。

指定例：
Export, %Path%AllTables.exp, Repository=T WithModels=Y

アプリケーションのドキュメント出力
この処理では以下のように指定します。
Document,< ファイル名 >,< スイッチ >• ファイル名……出力ファイル名を指定します。ファイル名の指定には、論理名が使用できます。
• スイッチ……追加情報を指定します。
••

リファレンス
Magic eDeveloper V9 Plus

Repository=X……出力するリポジトリを指定します。以下の文字が指定できます。
M …… モデル
T …… テーブル
P …… プログラム
H …… ヘルプ
R …… 権利
U …… メニュー
C …… コンポーネント
D …… CTL 特性
Range=……リポジトリを出力する場合の範囲を指定します。ハイフンによって開始と終了の値を指定します（例：13-18）。１つだけ出力する場合は、その番号だけを指定するか、同じ番号で範囲指定してください（例：7 または 7-7）。
範囲指定がなかったり、正しくない場合、指定したリポジトリ全体を出力します。
現在カーソルのあるオブジェクトのみを出力する場合は、「Range=@」と指定し809

第 19 章 - ユーティリティてください。この時、指定されたリポジトリと異なるリポジトリ上にカーソルがある場合は、指定されたリポジトリの内容を全て出力します。
出力するリポジトリが、メニュー、権利、CTL 特性、アプリケーションの場合
は、範囲指定は不要です。
•

IncludeComponents=Y\N……コンポーネントを含んだリポジトリを出力するかどうかを指定します。デフォルト値は、「No」です。

•

InternalValues=Y\N……Mgconstw ファイルに依存しない固定の内部値で出力するかどうかを指定します。デフォルト値は、「No」です。

•

TemplateFile=……出力時に使用するドキュメントテンプレートファイルを指定します。
指定されない場合は、動作環境で指定されているファイルを使用します。ファイル名の指定には、論理名が使用できます。

指定例：
Document,%Path%Table.exp,Repository=T InternalValues=Y
TemplateFile=My_Doc_std.eng

アプリケーションのリポジトリ入力
この処理では以下のように指定します。
Import, < ファイル名 >, < スイッチ >• ファイル名……入力ファイル名を指定します。ファイル名の指定には、論理名が使用できます。
• スイッチ……追加情報を指定します。
•

ImportFolderInfo=Y/N……フォルダを含めて入力するかどうかを指定します。デ
フォルト値は、「No」です。

•

OverwriteMainProgram=Y/N……メインプログラムを上書きして入力するかどうかを指定します。デフォルト値は、「No」です。

•

OverwritePulldownMenu=Y/N……プルダウンメニューを上書きして入力するかどうかを指定します。デフォルト値は、「No」です。

•

OverwriteContextMenu=Y/N……コンテキストメニューを上書きして入力するかどうかを指定します。デフォルト値は、「No」です。

•

OverwriteTarget= 行番号……上書きしたい行番号を指定します。入力するファイ
ル内に１行分のオブジェクトがある場合のみ有効です。
このパラメータが指定されていないか、指定した行番号が存在していない場合、テーブルの最後に追加されます。

•

AutoCheckOut=Y/N……チーム開発が有効に定義されているアプリケーションの場合、自動チェックアウトを有効にするかどうかを指定します。

指定例：
Import, a.exp, ImportFolderInfo=Y OverwriteMainProgram=Y
OverwritePulldownMenu=N

アプリケーションを MFF として保存
この処理では以下のように指定します。
MFF, < ファイル名 >• ファイル名……MFF として出力するファイル名を指定します。ファイル名の指定には、論理名が使用できます。

810

リファレンス
Magic eDeveloper V9 Plus

ユーザ定義開発メニュー

アプリケーションを切り替える
この処理では以下のように指定します。
Application, < アプリケーション番号 >• アプリケーション番号……アプリケーションテーブルの番号を指定します。指定されたアプリケーションが前にオープンされたものに続いて実行されます。

SQL の定義取得を行う
この処理では以下のように指定します。
Getdef, < データベース名 >, < テーブル名 >, < スイッチ >• データベース名……定義取得するデータベース名を指定します。この名前は、［データベース］テーブルに定義されている名前を指定してください。.
• テーブル名……オーナ名を含んだテーブル名を指定します。
• スイッチ……FolderName= フォルダ名作成されるテーブルのフォルダ名を指定します。この指定は任意です。

指定例：
Getdef, Mssql, dbo.GA_table, FolderName = folder1

OS コマンドを実行
この処理では以下のように指定します。
OS, <OS コマンド >, < スイッチ >• OS コマンド……実行する OS コマンドを指定します。
• スイッチ……OS コマンドを実行させる上でのオプション指定です。
•

Wait=Y/N……OS
す。

•

Show =[Hide, Normal ( デフォルト ), Maximize, Minimize]……DOS ボックス（コマンドプロンプト）をどのように表示させるかを指定します。

コマンドが終了するまで次の処理を待つかどうかを指定しま

Hide…… 非表示
Normal……通常
Maximize……最大Minimize……最小指定例：
OS, notepad, wait=Y show=hide

キーボード処理をシミュレート
この処理では以下のように指定します。
Simulate, < 有効なトークンの集まり >, < スイッチ >以下の３つのトークンによって Magic にオブジェクトにパークさせたり、キーボード操
作をシミュレートさせたりすることができます。トークンはセミコロン（,）で区分けされます。
• WIN …… このトークンは指定したリポジトリにカーソルをパークさせるように
Magic に指示します。
各リポジトリの指定は以下の文字列で行います。
•
リファレンス
Magic eDeveloper V9 Plus

MDL_REP …… モデル811

第 19 章 - ユーティリティ•

TBL_REP …… テーブル•

PRG_REP …… プログラム•

HLP_REP …… ヘルプ•

RGT_REP …… 権利•

MNU_REP …… メニュー•

CMP_REP …… コンポーネント

これらの文字列に、リポジトリ上のオブジェクト番号を表す番号を接尾語として付加
します。

指定例：
Simulate, WIN=MDL_REP#15
モデルリポジトリの 15 番目のモデルにパークします。
• TXT ……このトークンは、キーボード操作をシミュレートさせます。
例：
Simulate, TXT= < テキスト >,現在の位置にテキストを入力します。
このトークンでは、「=」以降をフリーの文字列として処理します。空白も文字として扱います。
• KEY …… このトークンは、組み合わせキーのキーボード操作をシミュレートさせます。サポートするサポートする組み合わせは以下のとおりです。
•

F1 〜 F12 …… Shift+ や Ctrl+ 、Alt+ を接頭語として指定できます。

•

Ctrl+< キー文字 >•Home …… Shift+ や Ctrl+ 、Alt+ を接頭語として指定できます。

•

End …… Shift+ や Ctrl+ 、Alt+ を接頭語として指定できます。

•

Up …… ↑カーソルキー。Shift+ や Ctrl+ 、Alt+ を接頭語として指定できます。

•

Down …… ↓カーソルキー。Shift+ や Ctrl+ 、Alt+ を接頭語として指定できます。

•

PgUp …… Shift+ や Ctrl+ 、Alt+ を接頭語として指定できます。

•

PgDn …… Shift+ や Ctrl+ 、Alt+ を接頭語として指定できます。

•

Tab …… Shift+ や Ctrl+ 、Alt+ を接頭語として指定できます。

•

Esc …… Shift+ や Ctrl+ 、Alt+ を接頭語として指定できます。

•

Del …… Shift+ を接頭語として指定できます。

•

Back…… Back Space キー。Alt+ を接頭語として指定できます。

•

Enter …… Ctrl+ を接頭語として指定できます。

•

Space …… スペースキー。Ctrl+ を接頭語として指定できます。

•

Ins …… Insert キー。Shift+ や Ctrl+ を接頭語として指定できます。

•

Plus…… + キー•

Minus…… - キー

•

Clear

•

Help

例：

812

リファレンス
Magic eDeveloper V9 Plus

ユーザ定義開発メニュー
Simulate, KEY=SHIFT+F10 ; KEY=Enter
OS コマンドとキーボード処理をシミュレートするコマンドを並べて書くときは、OS
コマンドを先に指定してください。
例：
OS,C:¥WINNT¥system32¥cmd.exe /c del MGWizard*.tmp,Show = Hide
Simulate,WIN=PRG̲REP#5（OS コマンドで TMP ファイルを削除し、プログラムリポジトリを開きその５番目にカーソルをパーキングさせます。）

アプリケーションのオブジェクト一覧を出力指定したリポジトリ内のオブジェクト一覧を出力するように指定します。Export コマン
ドより高速に出力します。この処理では以下のように指定します。
ObjectList, < ファイル名 >, Repository=< リポジトリコード >• ファイル名……出力ファイル名を指定します。ファイル名の指定には、論理名が使用できます。
• リポジトリコード……出力するリポジトリを 1 桁の文字コードで指定します。
•

M……モデル•

T……テーブル

•

P……プログラム•

H……ヘルプ

•

R……権利

•

C……コンポーネント

出力内容出力されるテキストファイルは以下の構造になっています。
位置（バイト） 内容
1-6

インデックス（半角 6 桁）

8-37

名前（半角 30 桁）

39-68

フォルダ名（半角 30 桁）

70-99

公開名（半角 30 桁）

101-110

最終更新日（半角 10 桁：dd/mm/yy）（プログラムリポジトリのみ）

112-119

最終更新時刻（半角 8 桁：hh:mm:ss）（プログラムリポジトリのみ）

全てのリポジトリにおいて、１行に出力される文字列の長さは、119 桁（半角）です。各
データの間には、1 桁の（半角）空白が区切り文字として挿入されます。
リポジトリコードが正しくない場合、処理が失敗し何も出力されません。

自動処理
開発エンジンは、開発モードでバックグラウンド処理を自動的に処理することができます。
Magic.ini ファイルの［MAGIC_ENV］セクションで
AutomaticProcessingSequenceFile= ファイル名
リファレンス
Magic eDeveloper V9 Plus813

第 19 章 - ユーティリティと指定された場合、エンジンがバックグラウンドモードで起動されると、ファイルで指定された処理を自動的に実行します。ファイルに記述する構文は、前述の処理コマンドと同じです。
バックグラウンドモードで起動し、アプリケーションサーバとして動作していない場合
は、自動処理の終了後にエンジンが終了します。
この機能は、特定の指定した時間に一連の処理を実行させたい場合に有効です。
ファイルに指定には、論理名が使用できます。

自動処理手順の例
２番目のアプリケーションのリポジトリ出力を自動的に行うには以下のようにします。
Magic.ini ファイルの［MAGIC_ENV］セクションに 次のように追加します。
AutomaticProcessingSequenceFile=c:¥tools¥operations.txt
operations.txt ファイルには以下のように記述します。
Application,2,Export, %Path%MyApplication.exp, Repository=A WithModels=Y
Magic を起動するショートカットを作成します。ここで、ApplicationStartup=B とし、必要に応じて Magic の実行に必要なユーザ名やパスワードを指定してください。例えば以下のようにします。
C:¥program files¥magic 940¥MGgenw.exe /ActivateRequestsServer=N /ApplicationStartup=B /user=guest /password=guest /AutomaticProcessingSequenceFile=AutoProcess1.txt

グローバルパラメータ情報
ユーザ定義開発メニューから起動されたツールアプリケーションが、起動元のアプリ
ケーション情報を取得する必要がある場合、GetParam 関数を使用することで可能になります。
この場合のアプリケーションに関するグローバルパラメータは以下の通りです。
パラメータ名値

MG_ApplicationIDX

アプリケーション番号

MG_ApplicationPrefix

アプリケーションの識別子

MG_ApplicationName

アプリケーション名

MG_CurrentObject

現在カーソルがパークしているオブジェクトの行番号を表
す数値

MG_CurrentObjectISN

現在カーソルがパークしているオブジェクトの ISN（内部番号）を表す数値

MG_CurrentObjCheckedOut

最後にパークしたか処理したオブジェクトがチェックアウ
ト状態の場合「True」が返ります。チェックイン状態の場
合は「False」が返ります。
アプリケーションがチーム開発モードに定義されていない
場合は、値は設定されません。

814

リファレンス
Magic eDeveloper V9 Plus

モニタユーティリティ
パラメータ名値

MG_CurrentRepository

現在カーソルがパークしているリポジトリを表す数値が返ります。数値は以下のようにリポジトリに対応しています。
• 1 … モデル
• 2 … テーブル
• 3 … プログラム• 4 … ヘルプ
• 5 … 権利• 6 … メニュー
• 7 … コンポーネント

MG_TeamDev

アプリケーションがチーム開発モードかどうかを返します。
チーム開発モードの場合、「True」が返ります。

MG_ToolEntry

現在実行中のツールメニューの指定内容が返ります。

MG_TotalModels

コンポーネントを除いたモデルの総数
例：アプリケーションが 20 のモデルを持っているならば、この値は 20 を返します。

MG_TotalTopModels

フォルダーなしで定義されているモデルの総数

MG_TotalTables

コンポーネントを除いたテーブルの総数

MG_TotalTopTables

フォルダーなしで定義されているテーブルの総数

MG_TotalPrograms

コンポーネントを除いたプログラムの総数

MG_TotalTopPrograms

フォルダーなしで定義されているプログラムの総数

MG_TotalHelpScreensコンポーネントを除いたヘルプ画面の総数

MG_TotalTopHelpScreens

フォルダーなしで定義されているヘルプ画面の総数

MG_TotalRights

コンポーネントを除いた権利の総数

MG_TotalTopRights

フォルダーなしで定義されている権利の総数

MG_TotalComponents

コンポーネントの総数

MG_TotalTopComponents

フォルダーなしで定義されているコンポーネントの総数

モニタユーティリティ
モニタユーティリティは、指定した MRB を使用するアプリケーションサーバを監視します。
Magic のインストールディレクトリ内にある、MGRQMonitor.exe をダブルクリックする
か、Windows のステータス・バーの上に表示されている MRB のアイコンを右クリック
し、表示されたコンテキストメニューから「Monitor」を選ぶことでユーティリティが実行されます。
モニタユーティリティの画面は、以下に説明するウィンドウで構成されています。

アプリケーションサーバ
このウィンドウには、すべてのアクティブなサーバーが表示されます。
［動作］メニューから［アプリケーションサーバ起動］や［アプリケーションサーバ停止］をクリックすることで、アプリケーションサーバエンジンを起動したり停止させたりできます。
［アプリケーションサーバ］ウィンドウには以下のカラムがあります。
• ホスト/ポート……エンジンが実行されているホスト名とポート番号が表示されます。
815
リファレンス
Magic eDeveloper V9 Plus

第 19 章 - ユーティリティ• PID……エンジンプロセスのプロセス ID が表示されます。
• アプリケーション……エンジンが実行しているアプリケーション名が表示されます。
• 状態……エンジンの状態が表示されます。
• 現在のスレッド数……現在実行中のスレッド数が表示されます。
• ピークスレッド数……今までの同時実行スレッド数のピーク値が表示されます。
• 最大スレッド数……同時実行可能な最大スレッド数が表示されます。
• リクエスト数……処理されたリクエストの数が表示されます。
• コンテキスト数……有効なコンテキストの数が表示されます。
• 平均リクエスト時間……リクエストの平均処理時間が表示されます。
アプリケーションサーバーを停止させると、確認表示のダイアログボックスが表示されます。稼働中のアプリケーションサーバーに対して［OK］をクリックすると、エンジンは終了します。サーバーが動作していない場合、モニタユーティリティは、エラーメッ
セージを表示します。

コンテキストこのウィンドウは、選択した MRB のコンテキストスレッドを表示します。
［コンテキスト］ウィンドウには以下のカラムがあります。
• コンテキスト ID……コンテキストの ID が表示されます。
• リクエスト ID……コンテキスト内で有効なリクエスト ID が表示されます。
• プログラム名……コンテキストでオープンされたプログラム名が表示されます。
• ユーザ名……コンテキスト内でシステムにログインしたユーザ名が表示されます。
• 状態……コンテキストの状態が表示されます。
• 未使用時間……コンテキストが最後に実行してからの経過時間が表示されます。
［動作］メニューから［コンテキスト破棄］をクリックすると、選択したコンテキストを破棄することができます。
コンテキストが破棄される際に、確認表示のダイアログボックスが表示されます。アク
ティブなコンテキストに対して［OK］をクリックすると、コンテキストは破棄されます。
コンテキストがアクティブでない場合、モニタユーティリティは、エラーメッセージを表示します。コンテキストが破棄された場合、カーソルは次のコンテキストにパークし
ます。

リクエスト
このウィンドウは、選択した MRB によってサーバに送られたリクエストを表示します。
［動作］メニューから［リクエスト削除］をクリックすることで、指定したリクエストを削除することができます。
［リクエスト］ウィンドウには以下のカラムがあります。
• アプリケーション／プログラム……リクエストの処理を実行しているアプリケー
ション名とプログラム名が表示されます。
• クライアント……リクエストを送信したクライアントのホスト名が表示されます。
• 状態……リクエストの状態を表示します。（失敗、完了、処理中、ペンディング）• 送信時刻……リクエストが MRB によって送信された時刻を表示します。
• 経過時間……リクエストが MRB に送信され、完了するまでの時間（秒数）を表示します。
• 処理サーバ……リクエストが処理されたサーバのホスト名とポート番号が表示され
ます。

816

リクエストが削除される際に、確認表示のダイアログボックスが表示されます。ペンディ
ングのリクエストに対して［OK］をクリックすると、リクエストは削除されます。リク
エストがすでに処理されている場合は、削除できません。
リファレンス
Magic eDeveloper V9 Plus

ドキュメントテンプレート機能

統計
このウィンドウでは、リクエストの統計情報が表示されます。以下の内容が表示されます。
• 失敗したリクエスト……完了できなかったリクエストの数• 完了したリクエスト……完了したリクエストの数• 処理中のリクエスト…… 処理中のリクエストの数• ペンディング状態のリクエスト……処理待ち状態のリクエストの数• 全リクエスト…… 上記の全リクエストの総数
リクエストの数は、色分けされた棒グラフで表示されます。この色は、［オプション］メ
ニューの［リクエストフィルタ］で起動される［リクエストフィルタ］ダイアログで指定できます。
［デフォルト］ボタンをクリックするとデフォルト状態に戻すことができます。

利用可能アプリケーション［利用可能アプリケーション］をクリックすると、有効なアプリケーションを表示する
ウィンドウをオープンすることができます。

ウィンドウ表示［表示］メニューから表示するウィンドウを選択することができます。
［ウィンドウ］メニューでは、ウィンドウの表示方法を選択できます。
［デフォルト配置］をクリックするとオリジナルの表示方法に戻ります。
［動作／再表示］（F5）を実行するとウィンドウ表示がリフレッシュされます。
［オプション／再表示設定］を実行することで、モニタユーティリティの表示のリフレッ
シュするタイミングを指定できます。Magic がモニタユーティリティの値をリフレッシュ
する前に、秒数かリクエスト数でリフレッシュのタイミングを指定してください。

サーバのモニタ［モニタ］メニューから、［モニタ開始］をクリックすることで、監視を始めることができます。サブメニューには、選択可能なサーバが表示されます。
「Local Broker」がデフォルトです。
［オプション／ MRB 一覧］をクリックすることで、監視するサーバ（MRB）を追加した
り、削除することができます。
［モニタ停止］をクリックすると、サーバの監視を止めることができます。

ドキュメントテンプレート機能
Magic には、ドキュメントテンプレート機能が用意されています。この機能を使用して、テーブル、ダイアログ、エンドユーザ用のフォームなど、アプリケーションの構成要素の情報を出力できます。この内容は、アプリケーションの仕様書として開発者が利用することができます。

リファレンス
Magic eDeveloper V9 Plus817

第 19 章 - ユーティリティ

テンプレートドキュメントの作成
ドキュメント（仕様書など）を作成する場合、まず、ドキュメントテンプレートファイ
ルを作成します。ファイルの作成方法は、この後の「ドキュメントテンプレートファイ
ルの書式」に掲載しています。このドキュメントテンプレートファイルは、テキスト形
式でなければならず、また、行の幅は 256 文字以内でなければなりません。なお、出力されたドキュメントの幅は、132 文字になります。
デフォルトのドキュメントテンプレートファイルとして、DOC_STD.JPN と
DOC_EXT.JPN の 2 つのファイルが用意されており、このファイルをサンプルとして使用することができます。この 2 つのドキュメントテンプレートファイルでは、すべてのデー
タ項目が入ったドキュメントが作成されます。
ドキュメントテンプレートファイルが用意できれば、出力ユーティリティを仕様書モードで実行し、ドキュメントを作成します。作成手順は、次のようになります。
1. アプリケーションをオープンし、［設定／動作環境］を選択します。その後、［外部参照ファイル］タブを選択します。
2.［編集／テーブル位置付け］を選択するかページダウンし、［ドキュメントテンプ
レートファイル］欄を表示します。この欄に、ドキュメントテンプレートファイルの名前を入力します。
3.［ファイル／リポジトリ入出力］（Shift+F10）を選択し、［リポジトリ入出力］ダイア
ログを表示します。
4.［操作］欄を「D ＝仕様書出力」に設定します。
5.［リポジトリタイプ］欄で一覧を表示し、Magic のオブジェクトを選択します（ただし、「アプリケーション」は除きます）。ここで選択したオブジェクトについて、ドキュメントが出力されることになります。なお、テンプレートファイルには、ここで選択したオブジェクトのセクションが定義されていなければなりません。
6. ドキュメントを出力したいオブジェクトがほかにもあれば、そのオブジェクトを［リポジトリタイプ］欄で選択した後、次のステップ 5 から 9 までの作業を繰り返します。なお、テンプレートファイルには、選択したオブジェクトのセクションが定義されていることが必要です。
7. オブジェクトの要素のうち、特定の範囲の要素を指定したい場合、［開始番号］と［終了番号］の各欄をズームして、範囲を指定します。
8.［ファイル名］欄にファイルの名前を入力します。このファイルにドキュメントが出力されます。なお、この欄にはアプリケーション識別子が自動的に入力されます。
この識別子により、ファイルはアプリケーションと同じディレクトリに格納されることになります。この識別子は、［アプリケーション］テーブルで定義されているものです。この識別子は、上書きして変更できます。
9.「OK」をクリックし、出力後の内容を確認します。
Magic は、まずドキュメントテンプレートファイルの記述内容をチェックします。選択したコンポーネントに対応するセクションに書式エラーが見つかった場合、エラー
メッセージが表示されます。処理はこの段階で終了します。
10.ほかのオブジェクトのドキュメントを作成するには、［リポジトリタイプ］欄に戻り、再度コンポーネントを選択します。
ドキュメントジェネレータを中断するには、［取消］を押します。
ドキュメントジェネレータの実行時、［プリンタ］テーブルの最初の行が参照され、この行をもとに 1 ページの行数やプリンタ制御文字セットなどの情報が取り込まれます。
［プリンタ］テーブルは、［設定／プリンタ］を選択すると開きます。
［プリンタ］テーブルに定義されているプリンタ名を［ファイル名］欄に設定すると、データをプリンタに直接出力することもできます。

ドキュメントテンプレートファイルの書式

818

ドキュメントテンプレートは、各行にキーワードと通常のテキストが並ぶ形式になります。キーワードは、行の任意の場所に置くことができます。また、キーワードとテキス
トには、大文字、小文字のどちらでも使用できます。
リファレンス
Magic eDeveloper V9 Plus

ドキュメントテンプレート機能
ドキュメントテンプレートの行（コマンド行）は、制御行、出力行、コメント行に分けられます。どの行も特殊文字で始めなければなりません。この特殊文字により、その行がコマンド行であることが認識されます。

制御行
制御行には、レポートセクションデリミタ行と条件識別子行の 2 種類があります。どちらの場合も、特殊文字は「#」で、必ずこの文字で始めなければなりません。

レポートセクションデリミタ
レポートセクションデリミタ行とは、Magic のデータ構造（各種コンポーネント）のうち、レポートに出力するセクションの始まりと終わりを示す行をいいます。したがって、同一のセクションに関連するコマンド行はすべては、この行と行の間に入れる必要があります。また、セクションの中のセクション（サブセクション）についても、通常のセクションと同様、レポートセクションデリミタ行を使用して区切ることが必要です。
セクション開始とサブセクション開始を示すレポートセクションデリミタは、次のとおりです。
#Section セクション名キーワード , パラメータ 1, パラメータ 2, . . . , パラメータ n
上記で、「パラメータ」は追加パラメータを示します。ここにはオプションをコンマで区切って指定します。指定できるオプションは、セクションによって異なります。
「セクション名キーワード」には、通常は文書化する Magic のデータ構造が入ります。たとえば、［モデル］リポジトリのレポートセクションは次のように指示します。
#Section Model_Table,Top
セクションの終わりを示すデリミタは次の形式になります。
#End セクション名キーワード
サブセクションを指定したい場合、そのコマンド行は、セクションのコマンド行の中にネストします。たとえば、プログラムの中のタスク特性とタスク制御をそれぞれ、サブセクションとして記述したい場合、テンプレートのセクション記述は、次のようになります。
#Section Program———————————————————————————
プログラムに関するコマンド行 ——————————————————————————————#Section Task_Properties———————————————————————————
タスク特性に関するコマンド行 ——————————————————————————————#End Task_Properties#Section Tasks_Control———————————————————————————
タスク制御に関するコマンド行 ——————————————————————————————#End Tasks_Control———————————————————————————
その他、プログラムの構成に関するコマンド行———————————————————————————#End Program

リファレンス
Magic eDeveloper V9 Plus819

第 19 章 - ユーティリティ

条件識別子
条件識別子行とは、If、Else、Endif などを使用して条件を記述した行をいいます。この行を使うことで、指定した条件から返る値（「True」または「False」）によって、出力するテキストブロックを指定できます。
#If 条件Block_of_Text_1（テキストブロック 1）#Else
Block_of_Text_2（テキストブロック 2）#Endif
上記において、「条件」は論理演算子（条件式）で、ここでキーワードの値と定数、またはキーワードとキーワードの比較を行います。使用できる演算子は次のとおりです。
シンボル

意味

==

等しい

!=

等しくない

>

より大きい

>=

より大きいまたは等しい

<

より小さい

<=

より小さいまたは等しい「条件」の行に記述できる比較式は、1 つに限られます。ただし、ネストにすることができるので、複雑な比較式を指定することもできます。ネストにする場合、複数の比較式
をそれぞれ別々の行に記述します。これで、記述した比較式がすべて満足されたときにテキストが出力されます。
以上の 2 つがドキュメントテンプレートの制御行ですが、一方、出力行とは、ドキュメ
ントジェネレータにより実際に出力されるテキストブロックをいいます。この出力行には、ヘッダ行、データ行、フッタ行の 3 種類があります。以下、順に説明します。

ヘッダ行
ヘッダ行は、その名の通りヘッダの行で、この行によりレポートの見出しが出力されます。ヘッダ行には、実際のセクションを示すキーワードのほか、グローバルキーワードを記述することもできます。
グローバルキーワードは、ドキュメントテンプレートファイルのどこにでも記述できます。
各ヘッダ行の先頭には「H」を記述します。

フッタ行
ヘッダ行は、フッタに関連する行で、この行によりレポートのフッタが出力されます。
フッタ行に指定できるのは、セクションを示すキーワードだけで、グローバルキーワー
ドは記述できません。フッタ行は「F」で始まります。

データ行
データ行の先頭には、「D」を記述します。このデータ行では、Magic の構成要素がすべてループ処理で出力されます。

820

リファレンス
Magic eDeveloper V9 Plus

ドキュメントテンプレート機能
データ行は、実際に出力される Magic の構成要素に対応しています。データ行の内容は、セクションの種類によって異なります。
詳しくは、後述の「ドキュメントレポートセクション」を参照してください。

以上、3 種類の出力行にはいずれも、プリンタ制御コードを記述できます。たとえば、標
準サイズの用紙にレポートを縮小して出力したい場合、縮小用のプリンタ制御コードを
使います。

コメント
コメント行は、レポートには出力されない注釈です。コメント行には、参考用の説明を記述します。通常、コメント行は、ヘッダ行またはフッタ行に指定します。
コメント行の先頭には、「;」または「*」を付けます。

ドキュメントレポートセクション
ドキュメントのレポートセクションには、次の 3 種類があります。
• フルスクリーン……［タスク特性］画面など、入力用の画面に対応するレポートセクションです。画面の内容を正確にレポートに出力したい場合、必要なキーワードを画面のデータの順番どおりに各行に記述します。
• テーブル……［式］テーブルなど、複数行のテーブルのレポートセクションです。このセクションでは、必要なキーワードをすべて使用してサンプルのデータ行を指定します。このサンプルを使用して、ドキュメントレポートジェネレータにより、テーブ
ルの行が出力されます。
• フォーム……ヘルプ画面や入力フォームなど、テキストブロックに関するレポートセ
クションです。このセクションでは、通常、キーワードは記述しません。ただし、画面の場所は指定しなければなりません。キーワードが必要ないことから、このレポー
トセクションでは、サンプルの出力行や画面を指定する必要はありません。
また、このセクションでは、サブセクション用として Frame（フレームタイプ）と Offsetの 2 つのパラメータを指定できます。詳しくは、「特殊パラメータ」の解説を参照してく
ださい。

レポートセクションの階層構造
以下は、ドキュメントジェネレータで出力されるレポートセクションの内容と、その階層構造を示したものです。
以下の一覧では、下位レベルレポート（サブセクション）は、ネスト形式で右に寄せて示しています。
セクションまたはサブセクションは、同じものを複数記述することもできます。このため、Magic の構成要素のうち特定のものについて 2 つレポートを出力したいときに便利です。また、内容をさらに詳しくして、同じセクションを出力することもできます。
アプリケーション［モデル］リポジトリ［テーブル］リポジトリ［カラム］テーブル［インデックス］テーブル［インデックスセグメント］テーブル［外部キー］テーブル［ヘルプ］リポジトリ
ヘルプ表示ブロック（ヘルプフォーム）
リファレンス
Magic eDeveloper V9 Plus821

第 19 章 - ユーティリティ［メニュー］リポジトリ［コンテキストメニュー定義］テーブ
ル
メニュー行の内容［プルダウンメニュー定義］テーブル
メニューの内容
CTL データ
イベント［権利］リポジトリ［プログラム］リポジトリ
タスク特性
SQL コマンドSQL WHERE 句
タスク制御［変数項目］テーブル［DB テーブル］テーブル［入出力ファイル］テーブル［ソートテーブル］［イベント］テーブル
イベントパラメータ［式］テーブル［フォーム］テーブル
フォーム表示ブロック
表示項目［処理レベル］テーブル［処理］テーブル
処理の内容

キーワード
キーワードには、先頭に「%」を付けます。これで、ドキュメントテンプレートファイ
ルのほかのテキストと区別されます。キーワードによっては、パラメータを付加することもできますが、その場合、先後のパラメータの右にも「%」を付けます。つまり、キー
ワードの行は、その前後を「%」で囲みます。書式は、次のようになります。
% キーワード , パラメータ 1, パラメータ 2, . . . , パラメータ n%

パラメータ
キーワードには、パラメータを付加することができます。パラメータはオプションで、次の 3 種類があります。
• nn……項目の幅を示す数値です。このキーワードに対応するデータは、ここで指定した幅で出力されることになります。
• Wrap……nn を指定しており、このキーワードに対応するデータが nn で示される幅に収まりきらなかった場合、自動的に改行され次の行にデータが出力されます。Wrap を指定してないときには、キーワードにより出力されるデータが nn で示される幅に収まらなかった場合、はみ出したデータは出力されません。
例：次のようなキーワード行があり、キーワードにより出力されるデータが 23 文字

822

リファレンス
Magic eDeveloper V9 Plus

ドキュメントテンプレート機能
で、その内容が「This is a sample output」だったとします。
%Keyword, 10,Wrap%
上記では、出力結果は次のようになります。
This is asample out
put
一方、キーワード行が次のような場合、%Keyword, 10%
以下のような出力結果になります。
This is a
上記においては、「sample output」という部分は出力されません。
• Blank……このパラメータを指定しておくと、キーワードにより出力されるデータが数値で、その数値が 0 の場合、空白が出力されます。

特殊パラメータ
キーワードによっては、専用のパラメータが用意されていることもあります。このパラメータにより、結果が修正されます。特殊パラメータとしては、次のようなものがあります。
• Name……このパラメータを付加しておくと、項目のコードではなく、項目の内容が出力されます。Magic のダイアログやリポジトリの、ファイルパラメータ項目（ファイルに関するデータが入る項目）には、多くの場合、Magic の別のリポジトリの構成要素を示すコードまたはインデックスが格納されています。
こういった項目の場合、この Name を付加しておくと、コードやインデックス自体ではなく項目の内容（名前）が出力されます。たとえば、ファイルテーブルの項目に関するサブセクションがあり、ここでキーワードとして Fld_Hlp を記述していたとします（このキーワードでは、項目のヘルプ画面の数が出力されます）。このキーワードに Name を指定しておくと、［ヘルプ］リポジトリに定義されているヘルプ画面のタイトルがレポートに出力されます。
• Short または Long……この 2 つのパラメータは、式の番号が出力されるキーワードで使用できます。Short または Long を指定しておくと、式の番号ではなく、式自体が簡略形式（Short を指定したとき）または詳細形式（Long を指定したとき）で出力されます。ただし、キーワードの処理対象の項目の値が「Yes」、「No」、式番号のいずれかを取り、その値が「Yes」または「No」のときには例外です。項目の値が「Yes」または「No」のときには、Short または Long を指定しておいても、その値が出力されます。
• File……このパラメータは、［フォーム］テーブルの項目位置のサブセクションでだけ有効です。このパラメータを指定しておくと、項目に関連しているファイルの名前が出力されます。

キーワードの種類
キーワードには、グローバルキーワードとローカルキーワードの 2 種類があります。
グローバルキーワードは、ドキュメントテンプレートファイルのどこででも使用できます。たとえば、Date や Time は、それぞれレポートが印刷された日付と時刻を示します。
ローカルキーワードは、特定のセクションでのみ有効です。
セクションの中にネストされているサブセクション（たとえば、リポジトリの項目をズー
ムすると表示されるダイアログがサブセクションに対応します。セクションの階層構造については、本章の「プログラム - ドキュメントテンプレートファイルの書式」を参照
してください）では、そのセクションに関連するキーワードを使用できます。この種類のキーワードは、ローカルキーワードです。
リファレンス
Magic eDeveloper V9 Plus823

第 19 章 - ユーティリティ

セクションデリミタとキーワード
以下、セクション（リポジトリ）ごとに、セクションデリミタとキーワードを一覧で説明します。

モデルリポジトリ
セクションデリミタ：Model_Table
キーワード

出力結果

IDX

モデルリポジトリの項番

MODEL_NAME

モデルの名前MODEL_FOLDER

フォルダ名

CLASS

クラス

ATTR

型

PUBLIC_NAME

公開名

ヘルプモデル特性：MDL_FRM_DSP_TYPE= 69
キーワード

出力結果

MDL_MODELモデル

MDL_HLP_FONT

フォント

MDL_HLP_FRAME_TYPE

境界

MDL_HLP_TITLE_BAR

タイトルバー

MDL_HLP_SYS_MENU

システムメニュー

MDL_HLP_WIN_FILE

ヘルプファイル名

MDL_HLP_WIN_COMMAND

ヘルプコマンド

MDL_HLP_WIN_KEY

ヘルプキー

MDL_HLP_LEFT

左辺位置

MDL_HLP_TOP

上辺位置

MDL_HLP_WIDTH幅

MDL_HLP_HEIGHT

高さ

ATTR

ヘルプのタイプ• 73…内部ヘルプ• 87…Windows ヘルプ

項目モデル特性：MDL_FRM_DSP_TYPE= 68
キーワード

オプション／
特殊パラメータ

MDL_FLD_PICTrue型

MDL_RANGE

824

出力結果

範囲

MDL_FLD_HLP

Name

ヘルプ画面の番号／名前

MDL_FLD_PROMPT

Name

自動ヘルプの番号／名前

MDL_FLD_TOOLTIP

Name

ツールチップの番号／名前

MDL_STYLE_BROWSER（スタイル）ブラウザ形式

MDL_STYLE_BROWSER_TAB（スタイル）ブラウザ形式テーブル

MDL_STYLE_GUI0（スタイル）GUI 表示

MDL_STYLE_GUI0_TAB（スタイル）GUI 表示テーブル

MDL_STYLE_GUI1（スタイル）GUI 出力
リファレンス
Magic eDeveloper V9 Plus

ドキュメントテンプレート機能
MDL_STYLE_GUI1_TAB（スタイル）GUI 出力テーブル

MDL_STYLE_TXT（スタイル）テキスト形式

MDL_STYLE_HTML（スタイル）HTML 形式

MDL_FLD_SEL_PRG_NR

Name

選択プログラムの番号／名前

MDL_FLD_SEL_PRG_CL

起動モード

MDL_RET_ACT

実行イベント

MDL_RB_COLS

列数

MDL_SLD_STEP

スライダステップ

MDL_VISUAL_LINES

可視行数

MDL_VISUAL_STYLE

スタイル

MDL_VISUAL_BORDER

境界

MDL_VISUAL_MULTI_LINE

複数行編集

MDL_VISUAL_COLOR色

MDL_VISUAL_FONTフォント

MDL_NULL_ALLOWNULL 値可MDL_NULL_VAL

Name

NULL 計算値

MDL_NULL_DSPName

NULL 表示文字列

MDL_NULL_DEFAULT

NULL デフォルト（Yes/No）

MDL_DEFAULT

デフォルト値

MDL_DB_DEFAULT

データベースデフォルト値

MDL_FLD_TRANS

データ変換

MDL_FLD_DEF_STOR

デフォルト記憶形式

MDL_FLD_SIZE

サイズ

MDL_FLD_MODIF

修正許可

MDL_FLD_DB_DEF

データベース定義

MDL_FLD_DB_NAME
MDL_FLD_DB_INFO

データベース名Name

データベース情報

MDL_FLD_TYPE

SQL タイプ

MDL_FLD_USER_TYPE

SQL ユーザタイプ

MDL_FLD_TYPELIB

タイプライブラリ

MDL_FLD_OBJNAME

オブジェクト名

MDL_FLD_SUB_OBJNAME

サブオブジェクト名

MDL_FLD_REMOTE_HOST

リモートホスト

MDL_FLD_INSTANTIATION

インスタンス化

MDL_FLD_ACTIVEX_DEFAULT

ActiveX デフォルト

MDL_FLD_CELL_MODEL

セルモデル

MDL_UPDATE_STYLE

更新形式

MDL_CTRL

コントロールタイプ

フォームモデル特性
キーワード

オプション／
特殊パラメータ

出力結果

MDL_DSP_MODELモデル

MDL_DSP_MODEL_WINDOW

モーダルウィンドウ

MDL_DSP_FLOATING_WIND

フローティングウィンドウ

リファレンス
Magic eDeveloper V9 Plus825

第 19 章 - ユーティリティ
MDL_DSP_UOM_TYPE

寸法単位

MDL_DSP_DOCFILE

ヘッダファイル名

MDL_DSP_TMPL_FILE_NAME

HTML ファイル

MDL_DSP_TOKEN_PREF

トークン前付符号

MDL_DSP_TOKEN_SUF

トークン後付符号

MDL_DSP_VERT_FACTOR

垂直精度

MDL_DSP_HOR_FACTOR

水平精度

MDL_DSP_SHOW_GRID

グリッド表示MDL_DSP_GRID_X

グリッド間隔（X）

MDL_DSP_GRID_Y

グリッド間隔（Y）

MDL_DSP_AREA

区分

MDL_DSP_EXPAND_FORM

フォーム拡大MDL_DSP_INP_FRM

入力フォームMDL_DSP_CNTXT_VARS

コンテキスト変数

MDL_DSP_USE_COOKIES

Cookie を使用

MDL_DSP_DOMAIN_RESTR

ドメイン制限MDL_DSP_EXPR_DATE_E Short/Long
XP

日付制限

MDL_DSP_EXPR_TIME_E Short/Long
XP

時間制限

MDL_DSP_SECURED

保護チャネルMDL_DSP_USE_BEST_PLT

パレット最適化

MDL_DSP_ALLOW_DROPPING

ドロップ許可MDL_DSP_WINDOW_SORT

自動 Z オーダ

MDL_DSP_SNAP_2_SIZE

サイズ調整

MDL_DSP_TITLE_BAR

タイトルバー

MDL_DSP_SYS_MENU

システムメニュー

MDL_DSP_MIN_BUTTON

最小化ボタン

MDL_DSP_MAX_BUTTONMDL_DSP_HLP

826

最大化ボタン
Name

ヘルプ画面の番号／名前

MDL_DSP_FONTフォント

MDL_DSP_COLOR色

MDL_DSP_FRAME_TYPE

フレームタイプ

MDL_DSP_SPLIT_WINDOW

ウィンドウ分割

MDL_DSP_PRIMARY_DISPLAY

初期表示

MDL_DSP_WTH_BOR

境界線の表示MDL_DSP_FRMSET_SPC

フレームの境界MDL_DSP_FRAMESET_NAME

フレーム名

MDL_DSP_FRAMESET_SCROLLABLE

スクロール可MDL_DSP_FRAMESET_SIZEABLE

サイズ変更可MDL_DSP_REL_SIZE

相対サイズ

MDL_DSP_SPLITTER_OFFSET

分割割合

MDL_DSP_SPLITTER_PLACEMENT

分割位置

MDL_DSP_FIT_2_CLIENT

MDI 調整MDL_DSP_STARTUP_POS

開始位置
リファレンス
Magic eDeveloper V9 Plus

ドキュメントテンプレート機能
MDL_DSP_ALLOW_DROPPING

ドロップ許可MDL_DSP_WALLPAPER

背景

MDL_DSP_FRAME_LEFT

左辺位置

MDL_DSP_FRAME_TOP

上辺位置

MDL_DSP_FRAME_WIDTH幅MDL_DSP_FRAME_HEIGHT

高さ

MDL_DSP_SPLIT_WINDOW_CHILD

分割子ウィンドウ

MDL_DSP_DEFAULT_BUTTON

デフォルトボタン

MDL_DSP_INTERFACE_TYPE

フォーム／コントロール

コントロールモデル特性：
キーワード

オプション／
特殊パラメータ

出力結果

MDL_FRM_MODELモデル

MDL_FRM_TEXT

テキスト

MDL_FRM_NAME

コントロール名

MDL_FRM_LABEL

選択項目リスト

MDL_FRM_DISP_LIST

表示項目リスト

MDL_FRM_NE_SW_LINE（スタティックタイプ）右上がり
対角線

MDL_FRM_NW_SE_LINE（スタティックタイプ）右下がり
対角線

MDL_FRM_HOR_LINE（スタティックタイプ）水平線

MDL_FRM_VER_LINE（スタティックタイプ）垂直線

MDL_FRM_RECT（スタティックタイプ）四角形

MDL_FRM_ROUND_RECT（スタティックタイプ）丸四角形

MDL_FRM_ELLIPSE（スタティックタイプ）楕円形

MDL_FRM_TAB_ATTR型

MDL_FRM_PicTrue

書式

MDL_FRM_SrcTable

ソーステーブル

MDL_FRM_DispFld

表示項目

MDL_FRM_LnkFld

リンク項目

MDL_FRM_CTRLIndx

インデックス

MDL_FRM_FldRange

範囲

MDL_DSP_REPEATED_LN

繰返し行数

MDL_DSP_TMPL_FILE_NAME

HTML ファイル

MDL_FRM_IMG_BUTTON

ボタンスタイル

MDL_FRM_DEF_IMG_NAME

デフォルトイメージ／ Java ファ
イル名／ AcitveX ファイル名

MDL_FRM_SND_FILE_NAME

サウンドファイル名

MDL_FRM_RET_ACT

実行イベントMDL_FRM_DEF_IMG_NAME

画像一覧ファイル名

MDL_FRM_EXPAND_IMAGE_IDX

展開表示画像 Idx

MDL_FRM_COLLAPS_IMAGE_IDX

縮小表示画像 Idx

MDL_FRM_PARKED_EXPANDED_IMAGE_IDX パーク展開表示 Idx

リファレンス
Magic eDeveloper V9 Plus827

第 19 章 - ユーティリティ

828

MDL_FRM_PARKED_COLLAPSED_IMAGE_ID
X

パーク縮小表示 Idx

MDL_FRM_AUTO_EXPAND

自動展開

MDL_FRM_NODE_PRELOAD

パーク自動読込

MDL_FRM_DESC_VAR

表示項目

MDL_FRM_VARIABLE_NAME

項目

MDL_FRM_VISIBLE可視

MDL_FRM_Must_Inp

必須入力

MDL_FRM_Allow_Inp

修正許可

MDL_DSP_ALLOW_DRAGGING

ドラッグ許可MDL_DSP_ALLOW_DROPPING

ドロップ許可MDL_FRM_Sel_Prg_Nr

選択プログラムの番号／名前Name

MDL_FRM_sel_prg_cl

起動モード

MDL_FRM_ALLOW_MIQ

照会モード時の修正許可

MDL_FRM_MULT_LIN_EDT

複数行編集

MDL_FRM_SCROLL_BAR

スクロールバー表示

MDL_FRM_VERT_SCROLL

垂直スクロール

MDL_FRM_HORZ_SCROLL

水平スクロール

MDL_FRM_LINE_DIVIDER区切り

MDL_FRM_COLUMN_DIVIDER

カラムの区切り線

MDL_FRM_TAB_IN_WIND

ウィンドウ内テーブル

MDL_FRM_ALLOW_RESIZE

サイズ変更可MDL_FRM_MULTI_MARKING

マルチマーキング

MDL_FRM_TEXT

カラムタイトル

MDL_FRM_Mark_Sort

ソートテーブル

MDL_FRM_Mark_Col

カラムのマーキング

MDL_FRM_ALLOW_CR

CR 許可

MDL_FRM_PASSWORD

パスワードエディット

MDL_FRM_IMG_STYLE

イメージスタイル

MDL_FRM_IMG_EFFECT

イメージ効果MDL_FRM_Color色MDL_FRM_FONTフォント

MDL_FRM_HOTSPOT_TYPE

ホットスポットタイプ

MDL_FRM_CTRL_HYPER_LNK

ハイパーリンク

MDL_FRM_CTRL_HYPER_LNK_TYPE

ハイパーリンクタイプ

MDL_FRM_CTRL_URL

URL

MDL_FRM_CTRL_DST_FRAME

出力先フレーム

MDL_FRM_CTRL_MAGIC_APP

アプリケーション名

MDL_FRM_CTRL_PUBLIC

公開プログラム名

MDL_FRM_CTRL_PARM

パラメータ

MDL_FRM_PARA_ALIGN

段落整列

MDL_FRM_INT_ATTR

HTML 内部属性

MDL_FRM_EXT_ATTR

HTML 外部属性

MDL_FRM_STABLE_ROWS

行数

MDL_FRM_STABLE_COLUMNS

列数
リファレンス
Magic eDeveloper V9 Plus

ドキュメントテンプレート機能
MDL_FRM_STABLE_BORDER

境界線の幅

MDL_FRM_STABLE_SPACING

セルの間隔

MDL_FRM_STABLE_PADDING

セルのパディング

MDL_FRM_ALT_TEXT

代替テキストMDL_FRM_INDENT

インデントレベル

MDL_FRM_FOLLOW_TEXT

テキストの整列

MDL_FRM_HSPACE

水平方向の余白MDL_FRM_VSPACE

垂直方向の余白MDL_FRM_Hlp

Name

ヘルプ画面の番号／名前

MDL_FRM_Prompt

Name

自動ヘルプの番号／名前

MDL_FRM_Tooltip

Name

ツールチップの番号／名前

MDL_FRM_STYLE

スタイル

MDL_FRM_BORDER_STYLE境界

MDL_FRM_CHOICE_COLS

列数

MDL_FRM_TAB_CTRL_SIDE

タブラベル位置MDL_FRM_COMBO_LINES

可視行数

MDL_FRM_IS_HOR_SLD

水平スライダMDL_FRM_SLD_STEP

ステップ

MDL_FRM_HOR_ALIGN

水平整列

MDL_FRM_VER_ALIGN

垂直整列

MDL_FRM_PLACEMENT_LEFT

左辺位置

MDL_FRM_PLACEMENT_WIDTH

幅割合

MDL_FRM_PLACEMENT_TOP

上辺位置

MDL_FRM_PLACEMENT_HEIGHT

高さ割合

MDL_FRM_OLE2_CLASSOLE ／ ActiveX クラス

MDL_FRM_OLE2_DISPLAY_AS

OLE 表示形式

MDL_FRM_OLE2_STORE_AS

OLE 形式

MDL_FRM_OLE2_AUTO_LINK

リンク自動更新

MDL_FRM_OLE2_FRAME_TYPE

OLE フレームタイプを使用

MDL_FRM_DSP_TYPE

フォームタイプ• 66…ブラウザ形式• 70…フレームセット形式• 71…GUI 表示形式
• 77…HTML マージ形式• 79…GUI 出力形式
• 72…HTML 形式• 84…テキスト形式

MDL_FRM_KEEP_TREE_VIEW

ツリー表示を保持

MDL_FRM_CTRL

コントロールタイプ

テーブルリポジトリセクションデリミタ：:File_Table
キーワード

出力結果

IDX

テーブルリポジトリの項番

リファレンス
Magic eDeveloper V9 Plus829

第 19 章 - ユーティリティ
キーワード

出力結果

FILE_NAME

テーブルの名前

FLD_CNT

カラムの数

KEY_CNT

インデックスの数

FKEY_CNT

外部キーの数SIZE

テーブルのサイズ

FILE_PATH

DB テーブル名

FILE_DB

物理データベース

FILE_FOLDER

フォルダ名

PUBLIC_NAME

公開名

テーブル特性
キーワード

出力結果

FILE_ACC_KEY

アクセスキー

ENCR

テーブル暗号化

CACHE_STRG

キャッシュ範囲RESIDENT

常駐テーブル

FILE_DB_INFO

データベース情報

ID_M_ROW

更新レコードの識別

SQL_OWNERSQL オーナー名

SQL_POSITIONSQL 位置SQL_POSITION_KEY

SQL インデックス

SQL_CHECK_EXISTSQL テーブルの存在チェック

SQL_FILE_TYPE

SQL テーブルのタイプ

SQL_HINTSQL ヒント

SQL_CURSOR

SQL カーソル

SQL_ARRAY_SIZESQL 配列のサイズ

SQL_FILESQL データベース情報

テーブルリポジトリのセクションのキーワードには、オプションはありません。

［カラム］テーブル
サブセクションデリミタ：Fields_Table
キーワード

出力結果

FLD_IDX

カラムテーブルの項番

FLD_NAME

カラム名

TYPE

830

オプション／
特殊パラメータ

Name

モデルの番号／名前

ATTR

型

PICTrue

書式

RANGE

範囲

リファレンス
Magic eDeveloper V9 Plus

ドキュメントテンプレート機能［カラム］特性
キーワード

オプション／
特殊パラメータ

出力結果

FLD_HLP

Name

ヘルプ画面の番号／名前

FLD_PROMPT

Name

自動ヘルプの番号／名前

FLD_TOOLTIP

Name

ツールチップの番号／名前

FLD_SEL_PRG_NR

Name

選択プログラムの番号／名前

FLD_SEL_PRG_CL

起動モード

FLD_MODIF

修正許可

FLD_TRANS

データ変換

FLD_STOR_AS

記憶型式

FLD_SIZE

サイズ

FLD_TYPE

データベースタイプ

FLD_USER_TYPE

データベースユーザタイプ

FLD_DB_DEF

データベース定義

FLD_DB_NAME

DB カラム名

FLD_DB_INFO

データベース情報

NULL_ALLOWNULL 値可NULL_VALNULL 計算値

NULL_DSPNULL 表示文字列

NULL_DEFAULT

NULL デフォルト（Yes ／ No）

DEFAULT

デフォルト値

DB_DEFAULT

データベースデフォルト値

CTRL
RET_ACT

コントロールのタイプ
Name

実行イベント

RB_COLS

ラジオボタンの列数

SLD_STEP

スライダのステップ

VISUAL_LINES

表示行数

VISUAL_STYLE

スタイル• W…Windows 立体• 3…凸体• S…凹体• 2…平面VISUAL_BORDER

境界• T…細線• H…太線• N…なしVISUAL_MULTI_LINE

複数行編集（Yes ／ No）

VISUAL_COLOR色

VISUAL_FONT

フォント番号

STYLE_BROWSER（スタイル）ブラウザ形式

STYLE_BROWSER_TAB（スタイル）ブラウザ形式テーブル

STYLE_GUI0（スタイル）GUI 表示

リファレンス
Magic eDeveloper V9 Plus

831

第 19 章 - ユーティリティ
キーワード

オプション／
特殊パラメータ

出力結果

STYLE_GUI0_TAB（スタイル）GUI 表示テーブル

STYLE_GUI1（スタイル）GUI 出力

STYLE_GUI1_TAB（スタイル）GUI 出力テーブル

STYLE_TXT（スタイル）テキスト形式

STYLE_HTML（スタイル）HTML 形式

UPDATE_STYLE

更新形式

TYPELIB

タイプライブラリ

OBJNAME

オブジェクト名

SUB_OBJNAME

サブオブジェクト名

REMOTE_HOST

リモートホスト

INSTANTIATION

インスタンス化FLD_DEF_STOR

デフォルト記憶型式

FLD_STOR_AS

記憶型式

ACTIVEX_DEFAULT

ActiveX デフォルト［インデックス］テーブル
サブセクションデリミタ：Keys_Table
キーワード

出力結果

KEY_IDX

インデックステーブルの項番

KEY_NAME

インデックス名KEY_TYPE

インデックスの種類（重複不可／重複可）

KEY_PRIMARY

プライマリキー［インデックス］特性
キーワード

出力結果

KEY_CLUSTERED

クラスタ化インデックス（Yes ／ No）

KEY_CONSTRAINT

インデックスの再作成

KEY_HINTヒント

KEY_DIR方向

KEY_RNG_MOD

範囲処理モード

KEY_DB_NAME

DB インデックス名

KEY_DB_INFO

データベース情報

KEY_VIR_REAL

インデックスタイプ［インデックスセグメント］テーブル
サブセクションデリミタ：Keys_Seg_Table
キーワード

オプション／
特殊パラメータ

SEG_IDX
SEG_FLD

832

出力結果
インデックスセグメントテーブル
の項番

Name

インデックスセグメントのカラム
名
リファレンス
Magic eDeveloper V9 Plus

ドキュメントテンプレート機能
SEG_SIZE

インデックスセグメントのサイズ

SEG_DIR

インデックスの順序

外部キーセクションデリミタ：FKeys_Table
キーワード

出力結果

FKEY_IDX

外部キーテーブルの項番

FKEY_NAME

外部キーの名前

R_TAB_IDX

参照テーブルのインデックス

R_TAB_NAME

参照テーブルの名前

PKEY_IDX

参照キーの番号

PKEY_NAME

参照キー名

CREATE_DB

DB に作成外部キーセグメントテーブル
セクションデリミタ：FKeys_Seg_Table
キーワード

出力結果

FKEY_SEG_IDX

外部キーセグメントテーブルの項番

CTAB_COL_IDX

カラムの項番CTAB_COL_NAME

カラム名

RTAB_COL_IDX

参照テーブルのカラムの項番

RTAB_COL_NAME

参照テーブルのカラム名コンポーネントリポジトリ
セクションデリミタ：Component
キーワード

出力結果

COMP_IDX

コンポーネントリポジトリの項番

COMP_NAME

コンポーネント名

COMP_FOLDER

フォルダ名

COMP_DESC

説明

コンポーネント特性
キーワード

出力結果

COMP_ID

コンポーネント ID

REVISION

レビジョン

MCI_FILE

MCI ファイル名

APPL_FILE

アプリケーションファイル名

APPL_PREFIX識別子

APPL_DATABASE

アプリケーションデータベース

ACCESS_KEY

アクセスキー

FLAT_MCF

フラット CTL

LOAD_IMM

即時有効

HELP_FILE

ヘルプファイル

リファレンス
Magic eDeveloper V9 Plus833

第 19 章 - ユーティリティ
HELP_KEY

ヘルプキー

コンポーネントモデル
セクションデリミタ：Comp_Models
キーワード

出力結果

MODEL_IDX

モデル番号

MODEL_NAME

モデル名

MODEL_REMARK

モデルの説明PUBLIC_NAME

公開名コンポーネントテーブル
セクションデリミタ：Comp_Tables
キーワード

出力結果

TABLE_IDX

テーブル番号

TABLE_NAME

テーブル名

TABLE_REMARK

テーブルの説明

PUBLIC_NAME

公開名コンポーネントプログラム
セクションデリミタ：Comp_Programs
キーワード

出力結果

PROGRAM_IDX

プログラム番号PROGRAM_NAME

プログラム名PROGRAM_REMARK

プログラムの説明

PUBLIC_NAME

公開名コンポーネントプログラムのパラメータ情報セクションデリミタ：COMP_PRG_SUBSEC
キーワード

出力結果

PRAM_DESC

パラメータ名ATTR

型

PICTrue

書式

コンポーネントヘルプ
セクションデリミタ：Compo_Helps
キーワード

出力結果

HELP_IDX

ヘルプ番号

HELP_NAME

ヘルプ名

HELP_REMARK

ヘルプの説明PUBLIC_NAME

公開名コンポーネント権利834

リファレンス
Magic eDeveloper V9 Plus

ドキュメントテンプレート機能
セクションデリミタ：Comp_Rights
キーワード

出力結果

RIGHTS_IDX

権利番号

RIGHTS_NAME

権利名

RIGHTS_REMARK

権利の説明

PUBLIC_NAME

公開名コンポーネントイベント
セクションデリミタ：Comp_Events
キーワード

出力結果

EVENTS_IDX

イベント番号

EVENTS_NAME

イベント名

EVENTS_REMARK

イベントの説明

PUBLIC_NAME

公開名

ヘルプリポジトリ
セクションデリミタ：Help_Screens
キーワード

出力結果

HLP_IDX

ヘルプリポジトリの項番

HLP_NAME

ヘルプの名前HLP_FOLDER

フォルダ名

HLP_WIN_TYPE

ヘルプのタイプ

PUBLIC_NAME

公開名

ヘルプ特性
キーワード

出力結果

MODEL

モデル

HLP_LEFT

左辺位置

HLP_TOP

上辺位置

HLP_WIDTH

幅HLP_HEIGHT

高さ

HLP_CLR色

HLP_FONTフォント

HLP_FRAME_TYPE

フレームタイプ

HLP_TITLE_BAR

タイトルバー（Yes ／ No）

HLP_SYS_MENU

システムメニュー（Yes ／ No）

HLP_WIN_FILE（Windows 型式）ヘルプファイル名

HLP_WIN_COMMAND（Windows 型式）ヘルプコマンド

HLP_WIN_KEY（Windows 型式）キー値

HLP_WIN_PROMPT

ヘルプ内容

HLP_URL

URL

ヘルプフォーム（ヘルプ表示ブロック）
リファレンス
Magic eDeveloper V9 Plus

835

第 19 章 - ユーティリティ
サブセクションデリミタ：Help_Block
ヘルプフォーム（ヘルプ表示ブロック）は、ヘルプ画面のサブセクションで、ヘルプ画
面の内容が出力されます。

権利リポジトリセクションデリミタ：Rights
キーワード

出力結果

IDX

権利リポジトリの項番

NAME

権利の名前

KEY

権利キー

PUBLIC

公開（Yes ／ No）

FOLDER

フォルダ名

PUBLIC_NAME

公開名

メニューリポジトリセクションデリミタ：Pulldown_Menus
キーワード

オプション／
特殊パラメータ

出力結果

IDX

テーブルの項番

MENU_TYPE

メニュータイプ

MENU_NAME

論理メニュー名

MENU_TEXT

メニューの名前

MENU_SH_KEY
MENU_HLP

ショートカットキー
Name

MENU_ACC_RGHT
MENU_LEVEL

ヘルプ画面
使用権利

Name

メニューのレベルと名前

キーワード

オプション／
特殊パラメータ

出力結果

MENU_PROMPT_HELP

Name

自動ヘルプ

MENU_HELP_HELP

Name

ヘルプ画面

MENU_RIGHT

Name

権利

メニュー特性836

MENU_ARG

パラメータ

MENU_IMAGE_FOR

イメージ場所

MENU_TOOL_IMAGE

ボタンイメージ

MENU_TOOL_NUMBER

イメージ番号

MENU_TOOL_GROUP

表示グループ

MENU_TOOL_TIP

ツールチップ

MENU_CHECKED

チェックマーク

MENU_VISIBLE

可視

MENU_ENABLED

有効

MNU_SHOW

表示

MENU_IS_PULLDOWN

プルダウンか否か（Yes ／ No）
リファレンス
Magic eDeveloper V9 Plus

ドキュメントテンプレート機能
Entry Type 1: プログラム
サブセクションデリミタ：Pdm_Prog
キーワード

オプション／
特殊パラメータ

出力結果

MNU_PRG_NR

Name

実行されるプログラム番号か名
前

Entry Type 2:OS コマンド
サブセクションデリミタ：Pdm_Exit
キーワード

出力結果

MNU_OS_CMD

実行される OS コマンド

MNU_WAITウェイトモード（Yes ／ No）

MNU_SHOW

表示• N…なし• N…通常• X…最大化• M…最小化

Entry Type 3: イベント
サブセクションデリミタ：Pdm_System
キーワード

出力結果

POP_ACT

実行されるアクション名

Entry Type 4: ライン
サブセクションデリミタ：Pdm_Line
キーワードはありません。
Entry Type 5:［メニュー］
サブセクションデリミタ：Pdm_Menu
キーワード

出力結果

SUB_LINES

サブメニュー数

パラメータ
サブセクションデリミタ：MENU_ARG_LIST
キーワード

オプション／
特殊パラメータ

PARM_EXP

項目式（Yes ／ No）

PARM_IDX
PARM_VAR

出力結果

テーブル番号
Name

項目／項目名PARM_EXP

項目式

SHORT

スキップ

メニューリポジトリの出力結果は、その中のサブセクションの種類によって異なります。
また、どういったサブセクションが置かれているかは、メニューの種類によって異なります。

CTL 特性

リファレンス
Magic eDeveloper V9 Plus

837

第 19 章 - ユーティリティ
セクションデリミタ：CTL_Data
キーワード

オプション／
特殊パラメータ

STARTUP

出力結果
開始モード• N…なし• T…開発モード• R…実行モード

NUL_CLCNULL 計算• N…NULL にする• D…デフォルト

BASE_CURRENCY

基準通貨

PR_ATTR_FILE

プリンタ属性ファイル

HTML_ STYLE_ FILE

HTML スタイルファイル

CLR_DEF_FILE

基本色定義ファイル

FNT_DEF_FILE

フォント定義ファイル

KBD_MAP_FILE

キーボード割付ファイル

INTERNET_ROOT

インターネット開発ファイルルー
ト

EURO_FILE

通貨変換ファイル

APPL_KEYName

CTL アクセスキー

PUB_RGHT_KEY

Name

公開権利アクセスキー

SUPER_KEY

Name

スーパー権利キー

MVCS_RIGHT_KEY

Name

強制 MVCS 設定キー

RFM_RGHT

Name

リモートフローモニタ権利プログラムリポジトリ
セクションデリミタ：Program
キーワード

オプション／
特殊パラメータ

出力結果

PRG

Name

プログラムの番号／名前

PRG_FOLDER

フォルダ名

PUBLIC

公開プログラム名

TASK

Name

タスクのレベル／名前

TASK_ID

Name

タスクの番号／名前

UPD_DATE

最終更新日

UPD_TIME

最終更新時刻FIRST_PRG

最初のプログラム• 1…Yes• 0…NoLAST_PRG

最後のプログラム• 1…Yes• 0…NoBATCH_TSK

バッチタスク• 1…Yes• 0…No838

リファレンス
Magic eDeveloper V9 Plus

ドキュメントテンプレート機能

タスク特性
サブセクションデリミタ：Task_Properties
キーワード

オプション／
特殊パラメータ

出力結果

TASK_NAME

タスク名

TASK_SIZE

タスクサイズ

TSK_TYP

タスクタイプ• O…オンライン• B…バッチ• R…ブラウザ

INIT_MOD

初期モード

INI_MOD_EXP

Short/Long

初期モード（式）END_TSK

Short/Long

タスク終了条件

END_CHK
ALO_ABORT

チェック時期
Short/Long

RET_VAL_EXP

アボート可
戻り値

MAIN_FILE

Name

メインテーブルの番号／名前

KEY

Name

インデックスの番号／名前

KEY_EXP

Short/Long

インデックス（式）SEL_TAB

Short/Long

選択テーブルRES_TSK

タスク常駐• 1…Yes• 0…NoCHUNK_SZ_EXP

チャンクサイズ（式）EXIT_URL

終了時 URL

POPUP_MENU
MAIN_DISPLAY

ショートカットメニュー
Short/Long

メインフォーム

ICON_NAME

アイコンファイル名

TRANS_MODE

トランザクションモード

TRANS_BEGIN

トランザクション開始

VAR（ブレイク）項目

LOCK_STRG

ロック方式

CACHE_STRG

キャッシュ範囲

ERROR_STRG

エラー発生時KEEP_NEW_CNXT

コンテキストの保持

SQL_TSKSQL タスク（Yes ／ No）

タスク制御
サブセクションデリミタ：Task_Control
キーワード

オプション／
特殊パラメータ

出力結果

ALO_OPT

Short/Long

オプションメニュー

ALO_MOD

Short/Long

修正

ALO_CRE

Short/Long

登録

リファレンス
Magic eDeveloper V9 Plus

839

第 19 章 - ユーティリティ
キーワード

オプション／
特殊パラメータ

出力結果

ALO_DEL

Short/Long

削除

ALO_QUR

Short/Long

照会

ALO_LOC

Short/Long

位置付

ALO_RNG

Short/Long

範囲

ALO_KEY_CH

Short/Long

インデックス変更

ALO_SORT

Short/Long

ソート

ALO_IO

Short/Long

入出力ファイル

ALO_KOPT

Short/Long

インデックス最適化

ALO_QLCT

Short/Long

照会モード位置付

ALO_RPR

Short/Long

データ出力ウィザード

OPN_TSK_WIN

Short/Long

ウィンドウ表示

CLOS_TSK_WIN

Short/Long

ウィンドウ消去

FG_WIN

Short/Long

前面表示

REF_WIN

Short/Long

ウィンドウ再表示

REC_EVNT

レコードイベント間隔

FORM_RECS

ページ当たりレコード数

CYL_REC

Short/Long

循環入力

CONF_UPD

Short/Long

更新確認

CONF_CAN

Short/Long

キャンセル確認

FOR_REC_SUF

Short/Long

強制レコード後処理

FOR_REC_DEL

Short/Long

レコード削除変数項目テーブル
サブセクションデリミタ：Virtual_Fields
キーワード

オプション／
特殊パラメータ

出力結果

FLD_IDX

テーブルの項番

FLD_NAME

項目名

TYPE

Name

モデル

ATTR

型

PICTrue

書式

RANGE

範囲

変数項目特性
キーワード

オプション／
特殊パラメータ

CTRL

840

出力結果
コントロールタイプ

V_FLD_HLP

Name

ヘルプ画面

V_FLD_PRMT

Name

自動ヘルプ

V_FLD_TOOLTIP

Name

ツールチップ

V_FLD_SEL_PRG_NR

Name

選択プログラム

V_FLD_SEL_PRG_CL

起動モード

RET_ACT

実行イベントリファレンス
Magic eDeveloper V9 Plus

ドキュメントテンプレート機能
キーワード

オプション／
特殊パラメータ

出力結果

VISUAL_COLS

列数

SLD_STEP

スライダのステップ

VISUAL_LINES

表示行数

VISUAL_STYLE

スタイル

VISUAL_BORDER

境界

VISUAL_MULTI_LINE

複数行編集（Yes ／ No）

VISUAL_COLOR色

VISUAL_FONT

フォント

NULL_ALLOWNULL 値可NULL_VALNULL 計算値

NULL_DSPNULL 表示文字列

NULL_DEFAULT

NULL デフォルト（Yes ／ No）

DEFAULT

デフォルト値TRANSLATE

データ変換

V_FLD_TYPELIB

タイプライブラリ

V_FLD_OBJNAME

オブジェクト名

V_FLD_SUB_OBJNAME

サブオブジェクト名

V_FLD_REMOTE_HOST

リモートホスト

V_FLD_INSTANTIATION

インスタンス化

V_FLD_ACTIVEX_DEFAULT

ActiveX デフォルト

V_FLD_CELL_MODEL

セルモデル［DB テーブル］テーブル
サブセクションデリミタ：DB_Files
キーワード

オプション／
特殊パラメータ

IDX
FILE

出力結果
テーブルの項番

Name

テーブル番号／名前

ACSS

アクセス

SHARE

共有

OPEN
NAM_EXPオープン
Short/Long

テーブル（式）CACHE_EXP

キャッシュ

ID_M_ROW

更新レコードの識別

入出力ファイル
サブセクションデリミタ：IO_Files
キーワード

オプション／
特殊パラメータ

出力結果

IDX

テーブルの項番

NAME

ファイル名

MEDIA

メディア

リファレンス
Magic eDeveloper V9 Plus

841

第 19 章 - ユーティリティ
キーワード

オプション／
特殊パラメータ

出力結果

PRN

プリンタ

ACSS

アクセス

FRMT

フォーマットNAM_EXP

Short/Long

ファイル名（式）VAR_NAME

Name

項目

PDLG

ダイアログ（Yes ／ No）

ROWS

行数

入出力特性
キーワード

オプション／
特殊パラメータ

出力結果

PAGE

用紙サイズ

HEADER

ページヘッダフォーム

FOOTER

ページフッタフォーム

COPIES

部数

EXPCOPIES

部数（式）ORIENT

印刷方向

PREVEW_YN

印刷プレビュー

IO_NAME_TO_USE

使用する入出力名

IO_CHAR_TO_USE

使用する文字セット

ソートテーブル
サブセクションデリミタ：Sort_Table
キーワード

オプション／
特殊パラメータ

IDX
VAR

出力結果
テーブルの項番

Name

項目の番号／名前

SIZE

項目のサイズ

DIR

ソート順序

イベントテーブル
サブセクションデリミタ：Events_Table
キーワード

オプション／
特殊パラメータ

IDX

テーブルの項番

DESC

イベント名

PUBLIC_NAME

公開名

TYPE
TRIGGER

842

出力結果

タイプ
Name

トリガ

EXPOSE

公開

FORCE_EXIT

強制終了

式テーブル
リファレンス
Magic eDeveloper V9 Plus

ドキュメントテンプレート機能
サブセクションデリミタ：Exp_Table
キーワード

オプション／
特殊パラメータ

IDX
FLD
EXP

出力結果
テーブルの項番

Name

項目の番号／名前

File

項目が置かれているテーブル

Short/Long

式の番号／内容

EXP_CNT

テーブルに定義されている式の数

FLD_CNT

項目テーブルの中の項目数

SQL コマンドサブセクションデリミタ：SQL_Cmd
キーワード

オプション／
特殊パラメータ

出力結果

Db_Name

データベース

Res_Tab

結果データベース

Cmd

SQL コマンドInp_Prms_Cnt

入力パラメータの数

Out_Prms_Cnt

出力パラメータの数

Ret_Code

SQL コマンド

Name

戻り値

入力パラメータテーブル

サブセクションデリミタ：SQL_Cmd_Inp_Prms
キーワード

オプション／
特殊パラメータ

PARM_IDX
PARM_VAR
PARM_EXPSQL コマンド

出力結果
テーブルの項番

Name

項目のシンボル名／名前

File

項目が置かれているテーブル

Short/Long

式の番号／内容

出力パラメータテーブル

サブセクションデリミタ：SQL_Cmd_Out_Prms
キーワード

オプション／
特殊パラメータ

PARM_IDX
PARM_VAR
PARM_EXP

出力結果
テーブルの項番

Name

項目のシンボル名／名前

File

項目が置かれているテーブル

Short/Long

式の番号／内容

範囲／位置付サブセクションデリミタ：RANGE_LOCATEキーワード
RNG_EXP
リファレンス
Magic eDeveloper V9 Plus

オプション／
特殊パラメータ

出力結果
範囲式

843

第 19 章 - ユーティリティ
RNG_ORD

範囲順序

LOC_EXP

位置付式

LOC_ORD

位置付順序

POS_EXP

ポジション

USAGE

方法

SQL Where 句／ Open Query
サブセクションデリミタ：Sql_Where
キーワード

オプション／
特殊パラメータ

出力結果

SQL_EXPSQL 式

DB_SQLDB SQL

WHERE_CLAUSESQL Where 句の全体表示

ハンドラテーブル
サブセクションデリミタ：Level_Def_Table
このセクションは、［タスク定義］ウィンドウのサブセクションで、タスクの［ハンドラ］テーブルに関する情報が出力されます。また、このサブセクションの下位には、各レベルの［処理］テーブルのセクションが含まれます。
キーワード

オプション／
特殊パラメータ

出力結果

IDX

テーブルの項番

LVL_NAME

レベル名

SCOPE

スコープ

PROPG

伝搬

ENB

有効

OPER

処理

処理テーブル
サブセクションデリミタ：Oper_Table
キーワード

オプション／
特殊パラメータ

出力結果

CURR_FLOW

レベル（例：レコードメイン）

IDX

テーブルの項番

OPER_CNT

名前

FLOW_DIR

カーソル方向

FLOW_MODE
COND_EXP
REC_MAIN

処理の番号／名前
フローモードShort/Long

条件
レコードメインか否か［処理］テーブルのセクションは、「テーブル」形式のセクションです（セクションの種類については、本章の「ドキュメントテンプレート機能」の「ドキュメントレポートセ
クション」を参照してください）。この場合、［処理］テーブルの行（処理コマンド）がそれぞれ、［処理］テーブルのサブセクションとして扱われます。以下、各サブセクショ
ン（処理コマンド）別にキーワードと出力結果を説明します。

844

リファレンス
Magic eDeveloper V9 Plus

ドキュメントテンプレート機能

処理コマンド 0: コメント
サブセクションデリミタ：OP_Remark
キーワード

出力結果

REMARK

コメントの内容

処理コマンド 1: セレクト
サブセクションデリミタ：OP_Select
キーワード

オプション／
特殊パラメータ

出力結果

FLD_TYPE

Name

カラムのタイプ• R…実項目• V…変数項目• P…パラメータ項目

FLD

Name

テーブル

INI_EXP

Short/Long

初期値（式）

RNG_MIN_EXP

Short/Long

範囲式（最小）RNG_MAX_EXP

Short/Long

範囲式（最大）LOC_MIN_EXP

Short/Long

位置付式（最小）

LOC_MAX_EXP

Short/Long

位置付（最大）処理コマンド 2: エラー
サブセクションデリミタ：OP_Verify
キーワード

オプション／
特殊パラメータ

出力結果

VERIF_EXP

Short/Long

チェック対象の式

VERIF_MOD

エラーモードVERIF_RANGE

表示

処理コマンド 3: リンク
サブセクションデリミタ：OP_Link
キーワード

オプション／
特殊パラメータ

LINK_TYPE

出力結果
リンクタイプ

FILE

Name

リンクテーブルの番号／名前

KEY

Name

インデックスの番号／名前

FILE_DIR

インデックス順序

RET_VAR

Name

戻り値

VALIDATION

Short,Long

確認

EVAL_COND

リンク条件の評価

処理コマンド 4: リンク終了
サブセクションデリミタ：OP_End_Link
このセクションには、キーワードはありません。
リファレンス
Magic eDeveloper V9 Plus845

第 19 章 - ユーティリティ

処理コマンド 5: ブロック
サブセクションデリミタ：OP_Block
キーワード

出力結果

EXD_OP_BLOCK_TYPE

ブロックのタイプ

処理コマンド 6: ブロック終了
サブセクションデリミタ：OP_End_Block
このセクションには、キーワードはありません。

処理コマンド 7: コール
サブセクションデリミタ：OP_Call
キーワード

オプション／
特殊パラメータ

出力結果

TYPE

タイプ

PARM

パラメータ数

FORM

Name

フォームの番号／名前

CALL_RET_VAL

Name

戻り値

LOCK

ロック

SYNC_DATA

同期

DEST_FRAME

出力先フレーム

DEST_FRAME_EXP

出力先フレーム（式）コールタスク／プログラム／式（TYPE=0）
キーワード

オプション／
特殊パラメータ

出力結果

PROG_TASK

Name

起動プログラム／タスクの番号／
名前

CALL_EXP

Short/Long

プログラム（式）CALL_CONV

呼び出し規約

コールリモート（TYPE=1）
キーワード

オプション／
特殊パラメータ

出力結果

SERVICE

Name_Size

サービス名

WAIT

ウエイト（Yes ／ No）

PROG_NAME
File_Name_Size

結果ファイル

RET_CODE

Name

戻り値

SER_REASON

Name

エラーコードSER_MSGID

Name

リクエスト ID

SER_PRIORITY

846

プログラム名RES_FILE

優先順位

リファレンス
Magic eDeveloper V9 Plus

ドキュメントテンプレート機能

コール Web サービス（TYPE=2）
キーワード

オプション／
特殊パラメータ

出力結果

SERVICE

Name_Size

サービス名

WSDL_FILE

WSDL ファイル名

DEST_FRAME

SOAP アクション

CALL_CONVスタイル

PROG_NAME（ドキュメント形式）入力 XSD（RPC 形式）処理

RES_FILE（ドキュメント形式）出力 XSD（RPC 形式）ネームスペース

CHAR_SET

文字セット

CALL_RET_VAL

Name

戻り値

RET_CODE

Name

正常終了

SER_MSGID

Name

エラー情報

コール公開プログラム（TYPE=3）
キーワード

オプション／
特殊パラメータ

出力結果

CALL_PUB_DB_EXP

Short,Long

データベース名

CALL_PUB_FILE_EXP

Short,Long

MFF ファイル／ MCF テーブル

CALL_PUB_NAME_EXP

Short,Long

公開プログラム名

オプション／
特殊パラメータ

出力結果

コール COM（TYPE=4）
キーワード

CALL_COM_METHOD_WITH_OBJ

COM オブジェクト

SER_REASON

オブジェクトName

CALL_COM_OPTION

オプション

CALL_COM_METHOD

メソッド名

CALL_COM_ARGS

パラメータ

CALL_COM_RET_VAL

Name

戻り値

CALL_COM_RET_VAL_E
XP

Short,Long

戻り値（式）

RET_CODE

Name

エラーコードパラメータテーブルリファレンス
Magic eDeveloper V9 Plus

847

第 19 章 - ユーティリティ
サブセクションデリミタ：Call_Arg_List
キーワード

オプション／
特殊パラメータ

PARM_IDX
PARM_VAR
PARM_EXP

出力結果
テーブルの項番

Name

項目の番号／名前

File

テーブル名

Short/Long

式の番号

PARM_NAM

パラメータの名前

PARM_MODE

モード

PARM_HEADER

ヘッダ

処理コマンド 8: アクション
サブセクションデリミタ：OP_Eval_Exp
キーワード

オプション／
特殊パラメータ

出力結果

EVAL_EXP

Short/Long

式

RET_VARName

戻り値

処理コマンド 9: 項目更新
サブセクションデリミタ：OP_UpDate_Var
キーワード

オプション／
特殊パラメータ

出力結果

FLD

Name

更新される項目の番号／名前

UPD_EXP

Short/Long

更新式

UPD_HOW

計算モード• I…加算• N…代入UPD_UNDO

中止（Yes ／ No）

処理コマンド 10: データ出力
サブセクションデリミタ：OP_Out_Form ／ OP_Out_Merge
キーワード

オプション／
特殊パラメータ

出力結果

FORM

Name

フォームの番号／名前

IO_FILE

Name

入出力ファイルの番号／名前

IO_PAGE_FORM頁

マージパラメータテーブル

848

リファレンス
Magic eDeveloper V9 Plus

ドキュメントテンプレート機能
サブセクションデリミタ：Mrg_Parm_List
キーワード

オプション／
特殊パラメータ

PARAM_IDX

出力結果
パラメータ名PARM_TAG

Name

タグ

PARM_VAR

Name

項目

PARM_EXP

Short/Long

項目（式）PICTrue

書式

PIC_EXP

書式（式）処理コマンド 11: データ入力
サブセクションデリミタ：OP_In_Form
キーワード

オプション／
特殊パラメータ

出力結果

FORM

Name

フォームの番号／名前

IO_FILE

Name

入出力ファイルの番号／名前

IO_DLM

区切形式

IO_DLM_CH

区切文字

処理コマンド 12: エディット
サブセクションデリミタ：OP_Browse
キーワード

オプション／
特殊パラメータ

出力結果

BROW_EXP

Short/Long

ファイル名（式）

BROW_EDT

編集モード• E…編集• S…参照FORM

Name

フォームの番号／名前

処理コマンド 13:OS コマンド
サブセクションデリミタ：OP_Exit_on_Exp
キーワード

オプション／
特殊パラメータ

出力結果

EX_PROG_EXP

Short/Long

外部プログラム（式）

EX_WAIT

ウェイト（Yes または No）

EX_SHOW画面• H…なし• N…通常• X…最大化• M…最小化

RET_VARリファレンス
Magic eDeveloper V9 Plus

Name

戻り値

849

第 19 章 - ユーティリティ
処理コマンド 14: イベント実行
サブセクションデリミタ：Op_RaiseEvent
キーワード

オプション／
特殊パラメータ

出力結果

NAME

イベント名

WAITE

ウェイト

ARG

パラメータの数

DEST_CTX_NAME

出力コンテキスト

フォームテーブル
サブセクションデリミタ：Forms_Table
このセクションでは、［フォーム］テーブルの次のような情報が出力されます。
• 表示ブロックの情報• 各フォームの項目の位置• 各クラスのフォームのレイアウト
出力される情報は、Magic のプログラムの出力先が対話画面であるか、または対話画面以外の出力デバイスであるかによって異なります。Magic では、対話画面のクラス値は「0」です。
クラス値については、第 6 章「プログラム」の「フォームテーブル」を参照してくだ
さい。
一方、帳票またはファイル出力用のフォームには、出力先のデバイスに応じて 0 以外のクラス値を使います。
［フォーム］テーブルの場合、レポートセクションは、出力デバイスによって別々に処理されます。したがって各デバイスごとに、またタスクごとに帳票の出力が可能です。実際、ドキュメントジェネレータでは、「0」以外のクラスのデバイ
スにレコードが出力されるタスクについて、最下位のレベルのタスクまでレポートの出力が可能になっています。
［フォーム］テーブルの場合、レポートは、次の各タスクレベ
ルに応じて出力されます。
• 表示ブロック（フォーム）のクラス値が「0」の場合（このフォームは、対話画面に対応しています）、そのフォームに関する情報が出力されます。また、続いてそのフォームの内容が表示されます。この場合、キーワード Disp_Area の戻り値は「1」になります。
• フォームのクラス値が「0」以外で、下位に同じクラスのタスクがある場合、そのフォームの情報は出力されますが、下位レベルのタスクの内容は出力されません。
キーワード Disp_Area の戻り値は「0」になります。
• クラス値が「0」以外で、そのクラスにフォームが複数あり、また下位に同じクラスのタスクがないときには、同じクラスのフォームがすべてレポートに出力されます。
この場合、関連するフォームの内容は、レポートの後に出力されます。キーワード
Disp_Area の戻り値は 1 になります。
キーワード

850

オプション／
特殊パラメータ

出力結果

IDX

テーブルの項番

DSP_BLK

フォーム名

CLASS

クラス

AREA

区分

INTERFACE_TYPE

インタフェースのタイプ

IS_CHILD

子ウィンドウ（Yes または No）

リファレンス
Magic eDeveloper V9 Plus

ドキュメントテンプレート機能
フォーム特性
キーワード

オプション／
特殊パラメータ

出力結果

MODEL

モデル

MODEL_WINDOW

モーダルウィンドウFLOATING_WIND

フローティングウィンド

UOM_TYPE

寸法単位

VERT_FACTOR

垂直精度

HOR_FACTOR

水平精度

SHOW_GRID

グリッド表示（Yes ／ No）

GRID_X

グリッド間隔（X）

GRID_Y

グリッド間隔（Y）

DSP_BLK

フォーム名

FORM_NAME_EXP

フォーム名（式）WINDOW_SORT

自動 Z オーダ

SNAP_2_SIZE

サイズ調整

TITLE_BAR
TITLE_BAR_EXP

タイトルバー（Yes ／ No）
Short/Long

タイトルバー（式）SYS_MENU

システムメニュー（Yes ／ No）

MIN_BUTTON

最小化ボタン（Yes ／ No）

MAX_BUTTON

最大化ボタン（Yes ／ No）

CHILD_WINDOW

子ウィンドウCHILD_WINDOW_EXP

子ウィンドウ（式）SPLIT_WINDOW_CHILD

分割子ウィンドウ

SPLIT_WINDOW_CHILD_EXP

分割子ウィンドウ（式）

HLP

ヘルプ画面

Name

DEFAULT_BUTTON

デフォルトボタン

EXPAND_FORM

フォーム拡大USE_BEST_PLT

パレット最適化

REPEATED_LN

繰返し行数

TMPL_FILE_NAME

HTML ファイル

TMPL_FILE_EXP

HTML ファイル（式）DOCFILE

ヘッダファイル名SUBMIT_FORM

入力フォームCOLOR

色COLOR_EXP色（式）HLSTYLE

ハイライト行のスタイル

HLCOLOR

ハイライト行の色

HLCOLOR_EXP

ハイライト行の色（式）KEEP_TREE_VIEW

ツリー表示を保持

KEEP_TREE_VIEW_EXP

ツリー表示を保持（式）

FONT

フォント

FRAME_TYPE

フレームタイプ

WALLPAPER

背景

リファレンス
Magic eDeveloper V9 Plus851

第 19 章 - ユーティリティ
キーワード

オプション／
特殊パラメータ

出力結果

WALLPAPER_EXP

Short/Long

背景（式）FIT_2_CLIENT

MDI 調整FIT_2_CLIENT_EXP

MDI 調整（式）STARTUP_POS

開始位置

ALLOW_DROPPING

ドロップ許可ALLOW_DROPPING_EXP

ドロップ許可（式）HYPER_LNK

ハイパーリンク

HYPER_LNK_TYPE

ハイパーリンクの種類

MAGIC_APP

Magic アプリケーション名

MAGIC_APP_EXP

Short/Long

PUBLICPUBLIC_EXP

公開プログラム名
Short/Long

公開プログラム名（式）PARAM

パラメータの名前

DST_FRAME

リンク先フレーム

DST_FRAME_EXP

Short/Long

リンク先のフレーム（式）CTRL_NAME

リンクコントロール名

URL

リンク URL

URL_EXP

Short/Long

リンク URL（式）CNTXT_VARS

コンテキスト変数

USE_COOKIES

Cookie を使用

DOMAIN_RESTR

ドメイン制限EXPR_DATE_EXP

Short/Long

日付制限

EXPR_TIME_EXP

Short/Long

時刻制限

SECURED

保護チャネル

TMPL_FILE_NAME

マージファイル

TMPL_FILE_EXP

マージファイル（式）TOKEN_PREF

トークン前付符号

TOKEN_PREF_EXP

トークン前付符号（式）TOKEN_SUF

トークン後付符号

TOKEN_SUF_EXP

トークン後付符号（式）SPLIT_WINDOW

ウィンドウ分割PRIMARY_DISPLAY

初期表示

SPLITTER_OFFSET

分割割合

SPLITTER_OFFSET_EXP

分割割合（式）SPLITTER_PLACEMENT

分割位置

FORM_PLACEMENT_LEFT

左辺割合

FORM_PLACEMENT_TOP

上辺割合

FORM_PLACEMENT_WIDTH

幅割合

FORM_PLACEMENT_HEIGHT

高さ割合

FRAME_LEFT

左辺位置

FRAME_LEFT_EXP
FRAME_TOP

852

Magic アプリケーション名（式）Short/Long

左辺位置（式）
上辺位置
リファレンス
Magic eDeveloper V9 Plus

ドキュメントテンプレート機能
キーワード

オプション／
特殊パラメータ

出力結果

FRAME_TOP_EXP

Short/Long

上辺位置（式）FRAME_WIDTHFRAME_WIDTH_EXP

幅
Short/Long

FRAME_HEIGHTFRAME_HEIGHT_EXP

幅（式）
高さ

Short/Long

高さ（式）ハイパーリンクパラメータテーブル
サブセクションデリミタ：Form_Hyper_Param
このサブセクションでは、ハイパーリンクパラメータの内容が出力されます。
コンテキスト変数
サブセクションデリミタ：Context_Vars_List
このサブセクションでは、コンテキスト変数の内容が出力されます。
マージパラメータテーブル
サブセクションデリミタ：mrg_parm_list
このサブセクションでは、マージパラメータの内容が出力されます。
キーワード

オプション／
特殊パラメータ

出力結果

PARM_TAG

Name

タグ名

マージ項目テーブル
サブセクションデリミタ：merge_fiedls
このサブセクションでは、マージ項目テーブルの内容が出力されます。
キーワード

オプション／
特殊パラメータ

出力結果

MRG_FLD_IDX

テーブルの項番

MRG_FLD_NAME

項目名

MRG_FLD_EXP

項目（式）MRG_FLD_EVNT_CNT

マージイベント数

MRG_FLD_EVNT_POS

マージイベント位置

マージイベントテーブル
サブセクションデリミタ：merge_events
このサブセクションでは、マージイベントテーブルの内容が出力されます。
キーワード

オプション／
特殊パラメータ

出力結果

MRG_EVNT_IDX

テーブルの項番

MRG_EVNT_TYPE

イベント名

MRG_EVNT_EXP

イベント名（式）MRG_EVNT_CMD_CNT

コマンド数

MRG_EVNT_CMD_POS

マージコマンド位置

マージコマンドテーブル
サブセクションデリミタ：merge_cmnds

リファレンス
Magic eDeveloper V9 Plus853

第 19 章 - ユーティリティ
このサブセクションでは、マージコマンドテーブルの内容が出力されます。
キーワード

オプション／
特殊パラメータ

出力結果

MRG_CMND_IDX

テーブルの項番

MRG_CMND_CMND

コマンド名

MRG_CMND_HYPER_CNT

ハイパーリンク

MRG_CMND_FLD_NAME

項目名

MRG_CMND_FLD_EXP

項目名（式）

MRG_CMND_FLD_VAL

値

MRG_CMND_COND_EXP

条件

フォーム
サブセクションデリミタ：Form_Block
このサブセクションでは、フォームの内容が出力されます。

コントロール特性
サブサクションデリミタ：Flds_Loc_Table
このサブセクションでは、フォーム上のコントロールに関する情報を出力できます。

854

キーワード

出力結果

IDX

コントロール番号

MODEL

モデル

リファレンス
Magic eDeveloper V9 Plus

ドキュメントテンプレート機能
キーワード

出力結果

CTRL

コントロール種別• 10- エディットコントロール• 20- プッシュボタン• 30- チョイスコントロール• 31- ラジオボタン• 32- コンボボックス• 33- タブ• 34- リストボックス• 40- チェックボックス• 50- イメージコントロール• 60- スタティックコントロル• 70- スライダコントロール• 80- テーブルコントロール• 81- ブラウザテーブルコントロール• 90- OLE コントロール• 100- ラインコントロール• 120-HTML コントロール• 130-Java コントロール• 140-ActiveX コントロール• 150- カラムコントロール• 160- サブフォーム• 200-RTF• 210- スタティックテーブル• 220- スタティックテーブル（行）• 230 スタティックテーブル（セル）• 240- ツリーコントロール

詳細
キーワード

オプション／
特殊パラメータ

出力結果

FLD

Name

項目の番号／名前

EXP

Short/Long

項目（式）

ATTR

型

PICTrue
PIC_EXP

書式
Short/Long

書式（式）IME_CONTROL

漢字入力

IME_CONTROL_EXP

漢字入力（式）

ALLOW_DRAGGING

Short,Long

ドラッグ許可ALLOW_DROPPING

Short,Long

ドロップ許可LABEL

選択項目リストLABEL_EXP

選択項目リスト（式）DISP_LIST

表示項目リスト

DISP_LIST_EXP

表示項目リスト（式）RANGE_EXP

範囲（式）

リファレンス
Magic eDeveloper V9 Plus855

第 19 章 - ユーティリティ
キーワード

オプション／
特殊パラメータNAME
SRCTABLE

コントロール名
Name

ソーステーブルDISPFLD

表示項目

LNKFLD

リンク項目

CTRLINDX

インデックスFLDRANGE

範囲

MARK_COL

Name

カラムのマーキング

MARK_SORT

Name

ソート可

TEXT

コントロールのテキスト

DEF_IMG_NAME

デフォルトイメージファイル
HTML ファイル
Java ファイル
ActiveX ファイル

NW_SE_LINE

右下がり対角線（Yes ／ No）

NE_SW_LINE

右上がり対角線（Yes ／ No）

HOR_LINE

水平線（Yes ／ No）

VER_LINE

垂直線（Yes ／ No）

RECT

四角形（Yes ／ No）

ROUND_RECT

丸四角形（Yes ／ No）

ELLIPSE

楕円形（Yes ／ No）

IMG_BUTTON

イメージボタン（Yes ／ No）

RET_ACT

実行イベントNODE_ID

ノード ID

PARENT_ID

親の ID

ROOT_VALUE

ルート値

SHOW_ROOT

ルートの表示DEF_IMG_NAME

画像一覧ファイル

DEF_IMG_NAME_EXP

画像一覧ファイル（式）EXPAND_IMAGE_IDX

展開表示画像 Idx

EXPAND_IMAGE_IDX_EX Short,Long
P

展開表示画像 Idx（式）COLLAPS_IMAGE_IDX

縮小表示画像 Idx

COLLAPS_IMAGE_IDX_E
XP

856

出力結果

Short,Long

縮小表示画像 Idx（式）PARKED_EXPANDED_IMAGE_IDX

パーク展開表示 Idx

PARKED_EXPANDED_IMAGE_IDX_EXP

パーク展開表示 Idx（式）PARKED_COLLAPSED_IMAGE_IDX

パーク縮小表示 Idx

PARKED_COLLAPSED_IMAGE_IDX_EXP

パーク縮小表示 Idx（式）AUTO_EXPAND

自動展開

AUTO_EXPAND_EXP

自動展開（式）

NODE_PRELOAD

ノード事前読込

NODE_PRELOAD_EXP

ノード事前読込（式）ALT_TEXT

代替テキストリファレンス
Magic eDeveloper V9 Plus

ドキュメントテンプレート機能
キーワード

オプション／
特殊パラメータ

出力結果

MG_ROW_HIGH

Name

ハイライト表示DETAILS_LN

Name

明細行

CHOICE_RNG

ラジオボタンの選択肢の数

入力
キーワード

オプション／
特殊パラメータ

出力結果

ALLOW_INP

Short/Long

修正許可

MUST_INP

Short/Long

必須入力

MULTI_LIN_EDT

複数行編集（Yes ／ No）

EXP_WIN

Name

拡張ウィンドウ

SEL_PRG_NR

Name

選択プログラム

SEL_PRG_CL

起動モード

VERT_SCROLL

垂直スクロール

HORZ_SCROLL

水平スクロール

ALLOW_CR

CR 許可

PASSWORD

パスワードエディット

ALLOW_MIQ

照会モード時修正許可

SEL_MODE

選択モード

DESC_VAR

表示項目

VARIABLE_NAME

表示項目名

HIDDEN_VAR

非表示項目

CTRL_HYPER_LNK

ハイパーリンク

CTRL_HYPER_LNK_TYPE

ハイパーリンクタイプ

CTRL_MAGIC_APP
CTRL_MAGIC_APP_EXP

アプリケーション名
Short,Long

CTRL_PUBLICCTRL_PUBLIC_EXP

公開プログラム名
Short,Long

CTRL_PARM

公開プログラム名（式）パラメータ

CTRL_DST_FRAME
CTRL_DST_FRAME_EXP

アプリケーション名（式）

出力先フレーム
Short,Long

出力先フレーム（式）CTRL_CTRL_NAME

コントロール名

CTRL_URL

URL

CTRL_URL_EXP

URL（式）SUBFORM_TYPE

接続先

PRG_TSK

プログラム／タスク番号

SUBFORM_ARGS

パラメータ

TAB_INTO

タブで移動

IS_CACHED

キャッシュ有効

表示
キーワード
COLOR
リファレンス
Magic eDeveloper V9 Plus

オプション／
特殊パラメータ

出力結果
色

857

第 19 章 - ユーティリティ
キーワード

オプション／
特殊パラメータ

出力結果

COLOR_EXP

Short/Long

色（式）

FONT

フォント

FONT_EXP

フォント（式）VISIBLE

可視（Yes ／ No）

ENABLE

858

有効（Yes ／ No）

HLP

Name

ヘルプ画面

PROMPT

Name

自動ヘルプ

TOOLTIPName

ツールチップVER_ALIGN

垂直整列

HOR_ALIGN

水平整列

STYLE

スタイル

BORDER_STYLE

境界

CHOICE_COLS

列数

SCROLL_BAR

スクロールバー

LINE_DIVIDER

テーブルコントロールの区切り

TITLE_HEIGHT

タイトル高さROW_HEIGHT

行高さ

NO_COLUMNS

カラム

COLUMN_DIVIDER

カラムの区切りTAB_IN_WIND

ウィンドウ内テーブル

ALLOW_RESIZE

サイズ変更可MULTI_MARKING

マルチマーキング

TAB_SIDE

タブラベル位置IMG_STYLE

イメージスタイル

IMG_EFFECT

イメージ効果COMBO_LINES

コンボボックスの表示行数

IS_HOR_SLD

水平スライダ（Yes ／ No）

SLD_STEP

スライダのステップ

SHOW_BUTTON

ボタンの表示SHOW_BUTTON_EXP

ボタンの表示（式）SHOW_LINES

ラインの表示SHOW_LINES_EXP

ラインの表示（式）LINES_AT_ROOT

ルートのライン表示

LINES_AT_ROOT_EXP

ルートのライン表示（式）MOUSE_OVER_IND

マウスオーバ表示

MOUSE_OVER_IND_EXP

マウスオーバ表示（式）INDENT

インデントレベルIS_INT_ATTR_EXP

内部属性ありINT_ATTR

内部属性

INT_ATTR_EXP

内部属性（式）

IS_EXT_ATTR_EXP%

外部属性ありEXT_ATTR

外部属性

EXT_ATTR_EXP

外部属性（式）
リファレンス
Magic eDeveloper V9 Plus

ドキュメントテンプレート機能
キーワード

オプション／
特殊パラメータ

出力結果

PARA_ALIGN

段落整列

FOLLOW_TEXT

テキストの整列

HSPACE

水平方向の余白VSPACE

垂直方向の余白STABLE_BORDER

境界線の幅

TEXT_TYPE

テキストタイプ

STABLE_WPAPER

背景

STABLE_WPAPER_EXP

背景（式）STABLE_ROWS行

STABLE_COLUMNSカラム

STABLE_SPACING

セルの間隔

STABLE_PADDING

セルのパディングSTABLE_ROWS

列の間隔

STABLE_COLUMNS

行の間隔

FIX_SIZE_TABLE

固定サイズテーブルTITLE_ON_EVERY_PAGE

全ページタイトル

FIXED_WIDTH

固定幅

BRD_WIDTH

境界線の幅

位置
キーワード

オプション／
特殊パラメータ

出力結果TOP

上辺位置／ Y1

TOP_EXP

上辺位置／ Y1（式）LEFT

左辺位置／ X1

LEFT_EXP

左辺位置／ X1（式）HEIGHT

高さ／ Y2

HEIGHT_EXP

高さ／ Y2（式）

WIDTH

幅／ X2

WIDTH_EXP

幅／ X2（式）PLACEMENT_LEFT

左辺割合

PLACEMENT_TOP

上辺割合

PLACEMENT_WIDTH

幅割合

PLACEMENT_HEIGHT

高さ割合

CONTROL_LAYER

Name

コントロールレイヤ

オプション／
特殊パラメータ

出力結果

OLE
キーワード
OLE2_CLASSOLE クラス /ActiveX クラス

OLE2_DISPLAY_AS

OLE の表示形式

OLE2_STORE_AS

OLE 形式

OLE2_AUTO_LINK

リンク自動更新

リファレンス
Magic eDeveloper V9 Plus859

第 19 章 - ユーティリティ
キーワード

オプション／
特殊パラメータ

OLE2_FRAME_TYPE

出力結果
OLE フレームタイプ使用* 特殊パラメータの File を指定しておくと、項目が属しているファイルが出力されます。
範囲テーブル
サブセクションデリミタ：Ctrl_Fld_Rang
このサブセクションでは、データコントロールの［範囲］特性の内容が出力されます。
キーワード

オプション／
特殊パラメータ

IDX

出力結果
テーブルの項番

RANG_NAME

Name

項目

RANG_FROM

最小値

RANG_TO

最大値

セクションパラメータTop:

このパラメータを指定しておくと、セクションの出力が開始されると同時に次のページに切り替わり、セクションヘッダが印刷されます。

Frame:

このパラメータを指定しておくと、表示ブロック（フォーム）の目次がフレーム（罫線）で囲まれて印刷されます。フレームは、その種類を指定できます。書式は、次のようになります。
Frame = T
上記において、T はフレームのタイプ（種類）を表し、Magic のフレームの種類のいずれかを指定できます。
また、文字を使用してフレームを印刷したい場合、次のように記述します。
Frame = Oc
上記において、O は文字を使用してフレームを印刷するためのコ
マンドです。また、c はフレームの印刷に使われる実際の文字を表します。

Offset:

出力行のオフセットで、このオフセットにより表示ブロックの目
次の印刷位置が決まります。
例:#Section Help_Block, Frame= T, Offset=3

特殊グローバルキーワード

860

Page

現在のページ番号

Line

現在の行番号

Date

現在の日付

Time

現在の時刻

Owner

システムのオーナー

Version

現在使用している Magic の
バージョン

App

アプリケーションの番号

リファレンス
Magic eDeveloper V9 Plus

ドキュメントテンプレート機能
なお、App では、次の特殊パラメータが使えます。
パラメータ

意味

Name

アプリケーションの番号ではなくアプリケーションの名前が出力さ
れます。

Path

アプリケーションの識別子と絶対パスが出力されます。

Pref

アプリケーションの識別子（2 文字）が出力されます。

Ctl_File

アプリケーションのコントロールファイルの名前が出力されます。

D_B

アプリケーションで使われているデータベースが出力されます。

リファレンス
Magic eDeveloper V9 Plus861

第 19 章 - ユーティリティ［このページは意図的に空白にしています。］

862

リファレンス
Magic eDeveloper V9 Plus

分散アプリケーション
アーキテクチャ

20

Magic は、異なるコンピュタ環境における相互運用性を実現しています。相互運用性とは、マルチデータベースやマルチプラットフォーム、マルチネットワークでのデータ処理における Magic アプリケーションの運用能力を表しています。すべての Magic アプリ
ケーションに共通のインタフェースを使用すると、すべてのユーザは、どのワークステー
ションからでもあらゆるタイプのローカルデータベースやリモートデータベースへのア
クセス、クエリの実行、データの更新ができます。
LAN（ローカルエリアネットワーク）や WAN（ワイドエリアネットワーク）で複数のコンピュータが接続されている環境において、Magic の分散アプリケーションアーキテク
チャは本章で解説している所定の分散処理を行います。
本章では、次の内容について説明します。
• アプリケーションサーバの環境構成• 分散アプリケーションアーキテクチャの使用• アプリケーションサーバのセットアップ• サポートされるミドルウェア• Magic のリクエスタ• インターネットリクエスタ• SOAP サーバリクエスト• ブラウザ形式のインターネットアプリケーション• アプリケーションパーティショニング• マルチスレッド• アプリケーションパーティショニングの関数

リファレンス
Magic eDeveloper V9 Plus863

第 20 章 - 分散アプリケーション アーキテクチャ

アプリケーションサーバの環境構成
図 22-1 のようにアプリケーションサーバ環境を構成すると、クライアントが Magic アプ
リケーションサーバと通信できるようになります。
下記の図では、クライアント / アプリケーションサーバ間の通信で必要とされる基本的な要素を示しています。

図 20-1 クライアント / アプリケーションサーバ間の通信

以下に、アプリケーションサーバ環境に必要なモジュールについて説明します。

Magic アプリケーションサーバ
サポートされているミドルウェアモジュールに Magic 実行エンジンを接続すると、Magic
実行エンジンは、サポートされている各タイプのリクエスタのアプリケーションサーバ
として動作します。

リクエスタ
クライアントからアプリケーションサーバにリクエストを送信するには、サポートされているリクエスタを通す必要があります。クライアントにはそれぞれ専用のリクエスタ
があり、次に示すタイプがあります。
• Magic リクエスタ……Magic エンジンには、エンジンの一部としてリクエスタモジュールが含まれています。
• インターネットリクエスタ……Magic は、CGI、ISAPI という 2 種類のインターネット
リクエスタを提供します。
• コマンドラインリクエスタ……Magic は、OS シェルから実行できるコマンドラインリ
クエスタを提供します。

ミドルウェアリクエスタから Magic クライアントにリクエストを転送するためにソフトウェアモ
ジュールを使用できます。Magic では、次のミドルウェアがサポートされています。
• Magic Request Broker（以下 MRB）……Magic は独自のミドルウェアモジュールとして MRB を提供します。

864

リファレンス
Magic eDeveloper V9 Plus

分散アプリケーションアーキテクチャの使用

分散アプリケーションアーキテクチャの使用
アプリケーションパーティショニング「アプリケーションパーティショニング」という用語は、ネットワーク上の複数のコンピュータにアプリケーションロジックを分散するアプリケーションの開発／実行処理について説明するために使用します。最も単純な構成は、アプリケーションを 1 つのクラ
イアント PC 上で実行するとき、リモートプログラムの実行要求を１つのアプリケーショ
ンサーバに送信し、処理を行わせるような場合です。より複雑な構成では、アプリケー
ションロジックを複数のサーバに分散し、システム全体の性能を向上させます。Magic では次のようなネットワーク設定も可能です。
• Magic から Magic……Magic クライアントは Magic アプリケーションサーバに対し、上記のいずれかのミドルウェアを使用してリクエストを渡すことができます。
• Magic から 任意……Magic クライアントは、CORBA を使用するアプリケーションサー
バとして設定された他社製アプリケーションへリクエストを渡すことができます（注：日本では現在サポートされていません）。

インターネット／イントラネットアプリケーション
Magic ではブラウザベースのアプリケーションをさまざまな方法で作成できます。Magicは Web サーバ上にあるインターネットリクエスタを利用して、リクエストをリモートのWeb ブラウザから受け取り、そのリクエストを処理し、結果を HTML 形式で戻すことができます。必要とされる HTML 形式のコンテンツを Magic が生成する手段としては次のものがあります。
• ブラウザ形式のオンラインプログラムを作成するブラウザタスク。このタスクはHTML コンテンツを拡張することで、HTML コントロールとその関連データを保持するのに必要な実行ロジック、たとえばイベントの検出とハンドラ処理などを提供します。
• HTMLフォーム形式またはHTML フレームセット形式のフォームを出力するバッチタ
スク。
• HTML テンプレートにデータをマージして出力するバッチタスク。

アプリケーションサーバのセットアップ
Magic 実行エンジンの動作
実行エンジンはリモートサービスのリクエストを実行します。実行エンジンは、アプリ
ケーションをローカルで実行するために使用するものと同一の、実行エンジンのインスタンスです。Magic リクエストゲートウェイは、実行エンジンが MRB（または他のミド
ルウェア）およびリクエスタクライアントと通信できるようにするソフトウェアレイヤ
です。
実行エンジンは、リクエストとステータスに関する情報を 1 つのミドルウェアのみに返します。一方、リクエスタクライアントは複数のミドルウェアと通信でき、ミドルウェ
アは複数の実行エンジンと通信できます。
実行エンジンが接続するミドルウェアのアドレスは MAGIC.INI ファイル内に保存されています。実行エンジンは、起動されると、実行エンジンが使用可能であることをミドルウェアに通知します。メッセージには、実行エンジンでサポートされるアプリケーショ
ンのリストも含まれます。次に、実行エンジンは MAGIC.INI ファイル内で指定されているポート上で待機します。リクエストを受信すると、実行エンジンがアイドル状態である場合、実行エンジンはリクエストされたアプリケーションを開きます。
リファレンス
Magic eDeveloper V9 Plus865

第 20 章 - 分散アプリケーション アーキテクチャ
実行エンジンは、リクエスト内で指定されているユーザ名とパスワードをリクエストログ内に入力します。次に、リクエストされたプログラムを実行し、実行結果をリクエス
タクライアントに送信します。
実行エンジンは、リクエストの実行中、ミドルウェアまたはリクエスタクライアントに「I AM ALIVE」というメッセージを［ServerTimeout］で指定された間隔で送信します。
［ServerTimeout］は、リクエスタクライアントがリクエストとともに送信する値です。
リクエストが有効でない場合、または実行エンジンが使用中である場合、所定のメッセー
ジがリクエスタクライアントに送信されます。
Magic アプリケーションサーバは、クライアントのタイプに関係なく、同じ方法で構築されます。各構成におけるアプリケーションサーバの唯一の相違点は、ミドルウェアモ
ジュールです。

ミドルウェアゲートウェイのロード
ミドルウェアゲートウェイをアプリケーションサーバにロードし、Magic エンジンをミ
ドルウェアゲートウェイに接続するには次の設定が必要です。
1. 必要なミドルウェアゲートウェイをロードします。
Magic エンジンの作業ディレクトリ内にある MGREQ.INI ファイルの［MAGIC_MESSAGING_GATEWAYS］セクション内で、必要なゲートウェイの定義されている行のコメントを解除してください。なお、Magic エンジンは、デフォルトでいつでも MRB に接続が可能であり、MRB に関しては、MGREQ.INI での設定は必要ありません。
複数のミドルウェアゲートウェイをロードできますが、1 つのサーバエンジンは、1 つのミドルウェアモジュールにしか接続できないことに注意してください。
2.［設定／サーバ］テーブルでサーバ設定を定義します。
詳細については、関連するミドルウェアのセクションを参照してください。
3.［設定／動作環境］ダイアログの［アプリケーションサーバ］タグにある［メッセージサーバ］欄に前のステップで定義したサーバを指定し、このサーバがこのエンジンに対するメッセージサーバとなるようにします。
4.［設定／動作環境］ダイアログの［アプリケーションサーバ］タグにある ［アプリケーションサーバとして動作］欄で「Yes」を選択し、アプリケーションサーバとして実行するようにエンジンを定義します。
5. ミドルウェアエージェントを有効にします。
6. 設定を有効にするために、Magic エンジンを再起動します。
詳細についてはこの章の関連するミドルウェアおよびクライアントの節を参照してく
ださい。

サポートされるミドルウェア
Magic では、次のミドルウェアゲートウェイがサポートされています。
• MRB

Magic Request Broker （MRB）
MRB コンポーネントは、ネットワークからリクエストを受信して処理します。リクエス
トとは、リモートプログラムの実行を要求するものであり、これにはパラメータとオプションが含まれています。

866

リファレンス
Magic eDeveloper V9 Plus

サポートされるミドルウェア
リクエストは Magic エンジンに最終的に送信されて実行されます。図 20-2 では、MRB の処理を示しています。

図 20-2 MRB の処理

MRB の主要な機能は次のとおりです。
• クライアントリクエストのキューイング
• リクエストに対する使用可能な実行時エンジンの割当て• リクエストのステータスの管理と通知• 非同期モードでのプログラム起動• 処理内容をログに記録

前提条件
MRB では、WINSOCK 互換 TCP/IP スタックが Windows オペレーティングシステムにインストールされている必要があります。

インストールと設定
MRB を構成するすべてのファイルは、同じディレクトリに存在する必要があります。
• MGRQMRB.EXE は、MRB の実行プログラムです。MRB は、Windows 98 またはWindows NT/2000/Xp で実行できます。Windows NT/2000/Xp では、MRB をサービスとして実行できます。
MRB 処理を始めるには、MGRQMRB.EXE をコマンドラインまたはショートカットから実行します。Windows タスクバー上にアイコンが表示されるので、MRB が動作していることがわかります。
• MGRQGNRC9x.DLL は汎用メッセージレイヤで、これにはサポートライブラリが含まれています。
• MGRB.INI は、初期化のファイルです。このファイルは、MRB の初期化時に読み込まれます。MRB のインストールと設定には、このファイルは必ずしも必要ではありません。MGRB.INI ファイルが存在しない場合、MRB はデフォルトの設定で動作します。
MGRB.INI には、次のパラメータを定義します。
キーワード

説明

［MRB_ENV］セクション

リファレンス
Magic eDeveloper V9 Plus

867

第 20 章 - 分散アプリケーション アーキテクチャ
キーワード

説明

BrokerPort

MRB のポート番号を指定します。このポートにリクエストが送られてきていないか、MRB により常時チェックされます。
構文：BrokerPort = ポート番号
ポート番号のデフォルトは、Magic のレビジョンによって変わる場合があります。

EnginesPriority

コンピュータ名の一覧で（最高で 9 つまで）、サーバエンジンを割当てるために使用します。この一覧の順序に基づいてエンジンが選択され、クライアントからのリクエストが処理されます。
つまり、実行可能であれば一覧の最初のコンピュータのエンジンが実行され、そうでなければ、2 番目のコンピュータのエンジンが実行される、という具合になります。
構文：EnginesPriority=［< コンピュータ名１ >］［,<>］Server Timeout

タイムアウト（単位：秒）で、非同期コールの実行中、この時間が経過するとエンジンから MRB に対して I-AM-ALIVE メッ
セージが送出されます。この値を 0 にした場合、エンジンから
MRB には I-AM-ALIVE メッセージは送られなくなります。そのため、タスクの実行中、エンジンが何らかの原因でクラッシュしたり異常終了したときでも、エンジンから I-AM-ALIVE
メッセージが送られることがなくなるため、その状態は MRBには認識不可能になります。
構文：ServerTimeout = n

CommTimeout

通信を行うときに内部的に行うリトライの最大時間（単位：秒）です。デフォルトは 10 秒になっているため、低速のWAN 環境やトラフィックの多い LAN 環境で通信エラーが発生する場合、この値を大きめに設定する必要があります。
構文：CommTimeout = n

PasswordSupervisor

このキーワードを使用して、ユーザからの MRB に対するアクセスを制限できます。
パスワードを指定した場合、MRB の次の処理でセキュリティ
チェックが実行されます。
1: 新しいエンジンのロード
2: MRB またはエンジンの終了
3: キューにあるリクエストの削除または優先順位の変更
指定を省略した場合には、MRB の処理ではセキュリティ
チェックは行われないため、ユーザ名とパスワードはチェックされません。

868

リファレンス
Magic eDeveloper V9 Plus

サポートされるミドルウェア
キーワード

説明

PasswordQuery

オプションで省略できます。このキーワードを使用して、ユー
ザからの MRB に対するアクセスを制限できます。
パスワードを指定した場合、あるユーザから別のユーザのリク
エストの照会が実行されたとき、そのユーザのユーザ名とパスワードがチェックされます。リクエストは提出時に使用されたユーザ名とパスワードを使用して行なわれるため、自分のリク
エストを照会する場合には、制限はありません。
リクエストの提出時に使用されるユーザ名とパスワードとして、［設定／サービス］のユーザ名とパスワード、Magic のア
プリケーションのログオンに使用されたユーザ名とパスワー
ド、MGREQ.INI ファイルに保存されているユーザ名とパス
ワードはすべて MRB により受け入れられます。
この指定を省略した場合、ユーザ名とパスワードはチェックされません。そのためリクエストは、どのユーザからも照会が可能となり、ユーザは別のユーザのリクエストを確認できます。

AutoLoad

この設定を使用すると、受信したリクエストで使用できるエンジンが見つからない場合に、MRB で別のアプリケーション
サーバエンジンを起動できるようになります。
起動するエンジンのエントリ名と、起動するエンジンの最大数を指定します。最大数に達している場合、それ以降はエンジンを終了しても自動的には起動されなくなります。
構文：AutoLoad = エントリ名 , エンジンの最大数
エントリ名：［MRB_EXECUTABLES_LIST］セクションまたは［MRB_REMOTE_EXECUTABLES_LIST］セクションで定義しているエントリ名
エンジンの最大数：起動されるエンジンの最大数

ReloadMRB により正常に終了されなかった Magic アプリケーション
サーバのインスタンスを MRB が自動的にロードするかどうかを指定します。
構文：Reload=Y または N

DelayServiceStart

秒数を指定します。
MRB がサービスで起動された場合に、指定された秒数だけ起動を遅らせることができます。
MRB がライセンスサーバより先に起動された場合、MRB によって起動された Magic エンジンがライセンスエラーになることを防ぐ場合に使用します。
構文：DelayServiceStart = n （秒単位）

EnableFilters「Filters」パラメータで指定されたフィルタ処理を有効にするかどうかを指定します。
構文：EnableFilters = Y または N

リファレンス
Magic eDeveloper V9 Plus869

第 20 章 - 分散アプリケーション アーキテクチャ
キーワード

説明

Filters

複数のスレッドで異なる処理を実行させたい場合に、スレッド
処理の実行配分を指定することができます。
構文：Filters= キーワード : 割合
例えば、20 スレッドのリクエストを以下のような配分で処理させることとします。
• HTTP ……2 スレッド
• SOAP ……6 スレッド
• COM …… 4 スレッド
• それ以外 …… 8 スレッド
この場合、以下のように指定します。
Filters=HTTP:10%|SOAP:30%|COM:20%
指定した割合の合計が 100% を超えた場合、全体で 100% になるように最後に指定したキーワードの割合が調整されます。
注意：キーワードの名前は、呼び出し側（Magic.ini や
Mgreq.ini）の指定と同じ名前にする必要があります。

AllowReserve

フィルタのキーワードの割合の合計が 100% に満たない場合、残りの割合を他のフィルタ用に利用できるようにするかどうかを指定します。
構文：AllowReserve = Y（デフォルト）または N

Log

上位レベルの MRB の動作（初期化、リクエストの受信、アプ
リケーションサーバの割当、アプリケーションサーバ情報の送信など）を記録するログファイルを指定します。このログにより、特定のリクエストの処理を確認できます。
構文：LOG= ファイル名 同期 レベル
ファイル名 : ログファイル名を指定します。ファイル名に空白を含むことはできません。
同期：• Y……ログファイルは、行ごとに開閉されます。これにより、コンポーネントがメモリ内にロードされているときにも、ファイルを削除できます。複数のモジュールでログファ
イルを共有することも可能です。
• N……ログファイルは、コンポーネントの初期化と終了のときのみに開閉されます。
レベル：• C……ユーザレベル（概要ログ）。
• S……サポートレベル（中間ログ）。
• D……MSE 社の開発者デバッグ用のレベル（詳細ログ）。
低レベルの MRB の動作（接続、送信、受信など）を記録できるようにするには、MRB のカレントディレクトリにある
MGREQ.INI ファイルでのログ設定を行います。

ActivityLog

MRB の動作イベント内容を記録するログファイルのファイル名を指定します。（旧バージョンの「mrb_event.log」に相当します。）
構文：ActivityLog= パス名 ¥ ファイル名
指定されない場合、「mrb_event.log」という名前で作成されます。

870

リファレンス
Magic eDeveloper V9 Plus

サポートされるミドルウェア
キーワード

説明

［MRB_EXECUTABLES_LIST］

オプションのセクションで省略できます。このセクションには、コマンドライン実行ファイルまたはシェルコマンドを記述します。
ここで記述した実行ファイルまたはシェルコマンドは、リクエ
スタから実行することができます。また、MRB の初期化時に起動することもできます。
構文：エントリ名 =< コマンド >,［< 作業ディレクトリ >］,［< ユーザ名 >］, ［< パスワード >］,［<MRB の初期化時に実行される回数 >］［MRB_REMOTE_EXECUTABLES_
LIST］

オプションのセクションで省略できます。マルチコンピュータ
環境で、各コンピュータでエンジンが MRB とは別個に機能しているときに、このセクションを記述します。
MRB のインスタンスはローダとして機能しますが、インスタ
ンスは、エンジンが機能しているコンピュータすべてに対して有効でなければなりません。マルチコンピュータ環境の場合、
このセクションに実行可能ファイルを一覧で指定しておきます。これで、ローカルの MRB からリモートの MRB に対して自動的に接続が実行されるとともに、このセクションに指定した実行可能ファイルがロードされます。なお、リモート MRBにパスワードが設定されている場合、PasswordSupervisor を指定しなければなりません。指定しない場合、パスワードとしてはローカルの MRB のパスワードが使用されます。
構文：エントリ名 =< リモート MRB のノード名／ポート番号>,［< リモート MRB の PasswordSupervisor>］,［< リモート
MRB に定義されているエントリ名 >］,［<MRB の初期化時に実行される回数 >］［MRB_ENGINE_
CLIENTS_MAP］

オプションのセクションで省略できます。開発者に対して、リクエストの受信先のエンジンを制御できます。
例えば、同一の CTL ファイルに対して複数の開発者で開発を行っている場合、ある開発者が、オブジェクトをチェックアウトし、MRB に自分のエンジンを割当てるといった作業が可能です。
構文：< エンジンのホスト名 >:< クライアントのノード名 >［,<>］注意：リモートコールの実行中（このセクションでエンジンがマッピングされている場合）、リクエストゲートウェイでは、リクエストとともに送られてきたユーザ名とパスワードを使用して処理が行われます。
したがって、開発者がまだエンジンにログオンしていないときには、ログオンの際、ユーザ名とパスワードを指定しなければなりません。これで、その開発者が使用できる MCF であるかを確認できます。
なお、ユーザ名とパスワードは、インターネットとコマンドラ
インでは MGREQ.INI ファイル、Magic クライアントでは［サービス］テーブルにおいて定義できます。

リファレンス
Magic eDeveloper V9 Plus871

第 20 章 - 分散アプリケーション アーキテクチャ

MRB の動作
MRB のキュー
MRB（MRB）では、0 から 9 の優先順位に従ってリクエストキューが管理されます。
「0」
は最低優先順位を表します。キュー内には、次の情報が含まれます。
• リクエスト ID• 優先順位• 実行ステータス• アプリケーション名• オリジナルのリクエストパケット• エラーコードMRB では、次の情報を含む関連実行エンジンの各リストが管理されます。
• アドレス• ステータス• 現在のアプリケーション• 使用可能アプリケーション

自動再起動
MRB が異常終了した場合、その MRB を監視している管理処理を介して自動的に再起動を実行します。

アプリケーションサーバの自動終了
MRB が、正常か異常かに関係なく終了して再起動されると、MRB に接続したアプリケー
ションサーバは、60 秒以内に終了します。これは、バックグラウンドモードで実行しているアプリケーションサーバのみに当てはまります。

ロードバランシング機能
Magic の MRB のロードバランシング機能は、優先度や、パフォーマンスおよびコンテキ
ストの処理情況に基づいてリクエストをエンジン振り分けるようにします。

ステータス表示機能
タスクトレーにある MRB アイコンのメニューから「Display AppServers」を選択するとMRB のステータスウィンドウが表示されます。表示の形式は、以下の通りです。
MRB アイコンは、インストール時に MRB を「サービス」でなく、「実行形式」でインストールした場合のみ表示されます。
N host/port pid status (C M L,T) appname• N…… アプリケーションサーバの番号• host…… 稼動しているホスト名• port…… MRB との通信に使っているポート番号• pid…… プロセス ID• staus…… ステータス• C…… 現在実行中のスレッド数• M…… 今までの同時実行スレッド数のピーク値

872

リファレンス
Magic eDeveloper V9 Plus

サポートされるミドルウェア• L…… 同時実行可能な最大スレッド数• T…… 現在保持しているコンテキスト数 ( 新しい表示項目 )• appname…… アプリケーション名

リクエストのフィルタ機能
リクエストのフィルタ機能を利用すると、複数の異なるリクエストに対して MRB や
Magic エンジンが利用できるスレッド数に応じて処理が案分されます。
フィルタ機能は、以下の 3 つのモジュールによって提供されます。
• MRB(Mgrb.ini) …… リクエストのフィルタの有効無効の切替と、Magic エンジンに渡すリクエストのフィルタ用キーワードの付加を行います。
• アプリケーションサーバ (Magic.ini) ……
•

リクエスト受信時……受け取るリクエストのフィルタ処理を行います。

•

リクエスト送信時……コールリモートで送信するリクエストにフィルタ用キー
ワードの付加を行います。

• リクエスタ (Mgreq.ini) …… インタネットリクエスタやコマンドラインリクエスタで送信するリクエストにフィルタ用キーワードの付加を行います。

設定方法
フィルタ機能を有効にするには、Mgrb.ini の［MRB_ENV］セクションにて以下のパラメータを指定します。
パラメータの詳細は、870 ページを参照してください• EnableFilters = Y• Filters = フィルタ用キーワード• AllowReserve ……Yフィルタ用キーワードの指定
コールリモートの場合• 呼出側……Magic.ini の［サービス］特性（Magic.ini の［MAGIC_SERVICES］セクション）にフィルタキーワードを指定します。
例 ： Default Service = Default Broker,,,,RMC• 受信側……Mgrb.ini の ［MRB_ENV］セクションと Magic.ini の［MAGIC_ENV］セク
ションに以下のように指定します。
Filters = HTTP:10% | SOAP:30% | RMC:20%
この場合、20 スレッドのライセンスを持つアプリケーションサーバが、異なる種類のリクエストを処理する際に、以下のような割合を指定することになります。
•

HTTP …… 2 スレッド•

SOAP …… 6 スレッド•

RMC …… 4 スレッド•

フィルタを指定しないリクエスト…… 8 スレッド

リファレンス
Magic eDeveloper V9 Plus873

第 20 章 - 分散アプリケーション アーキテクチャ• キーワードの名前自体に意味はありません。呼出側で指定したキーワードと合っているかどうかで判断されます。上記の例の場合、呼出側では、キーワードは「RMC」になっているため、アプリケーションサーバは、4 スレッド分の処理しか実行されません。
• Magic.ini の ［MAGIC_ENV］セクションの設定が優先されます。Magic.ini にフィルタが指定されていない場合、Mgrb.ini 側が有効になります。
インターネントリクエスタ / コマンドラインリクエスタの場合• 呼出側…… Mgreq.ini の［REQUESTER_ENV］セクションでキーワードを指定します。
Filter = HTTP
• 受信側…… コールリモートの時と同じです。

MRB のエラーメッセージ
以下は、MRB のエラーメッセージとその対応方法の一覧です。
コード

ニーモニック意味

102

ERR_CNCT_REFUSED_MRB

MRB で使用されるホスト名またはポートが不適当な場合、このエラーが発生します。MRBの接続先のポートが適当かどうか、接続が正常かどうかを確認してください。

103

ERR_APP_NOT_FOUND

アプリケーションが MRB に認識されていない
場合、このエラーが発生します。

104

ERR_APP_IN_USE

アプリケーション処理用のエンジンがすべて、他のリクエストの処理中で、使用できるエンジ
ンがない場合に発生します。
また、MRB のタイムアウト設定値が小さい場
合にも、発生することがあります。
さらに、ブローカタイムアウト値に達している可能性もあります。タイムアウトの値は、［設定／サーバ］の「タイムアウト」欄または、
MGREQ.INI ファイルの、「BrokerTimeout」キー
ワードの値が使用されます。

105

ERR_MRB_NOT_RSPND

サーバエンジンから I-AM-ALIVE メッセージが送られないまま、MGRB.INI ファイルの「ServerTimeout 」キーワードの値が経過すると発生します。
コールリモートの場合は、Mgreq.ini ファイルの「RequestTimeout 」の値（デフォルトは 10 秒）を増やしてください。
参照または管理用のリクエストとして、MRBのタイムアウトの値を増やすこともできます。

106

874

ERR_RT_NOT_RSPND

サーバエンジンから I-AM-ALIVE メッセージが送られないまま、MAGIC.INI ファイルまたは
MGREQ.INI ファイルの「RequestTimeout 」キー
ワードの値（時間）が経過した場合、このエラーが発生します。この値を増やしてください。

リファレンス
Magic eDeveloper V9 Plus

サポートされるミドルウェア
コード

ニーモニック意味

107

ERR_CNCT_RESET

アプリケーション処理用のエンジンがリクエス
ト実行中にアボートしたか、ネットワーク接続の失敗が原因で接続がリセットされたかの、いずれかの状況が生じるとこのエラーが発生します。

109

ERR_CNCT_REFUSED_RT

リクエスタと Magic エンジンとの間のセッションを確立できませんでした。
リクエスタと Magic エンジンとのネットワーク
間にファイアウォールやルータなどがある場
合、それらのパケットフィルタリングの設定が要因として考えられます。
また、名前解決が正しくできていないことも要因として考えられます。ネットワーク環境をご確認ください。

110

ERR_REQUEST_TIMEOUT

タスクの処理が完了しない状態で、MAGIC.INI
ファイルまたは MGREQ.INI ファイルの「RequestTimeout 」キーワードの値（時間）が経過したとき、このエラーが発生します。

130

ERR_BAD_MCF

アプリケーションのオープンに失敗した場合、このエラーが発生します。

131

ERR_BAD_PRG

指定されたプログラムの公開プログラム名がアプリケーションに見つからなかった場合、このエラーが発生します。

133

ERR_ACCESS_DENIED

ユーザ名またはパスワードが不適当な場合このエラーが発生します。
また、指定されたユーザにアプリケーションのアクセス権およびプログラムの実行権利がない場合もこのエラーが発生します。

137

ERR_REQ_REJECTED

Magic エンジンが実行モードから開発モードに切り替わったタイミングでリクエストが送られたため処理を実行できない場合に発生します。

138

ERR_RT_ERROR_MSQ

実行されたプログラムで何らかのエラーが発生した場合にこのエラーとなります。

139

ERR_THREAD_ABORTED

実行されたプログラムが異常終了した場合にこのエラーとなります。

146

ERR_BIND_HOST_NOT_FOUND

MGRB.INI ファイルの「BrokerPort」キーワードに正しいホスト名または、IP アドレスが指定されていない場合、このエラーが発生します。

147

ERR_CNCT_HOST_NOT_FOUND ［設定／サーバ］の［サーバアドレス］欄または、MGREQ.INI ファイルの「Messaging Server」
キーワードまたは「Local Host」キーワードに正しいホスト名または、IP アドレスが指定されていない場合、このエラーが発生します。
また、ホスト名の名前解決が正しく行われていない可能性も考えられます。OS の hosts ファイ
ルを確認してください。

148

ERR_CNCT_CLOSED

接続が予期せず切断された場合に発生します。

150

ERR_REFUSED_MRB

アプリケーションサーバが MRB と接続できな
い場合、このエラーが発生します。MRB が起動されている場合、アプリケーションサーバから認識する MRB のホスト名と IP アドレスが正
しいかを確認してください。

リファレンス
Magic eDeveloper V9 Plus875

第 20 章 - 分散アプリケーション アーキテクチャ
コード

ニーモニック意味

151

ERR_CNCT_RESET_BY_REQ

リクエストの実行中にリクエスタとアプリケー
ションサーバの間の接続がリセットされた場
合、このエラーが発生します。このときは、ア
プリケーションサーバからリクエスタに何も返されません。
クライアントやアプリケーションサーバのリク
エスタを確認してください。

Magic のリクエスタ
さまざまなタイプのクライアントが、Magic アプリケーションサーバのサービスを使用できます。サポートされている、各クライアントでは、必要なリクエスタモジュールを使用する必要があります。
また、リクエスタモジュールはクライアントのタイプごとに指定します。

リクエスタの設定
Magic クライアント、インターネットリクエスタ、コマンドラインリクエスタなどの、リクエスタインタフェースに対する設定は、MGREQ.INI ファイルにて行います。このファ
イルは、リクエスタモジュールおよび、汎用メッセージモジュール（mgrqgnrc9x.dll）が存在するディレクトリ内に存在する必要があります。
MGREQ.INI ファイルは、リクエスタの初期化時に読み込まれます。
MGREQ.INI ファイルには、次のパラメータを定義します。
キーワード

説明

［REQUESTER_ENV］セクション
Gateway

リクエスタが使用するミドルウェア。
• Gateway = 1：MRB を使用します。
• Gateway = 5：J2EE を使用します。
構文 : Gateway = n（デフォルト：1 （MRB））

MessagingServer

リクエストを受信するミドルウェアアドレス。
構文 :AltMessagingServer

MessagingServer = ノード名 / ポート番号

代替となる同じ種類の別のミドルウェアのアドレス。
メインメッセージサーバへの接続がエラーになった場合、リ
クエスタはこのアドレスを参照します。
構文 :

876

AltMessagingServer = ノード名 / ポート番号

リファレンス
Magic eDeveloper V9 Plus

Magic のリクエスタ
キーワード

説明

BrokerTimeout

リクエストが MRB に送られた後、MRB から使用可能なエ
ンジンを割当てることができたことが報告されるまで待機す
るときのタイムアウト時間（単位：秒）です。この時間内に使用可能なエンジンが見つからなかった場合、MRB から次のいずれかのエラーコードが返されます。
• APP-NOT-FOUND…このエラーコードは、MRB の内部
データベースにアプリケーションが定義されていないことを示します。
• APP-IN-USE…アプリケーションは定義されているものの、エンジンが使用中であることを示します。
この値を 0 に設定した場合、MRB からエンジンに関する情報は返されません。
構文：BrokerTimeout = n （デフォルト：10 秒）

KeepAlive

mgrqgnrc9x.dll が接続のためのリクエスタオプションを設定したり、接続監視間隔を制御するために OS レベルでの設定を行う場合に使用します。
この設定は、OS の設定が使用される時のみ有効です。シス
テム管理者は、OS の設定間隔を指定しなければなりません。
構文：KeepAlive = Y or N （デフォルト：Y）
注意：日本語版では現在サポートされていません。

RequesterTimeout

タスクが完了するまでの MRB が待機するタイムアウト時間（単位：秒）で、この時間が経過するとタイムアウトになります。
この値を「0」に設定した場合、タスク完了のメッセージは、
MRB には送られません。
構文：RequesterTimeout = n

CommTimeout

通信を行うときに内部的に行うリトライの最大時間（単位：秒）です。
構文：CommTimeout = n（デフォルト：10 秒）

Priority

オプションで省略できます。リクエストのデフォルトの優先順位で、キューに優先順位が割当てられていないときに、この優先順位の値が使用されます。「0」が最低、「9」が最大です。この優先順位は、MRB でのみ有効です。
構文：Priority =n

Username、Password

オプションで省略できます。アプリケーションに対するデ
フォルトのユーザ名とパスワードを指定することができます。リクエストにユーザ名とパスワードが含まれていなかった場合、このデフォルトのユーザ名とパスワードが使用されます。
構文：
Username = ユーザ名
Password = パスワード

DefPath、DefName

オプションで省略できます。デフォルトのディレクトリとファイル名です。リクエストの FILENAME パラメータにパス名及びファイル名が指定されていない場合、このディレク
トリとファイル名が使用されます。
構文：
DefPath = ディレクトリ名
DefName = ファイル名

リファレンス
Magic eDeveloper V9 Plus877

第 20 章 - 分散アプリケーション アーキテクチャ
キーワード

説明

DefHtml

オプションで省略できます。デフォルトの HTML ファイル名です。呼び出されたプログラムから HTML データが返らなかった場合やエラーが発生した場合、インターネットリク
エスタによって、このファイルが検索され表示されます。
構文：DefHtml= ファイル名

Http Vars

HTTP プロトコル上で使用される環境変数の名前を指定する
ことで、その変数が HTTP サーバから Magic プログラムに送られます。プログラム内で GetParam 関数を使用することでこの変数の値を取得することができます。ISAPI 、CGI の各
リクエスタで使用されます。
構文：HttpVars= 変数名 1, 変数名 2,...

HttpSigVars

コンテキストを保持するように定義したバッチプログラム（マージ Web プログラム）を、コンテキスト ID を指定した
リクエストで実行する場合に関係します。
クライアントの識別情報を持たずに実行されたコンテキスト
は、どのユーザーからでもコンテキスト ID が合っていれば処理されてしまいます。
この問題を避ける必要がある場合、クライアントを識別するための認証情報をここで指定します。以下の HTTP 環境変数を指定することでコンテキストを作成したクライアントと異なるクライアントからリクエストを送られた場合、コンテキ
スト ID が合っていてもエラーを返して拒否するようになり
ます。
•
•
•
•
•

Appl

REMOTE_ADDR…クライアント側の IP アドレス
REMOTE_HOST…クライアント側のホスト名
REMOTE_USER…クライアント側のユーザ名
HTTPS, SSL_CLIENT_KEY_SIZE…SSL 関連情報
HTTP_COOKIE …ユーザ定義 Cookie 項目

許可されているアプリケーションの名前で、複数指定する場
合、コンマで区切ります。アプリケーションを指定しなかった場合、すべてのアプリケーションが使用できます。
構文：Appl= アプリケーション 1, アプリケーション 2, ...

AutoLoopBack

MRB との通信にローカルアドレス (127.0.0.1) を使用する場
合に 「Y」を指定します。MRB とリクエスタが同じ PC の場
合に使用してください。
この指定が「Y」の時に、Localhost 以外のアドレスを指定す
ると以下のエラーが発生します。
“Access denied - wring user name or password“
構文：AutoLoopBack = Y or N （デフォルト：N）

MaxUploadKB

インターネットリクエスタを通してアップロードするファイ
ルサイズの上限を指定します。
MaxUploadKB=nnnn （単位 KByte）
上限を超えるとエラー 260 が返ります。
エラーメッセージは、"File upload failed: file size exceeds maximum size limitation."
パラメータが設定されていないか、0 の場合、制限がかかりません。この場合は、ネットワークまたはアプリケーション
サーバ上に負荷をかける場合があります。

878

リファレンス
Magic eDeveloper V9 Plus

Magic のリクエスタ
キーワード

説明

SpecialAffinity

MRB を実行しているサーバがマルチ CPU（または、HT モード）で動作している場合、1 つの CPU で動作するように指定します。
構文：SpecialAffinity = Y or N （デフォルト：N）

Handles

MRB やアプリケーションサーバ、リクエスタによってオープンできるソケットの最大数を指定します。
デフォルト：500
注意：日本語版では現在サポートされていません。

RetryMainTime

リクエスタがその主要な MRB に再接続する前に待機する最小時間（分）を指定します。この設定は、ISAPI と Apache
用のリクエスタのみ有効です。
デフォルトは 5、最小値は 1 です。
注意：日本語版では現在サポートされていません。

Filter

リクエストに追加するフィルタ用のキーワードを指定します。
構文 :Filter = < キーワード >コマンドラインリクエスタやインターネットリクエスタからキーワードを送る場合に指定します。（リモートコールの場
合は、MAGIC.INI で指定されたキーワードが送られます。）
Mgrb.ini の「Filters」パラメータの説明も参照してください。
（870 ページ）

CloseWaitTimeout

準切断状態（例：クライアントによって接続を閉じられた状
態）の接続を閉じる方法を指定することができます。
ショットダウンした MRB や Magic エンジンと以前に接続されていて、再起動後に同じアドレスで再接続する場合、接続を開始するモジュールは、シャットダウンされておらず、準切断状態として接続が存在しています。
このキーワードを使用することで、次のリクエストを受信した時や、指定した時間が経過したときに、接続を自動的に閉じるようにできます。
注意：MRB や Magic エンジンを止めることはできますが、HTTP サーバを停止させることはできません。
構文：CloseWaitTimeout = 数値（デフォルト：-1）
以下のキーワードを指定できます。
• 継続分数…全ての準切断状態の定期的な終了処理期間。
例えば、「5」と指定した場合、Magic エンジンは、5 分ごとに準切断状態を閉じます。更に、リクエストが送られてきた時点でも閉じます。
• -1…定期的に閉じることはありません。準切断状態は、リクエストが送られてきた時点でのみ閉じます。
• 0…準切断状態は、決して閉じることはありません。

リファレンス
Magic eDeveloper V9 Plus879

第 20 章 - 分散アプリケーション アーキテクチャ
キーワード

説明

Log

低レベルのリクエスタの動作を記録するログファイルを指定します。
構文：LOG= ファイル名 同期 レベル
ファイル名：ログファイル名を指定します。ファイル名に空白を含むことはできません。
同期：• Y……ログファイルは、行ごとに開閉されます。これにより、コンポーネントがメモリ内にロードされているときにも、ファイルを削除できます。複数のモジュールでログファイルを共有することも可能です。
• N……ログファイルは、コンポーネントの初期化と終了のときのみに開閉されます。
レベル：• C……ユーザレベル（概要ログ）• S……サポートレベル（中間ログ）• D……MSE 社の開発者向けレベル（詳細ログ）［MAGIC_MESSAGING_GATEWAYS］セクション
ロードする必要のあるモジュールのゲートウェイを指定します。
各リクエスタが処理できるミドルウェアタイプは 1 つのみです。必要なミドルウェアモジュールをロードするには、ミド
ルウェアゲートウェイエントリのマークを外します。
構文：MGSRVR##=DLL, レベル , ファイル名 , 同期 , パラ
メータ##：ミドルウェアタイプの番号• 05……J2EE• 06……SOAPDLL：必要なゲートウェイ DLL ファイルの名前• 06……MGRQSOAP.DLL
レベル：• C……ユーザレベル（概要ログ）• S……サポートレベル（中間ログ）• D……開発レベル（詳細ログ）
ファイル名：ログファイルの名前
同期：• Y……ログファイルは、行ごとに開閉されます。これにより、コンポーネントがメモリ内にロードされているときにも、ファイルを削除できます。複数のモジュールでログファイルを共有することも可能です。
• N……ログファイルは、コンポーネントの初期化と終了のときのみに開閉されます。
パラメータ：ミドルウェアに渡す必要があるパラメータ。
MRB を使用している場合、この設定は不要。

880

リファレンス
Magic eDeveloper V9 Plus

インターネットリクエスタ

MGREQ.INI と MAGIC.INI のパラメータの対応
MGREQ.INI

Magicn の設定欄（MAGIC.INI）

MessagingServer［サーバ］テーブルの［サーバアドレス］欄

AltMessagingServer［サーバ特性］ダイアログの［代替サーバ名］欄

Broker Timeout［サーバ特性］ダイアログの［タイムアウト］欄

Server Timeout［動作環境］ダイアログの［サーバ通信間隔］欄

RequesterTimout［動作環境］ダイアログの［リクエスタのタイムアウト］欄

Priority［コールリモート］コマンドの［リモートパラメータ］ダイアロ
グの［優先順位］欄

Username、Password［サーバ特性］ダイアログの［ユーザ名］欄、［パスワード］欄

Gateway［サーバ］テーブルの［サーバタイプ］欄ログオンユーザの指定サーバにリクエストを送信する際、ログオンユーザを指定することができます。リクエ
スタのパラメータにユーザとパスワードを指定するか、MGREQ.INI ファイルの username/ password パラメータの指定により有効になります。両方に指定がない場合は、ログオンを行わずにプログラムを実行します。
チーム開発でチェックアウトされたプログラムを実行する場合、チェックアウトした
ユーザでのみ実行が可能ですので、この設定を行う必要があります。

インターネットリクエスタ
インターネットリクエスタを使用すると、Magic アプリケーションサーバは、Web サー
バを通してブラウザからのリクエストに応答できます。リクエストされた Magic プログ
ラムは、HTML ファイルを作成してブラウザに返します。
ブラウザは、Web サーバ上に常駐するインターネットリクエスタをアクティブにしてMagic アプリケーションに接続します。
インターネットリクエスタがアクティブになると、リクエストは使用可能な実行エンジンに渡されます。アプリケーションサーバタスクの結果はリクエスタに戻され、ブラウザに表示されます。

インターネット上での Magic の利用方法
Magic を利用すれば、HTML や Java のプログラミングに関する知識がなくてもブラウザ
ベースのアプリケーションを開発できます。Magic では、次のアプローチにより、イン
ターネットとイントラネット用のアプリケーションを設計して開発できます。
• HTML と Java ベースのインタフェース• HTML 形式• HTML フレームセット形式
• マージ
• XML
これらの方法は、個別に、または組み合わせて使用できます。
Magic は、Web アプリケーションの作成、編集、テストを行うツールとして使用できます。Magic では、エレメントが Web ブラウザ上で表示される方法が示され、作業を進める間にデバッグできます。
リファレンス
Magic eDeveloper V9 Plus

881

第 20 章 - 分散アプリケーション アーキテクチャ

インターネットアプリケーション開発のコンセプト
主要コンポーネント
インターネットアプリケーションの主要コンポーネントは次のとおりです。
• アプリケーションサーバ
• Web サーバと対応インターネットリクエスタ• Web ブラウザ
• MRB

ソフトウェア要件
サポートされるミドルウェア
Magic アプリケーションサーバでサポートされているミドルウェアモジュールをロードして実行する必要があります。
詳細については、「サポートされるミドルウェア」のセクションを参照してください。

Web サーバ
インターネット用 Magic アプリケーションを開発するには、Web サーバをインストールする必要があります。Web サーバ上には、インターネットリクエスタモジュールをインストールする必要があります。通常の Magic インストールで、インストールされている
Web サーバをインストールプログラムが自動的に検出し、必要なインターネットリクエ
スタモジュールの定義と設定を行います。

インターネットリクエスタのセットアップ
Magic では、さまざまなタイプの Web サーバ用に対応するインターネットリクエスタが提供されます。（x は、Magic のレビジョンによって変わる場合があります。）• MGRQISPI9x.DLL……Microsoft Webサーバで使用できるインターネットリクエスタ。
• MGRQCGI9x.EXE……ほとんどの Web サーバへのアクセスに使用できるインター
ネットリクエスタ。この CGI ベースのリクエスタは、上の特化したリクエスタよりパフォーマンスが低下します。
インターネットリクエスタモジュールには、次のようなファイルも必要です。
• MGRQGNRC9x.DLL……汎用メッセージレイヤ• MGRQHTTP9x.DLL……HTTP サービスレイヤ• MGREQ.INI……初期化ファイル

Microsoft Web サーバ
Microsoft Web サーバを使用する場合、以下を実行します。
1. MGRQISPI9x.DLL ファイル、MGRQGNRC9x.DLL ファイル、MGRQHTTP9x.DLL ファ
イル、MGREQ.INI ファイルを Web サーバの Scripts ディレクトリに配置します。
2. Scripts ディレクトリに実行権利を設定します。
3.［設定 / 動作環境］ダイアログの［アプリケーションサーバ］タブで、［HTTP リクエ
スタ］欄を次のような形式で指定します。
http://server address/Mgscripts/MGRQISPI9x.DLL

882

リファレンス
Magic eDeveloper V9 Plus

インターネットリクエスタ// の後ろは実際のサーバアドレスで置き換えます。
4. Web サーバに仮想ディレクトリを追加し、このディレクトリに MGBrowserClient.jar
および MGBrowserClient.js を配置します。
5. このディレクトリに読取権利を設定します。
6.［設定 / 動作環境］ダイアログの［Web ドキュメントパスの別名］欄にこのディレク
トリのエイリアスを指定します。また、［Web ドキュメントパス］欄にこのディレク
トリのパスを指定します。
7. Web サーバを再起動します。
Web サーバのエイリアスを使用して独自のディレクトリを定義し、そのディレクト
リに実行権利を付与して使用することも可能です。

その他の Web サーバ
Microsoft 以外の Web サーバを使用する場合、以下を実行します。
1. MGRQCGI9x.EXE ファイル、MGRQGNRC9x.DLL ファイル、MGRQHTTP9x.DLL ファ
イル、MGREQ.INI ファイルを Web サーバの実行可能ディレクトリ（CGI-BIN など）に配置します。
2. このディレクトリに実行権利を設定します。
3.［設定 / 動作環境］ダイアログの［アプリケーションサーバ］タブで、［HTTP リクエ
スタ］欄を次のように設定します。
http://your server address/CGI-BIN/MGRQCGI9x.EXE// の後ろは実際のサーバアドレスで置き換えます。
4. Web サーバに仮想ディレクトリを追加し、このディレクトリに MGBrowserClient.jar
および MGBrowserClient.js を配置します。
5. このディレクトリに読取権利を設定します。
6.［設定 / 動作環境］ダイアログの［Web ドキュメントパスの別名］欄にこのディレク
トリのエイリアスを指定します。また、［Web ドキュメントパス］欄にこのディレク
トリのパスを指定します。
7. Web サーバを再起動します。
Web サーバのエイリアスを使用して独自のディレクトリを定義してこのディレクトリに実行可能権利を設定し、ファイルを格納できます。

インターネットアプリケーションのパラダイム
インターネットアプリケーションを構築するため、Magic では次のようなパラダイムを提供しています。
• オンライン指向のパラダイム……ブラウザタスクとして定義されたプログラムを使用して、専用の Java アプレットおよび Java Script と統合された HTML ファイルを作成します。
• バッチ指向のパラダイム……バッチタスクとして定義されたプログラムを使用して、ブラウザからパラメータを受け取り、必要なインタフェースとデータから HTML ファ
イルを作成します。
インターネットプログラムにて、日付項目にパラメータとして不正な値を渡した場
合、日付は「7908/01/04」となります。

リファレンス
Magic eDeveloper V9 Plus883

第 20 章 - 分散アプリケーション アーキテクチャ

SOAP サーバリクエスト
Web サービス機能をサポートする mgrqsoap.dll ファイルをロードする場合は、Mgreq.ini
ファイルの MGSRVR06 行からセミコロンを取り除いてください。mgrqsoap.dll ファイル
が Magic と SOAP サーバの間のメッセージの送受信を処理します。

ブラウザ形式のインターネットアプリケーション
Magic では、ブラウザが１度に 1 つのインタラクションのみと接続できるようにして、ブラウザ形式のアプリケーション用に総合的なソリューションを提供します。実際のアプ
リケーションは、多くのインタラクションに基づいています。クライアントは、各イン
タラクションを新しいページとして表示します。
ブラウザ用アプリケーションのオンラインインタフェースを構築する場合、クライアン
トとサーバが特定要件を満たす必要があります。この要件については、以下を参照してください。

ブラウザクライアントタスクの作成
ブラウザタスク［タスク特性］ダイアログの［タスクタイプ］欄で［R= ブラウザ］としてタスクを定義
すると、オンラインタスクを開発するときと同じようなアプローチを使用してブラウザ
クライアントタスクを作成できます。

APG（Automatic Program Generator）［APG］ダイアログの［オプション］欄で［R= ブラウザ］を指定して APG を実行すると、基本的なブラウザ形式タスクを生成できます。

ロジックの作成
ブラウザタスクに必要なロジックは、Magic の処理コマンドと関数を使用して作成できます。
処理コマンドは、レコードメインを除くすべてのハンドラ内で使用できます。
レコードメインは、データビューの作成（つまり、［セレクト］コマンドや［リンク］コマンド）のみに使用します。
ブラウザタスクでサポートされる処理コマンドと関数は、以下の通りです。

処理コマンドブラウザタスクでサポートされている処理コマンドは次のとおりです。
• サーバ側で処理されるもの
•

データ入力

•

データ出力

•

エディット

•

OS コマンド•コール• クライアント側で処理されるもの

884

•

エラー

•

イベント実行• サーバとクライアントで処理されるもの
リファレンス
Magic eDeveloper V9 Plus

ブラウザ形式のインターネットアプリケーション
•

ブロック

•

アクション

•

項目更新

関数
• サーバ側で処理されるもの
ANSI2OEM
Blb2File
CallDLL
CallDLLF
CallDLLS
CallProg
ClrCache
CndRange
Counter
CtxKill
CtxLstUse
CtxNumCtxProg
CtxSize
CtxStat
CurrPosition
DbCache
DbCopyDbDel
DbDiscnt
DbERR
DbExistDbNameDbRecs
DbReload
DbSizeDDEBegin
DDEEndDDEGetDDEPoke
DDERR
DDExecDelay
DiscSrvr
EOF
EOP
ErrDatabaseName
ErrDbmsCode

リファレンス
Magic eDeveloper V9 PlusERRDBMSMESSAGE
ErrMagicName
ErrPosition
ErrTableName
EuroCnv
EuroDelEuroGetEuroSetEuroUpd
EvalStr
ExpCalc
File2Blb
File2OLE
FlwMtr
GetLang
GetParamGroupAdd
HTTPGetHTTPPost
INIGet
INIGetLn
INIPutInTrans
IOCopyIOCurrIODel
IOExistIORen
IOSize
KbGet
KbPut
LIKE

Line
LMChkIn
LMChkOutLMUVStrLock
LOGICAL
MailBoxSet
MailDisconnect
MailError
MailFileSave
MailLastRC
MailMsgBCC
MailMsgCC
MailMsgDate
MailMsgDel
MailMsgFile
MailMsgFiles
MailMsgFrom
MailMsgHeader
MailMsgId
MailMsgReplyTo
MailMsgSubj
MailMsgText
MAILMSGT
MailSend
MDate
MlsTrans
OEM2ANSI
RqCtxInf
RqCtxTrm
RQCRTCTXS
Owner
Page

PPD
Pref
Prog
ProgIdx
RightAdd
RightsRollback
RqRtCtx
RqExe
RqLoadRqQueDel
RqQueLst
RqQuePri
RqReqInf
RqReqLst
RqRtApp
RqRtApps
RqRtInf
RqRts
RqRtTrm
RqStat
RunModeSetLang
SetParam
Sys
Term
TEXT
TransMode
UDF
UnlockUser
UserAdd
VarPicVisualXMLCntXMLExist
XMLFindXMLGet885

第 20 章 - 分散アプリケーション アーキテクチャ• クライアント側で処理されるもの
CallJS
CallOBJ
CHeight
CLeft
ClickCXClickCY
ClickWX•

EditSetClickWY
HandledCtrl
LastPark
MAXMagic
MINMagic
SstCrsr
WINBoxClipAdd
ClipRead
ClipWrite
CtrlGoto
CurRow
EditGetサーバとクライアントで処理されるもの
+
*
/
MOD
^
<>
<
<=
>
>=
OR
AND
NOT
ABS
ACOS
AddDate
AddTime
ASC
ASIN
ATAN
BOM
BOY
CASE
CDOW
ChkDgt

CHR
CMonthCOS
CRC
CTop
CtrlName
CWidthDate
Day
DbRound
Del
DOW
DStr
DVal
EOM
EOY
EXP
Fill
Fix
Flip
Flow
Hour
Hstr
HBAL
Idle
IF
Ins
InStr

SoundX
Stat
Str
StrToken
StrTokenCnt
TAN
TDepth
THIS
Time
Trim
TStr
TVal
Upper
Val
VarAttr
VarCurr
VarCurrN
VarIndex
VarInp
VarModVarName
VarPrev
VarSet
ViewMod
Year

IsDefault
ISNULL
Left
Len
Level
LOG
Lower
LTrim
MAX
MID
MIN
MinuName
Minute
Month
MStr
MVal
NDOW
NMonth
NULL
RAND
Range
Rep
RepStr
Right
Round
RTrim
SecondSIN

BLOB のサポート
ブラウザクライアントは、ブラウザタスクのデータビューの一部として BLOB 項目をサポートしています。ブラウザクライアントでの BLOB の動作は以下の通りです。
• BLOB 項目は、HTML のエレメントを使用して表示できません。
• RTF を含んだ BLOB 項目は、文字列関数を使用してクライアント上で操作できます。

886

リファレンス
Magic eDeveloper V9 Plus

ブラウザ形式のインターネットアプリケーション• BLOB 項目は、以下の文字列関数をサポートしています。
OEM2ANSI
Rep
RepStrRight
RTrim
StrToken
Trim
Upper

Del
Flip
Ins
InStr
Left
Len
Lower
LTrim
MID

明示的なハンドラ
ハンドラは、システムイベントハンドラまたは内部イベントハンドラとして定義できます。
• システムイベントハンドラ……さまざまなキー入力の組合せに独自のハンドラを定義できます。ただし、キー入力の組合せにブラウザ独自の機能が対応する場合、その機能を上書きして変更することはできません。
• 内部イベントハンドラ……ブラウザクライアントでは、次の内部イベントのみがサポートされています。
照会
修正
登録
行作成
行削除
取消
終了
画面先頭
画面末尾

テーブル先頭テーブル末尾
前項目
次項目
前行
次行
前ページ
次ページ
前画面

次画面
前タブ
次タブ
ヘルプ
ビュー再表示クリック
ダブルクリック
マウスアウト
マウスオーバヘルプアクションのサポート• Magic のヘルプイベントは F1/Ctrl+F1 を押すことで、ブラウザからヘルプアクションを起動し実行することができます。
• ヘルプイベントが実行された場合、定義されたヘルプの URL を表示する新しいヘル
プウィンドウが開きます。ブラウザのヘルプウィンドウは表示されません。
• HTML コントロールからヘルプを呼び出した場合、Magic は HTML コントロールに割り当てられたヘルプを表示します。ヘルプが HTML コントロールに割り当てられない
場合、Magic はフォームに割り当てられたヘルプを表示します。ヘルプがフォームに割り当てられていない場合、Magic はブラウザの内部ヘルプを表示します。

インタフェースの作成
ブラウザタスクのインタフェースは、HTML ベースのインタフェースです。ブラウザタ
スクのインタフェースは、実際の HTML ファイルに基づいています。
インタフェースの編集は、［設定／動作環境］ダイアログの［アプリケーションサーバ］
タブにある［Web オーサリングツール］で指定されているツールを使用して行います。
このツールはブラウザ形式フォームの［HTML コントロール］テーブルの［HTML エディタ］ボタンを押下することで起動し、このときにこのフォームが使用する HTML ファイ
ルが開きます。

リファレンス
Magic eDeveloper V9 Plus

887

第 20 章 - 分散アプリケーション アーキテクチャ

インタフェースの管理
インタフェースは HTML の各エレメントから構成され、Magic 開発モードの外部で定義されます。Magic では、［HTML コントロール］テーブルを使用してこれらの HTML エレ
メントを処理できます。
［HTML コントロール］テーブルは、ブラウザ形式フォームからズームすると開きます。
このテーブルには、使用している HTML 要素のリストが表示されます。各要素では、デー
タ項目や式を割当て、要素でサポートされている、さまざまな特性に動的な値を定義できます。
HTML エレメントの共通特性の初期値および固定値は、HTML オーサリングツールで定義する必要があります。

サーバ／クライアント処理の利用
ブラウザクライアントにおける Magic の処理（コマンドや関数の実行）は、処理をどこで行うかにより、次の三つに分類できます。
• クライアント……処理はクライアント側でのみ行うことができるもの。CallJS 関数な
どがクライアント側関数の例です。
• サーバ……処理はサーバでのみ行うことができるもの。INIGET 関数などがサーバ側関数の例です。
• クライアントとサーバ……処理はクライアント、サーバいずれでも実行可能なもの。
ブラウザクライアントモジュールは、上記のカテゴリに属する処理を行う上で、クライ
アントとサーバの間の通信が最小になるように最適化して、実行を行うようになっています。
サーバ側のエンジンは、処理フローのコマンドをチェックして、サーバ側で実行できる処理が続く限り、ブラウザクライアントモジュールとの通信を行わずに実行を続け、クライアントでしか実行できない処理に行き着いたとき、あるいはひとつのハンドラの処理が最後まで行ったときに初めて、クライアントに制御を返します。これにより、クライアントとサーバの間の通信オーバーヘッドを最小にすることができます。

サーバ／クライアント処理の表示
開発モードでは、各ハンドラや処理コマンドおよび関数がどこで処理されるかを表示します。行番号カラムの左側に処理モードとして以下のような文字が表示されます。
• C …… クライアント側で処理• S …… サーバ側で処理• M …… 両方で処理
文字が表示されない場合は、クライアントかサーバのどちらかで実行されます。
処理モードの表示は、［オプション］プルダウンメニューの［処理情報を表示］をクリッ
クすることで、表示の有無を切り替えることができます。この指定は、以下のレジスト
リに登録されます。
HKEY_LOCAL_MACHINE\SOFTWARE|Magic Software
Japan\Magic\9.40\Browser Information\ShowHandlingInfo•

0 …… 処理モードを表示しない•

1 …… 処理モードを表示する（デフォルト）［処理情報を表示］が「オン」になっている場合には、それぞれ以下のオブジェクトで表示されます。

888

場所

表示の単位

処理テーブル

コマンド

式テーブル

式
リファレンス
Magic eDeveloper V9 Plus

ブラウザ形式のインターネットアプリケーション
場所

表示の単位

関数一覧

関数

また、以下のように実行の場所（クライアント／サーバ）に不整合がある場合、プログ
ラムチェック時にエラーになります。
• クライアントのみで実行可能な関数をタスク前処理に設定した場合。タスク前処理では常にサーバで処理が行われます。
• 一つの式にクライアントの関数とサーバの関数を混在して設定した場合。
例：CallProgURL ( SYS(), 'Prog1', '' )プログラムを開発する際には、プログラムロジックが許す限り、「S」あるいは「C」が連続して続くような形に処理フローを定義するようにしてください。これにより、通信な
しで連続して実行できるコマンドの数が増えるので、実行効率が良くなります。

クライアント側での処理
Magic が作成し、JAVA アプレットと Java Script
クライアント上で実行される HTML 出力は、によって拡張されています。これらのモジュールは、次の機能を提供します。
• ページ上で発生するイベントを捕らえて処理します。
• インタフェース要素のデータと外観を再計算してリフレッシュします。
• クライアント側で実行できる Magic 関数を実行します。たとえば、数値、文字列、日付、時刻を操作する関数を実行します。
• データビューを更新します。
• 項目レベルの書式チェックを行います。
• ブラウザクライアントが表示できる範囲よりも多いデータをローカルキャッシュに維持します。このキャッシュでは、新しいデータをローカルにスクロールでき、クライアントとサーバ間で必要になる通信の量が減ります。

サーバ側での処理
サーバ側の処理機能は、ブラウザ形式のアプリケーションで最も重要な役割を担っています。サーバは次の機能を提供します。
• 各リモートクライアントを識別します。サーバは、各クライアントタスクのコンテキストを維持します。
• タスク内でのクライアントの正確な位置、およびタスクのトランザクション内で操作されたデータの内部記述であるコンテキストを確立します。
• クライアントから送られたデータ操作を変換し、必要なデータベースに渡します。
• クライアントでレコードをリンクしなおしたとき、新しくリンクされたレコードを取得します。
• クライアント側で実行できない、その他の関数を実行します。
• ブラウザタスク実行時に、サーバ側で処理している間はマウスカーソルは待ち状態の形状になります。サーバ側の処理が終了すると、通常の形状に戻ります。

クライアントとサーバ間の通信
初期ロード時には、特別なメッセージがサーバに送信されます。このメッセージは、コンテキスト ID とセッションカウンタを含んでいます。セッションカウンタは最初は「0」に設定されています。
クライアントからリクエストが送信されるたびに、セッションカウンタの値は増えてゆきます。値が 0 より大きいが、サーバが予期する値よりも小さいセッションカウンタを受け取ると、サーバは次のメッセージを返します。
Context is already in use
リファレンス
Magic eDeveloper V9 Plus

889

第 20 章 - 分散アプリケーション アーキテクチャ
クライアント／サーバ時の動作として次のことに留意してください。
• ページがアンロードされたが、タスクが適切に終了しない場合（ブラウザ機能としての「進む」と「戻る」、または「ブラウザの終了」を使用した場合など）、クライアン
トはデータビュー内の変更内容をサーバに送信し、一方サーバ側はペンディングス
テータスになります。クライアントは応答を待ってからアンロード処理を続けます。
• 返されたコンテキスト ID とセッションカウンタは、クライアントメッセージ内のものと同じになる必要があります。値が異なる場合、次のようなエラーメッセージが出されます。
Invalid context ID or Session Counter
コンテキストは、［設定／動作環境］ダイアログの［コンテキスト非稼動タイムアウト］
欄または［コンテキストのアンロードタイムアウト］欄の設定に基づいて、タイムアウ
トに達するまでサーバ上でペンディングステータスのまま保持されます。

ブラウザ／クライアントイベント
クライアントイベント
クライアント側の常駐アプレットは、暗黙的または明示的な Magic ハンドラのトリガとなるブラウザイベントを捕らえ、処理します。データビューに対応する HTML 内の各コ
ントロールでは、次のブラウザイベントを処理できます。
• コントロール前処理• コントロール後処理• 確認• クリック• ダブルクリック• マウスオーバ• マウスアウト
JavaScript で記述されているブラウザイベントハンドラは、イベントを処理するアプレッ
トのメソッドを呼び出します。このメソッドは暗黙的イベントか明示的イベントを識別し、必要な処理を行ないます。最初に暗黙的イベントが処理されてから明示的イベントが処理されます。

サーバイベント
それぞれの Magic イベントハンドラは、コマンドのリストに割当てられます。次のうちいずれかが該当する場合、クライアントはコマンドを実行できません。
• メインの式か条件式に関わらず、クライアントが評価できない関数がコマンド内の式に含まれているます• コマンドが、項目更新、コール、ブロック、ブロック終了、アクション、エラーのいずれでもありません。
• コマンドが項目更新であり、対象項目がリンクの一部です。
クライアント内で実行できないコマンドがイベントハンドラに含まれている場合、クライアントはコマンドをサーバに送信し、サーバにイベントの処理を委ねます。

暗黙的イベント
暗黙的イベントは、イベントハンドラテーブル内で定義されていないもので、次のものが含まれます。
• タスク初期化……フォームコントロールとその特性に値を割当てます。
• レコード前処理の前……レコードを取得して代入式と特性式を評価し、レコードを表
示します。

890

• 前／次レコード……クライアントキャッシュ内にレコードがある場合、それを取得して表示します。クライアントキャッシュ内にレコードがない場合、サーバからチャンクを取得してレコードを表示します。
リファレンス
Magic eDeveloper V9 Plus

ブラウザ形式のインターネットアプリケーション• 前／次ページ……クライアントキャッシュ内にページがある場合、それを取得して表示します。クライアントキャッシュ内にページがない場合、サーバからチャンクを取得してページを表示します。

プログラムやサブタスクの呼び出しプログラムやサブタスクを、イベントハンドラ内から呼び出すことができます。呼び出
しを含むイベントハンドラは、サーバで実行されて HTML 文字列を返します。
この HTML
文字列は別のブラウザウィンドウ内に表示されます。このウィンドウには、独自のアプ
レットがないため、元のウィンドウのアプレットを呼び出してイベントを処理します。
ブラウザタスクからは、オンラインタスクを呼び出すことはできません。
ブラウザタスクは、直接呼び出す場合に限り、別のブラウザタスクを呼び出すことができます。つまり、中間にバッチタスクを介することはできません。
ブラウザタスクは単純な HTML 出力を作成するバッチタスクを呼び出すことはできます。

上書きされたブラウザタスクを閉じる
ブラウザタスクが、現在開いている子タスク（タスク Ａ）をクローズして、別の子タスク（タスク Ｂ）を起動した場合、以下のような処理手順で実行されます。
• タスク Ｂ がオープンされます。タスク前処理と最初のレコード前処理が実行されます。その結果としての HTML ページが、ブラウザクライアントへ渡ります。
• タスク Ａ が完全にクローズされます。レコード後処理とタスク後処理が実行されます。終了時 URL は無視されます。
• タスク Ｂ がタスク Ａ の代わりに表示されます。
• もしタスク Ａ が適切にクローズされなかった場合（例えば、タスク Ａ のレコード後処理でアクションやエラーコマンドの実行によって）、タスク Ｂ は、クローズされます。タスク Ｂ で実行された、クライアントに影響する処理コマンド（例えば、ブラ
ウザタスクの実行やアクションコマンド）は無視されます。この場合、タスク Ｂ をクローズさせないようにすることはできません。

先頭ウィンドウの上書き
以下のようにしてコンテキストをクローズしないで、一番先頭のウィンドウ（ルートタ
スクのウィンドウ）を置き換えることができます。
1. メインプログラムによってハンドラ定義された非同期イベント（［ウェイト］特性が「No」）を実行します。メインプログラムのハンドラには、コールプログラムコマンド（［出力先フレーム］特性が「_top」）が含まれています。
この場合以下のように動作します。
•

新しいタスクの前処理が実行されます。

•

以前の全てのタスクはクローズされます。

•

新しいタスクが画面に表示されます。

•

Magic が以前のタスクをクローズできない場合（エラーコマンドが実行された
り、［エラー発生時］オプションが「R= 回復」でデータエラーが発生した場合）、
新しいタスクはそのタスク後処理が実行されクローズされます。

2. メインプログラムによってハンドル処理されるルートタスクのタスク後処理で非同期イベント（［ウェイト］特性が「No」）を実行します。
•

メインプログラムのハンドラはコールプログラムを含んでいます。

•

出力先フレームの指定内容や、ハンドラが実行されるタイミングは影響しません。

•

全てのブラウザプログラムがクローズされます。

•

起動されたプログラムは新しいタスクになります。

リファレンス
Magic eDeveloper V9 Plus

891

第 20 章 - 分散アプリケーション アーキテクチャ

外部イベントの起動
Magic は、ブラウザクライアントページから実行される外部の JS モジュールから、ブラ
ウザクライアント JS モジュールによって提供される MGExternalEvent 関数を使用してMagic の外部イベントを起動することができます。MGExternalEvent 関数が実行された場
合、外部イベントが Magic のイベントキューに加えられ、通常の Magic イベントと認識されます。

MGExternalEvent 関数
構文：

MGExternalEvent( パラメータ 1, パラメータ 2)

パラメータ：

パラメータ……パラメータとして渡す文字列。渡されるパラメータは、ハンドラに定義された変数で受け取ることができます。パラメータの数に制限はありません。

戻り値：

論理値
•
•

True…ブラウザクライアントがロードされた場合
False…ブラウザクライアントがロードされない場合

バッチタスクの起動
ブラウザタスクは、入出力テーブルに登録されたリクエスタに出力送信するバッチタス
クの起動をサポートします。HTML フォームまたは HTML マージフォームを作成する
バッチタスクを呼び出しリクエストを送信する場合、出力内容は、コールプログラム、
コールタスク、コール式コマンドの［出力先フレーム］特性に定義されたブラウザウィ
ンドウに表示されます。
次のコールコマンドで他のバッチタスクを起動する場合、そこで定義された［出力先フレーム］特性は無視されます。ブラウザタスクが起動したバッチタスク内のコールコマ
ンドで定義された［出力先フレーム］特性のみ使用されます。

現在のコンテキスト内のバッチタスク
コールプログラム、コールタスクまたはコール式コマンドで起動されたバッチタスクは起動したタスクのアクティブなコンテキスト内で実行します。これは、変数やタスクツ
リー、グローバルパラメータ、メモリテーブル、トランザクションのような全てのコン
テキストのリソースが起動されたバッチタスクで利用可能であることを意味します。
バッチタスクが終了した時、コンテキストリソースへの変更はコンテキスト内で保持されます。

モーダレスウィンドウ
バッチタスクの結果ページは、モーダルウィンドウにはできません。常にモーダレスウィ
ンドウとしてオープンします。

コンテキスト外となる結果ページ
バッチタスクが終了するときにオープンされる結果ページは、もとのコンテキストにア
クセスできません。

ネストされたバッチタスクからの結果ページ出力
リクエスタへの出力は、ブラウザタスクから直接起動されたバッチタスクおよびさらにそこから起動されたバッチタスクによって行われます。結果ページは、先頭のバッチタ
スクが終了したときにクライアントに返されます。

892

リファレンス
Magic eDeveloper V9 Plus

ブラウザ形式のインターネットアプリケーション

結果ページ出力のないタスク
リクエスタに出力しないバッチプログラムが実行されると、結果ページもオープンしま
せん。

再計算
再計算は、データ項目の変化に伴って発生する暗黙的イベントです。いずれかの値が変更されるたびに、再計算対象となる項目がチェックされます。
• その他のデータ項目の代入式• 各コントロール特性• 式がトリガするイベントハンドラ
値の変化で再計算イベントが必要になり、その再計算イベントがサーバで処理すべきものである場合には、クライアントはコマンドをサーバに送信し、サーバは計算値を返します。

項目レベルの確認
エンドユーザのデータ入力時、クライアントでは、項目の書式、マスク文字、および範囲をチェックします。チェックされるタイプは次のとおりです。
• 数値型
• 文字型
• メモ型
• 日付型
• 時刻型
• 論理型
マスク文字は、エンドユーザ入力の項目書式の構成評価に使用します。
エンドユーザは、項目に任意の文字列を入力できます。入力された内容は、通常、フォーカスがその項目から他に移るタイミングでチェックされます。その他、項目レベルでは次の内容を処理します。
• 文字型項目やメモ型項目に、大文字や小文字のみ、または数字のみの書式指定がある
場合には、チェックはただちに実行されます。
• 入力文字列が項目のマスク指定に準拠しない場合、前の値に戻されます。
• チェック後のデータがその項目で正しく解釈できない場合、前の値に戻されます。
• 範囲指定があるときは、範囲から外れた入力の場合、前の値に戻されます。
入力データのチェックで問題がなければ、その文字列が入力項目内に表示され、フォー
カスは他に移ります。前の値に戻された場合、ステータスバー上にメッセージが表示され、フォーカスがその項目に戻ります。
パラメータが再計算されたとき、新しい位置付値に従って再位置付けされます。

リファレンス
Magic eDeveloper V9 Plus893

第 20 章 - 分散アプリケーション アーキテクチャ

バッチ形式の HTML プログラム
従来形式のインターネットアプリケーションフロー
従来形式のインターネットアプリケーションは、ブラウザクライアント形式のアプリ
ケーションと異なり、Magic アプリケーションサーバとの間で、常時接続が確保されているわけではありません。この形式のアプリケーションは、バックグラウンドで Magic
サーバが HTML ページを生成するバッチ処理になります。イメージ、データ、スタティッ
クテキストなどを含む HTML ページを生成すると、その内容がクライアントとなるブラウザに送信され、この時点で Magic のタスクは終了します。HTML ページは、クライア
ントのブラウザ上で独立したエンティティになり、Magic アプリケーションサーバと
MRB に接続しません。
このようなバッチ形式のインターネットアプリケーションは、通常の場合、ページ単位で動作します。ブラウザは、ハイパーリンクか URL アドレスで、次の HTML ページを取得するリクエストを送信します。
Web サーバは、パラメータを含めてリクエストの内容を読み取ります。Web サーバはHTML ファイルをブラウザに送信します。ブラウザは、情報を Web サーバに送信できるようになります。
クライアントパラメータを含むリクエストをブラウザから受け取ると、Magic アプリケー
ションサーバは、HTML ファイルを生成し、使用中のインターネットリクエスタでクラ
イアントブラウザに直接送信します。

Magic HTML フォームエディタ
Magic に組み込まれている HTML フォームエディタでは、ハイパーリンクの編集、ブラ
ウズ、操作、テーブルとフレームの設計、タグの使用を行い、HTML ページを構築できます。このエディタでは、次のような多くのコントロールがサポートされています。
• テキスト• リッチテキスト• プッシュボタン
• イメージ• コンボ／リストボックス• チェックボックス• ラジオボタン• テーブルコントロール
Magic では、アプリケーションデータを HTML ページに埋め込むことができるので、ス
タティックテキストをデータとグラフィックオブジェクトに統合できます。
コントロールパレット内にある Java アプレットコントロールでは、外部 Java アプレット
を実行モードで統合できます。また同様に ActiveX コントロールも組み込まれているので、外部 ActiveX オブジェクトを HTML フォーム内で統合できます。これにより、サードパーティ製の ActiveX コンポーネントを活用できます。
このようにクライアント機能とインタフェースはインターネットで分散できますが、ア
プリケーションロジックは安全に隔離されます。
なお、HTML フォームエディタを使って開発を行う場合、HTML タグを意識したり、HTML ファイルとして別途保存したりする必要はありません。

外部 HTML エディタの使用
外部 HTML エディタとシームレスに統合するために、Magic の HTML フォームに外部のHTML ファイルをマージすることができます。

894

リファレンス
Magic eDeveloper V9 Plus

ブラウザ形式のインターネットアプリケーション
この機能を利用すれば、選択した HTML オーサリングツールで既存 HTML ファイルの開発やサポートを行いながら、Magic の開発環境と実行モード環境を利用することができます。

Magic フレームセットエディタ
Magic フレームセットエディタでは、ブラウザウィンドウを複数のウィンドウに分割し、それぞれに別々の文書を表示できます。各文書が、さまざまな HTML エディタの組み合
わせの結果であることに注意してください。
HTML 文書内のフレームセットでは、Web ページが複数のスクロール可能領域に分割されて表示されます。Magic フレームセットエディタでは、Magic インターネットアプリ
ケーション、名前、境界、スクロールなどをフレームセット内の各フレームに割当てることができます。
開発者は、Magic フレームセットエディタを使用すると、HTML タグの作成や HTML ファ
イルの保存などの作業が容易になります。

ブラウザクライアント・モジュール
ブラウザクライアントの Java アプレットモジュールは、VeriSign のデジタル署名により証明されています。これは、エンドユーザにこのモジュールの内容が改ざんされなかったことを VeriSign 承認証明書によって確認することを意味します。
署名されたアプレットファイルは、標準的なアプレット・ファイルと異なります。署名されたアプレットファイルと署名されていないアプレットファイル名の違いは最後の文
字 'S' によって識別することができます。
例：MGBC901_03S.cab
アプレットの最初のロード時にブラウザ・ビルトイン確認（セキュリティ警告）ダイア
ログが表示されます。実行するには、はい (Y) を選択してください。

マルチリンガルサポート
MGBCL9x0_0nxxx.cab という CAB ファイルがブラウザクライアントモジュールとして提供しています。ここには国別の言語でのエラーメッセージの文字列が定義されています。
日本語版では、日本語（xxx の部分が JPN）と、英語 （同、ENG）とが提供されています。エラーメッセージの言語はアプリケーションサーバが使っている Mgconstw ファイルの拡張子で切り替わります。（jp2 や jp3 は、全て jpn と解釈されます。）

ツールイメージファイル
ブラウザクライアントに特定のファイル名のイメージファイルを HTML テンプレートの中に配置することで、良く使う「次レコード」「次ページ」などの内部イベントを発生させることができまます。ファイルは、インストール時に「Java スクリプトの転送先ディレクトリ」で指定されたディレクトリにコピーします。
ツールイメージファイルには以下のものがあります。
ファイル名

name 属性の指定

mgvcr.jpg

MG_VCR「次レコード」「次ページ」などのイベントが発生します。

mgedit.jpg

MG_EDIT「行作成」「行削除」「キャンセル」などのイベントが発生します。

MG_CANCEL.JPG
mgcalcel.jpg

MG_CANCEL「キャンセル」イベントが発生します。

MG_EXIT.JPG
mgexit.jpg

MG_EXIT「終了（E）」イベントが発生します。

リファレンス
Magic eDeveloper V9 Plus

クリック時の機能

895

第 20 章 - 分散アプリケーション アーキテクチャ
name 属性の指定

ファイル名

クリック時の機能

MG_QUIT.JPG
MG_QUIT「取消終了」イベントが発生 します。
mgquit.jpg
HTML テンプレートファイル上では、次のような形で利用します。
（ここで「/Magic9xJava」というのは、インストール時に「Java アプレットの転送先ディレクトリエイリアス」で指定された仮想ディレクトリ名です。インストールの設定に合わせて変更してください。）<IMG SRC="/Magic9xJava/MG_CANCEL.JPG" name="MG_CANCEL">

ブラウザクライアントのエラーメッセージウィンドウブラウザクライアントに HTML ページの妥当性をチェックするためのパラメータを渡すことができます。この設定で実行すると、エラーメッセージが独立したウィンドウで表示され、ユーザはエラーの情報を確認することができます。
方法は、URL に DEBUG_CLIENT=1 というパラメータを付加します。このパラメータに
1 以外の値を指定すると、HTML ページのチェックを行いません。
プ ロ グ ラ ム リ ポ ジ ト リ か ら [F7] キー でブラウザタスクを実行した場合は、常に
DEBUG_CLIENT=1 が付加されて実行されます。つまり、開発モードで実行すると、常にチェック処理が有効になります。

エラーウィンドウを表示させるための URL の例：
http://servername/Magic9Scripts/
mgrqispi9x.dll?APPNAME=MYAPP&PRGNAME=MYPROG&DEBUG_CLIENT=1

アプリケーションパーティショニング
アプリケーションパーティショニングには、次のような利点があります。

環境からの独立アプリケーションパーティショニングでは、サーバのネットワークにアプリケーショ
ンサービスを分散できます。パーティショニングにより、複数のハードウェアプラッ
トフォーム、オペレーティングシステム、ネットワーク、GUI、インターネット、デー
タベース管理システムがサポートされます。その他にも、次のような利点があります。
•

最適化されたサーバの使用•

ネットワークトラフィックの減少•

資源配分と負荷バランスの改善•

タスクの並列処理

保守性の向上アプリケーションパーティショニングでは、一般的に多くのリモートユーザがアプリ
ケーションにアクセスできるようになり、アプリケーションの機能が増します。この機能を使用すると、複数のアプリケーションの同じサービスを再利用できます。その他にも、次のような利点があります。

896•

集中コード管理•複数アプリケーション設定の容易な展開•

移植や書換えをせずに既存ソフトウェアとシステムを利用

リファレンス
Magic eDeveloper V9 Plus

アプリケーションパーティショニング

信頼性の向上アプリケーションパーティショニングでは、アプリケーションコンポーネントのフェイ
ルオーバが提供され、バージョンの一貫性が自動的に保たれます。

［コールリモート］コマンド［コールリモート］コマンドでは、Magic プログラムからリモートサービスを呼び出すことができます。［コールリモート］コマンドのパラメータは、MRB に送信されたリクエ
ストに対するリクエスト ID の受け取り、またはエラーが発生した場合はエラーメッセー
ジの受け取りに使用できます。呼び出し側プログラムでは、リモートサービスにパラメー
タを渡し、そこから値を受け取ることができます。
［コールリモート］コマンドは、同期
モードまたは非同期モードで実行できます。
リモートサービスが呼び出し側アプリケーションと同じシステム上で実行される場合な
どの特殊なケースでは、［コールリモート］コマンドで Magic アプリケーション（MCF
ファイル）間のリクエストが許可されることに注意してください。
［コールリモート］コマンドでは、実行できるサービス、プログラム、引数、パラメータが定義されます。
［コールリモート］コマンドの処理コマンド欄からズームして［リモートコー
ル］ダイアログにアクセスし、実行に必要なパラメータを定義してください。
［リモートコール］ダイアログには、次のパラメータが含まれています。
パラメータ

意味

サービス

サービステーブルのサービスの名前。サービスは［サービス］一
覧から選択できます。

プログラム名（式） 実行するプログラムの公開プログラム名。または式で指定します。
結果ファイル［結果ファイル］欄から Windows の［ファイルを開く］ダイアロ
グにズームしファイル名を指定します。すべての結果データは、
そのファイルに書き込まれます。

戻り値

項目一覧にズームし、数値型のデータ項目を選択します。正である場合、値はリクエストのリクエスト ID として返されます。

エラーコード項目一覧にズームし、エラーコードを格納するデータ項目を選択します。正である場合、この値は返されたリクエストのエラーを表す文字列を返します。

リクエスト ID

項目一覧にズームし、リクエスト ID データ項目を選択します。
正の場合、値はリクエスト ID を返します。

優先順位（式）

この欄から式テーブルにズームし、コールリモート実行の条件を決める式を選択します。

［コールリモート］コマンドの、［ウェイト］欄には Yes/No 式が含まれています。ここでは、プログラムの実行が終了するまでクライアントが待機してから処理を続けるかどうかを指定します。
パラメータは、［コールプログラム］コマンドと同じ方法で渡されます。

同期実行と非同期実行
リクエスタクライアント、MRB、Magic アプリケーションサーバ（以下、実行エンジン）の間のメッセージのフローは、リクエストが同期（待機あり）であるか非同期（待機なし）であるかによって異なります。

同期リクエストを処理する（［ウェイト］=Yes）
MRB は、リクエストクライアントから同期リクエストを受信すると、次のように応答します。
リファレンス
Magic eDeveloper V9 Plus

897

第 20 章 - 分散アプリケーション アーキテクチャ• リクエストにリクエスト ID を割当てます。
• 使用できる実行エンジンを検索し、リクエスト ID と実行エンジンアドレスをリクエ
ストクライアントに送信します。
MRB がリクエスト ID と実行エンジンアドレスを返すと、リクエストクライアントと実行エンジンの間で、MRB の仲介なくやり取りが直接行われます。リクエストが完了すると、実行エンジンはリクエスト結果をリクエスタクライアントに直接送信するとともに、
実行エンジンが使用可能になったことを MRB に通知します。このリクエスト処理の間、クライアントは実行エンジンがリクエスト結果を返すまで待機する必要があります。

非同期リクエストを処理する（［ウェイト］=No）
MRB は、リクエストクライアントから非同期リクエストを受信すると、次のように応答します。
• リクエストにリクエスト ID を割当てます。
• 使用できる実行エンジンを検索し、クライアントのリクエストを送信します。
• リクエストの実行が完了すると、MRB は通知を受け、実行エンジンを次のクライア
ントリクエストに再度割当てます。
リクエスタクライアントは、リクエスト結果を待たずに処理を再開します。MRB は実行
エンジンアドレスをクライアントに返さず、クライアントと実行エンジンは直接やり取りしません。そのため、必要に応じて、MRB にそのリクエストの状態を問い合わせる必要があります。

パーティショニングの割当て
アプリケーションの設定
パーティショニング対象を選択する
アプリケーションパーティショニングの第 1 段階は、1 つあるいは複数のサーバ PC 上で実行するアプリケーション構成要素を選択することです。選択する構成要素は、サーバ上で実行した場合に、パフォーマンスと保守性の大幅な向上が見込まれるものでなければなりません。プログラムやタスクをクライアントとアプリケーションサーバのどちらで実行するかは、アプリケーションの設計段階で決定する必要はありませんが、考慮に入れる必要はあります。パーティショニングに適するのは、バックグラウンドモードで実行するタスクです。

実行時の動作
実行時、［コールリモート］コマンドが検出されると、実行エンジンによって有効なサーバが検索されます。その後、リモートコマンドが Magic のリクエスタに渡されます。一方、リモートコマンドの［ウェイト］欄の値が「No」の場合、クライアントの待機は行われません。ここで［ウェイト］欄の値が「Yes」の場合、クライアントはいったん待機状態に入り、そのコマンドによる処理が完了すると（または、タイムアウトに達すると）、
通常の動作に戻ります。その後、リモートコマンドが完了すると、リモートコマンドにより送られた項目が再計算され、後続のプログラムフローが再開されます。
［コールリモート］コマンドの実行時にエラーが発生した場合、次のようなエラーコード
やエラーメッセージが返ります。

898

コード

ニーモニック /4

NO-RESULT

メッセージ

意味
リクエスト先のタスクからリクエ
スタの出力メディアに結果が返ってこなかったことを示します。
リファレンス
Magic eDeveloper V9 Plus

アプリケーションパーティショニング
コード

ニーモニック /

メッセージ

意味

20

RT-TERMINATING

リモートコール：
実行中にアプリケーションサーバがクローズされました。

アプリケーション処理用のエンジンがリクエスト実行中に終了した
場合、このエラーが発生します。

102

CNCT-REFUSEDMRB

リモートコール：
メッセージサーバが見つかりません。

MRB で使用されるホスト名またはポートが不適当な場合、このエラーが発生します。MRB の接続先のポートが適当かどうか、接続が正常かどうかを確認してください。

103

APP-NOT-FOUND

リモートコール：
リモートアプリケーションが見つかりません。

アプリケーションがエンジンによりサポートされていない場合、このエラーが発生します。

104

APP-IN-USE

リモートコール：
有効なアプリケー
ションサーバではありません。

また、MGREQ.INI ファイルの「Appl=」キーワードで正しくアプ
リケーションを指定していない場
合にも、このエラーが発生します。
アプリケーション処理用のエンジンがすべて、他のリクエストの処
理中で使用できるエンジンがない
場合、このエラーが発生します。
また、アプリケーションがエンジ
ンによりサポートされていない場
合や MRB のタイムアウト設定値が小さい場合にも、発生することがあります。
さらに、ブローカタイムアウト値に達している可能性もあります。
タイムアウトの値は、［設定／サーバ］の「タイムアウト」欄または、
MGREQ.INI ファイルの、「BrokerTimeout」キーワードの値が使用されます。

105

MRB-NOT-RSPND

リモートコール： サーバエンジンから I-AM-ALIVEMRB から応答があ メッセージが送られないまま、
MGRB.INI ファイルのりません。
「ServerTimeout 」キーワードの値が経過すると発生します。

106

RT-NOT-RSPND

リモートコール：
実行エンジンから応答がありません

サーバエンジンから I-AM-ALIVE
メッセージが送られないまま、
MAGIC.INI ファイルまたは
MGREQ.INI ファイルの「ServerTimeout 」キーワードの値（時間）が経過した場合、このエラーが発生します。

107

CNCT-RESET

リモートコール：
実行中にリモート
エンジンがアボー
トしました。

アプリケーション処理用のエンジンがリクエスト実行中にアボートしたか、ネットワーク接続の失敗が原因で接続がリセットされたかの、いずれかの状況が生じるとこのエラーが発生します。

リファレンス
Magic eDeveloper V9 Plus

899

第 20 章 - 分散アプリケーション アーキテクチャ
コード

ニーモニック /109

CNCT_REFUSED_R
T

メッセージ

意味
リクエスタと Magic エンジンとの間のセッションを確立できませんでした。
リクエスタと Magic エンジンとのネットワーク間にファイアウォー
ルやルータなどがある場合、それらのパケットフィルタリングの設定が要因として考えられます。
また、名前解決が正しくできていないことも要因として考えられます。ネットワーク環境をご確認く
ださい。

110

REQUESTTIMEOUT

リモートコール：
リクエストタイムアウトを越えました

リクエストされたタスクの処理が完了しない状態で、MAGIC.INI
ファイルまたは MGREQ.INI ファ
イルの「RequestTimeout 」キー
ワードの値（時間）が経過したとき、このエラーが発生します。

113

APPNAMEREQUIRED

リモートコール：
アプリケーション
名が指定されていません。

リクエストのパラメータにアプリ
ケーション名が指定されていない
場合、このエラーが発生します。

114

PRGNAMEREQUIRED

リモートコール：
プログラム名が指定されていません。

リクエストのパラメータにプログ
ラム名が指定されていない場合、
このエラーが発生します。

130

APP-OPEN-FAIL

リモートコール：
アプリケーションをオープンできませんでした。

サーバエンジンによりアプリケー
ションコントロールファイルのオープンが試行されましたが、その処理に失敗した場合、このエラーが発生します。

131

PRG-NOT-FOUND

リモートコール：
プログラムが見つかりません。

指定されたプログラムの公開プロ
グラム名がアプリケーションに見つからなかった場合、このエラーが発生します。

133

ACCESS-DENIED

リモートコール：
アクセスが拒否されました。

ユーザ名またはパスワードが不適
当な場合このエラーが発生します。
また、指定されたユーザにアプリ
ケーションのアクセス権およびプ
ログラムの実行権利がない場合もこのエラーが発生します。
HTML フォーム中に変数名として、
Magic の予約語となる「Username」「Password」が含まれている場合、これらの変数の値が不適当なときにもこのエラーが発生します。

135

900

LIMITED-LICENSE- リモートコール：
HTTP
インターネット処理に対する制限がかかっています。

サーバエンジンがインターネット
リクエスト用のエンジンでない場
合、このエラーが発生します。

リファレンス
Magic eDeveloper V9 Plus

アプリケーションパーティショニング
コード

ニーモニック /136

LIMITED-LICENSE- リモートコール：
CS
ライセンス上の接続可能数を越えました。

サーバエンジンのリクエストカウ
ントが最大値に達している状態でリクエストが送られた場合、このエラーが発生します。

137

REQUEST-REJECT

リモートコール：
リクエストが拒否されました。

Magic エンジンが実行モードから開発モードに切り替わったタイミ
ングでリクエストが送られたため実行できませんでした。

138

RT-ERROR-MSG

リモートコール：
リモートプログラ
ム実行中のエラーです。

リクエストの実行時に実行されたプログラムが、何らかのエラー
メッセージを表示しました。

メッセージ

意味

プログラムが完了できなかった場
合、これらのエラーメッセージは
アプリケーションサーバによって捕らえられ、リクエスタへ送り返されます。
エラーメッセージが表示されていても、プログラムが正常に実行された場合、そのプログラムの出力が戻され、エラーメッセージを無効にします。
リクエスタがインターネットリク
エスタの場合、エラーメッセージ
はリモートブラウザへ送られます。
リクエスタがコマンドラインリク
エスタの場合、エラーメッセージはコンソールに表示されます。
リクエスタが Magic エンジンの場
合、このエラーメッセージは表示されません。

146

BIND-HOST-NOTFOUND

リモートコール： MGRB.INI ファイルの接続確定に失敗し 「BrokerPort」キーワードに正しいました−ホスト名 ホスト名または、IP アドレスが指が不明です
定されていない場合、このエラーが発生します。

147

CNCT-HOST-NOTFOUND

リモートコール： ［設定／サーバ］の［サーバアドレ
接続に失敗しまし ス］欄または、MGREQ.INI ファイ
た−ホスト名が不 ルの「Messaging Server」キーワー
明ですドまたは「Local Host」キーワードに正しいホスト名または、IP アド
レスが指定されていない場合、このエラーが発生します。
また、ホスト名の名前解決が正しく行われていない可能性も考えられます。OS の hosts ファイルを確認してください。

リファレンス
Magic eDeveloper V9 Plus901

第 20 章 - 分散アプリケーション アーキテクチャ
コード

ニーモニック /

メッセージ

意味

150

CNCT-REFUSEDMRB

リモートコール：
メッセージサーバが見つかりません

アプリケーションサーバが MRBと接続できない場合、このエラーが発生します。MRB が起動されている場合、アプリケーションサー
バから認識する MRB のホスト名と IP アドレスが正しいかを確認してください。

151

CNCT-RESET-BYREQ

リクエスタにより接続がリセットされました。

リクエストの実行中にリクエスタとアプリケーションサーバの間の接続がリセットされた場合、このエラーが発生します。このときは、
アプリケーションサーバからリク
エスタに何も返されません。
クライアントやアプリケーション
サーバのリクエスタを確認してく
ださい。

160

RQSPAWN-ERREXE-NOT-FOUND

MGRB.INI の［MRB_EXECUTABLES_LIST］の実行ファイル名が正しくない場合、
このエラーが発生します。

161

RQSPAWN-ERRPATH-NOT-FOUND

MGRB.INI の［MRB_EXECUTABLES_LIST］のコマンドまたは作業ディレクトリ
のパスが正しくない場合、このエラーが発生します。

163

RQSPAWN-ERRBAD-LOGIN

MGRB.INI の［MRB_EXECUTABLES_LIST］のユーザ名またはパスワードが正しくない場合、このエラーが発生し
ます。

164

RQSPAWN-ERRPRIVILEGE-NOTHELDMGRB.INI の［MRB_EXECUTABLES_LIST］で指定したディレクトリでコマンドを実行する権利が無い場合、このエラーが発生します。

169

RQSPAWN-ERRNETUNREACHABLE

MGRB.INI の［MRB_EXECUTABLES_LIST］で指定したコマンドが渡らなかった
場合、このエラーが発生します。
160-169 のエラーコードはコマンド
ラインリクエスタによるエラーとして MRB のログファイルに出力されるものです。
［MRB_EXECUTABLES_ LIST］の指定によるエンジンの実行が正常に行われなかった場合に発生します。正しく設定されているかどうかを（パス名、ユーザ名、パスワードなど）確認してください。

902

リファレンス
Magic eDeveloper V9 Plus

コマンドラインリクエスタ
コード

ニーモニック /180

EXE- ENTRY- NOTFOUND

起動しようとしたエントリがMGRB.INI の［MRB_EXECUTABLES_LIST］、［MRB_REMOTE_EXCUTASBLES_LIST］に存在しない場合、このエラーが発生します。

187

CNCT-REFUSEDREMOTE-MRB

MGRB.INI の［MRB_EXECUTABLES_LIST］で指定したホストにおいて MRB が起動していない場合、このエラーが発生します。

197

CTX-NOT-FOUND

Context Not Found

プログラム実行中に、MAGIC.INI
ファイルの「ContextInactivityTimeout（コンテ
キスト非稼働タイムアウト）」または「ContextUnloadTimeout（コンテ
キストのアンロードタイムアウト）」キーワードの値（時間）が経過するなど、コンテキストが解放された後に再度コンテキストにア
クセスしようとしたとき、このエラーが発生します。

200

FATAL

リモートコール：
一般エラー .

その他のエラー

201

NOT-INITIALIZED

コードパーティショニング：TCP/
IP が初期化できませんでした .

TCP/IP サービスがインストールされていない場合、このエラーが発生します。TCP/IP をインストール
してください。

202

ERR-OPENRESULT-FILE

リモートコール：
結果ファイルをオープンできません。

コールリモートの［結果ファイル］
欄またはコマンドラインリクエス
タの［FILENAME］パラメータおよび MGREQ.INI の［DefPath］、［DefName］パラメータを使用して指定されたファイルをオープンできない場合、このエラーが発生し
ます。

205

DATA-SRVR［設定／サーバ］の［サーバタイ
データサーバはメッセージサーバ プ］欄が正しく指定されていないとしては使用でき 場合、このエラーが発生します。
ません。

220

OUT-OFRESOURCES

このエラーメッセージは Winsockが error-10055（Out of Buffer）を返したときに出力されます。

メッセージ

意味

コマンドラインリクエスタ
コマンドラインリクエスタは、次のようなことができます。
• リモート Magic 実行エンジンの起動• MRB の終了と Magic 実行エンジンの起動と終了• Magic 実行エンジンに送信された特定リクエストのステータス照会• Magic 実行エンジンのステータス照会
リファレンス
Magic eDeveloper V9 Plus903

第 20 章 - 分散アプリケーション アーキテクチャ

コマンドラインインタフェース
コマンドラインリクエスタは MGrqcmdl.exe プログラムであり、DOS プロンプトウィン
ドウで実行できます。その他の Magic リクエスタと同じように、コマンドラインリクエ
スタでは MGREQ.INI ファイルを使用して、やり取りする MRB のアドレスを指定できます。
コマンドラインリクエスタを使用するための構文は、パラメータを指定せずに MGrqcmdl
コマンドを実行すると表示されます。

パラメータ一覧
以下にパラメータの一覧を示します。
パラメータ

サブパラメータ-APPNAME

説明
実行するアプリケーション名を指定します。
例：-APPNAME=PetShopDemo-PRGNAME

実行するプログラム名を指定します。
例：-PRGNAME=OrderList[-ARGUMENTS]

プログラムに渡すパラメータを指定します。（カンマ区
切）
例：-ARGUMENTS=-AStringValue,-N1000,-LTRUE,-U[-VARIABLES]

グローバル変数を指定します。（カンマ区切）
例：-VARIABLES=var1=AStringValue,var2=N1000,var3=LTRUE[-PRIORITY]

実行優先度を指定します。（0 〜 9）
例：-PRIORITY=4[-USERNAME]

アプリケーションに対応したユーザ名を指定します。
例： -USERNAME=supervisor[-PASSWORD]

アプリケーションまたは MRB に対応したパスワードを指定します。
例：-PASSWORD=mypass[-FILENAME]

結果ファイルの名前を指定します。
例：-FILENAME=MGRQCMDL.OUT[-NOWAIT ]非同期モード指定を行います。

[-HOST, -PORT]MRB のアドレス ( ホスト名、ポート番号 ) を指定します。
例：-HOST=my server -PORT=2001-QUERY

リクエストの参照を行いますRT[(appname)]

登録されたエンジンの参照を行います。
例：-QUERY=RT -QUERY=RT(Pet Shop Demo)

APP[(host/port)]

エンジンでサポートされるアプリケーションの参照を行います。
例：-QUERY=APP(my server/1500)

QUEUE[(appname)]

キュー内のリクエストの参照を行います。
例：-QUERY=QUEUE

904

リファレンス
Magic eDeveloper V9 Plus

コマンドラインリクエスタ
パラメータ

サブパラメータ

説明LOG[(appname)][=re 履歴情報の参照を行います。
qid[-reqid]]
例：-QUERY=LOG=100-90
LOAD [(appname)]

アプリケーションや MRB についての統計情報の参照
を行います。
例：-QUERY=LOAD(Pet Shop Demo)PENDING =<reqid>

指定したリクエスト以前のペンディング状態のリクエ
ストの数を参照します。
例：-QUERY=PENDING=1-REQID=<reqid>

リクエストの操作 ( 優先度 , 削除 ) の際にリクエスト
ID を指定します。
例：-REQID=1-CLEAR

キューからリクエストを削除します。
例：-CLEAR -REQID=1-PRIORITY

キューの中のリクエストの優先度を変更します。
例：-PRIORITY=3 -REQID=1-EXE=<ExeEntry> [/<args>]MRB によって、実行モジュールを起動します。
例：-EXE=Background//StartApplication=1/
StartProgram=1-TERMINATE

リクエストを終了します。
ALL

MRB を含めた全てのエンジンを指定します。
例：-TERMINATE=ALL

RTS

MRB を除いた全てのエンジンを指定します。

host/port

エンジンを指定します。
例：-TERMINATE=my_server/1500-TIMEOUT

終了までの時間を指定します。（秒数）※ [] 付はオプションパラメータです。必要に応じて他のパラメータに付加します。
パラメータのデータタイプ（-ARGUMENTS 及び -VARIABLES で指定します。）は以下の通りです。
• -A …… 文字型• -U …… Null
• -L …… 論理型 (True/False)• -N …… 数値型（Integer）• -F …… 数値型（float）• -D …… 数値型（double）-ARGUMENTS 及び -VARIABLES において「,」をデータとしては使用できません。
-TERMINATE において右辺に何も指定しない場合、ALL とみなされます。

コマンドラインリクエスタの使用例
MRB のサービスに使用できる Magic エンジンを表示するには、次のコマンドを使用します。
mgrqcmdl -query=rt
リファレンス
Magic eDeveloper V9 Plus905

第 20 章 - 分散アプリケーション アーキテクチャ
MRB のサービスに使用できる Magic アプリケーションを表示するには、次のコマンドを使用します。
mgrqcmdl -query=app
MRB が動作していない場合、次のエラーメッセージが表示されます。
Command Line Requester:Connection to broker refused （error 102）
別の Magic 実行エンジンを起動するには、次のコマンドを使用します。
mgrqcmdl -exe=RuntimeName
RuntimeName は、MGRB.INI ファイルの［MRB_ EXECUTABLES_ LIST］セクションまたは［MRB_REMOTE_EXECUTABLES_ LIST］セクション内のエントリ名です。
Magic 実行エンジンを終了するには、次のコマンドを使用します。
mgrqcmdl -terminate=EngineId -timeout=nn
EngineId は、エンジンのホスト名とポート番号です。
エンジンの終了要求が出されると、新しくコンテキストをオープンすることなく終了します。新しいコンテキストに対するリクエストは他の有効なエンジンに送られます。エンジンが見つからない場合は、リクエストは拒否されます。終了するエンジンは、現在の処理中のコンテキストの処理を継続し、最後のコンテキストがクローズされるか、指定されたタイムアウトが経過したらエンジンを終了します。
timeout が「0」の場合、サーバエンジンは、コンテキストが終了するまで待ち続けます。
timeout のデフォルト値は「0」です。
リクエストのキューについて MRB に照会したり、リクエストの優先順位を変更したり、キューからリクエストを削除したりするには、同じコマンドラインインタフェースを使用できます。

マルチスレッド
バックグラウンドで動作する Magic アプリケーションサーバは、マルチスレッドで動作するようになっています。各スレッドは異なる実行モードのコンテキストにアクセスするので、ほかのスレッドに影響することはありません。

常駐テーブルの共有
常駐テーブルはすべてのコンテキストで共有されます。これによって、コンテキストが個別に常駐テーブルをロードする必要がないため、パフォーマンスが向上します。

環境設定
最大並行リクエスト数［設定／動作環境］ダイアログの［アプリケーションサーバ］タブには、［最大並行リク
エスト数］欄があり、アプリケーションサーバで作成できるスレッド数の上限値を設定します。実際のスレッド数は、システムに許諾されているユーザライセンス数とここでの設定値の小さいほうで制限を受けることになります。また、サーバの容量による制限を受ける場合もあります。

906

リファレンス
Magic eDeveloper V9 Plus

マルチスレッド

アプリケーションの変更［設定／動作環境］ダイアログの［アプリケーションサーバ］タブには、［アプリケーショ
ンサーバはアプリケーションを変更可］欄があり、複数のアプリケーションに対する処理ができるようにするかどうかを設定します。アプリケーションサーバは、他のリクエストが処理中ではない場合に限り、リクエストによって現在のアプリケーションを終了
し、別のアプリケーションを開くことができます。

INIPut と INIGet
MAGIC.INI は、それぞれの実行モードコンテキスト用に互いに独立したメモリ領域に保存されます。特定の実行モードコンテキストに対する INIPut 関数は、関数の第 2 パラメー
タを使用して明示的に指定された場合に限り、MAGIC.INI ファイルを更新します。
関数についての詳細は、第 8 章「関数」を参照してください。

セキュリティ
ユーザは、関数を使用して、各スレッドのユーザ権限の追加や削除を行うことができます。

TCP/IP ポート
各アプリケーションサーバでは、1 つの TCP/IP ポートが使用されます。

MRB と汎用メッセージレイヤ
異なったバージョンの Magic と相互運用することはできません。

メインプログラム
各実行モードコンテキストでは、メインプログラムの異なるコピーを使用します。

トランザクション
各スレッド毎に独立した個別の処理として動作します。

データベースファイル
各スレッド毎に独立した個別の処理として動作します。

ロック各スレッド毎に独立した個別の処理として動作します。しかしスレッド間のロックはメモリ内で共有されます。各処理に対して、1 つの端末番号が使用されます。

共有リソース
次のリソースは、すべての実行モードスレッドで共有されます。
• DBMS 接続• 外部デバイス

リファレンス
Magic eDeveloper V9 Plus

907

第 20 章 - 分散アプリケーション アーキテクチャ

実行関数
以下の実行関数が有効です。
• RqExe …… MRB に［MRB_EXECUTABLE_LIST］に定義されているエンジンを起動するように要求します。
• RqRtTrm …… アプリケーションサーバを終了します。
• RqRtInf …… 処理中のスレッド数、ライセンスで使用可能な最大スレッド数、使用できるスレッド数を取得します。
• DiscSrvr …… 不要なスレッドを切断します。
• DbReload …… 常駐テーブルの内容を再読込し、全スレッドがアクセスする常駐テー
ブルの内容を置き換えます。
• DbDel …… 常駐テーブルの内容を削除します。テーブルの物理レコードは削除されません。

外部プログラムの呼び出し
外部 DLL は、マルチスレッド環境との互換性を有している必要があります。

アプリケーションサーバの終了
1 つ以上のリクエストの処理中にリクエスタから終了リクエストが送信された場合、リク
エストの処理が終了してからアプリケーションサーバを終了します。

注意事項• メインプログラムはコンテキスト作成時に実行されるため、タスク前処理／タスク後処理は、アプリケーションのオープン時でなく、コンテキスト作成時に実行されます。
このためブラウザクライアント以外では、リクエスト毎に実行されます。
• メインプログラムはコンテキスト作成時に実行されるため、メインプログラムのタイ
マーイベントは無効になります。
• ブラウザクライアント以外のリクエストでは、コンテキストが継続されないため、SetParam、GetParam 関数はリクエストを超えて使用できません。HTTP 環境変数は、
リクエスト毎に設定されるため取得できます。
• Oracle,MSSQL Server, ODBC の各ゲートウェイで、データベースの接続を行う場合、［DBMS ／ DBMS 特性／最大接続数］は、各インスタンスで使用する最大スレッド数の３倍程度を設定してください。最大接続数が使用スレッド数より小さい場合、Magicの動作が不安定になったり、パフォーマンスが低下します。
（例）5 スレッドの場合……最大接続数：15

アプリケーションパーティショニングの関数
次の表は、アプリケーションパーティショニングをサポートする関数の要約です。
各関数についての詳細は、第 8 章「関数」を参照してください。

908

関数

説明

GetParam

グローバルパラメータとして渡されているパラメータ値を取得し
ます。

RqExe

MRB に登録されている実行可能モジュールのリストから、新しいエントリを実行します。
リファレンス
Magic eDeveloper V9 PlusMRB モニタ関数

説明

RqLoadMRB で処理されるサービスに関しての統計情報を取得します。

RqQueDel

キュー内で待ち状態にあるリクエストを削除します。

RqQueLst

キュー内で待ち状態にあるリクエストの数を取得します。

RqQuePri

キュー内で待ち状態にあるリクエストの優先順位を再設定します。

RqReqInf

MRB のキューまたは履歴ログから得られる、あるリクエストに関する一連の情報を取得します。この機能を利用するためには、この実行前に RqQueLst または RqReqLst を実行しておく必要があります。

RqReqLst

MRB の履歴ログから得られるリクエスト ID の範囲によって識別される、リクエストエントリの数を取得します。

RqRtApp

MRB に登録された１つまたは複数の実行エンジンによってサポートされるアプリケーションに関する情報を取得します。

RqRtApps

MRB に登録された１つまたはすべてのアプリケーションサーバによってサポートされるアプリケーションの数を取得します。

RqRtInf

MRB に登録されたアプリケーションサーバ情報を取得します。

RqRts

MRB に登録されたアプリケーションサーバの数を取得します。

RqRtTrm

リクエスタによって起動されている１つまたは複数のアプリケー
ションサーバの処理を終了させます。

RqStatあるリクエストの状態を示す数値を取得します。

SetParam

グローバルパラメータのパラメータ値を設定します。

MRB モニタ
Magic eDeveloper には、MRB の実行状況をモニタするアプリケーションが添付されています。このアプリケーションは、MRB のモニタリングツールとして利用できるだけでな
く、Magic のアプリケーションパーティショニング関数の具体的な使用例として、プログラム内容を公開しています。

図 20-3 モニタアプリケーション

モニタアプリケーションではサービスを選択でき、次の機能が提供されます。
• サーバエンジンと特性のリストの表示• サーバエンジンがサポートするアプリケーションのリストの表示• リクエストキューの表示• 保留中リクエストのリストの表示
リファレンス
Magic eDeveloper V9 Plus

909

第 20 章 - 分散アプリケーション アーキテクチャ• MRB が起動後に処理したリクエストに関する統計の表示• 新しいサーバインスタンスの起動• サーバインスタンスの終了「モニタユーティリティ」を使用しても同じような監視処理を行うことができます。
詳細は、第 19 章「ユーティリティ」の「モニタユーティリティ」を参照してください。

910

リファレンス
Magic eDeveloper V9 PlusSNMP サポート21

SNMP(Simple Network Management Protocol ) は、ネットワーク管理を制御し、ネットワー
クデバイスやそれらの機能をモニタするためのプロトコルです。アプリケーションや
Magic モジュールは、あらかじめ設定されているネットワーク管理ステーション（NMS）にトラップメッセージを送ることができ、SNMP モニタで参照することができます。

図 21-1 ネットワーク管理

エラーや、異常終了などの例外的なイベントが発生した場合、システム管理者は、このようなメッセージを元にアプリケーションや Magic モジュールを確認したり制御したすることができます。
本章では、次の内容について説明します。
• SNMP 機能の組み込み• トラップ• NMS からアプリケーションサーバ情報を参照する• NMS からアプリケーションを制御する

リファレンス
Magic eDeveloper V9 Plus911

第 21 章 - SNMP サポート

SNMP 機能の組み込み
Magic の SNMP 機能を利用するには以下の設定が必要です。

OS 側の設定
SNMP エージェント（SNMP サービス）が OS にインストールされている必要があります。

図 21-2SNMP サービスのプロパティ

また SNMP サービスのプロパティを以下のように指定します。

セキュリティ
• 受け付けるコミュニティ名……「public」の権利を「READ WRITE」（または「読み取
り、書き込み」）に設定します。

トラップ• コミュニティ名……public• トラップ送信先……送信先のホスト名か IP アドレス

Magic の SNMP モジュールのインストール
Magic eDeveloper Plus か Magic Application Server Plus のインストール処理時に SNMP 拡張
モジュール（Mgsnmp.dll ファイル）が選択されている場合、Magic のインストールフォ
ルダにコピーされます。
また SNMP 拡張モジュールを有効にするため、以下のようにレジストリ設定を行います。

912

リファレンス
Magic eDeveloper V9 PlusSNMP 機能の組み込み

レジストリ［HKEY_LOCAL_MACHINE］• SOFTWARE¥Magic Software Japan ¥< 製品名 >¥9.40¥SNMP•

名前：Pathname•

データ：（パス名）+mgsnmp.dll< 製品名 >：eDeveloperPlus または、AppServerPlus のどちらかです。
• SYSTEM¥CurrentControlSet¥Services¥SNMP¥¥Parameters¥ExtensionAgents
Magic eDeveloper Plus の場合•

名前：MGCSTKSNMP•

データ：SOFTWARE¥Magic Software Japan¥eDeveloperPlus¥9.40¥SNMP

Magic Application Server Plus の場合•

名前：MGENT1SNMP•

データ：SOFTWARE¥Magic Software Japan¥AppServerPlus¥9.40¥SNMPMIB ファイルMIB（Management Information Base）ファイルとは、SNMP 機能を持った装置の情報をSNMP マネージャに提供するために決められた定義情報をもったファイルです。
Magic は、Support サブフォル内に Magic.mib と Magic_trap.mib という２つの MIB ファイ
ルをインストールします。この MIB ファイルは、インストールされている NMS 用に（拡張子などを）変更して NMS サーバ環境にコピーしてください。使用する NWS サーバによっては、MIB ファイルのロード処理を実行する必要があります。

Magic リクエスタの設定
Mgreq.ini の、［SNMP］セクションで以下のように指定します。

EnableAgent = Y, N
Magic の SNMP 拡張モジュールを有効にするかどうかを指定します。
EnableAgent = Yes の場合、NMS で Magic をモニタすることができるようになります。
通常は、SNMP 拡張モジュールのインストール処理によってこのパラメータは、「Yes」に設定されます。

EnableTraps = Y, N
Magic がトラップメッセージを SNMP モニタに送るかどうかを指定します。

NMSAddress = Localhost
NMS がインストールされたサーバのホスト名か IP アドレスを指定します。

Version = 1（または 2）
NMS がサポートする SNMP のバージョンを指定します。

Community = public
コミュニティ名を指定します。
リファレンス
Magic eDeveloper V9 Plus913

第 21 章 - SNMP サポート

ReportStatusCode = 102,104-107,109,127-150
SNMP モニタに送られるエラーコードを指定します。カンマやハイフンの組み合わせで、値の範囲を指定できます。例えば :103,104,105 、または、102-107,109 と指定できます。全
てのエラーコードをモニタするには、0-9999 と指定してください。
エラーコードは負値ですが、エラーコードの範囲を指定している場合は、正値で指定します。

MRB の設定
Mgrb.ini の［SNMP］セクションを以下のように指定します。

AverageWaitTime = N
リクエストが利用可能なアプリケーションサーバを待つ平均時間を秒数で指定します。
平均待ち時間がこの指定値を超えた場合、SNMP トラップメッセージが NMS に送られます。

AverageProcessTime = N
リクエストがアプリケーションサーバで処理される平均時間を秒数で指定します。リク
エストが送られるたびに、この値は登録された全アプリケーションサーバに対してチェックされます。平均処理時間がこの指定値を超える場合は、SNMP トラップメッセー
ジが NMS に送られます。

DelayThresholdTraps = N
指定されたタイプのリクエストがしきい値の間に待たなければならない時間を分数で指定します。これは NMS 側がオーバフローすることを回避するためです。デフォルト値は1 分です。

環境設定
SNMP データベース接続しきい値［環境設定］ダイアログの［外部参照ファイル］タブにある［SNMP データベース接続しきい値］に値を指定することで、Magic が DBMS に対して指定した接続数に対するしきい値（割合）を超えて接続した場合に、トラップを送るように指定することができます。
例えば、ある DBMS の ［最大接続数］が 「10」と指定され、［SNMP データベース接続
しきい値 ］が「50」と指定された場合、Magic は、DBMS へ 5 接続（10 の 50%）に達した場合、トラップメッセージを NMS に送ります。
詳細は、第 2 章「 設定」の「SNMP データベース接続しきい値 」の説明を参照して
ください。

トラップ
Magic の SNMP サポートには、トラップと呼ばれるイベント通知機能があります。トラッ
プは、重要なイベントを NMS に非同期で送信する機能です。
Magic が通知するトラップには、Magic のモジュールが自動的に発行するものと、アプリ
ケーションによって意図的に通知させることができるものの２種類があります。

914

リファレンス
Magic eDeveloper V9 PlusNMS からアプリケーションサーバ情報を参照する

自動的に通知するもの
Magic エンジンから自動的に通知されるトラップ
以下のような場合、Magic エンジンは自動的にトラップメッセージを NMS に送信します。
• Magic や Magic ゲートウェイでスレッドクラッシュや致命的エラーが発生した場合• ライセンス制限によって終了した場合• 指定された DBMS に接続できなかった場合• データベース接続のしきい値を超えた場合

MRB から自動的に通知されるトラップ
以下のような場合、MRB は自動的にトラップメッセージを NMS に送信します。
• アプリケーションサーバが停止したり起動した場合。この場合トラップメッセージには、アプリケーションサーバのアドレス（ホスト名／ポート番号）が含まれます。
• アプリケーションサーバが、MRB との接続をアボートした場合• MRB がアボートした場合（再起動後に送信します。）• タイムアウトが発生した場合

リクエスタから自動的に通知されるトラップ
リクエスタのエラーが発生した場合、そのエラーコードを送信します。

アプリケーションによって通知するものの以下のような方法で、Magic アプリケーションよりトラップメッセージを送信させることができます。

SNMPNotify 関数の使用
SNMPNotify 関数を使用することで、Magic アプリケーションより NMS にトラップメッ
セージを送ることができます。
詳細は、第 8 章「 関数」を参照してください。

［エラー］処理コマンドの使用［エラー］処理コマンドで、［モード］を「E= エラー」にした場合、指定されたエラー
メッセージがトラップメッセージとして送信されます。

NMS からアプリケーションサーバ情報を参照する
NMS の Get オペレーションを利用することで、Magic アプリケーションサーバの情報を取得することができます。
Get オペレーションのパラメータとして、［private.enterprises.magic.query］以下の MIB オ
ブジェクト ID を指定します。
具体的な実行方法は、使用する NMS によって異なります。

リファレンス
Magic eDeveloper V9 Plus915

第 21 章 - SNMP サポート
例：IBM Tivoli NetView の場合は、MIB ブラウザより MIB オブジェクト ID を指定してから、［値を取得］ボタンをクリックします。

アップリケーションサーバの情報を取得
QueryRTTable 内の以下のキーワードを指定することで、NMS から Magic アプリケーショ
ンサーバに関する情報を取得することができます。
#

参照情報

MIB ノード1

ユニークな ID

entServerEntryIndex

2

アプリケーションサーバのホスト名

entServHost

3

アプリケーションサーバのポート番号

entServPort

4

オープンされたアプリケーション名

openedApplication

5

アプリケーションサーバの優先順位

entPriority

6

実行中のスレッド数

runningThreads

7

最大スレッド数

peakThreads

8

現在のコンテキスト数

runningContexts

9

最大コンテキスト数

peakContexts

10

処理されたリクエスト数

requestsServed

発生したエラー数

executionErrors

11

リクエストキュー情報を取得
QueryQueTable 内の以下のキーワードを指定することで、NMS からキューの情報を取得することができます。
#

参照情報

MIB ノード1

ユニークな ID

entServerEntryIndex

2

アプリケーション名

application

3

ユーザ名

userName4

リクエストの優先順位

priority

5

リクエスト ID

requestId

6

クライアントのホスト名

clientHostName

7

クライアントのプロセス ID

clientProcessId

8

リクエスト送信時間

requestSubmittingTime

統計情報の取得
QueryLoad 内の以下のキーワードを指定することで、NMS から、MRB が管理している統計情報を取得できます。

916

#

参照情報

MIB ノード

1

MRB のホストアドレス

brokerHost

2

MRB のポート番号

brokerPort

3

平均待ち時間averageWaitTime

4

MRB に送ったリクエストの総数

totalRequestsNumber

5

ペンディングリクエストの総数

pendingRequestsNumber
リファレンス
Magic eDeveloper V9 PlusNMS からアプリケーションを制御する#

参照情報

MIB ノード

6

処理中のリクエストの総数

inProgressRequestsNumber

7

終了したリクエストの総数

completedRequestsNumber

8

失敗したリクエストの総数

failedRequestsNumber

NMS からアプリケーションを制御する
NMS の Set オペレーションによって MRB の情報を設定したり、Magic エンジンを制御したりすることができます。Set オペレーションのパラメータとして、［private.enterprises.magic.manage］以下の MIB オブジェクト ID を指定します。
具体的な実行方法は、使用する NMS によって異なります。
例：IBM Tivoli NetView の場合は、MIB ブラウザより MIB オブジェクト ID を指定してから、［MIB インスタンス］と［新規値］を指定して、［設定］ボタンをクリックします。
#

制御内容

MIB ノード

1

Magic エンジンの停止［shutdownEntServerRequest］
shutdownEntServer
graceful

Magic エンジンの起動［startEntServerRequest］
exeEntryEntServer

2

3

4

5

6

7

8

パラメータ
Host/Port
数値（シャットダウン時間）

startupParameters［MRB_EXECUTABLE_L
IST］に登録されたキー
ワード
起動時のパラメータ

エンジンの優先順位を指定［priorityEntServerRequest］
priorityEntServer
priority

サーバアドレス
優先順位（1 〜 5）

指定したエンジンの最大スレッドカウンタをリ
セットします。

［resetPeakThreadCount ］
resetEntServerThreadCount

サーバアドレス

指定したエンジンの最大
コンテキストカウンタをリセットします。

［resetPeakContextCount］
resetEntServerPeakContextCou
nt

サーバアドレス

送信リクエスト数をリセットします。

[resetNumRequestServed]
resetEntServerNumRequest
Servedサーバアドレス

実行エラー数のリセットを行います。

［resetNumExecutionError］
resetEntServerNumExecuti
onError

サーバアドレス

全てのカウンタ値をリセットします。

［resetAllCounters］
resetEntServerAllCounters

サーバアドレス

ホストやポートのパラメータの値がアスタリスク (*) の時、Set コマンドは、実行中の全てのアプリケーションサーバに影響します。

リファレンス
Magic eDeveloper V9 Plus917

第 21 章 - SNMP サポート

［このページは意図的に空白にしています。］

918

リファレンス
Magic eDeveloper V9 Plus

22

J2EE との連携

Magic eDeveloper Plus は、J2EE との連携するための２つの機能を提供します。
• EJB サーバ機能……J2EE アプリケーションから、Magic アプリケーションを EnterpriseJava Beans(EJBs) としてを呼び出す機能を提供します。Java 環境下で動作している Java
クライアントは、Magic のプログラムを EJB のメソッドと同様に実行することができます。実行は EJB と Magic を連携するための EJB（以下、Proxy EJB と表記します。）
を介して行われます。EJB インタフェースビルダ（以下、EIB と略します。）は、ProxyEJB を生成する機能を提供します。

図 22-1EJB サーバ機能• EJB クライアント（コール EJB）機能……Magic アプリケーションから、EJB を呼び出す機能を提供します。この機能については、第 16 章の「Java との連携」を参照してください。

図 22-2EJB クライアント機能

この章では、EJB インタフェースビルダを使用して Proxy EJB を作成し、アプリケーショ
ンサーバとの接続する方法の概要を説明します。具体的な手順は、『開発者ガイド』を参照してください。
本章では、次の内容について説明します。
• J2EE の用語• EJB インタフェースビルダ• Proxt EJB の動作環境• Magic の環境設定と実行• MRB の動作環境と実行• コマンドラインリクエスタ• J2EE と Magic のインストール
リファレンス
Magic eDeveloper V9 Plus

919

第 22 章 - J2EE との連携
J2EE との連携機能は日本語版では、Interstage Application Server V5.0 のみ動作を確認しています。

920

リファレンス
Magic eDeveloper V9 Plus

J2EE の用語

J2EE の用語
以下は、J2EE 環境でよく使用される用語の一覧です。
J2EEJava 2 Enterprise Edition
Java2SDK を基に統合されたプラットフォームの規格です。
このプラットフォームを使用することにより、多階層エンタープライズアプリケーションのソリューションを提供することができます。

EJBEnterprise Java Beans
Java で記述されたサーバサイドのプログラムを作成する際のコンポーネントの標準仕様

Beanプログラムをコンポーネント化する仕様を JavaBean と呼んでいますが、この仕様に基づいて作られたコンポーネン
トを Bean といいます。

JAR

Java Archive file
このファイルは、EJB やクライアント、アプリケーションに保存する際に使用されます。ファイルの拡張子が JARになります。

コンテナ

Enterprise Beans を制御し、システムレベルのサービスを提供する動作環境。EJB は、ここで動作します。

DD

Deployment Descriptor
コンポーネントを記述する XML ファイル

JNDI

Java Naming and Directory Interface
Java アプリケーションに、ネームサービスおよびディレク
トリサービスへの統一したインタフェースを提供する APIです。

ステートレスセッ
ション Bean

クライアント側の状態情報を保持しない Bean で、Bean のインスタンスの生成・消滅は、すべて EJB コンテナが独自に管理しています。
同じ Bean のメソッドを続けて呼び出した場合にも、それらが同じインスタンスかどうかは分かりません。そのため、ステートレスセッション Bean では、内部状態を保持
して、複数メソッドで連続した処理を行うことはできず、
１メソッドで完結するような処理を記述するのに向いています。

EJB インタフェースビルダ
Magic eDeveloper は、EIB を使用することで作成済みのプログラムを呼び出す Proxy EJBを作成することができます。EIB は、J2EE 環境で動作するモジュールを作成し、jar ファ
イル形式で保存します。このファイルには、クラスファイルや DD ファイルも含まれています。
Magic Broker( 以下 MRB) の使用はオプションです。MRB はアプリケーションサーバの状態を参照したり、アプリケーションサーバを新しく起動させたり終了させたりするために使用できます。

リファレンス
Magic eDeveloper V9 Plus921

第 22 章 - J2EE との連携

Proxy EJB の定義
Proxy EJB を作成するには、EIB でバッチプログラムを選択し、作成処理を実行するだけです。

命名
Proxy EJB を作成する場合、命名が重要になります。
• EIB のコンポーネント名はクラス名として使用されます。
コンポーネント名は、Proxy EJB のデプロイでは使用されません。実行時に設定される JNDI の名前をもとにデプロイされます。
• 各プログラムの公開名はメソッド名として使用されます。
• 各プログラムのパラメータ名は、Java コードのパラメータ名として使用されます。
• アプリケーション名や公開プログラム名、パラメータ名が正しくない場合、EIB 終了
してアプリケーションレベルで変更する必要があります。
• EIB がパラメータの名前を変更する場合があります。例えば、空白は、アンダースコ
ア ('_') に置き換えられます。。
コンポーネント名や公開プログラム名、パラメータ名に DBCS（全角文字や半角カタカナ）は指定できません。また、以下の文字も指定できません。
• ~!@#$%^&*()-+=|\/?_ ,''<.>;:"`{}[]

プロトコル
J2EE サーバー内の EJB と Magic アプリケーションサーバ間は、簡単な XML でやり取りしています。

スケーラビリティ
J2EE サーバーはスケーラビリティを管理します。EJB を追加したり、新しいインスタン
スを作成する場合は、EJB サーバ側で行います。

セキュリティ
Magic アプリケーションサーバーは J2EE サーバーのバックエンドで動作します。(Magic
アプリケーションサーバに対する ) クライアントは必要ありません。J2EE サーバーがク
ライアント側との処理を行うため、EJB が処理するパケットのみファイヤウォールを通すようにしてください。
EJB サーバと Magic アプリケーションサーバ間の XML でのやり取りは、J2EE サーバでのセキュリティ処理の対象外です。

戻り値
タスクの戻り値• ［タスク特性］ダイアログで設定したタスクの［戻り値］はメソッドの戻り値として使用されます。
• ［入出力ファイル］テーブルでのリクエスタタイプは、無視され、Proxt EJB には返り
ません。

922

リファレンス
Magic eDeveloper V9 PlusEJB インタフェースビルダ

複合戻り値• 複合の戻り値には、配列と構造体が含まれています。これらは、ユーザが定義した
XML ファイルを使用することで有効になります。XML ファイルの内容は、実行された Magic プログラムや Proxy EJB を起動するクライアントによって認識されます。
• アプリケーションサーバは、XML を Proxy EJB に渡します。Proxy EJB は、折り返し
XML を解析しないでクライアントに渡します。
• 文字／メモ項目かBLOB項目のどちらかで XML ファイルを用意することができます。
BLOB メソッドの場合、テキストファイルで処理して、File2Blob 関数でロードします。

作成手順
EIB は、ウイザード形式で実行されます。以下に示す手順を実行することで Proxy EJB を作成することができます。
EIB では、以下の環境変数が設定されてない場合、EIB の起動時にエラーが表示され即終了してしまいます。
• 中間ファイルの場所……環境変数「TEMP」が見つからない場合• J2EE Home ディレクトリ……環境変数「J2EE_HOME」が見つからない場合• Java Home ディレクトリ……環境変数「JAVA_HOME」が見つからない場合
これらの環境変数は、Magic 起動前に設定しておいてください。
Jar ファイルを作成するには、JDK Ver1.3
要です。

以上がインストールされていることが必

アプリケーション名、公開プログラム名、パラメータ名に DBCS（全角文字、または半角カタカナ）を使用しないでください。また以下の文字も含めることができません。
!@#$%^&*()‑+= ￨¥/?,''<.>;:"̀

リファレンス
Magic eDeveloper V9 Plus923

第 22 章 - J2EE との連携

起動
EIB は、［コンポーネント］メニューから［EJB インタフェース］を実行すると起動されます。［次ヘ］をクリックすると［メインオプション］ダイアログが表示されます。

図 22-3 EJB インタフェースビルダの起動画面

メインオプション
ここでは、ProxyEJB を新規に作成するか、既存のものを修正するかを指定します。

図 22-4［メインオプション］ダイアログ924

リファレンス
Magic eDeveloper V9 PlusEJB インタフェースビルダ「作成」を選択して、［次ヘ］をクリックすると［EJB コンポーネントの詳細］ダイアロ
グが表示されます。
［修正 / 削除］を選択して、［次ヘ］をクリックすると［EJB コンポーネント一覧］ダイア
ログが表示されます。

コンポーネント名の設定新規作成する EJB コンポーネントの名前を指定します。以後、修正や削除を行う場合は、この名前が一覧表示されます。

図 22-5 ［EJB コンポーネントの詳細］ダイアログボックス［次ヘ］をクリックすると［プログラムの選択］ダイアログボックスが表示されます。

既存のコンポーネントの選択
すでに作成済みのコンポーネント名の一覧が表示されます。

コンポーネントの修正を行う場合
コンポーネント名にカーソルを位置付けて［次へ］をクリックすると EJB コンポーネン
トの詳細］ダイアログが表示されます。

コンポーネントの削除を行う場合
コンポーネント名にカーソルを位置付けて［削除］をクリックすると指定されたコンポー
ネントが削除されます。

リファレンス
Magic eDeveloper V9 Plus925

第 22 章 - J2EE との連携

図 22-6［EJB コンポーネント一覧］ダイアログ

プログラムの選択
ここでは、アプリケーションに含まれているプログラムを選択することができます。
［追加］や［削除］のボタンで ProxyEJB として公開するプログラムを選択したり、外したりできます。

図 22-7［プログラムの選択］ダイアログボックス

926

リファレンス
Magic eDeveloper V9 PlusEJB インタフェースビルダ［パラメータ］ボタンをクリックすると、各プログラムに定義されたプログラムのパラメータや戻り値に対して Java 形式を割り当てることができます。

図 22-8 パラメータの型指定

パラメータ名は、選択されたプログラムのパラメータテーブルから取得されます。Java
タイプは、選択されたプログラムで定義された項目の書式に対応して変換されます。
戻り値は、式で指定します。
［式］欄は、式の番号が表示されます。
［Java タイプ］のリ
ストには、プログラム内で項目や式として定義された型や書式に基づいたタイプが表示されます。
精度を指定するスライダは、数値を返す式の場合のみ表示されます。
［Java タイプ］と［式］欄は、数値型のパラメータや戻り値のないプログラムは無効になります。

Magic と Java のタイプの比較
以下は、Magic での項目のタイプとこれに対応した Java でのタイプを示しています。
Magic タイプJava タイプ

文字型

String / StringBuffer

BLOB

String / StringBuffer / byte

数値型

Byte / short / long / float / double

論理型

Boolean

日付 / 時刻型

String• パラメータに対する Java のタイプは BLOB か 文字型、項目名や File2Blb のように
BLOB 値で返る戻り値の式、項目名や Str 関数を使用した文字型のどちらかを選択できます。
• 精度を維持するために、数値パラメータは実行するプログラムのパラメータを適切に配置しなければなりません。EIB は、パラメータの型や書式に基づいた設定をします。
これらは、データベーステーブルのフィールドの記憶形式によって設定されるのと同じ方法で行われます。

リファレンス
Magic eDeveloper V9 Plus927

第 22 章 - J2EE との連携
• タスクの［戻り値］が数値型の場合、EIB は、Java タイプの選択するように要求を出します。精度を要求する場合は、Float か Double を選択してください。
精度 2 のデフォルトタイプは、Double です。精度 0、の場合、Long に変更されます。

J2EE サーバの選択［プログラムの選択］ダイアログボックスで［次ヘ］をクリックすると［J2EE サーバの選択］ダイアログが表示されます。ここでは、ProxyEJB を動作させる J2EE サーバを選択します。

図 22-9 J2EE サーバの選択

以下の J2EE サーバから選択することができます。
• BEA WebLogic Ver. 5 or 6
• Sun Reference Ver. 1.3• JBOSS• Oracle Enterprise Server Ver. 9i• Sun ONE Enterprise Server Ver. 7• Fujitsu Interstage Enterprise Server Ver.5• WebSphere Application Server Ver.4
J2EE との連携機能は日本語版では、Interstage Application Server V5.0 のみ動作を確認しています。
［次ヘ］をクリックすると［コンポーネントのパス］ダイアログが表示されます。

コンポーネントのパス指定
ここでは、コンポーネントファイルをどこに作成するかを指定します。デフォルト値は、
Magic がインストールされたフォルダ上の以下のサブフォルダになります。
Component¥ejb¥ コンポーネント名

928

リファレンス
Magic eDeveloper V9 PlusEJB インタフェースビルダ［参照］ボタンをクリックして［ファイルを開く］ダイアログを開いて指定することもできます。

図 22-10［コンポーネントのパス］ダイアログ［次ヘ］をクリックすると［EJB コンポーネントの作成］ダイアログが表示されます。

作成内容の確認
ここでは、作成するコンポーネントの内容が表示されます。表示内容を確認して［次へ］をクリックすると作成処理が実行されます。

リファレンス
Magic eDeveloper V9 Plus929

第 22 章 - J2EE との連携
図 22-11［EJB コンポーネントの作成］ダイアログ

作成終了
正常終了した場合
Jar ファイルの作成が終了すると、EIB は作成に成功したことを確認するためのメッセー
ジダイアログを表示します。

図 22-12［作成終了］ダイアログ

Jar ファイルは、指定した J2EE サーバ毎に作成されます。ProxyEJB 用の Jar ファイルの他に「ClientTest」という名前のファイルがあります。これは、ProxyEJB 経由で Magic ア
プリケーションを呼び出すための確認用のクライアントプログラムです。

作成できなかった場合
Jar ファイルが作成できなかった場合は、以下のようなメッセージダイアログを表示します。
［ログファイル表示］や［ステータスファイル表示］ボタンをクリックすると、処理中に発生したメッセージを記録したログファイルが表示されます。このファイルをもとにエラーの原因を調べることができます。

図 22-13［エラーメッセージ］ダイアログ

Proxt EJB の動作環境
EIB は、作成した Proxy EJB や Jar ファイルを実行するための DD ファイルを作成します。
このファイルは、処理に必要な Bean の情報が含まれています。設定される２つのタイプ
は、「動作環境」と「リソース」です。

930

リファレンス
Magic eDeveloper V9 Plus

Magic の環境設定と実行

Proxy EJB の動作環境の設定
WebSphere の AAT( アプリケーション・アセンブリ・ツール）では、［環境エントリー］
として表示されます。

MagicApplicationServers
Proxy EJB が接続できるアプリケーションサーバ名を設定します。URL リソース を参照
して、',' を区切り文字とした名前で指定してください。
構文 :MagicURL[,MagicURL2..]
デフォルト :MagicURL

MagicApplication
Proxy EJB が接続する Magic アプリケーションの名前を設定します。
構文 : アプリケーション名

CommunicationTimeout
Proxy EJB とアプリケーションサーバの間の接続、送受信のタイムアウト時間を秒単位で設定します。リクエストの処理時間は含まれません。
構文 :nnn （<=0 の場合、デフォルト値が使用されます）
デフォルト :10

PropagatePrincipal
ここには、論理値を指定します。EJB のリクエスト証明書を Magic アプリケーションサー
バに渡すかどうかを指定します。
構文：java.lang.Boolean type (true または false)
デフォルト：true

リソース• Interstage の場合、<Magic Dir>¥EJB¥<Bean̲name>¥Interstage に作成された
jndi.properties というファイルを、%JAVA̲HOME%¥jre¥lib にコピーします。
• WebSphere の場合は、管理コンソールで設定します。

MagicURL
この設定は、アプリケーションサーバの URL を表します。MagicURL は、単一のリソースです。アプリケーションサーバの設定でこれを有効にするとリソースを追加して使用することができます。
デフォルト :http://localhost:1500

Magic の環境設定と実行
Proxy EJB は、J2EE をサポートするアプリケーションサーバとの間でのみ動作します。ここでは、アプリケーションサーバに対する EJB の相互作用の異なった要素での影響について概要を記述します。
リファレンス
Magic eDeveloper V9 Plus931

第 22 章 - J2EE との連携

動作環境
Magic によって作成された Proxy EJB は、Magic のアプリケーションサーバの環境下でのみ使用できます。
Magic クライアントでは、［サービス］テーブルで 「J2EE 」タイプのサーバで定義されているサービスをリモートコールで指定することはできません。指定した場合、プログ
ラムチェックしたり、リモートコールを実行した場合に以下のようなエラーが表示されます。
J2EE タ イ プのサーバは、 Proxy EJB からの リ モー ト コ ールのみ受け付けます。

実行
Proxy EJB は、アプリケーションサーバにユーザ名やパスワードといったようなユーザ情報を渡すことができません。このような情報は、アプリケーションサーバのローカルな
Magic.ini ファイルを使用して指定することができます。また、Magic エンジンの起動時に以下のようなコマンドラインパラメータを使用して指定することができます。
mgrntw.exe -User= -Password=

汎用メッセージレイヤ (mgrqgnrc.dll)
アプリケーションサーバが Proxy EJB からのリクエストを受け付けられるように汎用メッセージレイヤの設定を変更する必要があります。指定しない場合は、Magic エンジ
ンはリクエストを受け付けません。

Mgreq.ini の変更
変更に関するキーワードは以下のとおりです。

Gateway=5
Gateway を 5 に設定することは、Gateway が J2EE のアプリケーションサーバであることを示します。これによる影響は以下の通りです。
• 汎用メッセージレイヤは Proxy EJB がサポートされていることを通知します。
• MQ/DQ/Corba のゲートウェイはロードされません。
• EJB 以外のソースからのリクエストを受け付けません。

他のキーワード
Proxy EJB がサポートされている時は、Log パラメータのみ有効です。

アプリケーションサーバレイヤ
アプリケーションサーバレイヤには、Proxy EJB がアプリケーションサーバと接続する上で以下のような３つの設定内容があります。
• 初期化• ライセンスの確認• MRB へのステータスメッセージ932

リファレンス
Magic eDeveloper V9 Plus

Magic の環境設定と実行

初期化
Gateway=5 に設定されていると、アプリケーションサーバが MRB にアクセスすることは、オプションになります。MRB が指定したアドレス上に存在する場合、ログイン処理
や管理目的で使用できます。MRB が存在しない場合は、アプリケーションサーバは、
Gateway=1 の MRB に送る全てのメッセージを送信します。
アプリケーションサーバは、以下で指定されたポートでロードされます。
［MAGIC_COMMS］ TCP/IP

ライセンスの確認
ライセンスによって、アプリケーションサーバで同時に処理できるリクエストの数を制限できます。Gateway=1 の場合この処理は MRB によって実行されます。しかし、ProxyEJB がサポートされた場合、ライセンスの確認はアプリケーションサーバ内で実行されます。
使用ライセンスを超えた場合、アプリケーションサーバは次のリクエストで終了し（エラー 136 を返す）、さらにリクエストが来ると エラー 109 が返されます。同時に処理できるリクエスト数を超えたことによりアプリケーションサーバがリクエストを処理できない 場合は、エラー 104 が返ります。
詳細は , 「エラーのタイプ」を参照してください。

MRB へのステータスメッセージ
Gateway=5 に設定されていて、MRB が稼働中という通知をアプリケーションサーバへ送った場合、MRB は、アプリケーションサーバのログ採取や 管理目的で使用されます。
リクエストの完了通知は、リクエスト ID を持たず MRB には意味がないので送りません。

Java オブジェクトを渡すための設定
Java オブジェクトを渡す場合は、EJB メソッドで使用される Java クラスに対応した、Jar
ファイルや Java のクラスパスを CLASSPATH 環境変数 設定する必要があります。
（Magic.ini の［MAGIC_JAVA］セクションではありません。
）
Magic が EJB 内の Java クラスにアクセスできるようにするには、以下のどちらかにクラスや Jar ファイルを含める必要があります。
• Magic.ini ファイル内の［CLASSPATH］パラメータ• CLASSPATH 環境変数
Magic アプリケーションサーバが EJB からリクエストを受け取ると、アプリケーション
サーバは、各 Java オブジェクトを自動的にデシリアライズ（復元）し、Java の仮想参照
として起動した Magic プログラムに渡します。プログラムの Blob パラメータは、各オブジェクトに対応した Java 参照を持っています。もし、戻り値が Java オブジェクトであれ
ば、EJB リクエストに応答した時にエンジンは自動的に、Java オブジェクトをシリアラ
イズします。

リファレンス
Magic eDeveloper V9 Plus933

第 22 章 - J2EE との連携

MRB の動作環境と実行
問い合わせ（アプリケーションサーバのみ）
MRB は、アプリケーションサーバが「問い合わせのみ」の状態 であることを認識し、マークします。
「問い合わせのみ」のアプリケーションサーバはステータス情報のみを送ることができ、MRB からのリクエストも受け付けず、リクエスタの割当ても行いません。

終了
EJB がサポートされている場合、MRB が終了すると、問い合わせのみのアプリケーショ
ンサーバに XML ベースの終了リクエストを送ります。

アプリケーションサーバのロード
初期化時にコマンドラインリクエストや RQ 関数を使ってアプリケーションサーバをロードできます。

Java オブジェクトを渡すための設定
Magic は、EJB からのリクエストや EJB への応答の Java オブジェクトをシリアライズしたりデシリアライズする必要があります。この場合、以下の設定が必要です。
• Magic.ini ファイルの［MAGIC_JAVA］セクション内の［JAVA_HOME］の設定• 「JAVA_HOME」環境変数の定義• jvm.dll ファイルのあるディレクトリを含んだパスを PATH 環境変数に追加
EJB メソッド内の java クラスは、以下のどちらかの指定によってクラスや Jar ファイルを含めることによって Magic にアクセスできるようにしなければなりません。
• Magic.ini ファイルの［MAGIC_JAVA］セクション内の［CLASSPATH］の設定• 「CLASSPATH」環境変数の定義
Magic アプリケーションサーバが EJB からリクエストを受け取ると、アプリケーション
サーバは、各 Java オブジェクトを自動的にデシリアライズ（復元）し、Java の仮想参照
として起動した Magic プログラムに渡します。プログラムの Blob パラメータは、各オブジェクトに対応した Java 参照を持っています。もし、戻り値が Java オブジェクトであれ
ば、EJB リクエストに応答した時にエンジンは自動的に、Java オブジェクトをシリアラ
イズします。

コマンドラインリクエスタ
終了
MRB に対してはパスワードの確認が必要です。MRB がない場合、アプリケーションサー
バは、他のプロセスと同じようにコンソールから終了させてください。

問い合わせ
MRB が必要です。

934

リファレンス
Magic eDeveloper V9 Plus

J2EE と Magic のインストール（非 EJB の）他のリクエスタからのリモートコール
コ マ ン ド ラ イ ン リ クエスタや Web 等、他のリクエスタからのリモートコールは、
Gateway=5 の時は使用できません。

J2EE と Magic のインストール
Magic eDeveloper をインストールすると Magic は、J2EE サーバを探します。Magic が J2EE
サーバを見つけると、J2EE サーバのディレクトリ（%JAVA̲HOME%¥jre¥lib¥ext）に .jar
ファイル（Mgejbgnrc.jar）をコピーします。このファイルによって Proxy EJB がアプリ
ケーションサーバと接続することができます。
Magic が J2EE サーバを見つけられない場合、.jar ファイルは、Magic のインストールディ
レクトリ上の EJB サブフォルダにコピーします。J2EE サーバを後でインストールした場
合、手動で %JAVA̲HOME%¥jre¥lib¥ext ディレクトリにファイルをコピーしてください。

接続障害
EJB がアプリケーションサーバと接続する際に問題が発生した場合、もし可能であれば、EJB は他のアプリケーションサーバとの接続を試みます。もし、EJB がどちらのサーバとの接続にも成功しなかった場合、エラー情報を送ります。Magic のエラー情報には、リクエスタのドキュメントに記述されているような数値のエラーコードや使用された URL
リソースの名前（例えば、MagicURL のような）が含まれています。

エラーのタイプ
アプリケーションサーバから返るエラーの一覧とその意味を以下に示します。
コード

説明

発生契機

対応

104

アプリケーションが使用中ですライセンスのチェック時

EJB は、通信タイムアウトで指定された時間内でアプリ
ケーションサーバとの接続を継続します。もし、失敗した
場合 " アプリケーションビ
ジー " をクライアントに返し
ます。

109

アプリケーション
サーバからの接続が拒否されました

終了時終了するアプリケーション
サーバのアドレスを確認します。

117

J2EE タイプのサーバは、EJB からのリモートコールのみ受け付けます .

異なったリクエス
タによるリモートコールが実行された場合

サーバテーブルのサーバタイ
プが "J2EE" になっていることを確認してこのディレクト
リ上でこマンドラインや Web
リクエスタからリモートコー
ルが送れないことを確認して
ください。

128

アプリケーションから拒否されました

他のアプリケー
ションをオープン
しているアプリケーションサーバがリクエストを受け取った場合EJB は、通信タイムアウトで指定された時間内でアプリ
ケーションサーバとの接続を継続します。もし、失敗した
場合 " アプリケーションビ
ジー " をクライアントに返します。

リファレンス
Magic eDeveloper V9 Plus935

第 22 章 - J2EE との連携
129

モードの切り替えができませんでした。

他のアプリケー
ションをオープン
しているか、エンジンが開発モードで動作しているア
プリケーション
サーバがリクエス
トを受け取った場合

アプリケーションサーバを、
アイドル状態に切り替えてく
ださい。

136

最大接続数に達しましたライセンスのチェック時

アプリケーションサーバのラ
イセンス数を増やす必要があ
ります。

138

処理中にプログラ
ムがアボートしま
した

EJB クライアントにアボートしたプログラム名を送ります。

EJB リクエスト証明書へのアクセス
EJB メソッドを起動するユーザやアプリケーションの EJB リクエスト証明書は、 Java オ
ブジェクト（java.security.Principal クラス）を送信することで Magic アプリケーションサー
バに渡されます。この情報を送信しない場合は、EJB をデプロイする前に EJB の DD の
PropagatePrincipal 環境の指定を「false」に設定してください。
証明書情報にアクセスするには、オブジェクトへの Java 参照を保存するための Blob 変数を定義して、以下に式で更新する必要があります。
GetParam('EJB_PRINCIPAL').
主要な情報が「java.security.Principal」のようにシリアライズされたオブジェクトに保存されている場合、Java 参照は、Java の String オブジェクトへのリファレンスであり、その値はユーザ名となります。
主要な情報が、シリアライズされたオブジェクトに保存されていない場合、Java 参照は
javax.security.auth.kerberos.KerberosPrincipal または javax.security.auth.x500.X500Principal な
どの java.security.Principal を実装したクラスから Java オブジェクトになります。
主要な名前にアクセスするために、JCall 関数を使用して getName メソッドを呼び出すことができます。例えば、以下の関数を実行することで <alpha variable> を更新することができます。
JCall(<Java ref var>,'getName','()Ljava/lang/String;')Java 参照が特定のクラスと関連性があるかどうかを確認するには、JInstanceOf 関数を使用することができます。例えば以下のように指定します。
JInstanceOf(<Java ref var>,' javax.security.auth.kerberos.KerberosPrincipal')936

リファレンス
Magic eDeveloper V9 Plus

マルチユーザ環境

23

マルチユーザアプリケーションを開発する場合、データの共有の方法や範囲が問題になります。つまり、マルチユーザアプリケーションの場合、ワークステーションは多数存
在することになりますが、そういったワースステーションでどのようにデータが共有されるようにするか、その処理について検討しなければなりません。
この章ではマルチユーザ環境について焦点を当てており、同じデータを複数のユーザで共有するときの設定について記述しています。
本章では、次の内容について説明します。
• 定義事項• 並行性• テーブルモード• マルチユーザ環境の設定• コンテキスト

リファレンス
Magic eDeveloper V9 Plus

937

第 23 章 - マルチユーザ環境

定義事項
以下は、この章でマルチユーザについての説明を理解する上で必要な用語です。

分離レベル
分離レベルは、同じトランザクションを同時に使用する間に何が発生するかを定義します。ユーザはデータベース上でのみこの設定を変更できます。設定できる分離レベルは使用する DBMS によって異なります。

MS-SQL Server• 0……READ UNCOMMITTED（共有ロックは実行されず、排他ロックも使用されません。このオプションが設定されている場合には、コミットされていないデータ、つまりダーティ データを読み取ることができます。トランザクションが終了する前にデー
タ内の値を変更でき、行がデータ セットに現れたり消えたりします。）• 1……READ COMMITTED（データが読み取られている間、ダーティ リードを回避するために共有ロックが保持されるように指定します。しかし、トランザクションが終了する前にデータを変更することができるので、反復不能読み取りやファントム デー
タが発生する可能性があります。）

DB2 UDB• 0……非コミット読み取り（UR：アプリケーションが他のトランザクションの非コミッ
ト変更にアクセスするのを可能にします。他のアプリケーションが表を消去または変更しようとしない限り、アプリケーションは自分が読み取っている行以外のアプリ
ケーションをロックしません。）• 1……カーソル固定（CS：カーソルが任意の行上に置かれているときに、アプリケー
ションのトランザクションがアクセスするその行をロックします。次の行が取り出されるか、またはトランザクションが終了するまで、そのロックは有効のままになります。行内のいずれかのデータが変更された場合、データベースに対してその変更内容
がコミットされるまでロックは保持されます。）• 2……読み取り固定（RS：アプリケーションがトランザクション中に検索する行のみをロックします。行の読み取りの修飾がトランザクションが完了するまで他のアプリ
ケーション・プロセスによって変更されないようにします。また、他のアプリケー
ション・プロセスによって変更された行の読み取りは、変更がプロセスによってコミットされるまで行われません。）• 3……反復可能読み取り（RR：トランザクション中に参照される、アプリケーション
内の行すべてをロックします。プログラムが反復可能読み取り保護を使用する場合、プログラムによって参照される行は、そのプログラムが現行のトランザクションを終了しない限り他のプログラムによって変更できません。）

Oracle指定は無効です。
分離レベルによって発生する現象には以下のものがあります。
• ダーティリード……別のトランザクションによって作成された未確定レコードまたは変更レコードが SQL 処理で読み込まれると、1 つのトランザクション内で異なる結果が返されます。
例えば、あるユーザがトランザクションがコミットされる前に他のユーザによるデー
タの変更を見ることができるとします。このときロールバックが実行されてもデータの表示はまだ変更内容が反映された状態になっています。
ダーティリードでは並行性は向上しますが、一貫性は低下します。

938

リファレンス
Magic eDeveloper V9 Plus

並行性
• 反復不可能なリード……SQL 処理でテーブルの同じ行が２回読み込まれると、1 つのトランザクション内で異なる結果が返されます。反復不可能なリードは、トランザク
ションの読み込みの間に別のトランザクションが行う変更を更新してコミットすると発生します。反復不可能なリードでは一貫性は向上しますが、並行性は低下します。
• ファントム……SQL 処理で一連のデータ値が 2 回読み出されたときに、1 つのトラン
ザクション内のさまざまな結果を返します。ファントムは、一連の読み出しの実行の間に、別のトランザクションが新しいレコードを挿入してコミットすると発生します。各分離レベルは、許容する現象によって異なります。
以下の表は分離レベルとトランザクション処理を同時実行させた場合に起こる問題の相関関係を示しています。
#

分離レベル／現象

ダーティー
リード

反復不可能読み ファントム
取り

0

READUNCOMMITTED
非コミット読み取り

○

○

○

1

READCOMMITTED
カーソル固定-○○2

読み取り固定--○3

反復可能読み取り

-

-

-

ロック
ロックは、データを完全に保存するために使用されます。ユーザがデータを更新したとき、何らかの通知が発生することで他のユーザが更新できなくなります。他のユーザはこのデータが現在更新中であることを示す通知を受け取ります。この通知をロックと呼びます。
ロックが発行されない場合、更新情報が失われてしまします。もし、各ユーザのトラン
ザクションが他のユーザについて知らない状態にいると、最終的な更新処理によって、他のユーザの更新内容が上書きされてしまいます。

プロセス
プロセスとは、コンピュータ上で実行中のプログラムのインスタンスを意味します。それはタスク（OS の中で使用される用語）を意味します。タスクのように、プロセスが処理を記録できるようにデータの特定のセットが関連づけられて実行しているプログラムです。複数のユーザによって共有されるアプリケーションは、一般的に、各ユーザ毎に実行できるステージ上で１つのプロセスを持っています。

トランザクション
トランザクションとは、データベースでデータ操作のステップの１つです。これは、デー
タベースが実際に更新される前に完全に終わらせなければなりません。もし、この処理に失敗した場合全ての変更内容は取り消されます。
（これをロールバックといいます。）
言い換えると、変更処理は、更新されるかされないかのどちらかになります。これもまた、データの完全性を保つための手段です。

並行性
並行性とは、少なくとも２人のユーザが同じアプリケーションを同時にアクセスすることを言います。ここでは、どのようにしてユーザに対してデータの損失が発生することなく同じデータのアクセスを許可するかを説明します。次の例では、並行動作環境下でデータの完全性の重要性を説明しています。
リファレンス
Magic eDeveloper V9 Plus939

第 23 章 - マルチユーザ環境
２人のユーザは、” 在庫マスタ ” と呼ばれるデータベーステーブルをアクセスしているものとします。現在 94 個の在庫があります。最初のユーザは、（１個の販売実績があったことで）在庫を 93 に更新しました。２番目のユーザは（2 個の販売実績があったことで）在庫を 92 に更新しました。
この場合 3 個販売されたことになりますが、2 個の販売実績のみが反映されてしまいます。データの完全性に欠けたことでこのような結果になります。

ロック
トランザクションが、別のトランザクションとの潜在的な矛盾のために、実行時にテー
ブルかレコードを開くことができない場合、Magic は、テーブルをオープンしようし続け、現在ロックされる状態を記録します。アクセス待ちの間、Magic はテーブルかレコー
ドが現在ロックされると他のユーザに通知するメッセージを表示します。
他のユーザがタスクをアボートさせようと Esc キーを押したり、他のユーザのトランザ
クション処理が終了した場合、Magic がテーブルかレコードにアクセスしようとすることを終了します。もし両方のユーザの処理が矛盾していなければどちらもテーブルかレ
コードへのアクセスを獲得するのを待つ必要がないということに注意してください。
Magic には、ロック方式として３種類の方法があります。
• 物理ロック……DBMS によって定義された方法を使用して実行するデータベースロッ
クです。例えば、Oracle で SELECT....FOR UPDATE を使用する場合や、MS-SQL Server
で SELECT...UPDLOCK を使用する場合です。
• 論理ロック……タスクで位置や選択カラムを含んだ Where 句を使用することで Magic
内で UPDATE コマンドを発行します。
• Magic ロック……Mglock を使用して実行される論理ロックです。
デフォルトは、ODBC を除く SQL 系の Gateway では物理ロックが使用されます。

更新レコードの識別［DB テーブル］テーブルの［更新レコードの識別］欄は、Magic が行の更新を認識する方法を定義します。選択されたオプションは他のユーザが行のフィールドのどの部分をアクセスするかを定義します。詳細は、第７章の「プログラム」の説明を参照してくだ
さい。
［更新レコードの識別］欄のオプションは以下の通りです。
• P= 位置……これは一番低位のレベルです。Magic は、（Oracle の Row ID のような）ユ
ニークな ID のみを使用してデータベース上のレコードを更新します。この場合は、最後に更新されたものは成功します。複数のユーザが同じ項目を更新するような場合は問題が発生することがあります。一般的に、ID が更新されるか（Oracle ではありえません
が）行が削除された場合でなければ、Magic は（更新データを失ったという結果かもしれませんが）この行が更新されたかどうかを認識することはありません。
• U= 位置と更新項目……Magic は、ユニークな ID と更新されたカラムを使用してデータベースのレコードを更新します。例えば、もしユーザが「在庫数」の値を更新するためにレコードをアクセスした場合、Magic は、ユニークな ID と「在庫数」の値を使用してレコードをフェッチします。この方法では、他のユーザが「在庫数」の値を更新しようとした場合、そのユーザは更新データを失ったことを示すメッセージを受け取ります。しかし、あるユーザが「在庫数」の値を更新して、他のユーザが「受注数」欄の値を更新した場合にはデータ損失は発生しません。
• S= 位置と選択項目……Magic は、ユニークな ID とタスク内で選択された全てのカラムを使用してデータベースのレコードを更新します。言い換えると、同じタスクで受注数の値と「受注数」の値を［セレクト］コマンドで定義されていれば、Magic は、ユニー
クな ID と受注数と「受注数」の値を使用してレコードをフェッチします。この方法では、他のユーザがこれらの値を更新しようとした場合そのユーザは更新データを失ったことを示すメッセージを受け取ります。

940

リファレンス
Magic eDeveloper V9 Plus

並行性
例えば、受注数と ” 受注数 ” を持ったレコードのあるデータベースを同時に User-A と UserB が更新した場合、［更新レコードの識別］オプションの内容によって以下のような結果になります。
設定値「在庫数」の更新ユーザ「受注数」の
更新ユーザ

データの損失

メッセージ

P= 位置

User-A と User-B

User-A と User-B

Yes

No

P= 位置

User-A

User-BNo

No

U= 位置と更新項目

User-A と User-B

User-A と User-B

Yes

Yes

U= 位置と更新項目

User-A

User-BNo

No

S= 位置と選択項目

User-A

User-BYes

Yes

S= 位置と選択項目

User-B

User-A

Yes

Yes

トランザクション
トランザクションの問題については色々考慮していく必要があります。１つの トランザ
クションでは、ロック機能によってデータの完全性は増加しますが、並行性は減ります。
トランザクションを長くすると並行性はより小さくなります。タスク特性ダイアログの［拡張］タブでトランザクションモードを選択できます。
［トランザクションモード］のオプションには以下のものがあります。
• D= 遅延……全ての DM ステートメントは、Magic のキャッシュに保存されます。他のユーザはデータにアクセスできません。このトランザクションが終了すると、遅延処理中にキャッシュに保存されたステートメントによってデータベースが更新されます。データベースの更新は［更新レコードの識別］オプションに基づいて実行されます。もし選択されたレコードがコミットされる前に更新された場合、エラーメッセー
ジが表示され更新内容は失われます。この場合、もう１度変更処理をやり直す必要があります。遅延トランザクションモードで動作しているときは、常に更新データが失われる危険性があります。
遅延トランザクションはブラウザクライアントタスクで唯一有効なモードです。

• P= 物理……全ての DM ステートメントは、Magic によって物理データベースのロール
バックセグメントによって保存されます。他のユーザは、［分離レベル］の設定に基づいて更新されたデータを見ることができます。結果として、更新データの損失が少なくなります。
詳細は、第 13 章「データ管理」の「トランザクションモード」を参照してください。

ODBC でのシステムでは、物理ロックがなく、全てのトランザクションは Magic によって処理されます。

タスクレベルのトランザクションの使用
トランザクションを［タスク前処理の前］に開始するように選択すると、シングルトラ
ンザクションとして全ての更新処理が記録されます。これは、マルチユーザ環境の場合、並行性は減少しますが、パフォーマンスはよくなると言ったようないろいろな意味を持ちます。以下のような点を考慮してください。

リファレンス
Magic eDeveloper V9 Plus

941

第 23 章 - マルチユーザ環境• 並行性を改善するには、データビューに数レコードしかない状態でバッチタスクのタ
スク前でトランザクションを開始してください。もちろん、多くのレコードをロックしたい場合もあるので、これはアプリケーションに依存します。
遅延モードで動作させている場合は、［タスク前処理の前］でトランザクションを実行するようにはしないでください。これらの処理はキャッシュに保存されますが、
キャッシュサイズには限りがあります。
• オンラインタスクの場合、テーブルは長時間ロックされる可能性があります。このようなことが要求されることがあるかもしれません。
• タスクがトランザクション内で呼ばれた場合、ロックされた行は、そのトランザクションの一部になり、他のユーザからはアクセスできません。
• トランザクションがすでにオープンされていたり、タスクレベルのトランザクションの場合、Oracle は入力したタスクのデータビューをロックします（範囲内の全てのレコード）。いくつかの場合、これは意図的な動作です。もし、レコードのいくつかをロックしたい場合、それに応じた範囲の調整が必要です。
この動作は、データの完全性とパフォーマンスに対して有効です。全てのレコードはデータビューの作成でフェッチした場合と同じようにロックされます。他のデータベースでは、データはレコードにパークしたときのみロックされます。これは、各レ
コードに対してデータがロックされるためパフォーマンスに影響します。しかし他方では、並行性は最も高くなります。

レコード前処理の前でのトランザクション使用
トランザクションはデータビューがフェッチされる前にオープンされます。このため、レコードが同時にロックされます。オンラインタスクの場合、人為的要因でデータビュー
がロックされる時間が決定されます。マルチユーザ環境で［トランザクションモード］
を「P= レコード前処理の前」にするとことはお奨めできません。

レコード更新前でトランザクションを使用する［トランザクションモード］を「U= レコード更新前」にすると、トランザクションはレ
コードを更新する手前でオープンされます。Magic は、［DB テーブル］テーブルの［更新レコードの識別］欄の設定に基づいてレコードのロック要求のみを行います。この場
合の優位点は、トランザクション期間が小さく並行性がよくなることです。ロックはほんのわずか実行されるだけなので、他のユーザがデータを更新することができます。しかし、更新データを失う危険性はあります。

ロック方式［ ロック方式］欄は、オンラインタスクとバッチタスクの両方で有効です。ロックがかけられるタイミングを指定します。ロックがかけられた場合、そのレコードには、ほかのユーザはアクセスできなくなります。
また、ロックがかけられると同時に、オリジナルのデータ（レコードが最初に読み取られたときの内容）とメモリに格納されているデータ（ロックの実行時に読み取られた内容）の比較が行われます。
詳細については、第 13 章「データ管理」の「トランザクションモード」を参照してください。
［ ロック方式］欄には、次のいずれかの値を指定することができます。
• I= 即時……この値を指定しておくと、レコードが読み込まれると同時に、そのレコードにロックがかけられます。したがって、レコードの内容の比較は不要です。ロックは、解除されるまで有効です。この設定は、データの完全性は高くなりますが並行性は低くなります。

942

リファレンス
Magic eDeveloper V9 Plus

並行性
バッチタスクでは、この設定がデフォルトです。マルチユーザ環境のオンラインタス
クでは、この設定にしておくと、レコードのロックが異常に継続することがあります。
これは、長時間にわたって同じレコードに対して作業を行うユーザもいるためです。
この値は、物理的トランザクションモードにのみ適用されます。
• O= 入力時……この値にしておくと、レコードが読み込まれた後、ユーザがレコードの更新を始めたときにロックがかけられます。オンラインタスクでは、この設定がデフォルトです。オンラインタスクのタスク特性でのデフォルト設定は、［トランザク
ションモード］は「遅延トランザクション」、［ロック方式］は、「なし」になります。
バッチタスクでは、ユーザとの対話がないため、最初の項目処理（［ レコード後処理］
で実行されます）の際にロックが実行されます。または、ロックが必要な最初のタス
クまたはプログラムがコールされたときに、ロックがかけられます。詳細は、第 7 章「処理コマンド」を参照してください。
この設定の場合、レコードの内容の比較が必要になります。この設定は、［DB テーブ
ル］テーブルの［更新レコードの確認］欄で行います。
Magic は、以下の場合にロックを発行します。
•

入力項目を更新したとき• ［ロック］欄を 「Yes」にしてタスクやプログラムをコールしたとき•

項目更新コマンドの［止］欄を「No」にしたタスクを実行したとき•

データ入力コマンドを実行したとき•

イベントプログラムがイベントのデータビューをロックしたとき• B= 更新時……この設定では、データがデータベースに書き込まれるときにロックが実行されます。この場合、オンラインタスクでは、ユーザがレコードの入力を行っているときにはロックはかけられません。また、オンラインタスクとバッチタスクのいずれの場合も、［レコード後処理］の実行中にロックがかけられることはありません。
この設定ではレコードの内容の比較が行われますが、比較で内容が異なったときには、データベースへのデータの書出は実行されず、その旨のメッセージが表示されます。
なお、カレントのタスクから子タスクが呼び出されているときには、その子タスクによって別のテーブルにデータが書き込まれることもあります。その一方、カレントのタスクのレコードがデータベースに書き込まれていない場合、データの整合性に問題が発生します。トランザクションの継続時間が短ければ並行性はあがりますが、データの完全性を犠牲にすることになります。
したがって、この「更新時」は、データの書込先のデータベースでロック処理による負荷が大きいとき、または、比較で内容が異なっても、タスクの構造上、データの整合性を維持できるときに限って指定するようにします。この値は、物理的トランザク
ションモードにのみ適用されます。
• N= なし……この設定では、レコードにロックはいっさいかけられません。
そのため、この設定は注意して使わなければなりません。つまり、現在、アクセスされているレコードに対しては別のユーザも変更が可能で、したがって、データの整合性に問題が起こります。

タスクのネストとロック
ロック
タスクまたはプログラムが呼び出されると、カレントのレコードの処理が一時中断され、その後、そのタスクまたはプログラムが完了すると処理が再開されます。その間、呼び出されたタスクまたはプログラムからは、カレントのレコードの項目すべてに対してア
クセスが可能になります。
プログラムの場合、項目へのアクセスはパラメータを介して行われます。一方、タスクの場合、アクセスは直接実行されます。タスク、プログラムでは、どちらの場合も、カ
レントのレコードの項目に対して更新を行うことができます。その場合、更新時のロックの状態が問題になります。ユーザによるレコードの変更では、ロック方式として「入力時」が設定されているときには（ロック方式は［タスク特性］ダイアログで設定できます）、レコードの変更が始まると同時にロックがかけられます。
リファレンス
Magic eDeveloper V9 Plus943

第 23 章 - マルチユーザ環境
タスクやプログラムを使用してカレントのレコードを変更する場合も、カレントのレ
コードをロックしておくのが重要です。つまり、子タスクやプログラムでは相応の処理が実行され、処理の完了に時間もかかります。このため、タスクやプログラムの実行中
は、一般のユーザにはカレントのレコードに対してアクセスや変更をできなくしておくことが必要になります。アクセスが可能な場合、ユーザによってレコードが操作されているため、タスクやプログラムの終了時に変更をディスクへ書き込めないということも起こります。
以上のことから、呼び出したタスクやプログラムでカレントのレコードを変更するときには、あらかじめレコードにロックを設定しておきます。ただし、タスクやプログラム
でレコードの更新を行わないときには、ロックは必要ありません。
タスクやプログラムでレコードの更新を行うときには、［コール特性］ダイアログの［ロック］欄を使用してレコードにロックをかけるかどうかを指定できます。指定できる値は、次の通りです。
• No……タスクやプログラムの実行時、カレントのレコードにはロックはかけられません。この場合、タスクやプログラムでは、呼び出し側のタスクのレコードの更新は行
わないようにします。ロックが設定されていない状態でレコードの更新を行うと、タスクやプログラムの終了時にユーザがレコードを変更していた場合、更新したレコー
ドをディスクに書き込むことができず、そのため、更新した結果が失われることがあります。
• Yes…… 呼び出されたタスクやプログラムが実行されると同時に、カレントのレコー
ドにロックがかけられます。したがって、呼び出されたタスクやプログラムでカレン
トのレコードを更新するときには、「Yes」を指定します。また、タスクやプログラムの処理で間接的にカレントのレコードが更新されるときも、「Yes」にしておきます。
この値は、遅延および物理トランザクションモードに適用されます。

分離レベル
データベースが 0 の分離レベルを持っている場合、全てのロックはこのセッションで容認されます。たとえテーブルが排他でロックされていてもどのユーザも待ちになりません。アプリケーションのデータ構成によりますが、この分離レベルの設定は、並行性を高くしますが、データの完全性は低くなります。
MS-SQL Server と DB2 UDB は、分離レベル =0 をサポートしますが、Oracle にはありません。
Oracle は、分離レベル =1 をサポートしていて、他のユーザによってロックされたデータを読み込むことを許可しています。この場合、すでにコミットされたデータではなく更新されていないデータを表示します。

差分更新
SQL データベースの場合、項目特性の［更新形式］で「差分更新」が選択できます。差分更新は、更新データを失うという問題を小さくします。
以下の例は、［A= 値更新］が設定された場合に発生する問題を表しています。
在庫の中の項目として 94 個になっており（「在庫」カラムの値からフェッチされた）、
User-A が「在庫」カラムの値を 93 に更新したとします（1 個販売したため）。また、UserB が、カラムの値を 92 に更新した（2 個販売したため）とします。この場合、更新デー
タの損失が発生します。
しかし、差分更新の場合は、以下のように更新されます。
• 「在庫」の値：-1 があるユーザによって更新されます。
• 「在庫」の値：-2 が別のユーザによって更新されます。

944

リファレンス
Magic eDeveloper V9 Plus

テーブルモード「在庫」の値の最終値は、-3 の更新となりこの例では、91 になります。このように更新
データの損失は発生しません。
この設定にいての詳細は、第 11 章「データ管理」を参照してください。

テーブルモード
多数のワークステーションまたはインスタンス間のデータの共有では、同期処理が大切になります。この同期処理の設定により、テーブルへのアクセスの制御と制限が可能になります。テーブルに対する処理としては、次の 2 種類があります。テーブルに対しプ
ロセスで実行できる処理コマンドは次のとおりです。
• R= 読込……レコードの内容を読み取だけで、レコードの更新は行われません。
• W= 書出……レコードの内容を更新できます。この処理では、読込も可能です。なお、読込は「読込専用」、書込は「読込／書出」などということもあります。

アクセスモード
アクセスモードとは、テーブルに対する処理の方式をいいます。テーブルに対するアクセスモードは事前に設定しておくことができ、この設定にしたがってアクセスが実行されます。設定されているモードは、Magic に内蔵されている自動システムマネージャにより識別され、その結果、実際のアクセスが実行されます。ただし、2 つの処理（タスク）が同時に実行され、各処理で矛盾を起こしても、その状態は自動システムマネージャには認識されません。
たとえば、読込専用の処理 A によりテーブルにアクセスが実行され、同時に、読込／書出の処理 B により同じテーブルにアクセスが実行されたとします。
上記の場合、矛盾が発生しますが、この矛盾はシステムマネージャには認識されません。
つまり、処理 A がテーブルのレコードの数をカウントするという内容の場合、処理 B によりレコードの内容が変更されても、処理 A のカウントには影響ありません。一方、処理 A の内容が数値計算だったときには、処理 A と処理 B では矛盾が起こりるため、どちらかの処理を制限することが必要になります。この矛盾は、繰り返しますが、システムマネージャでは認識されないため、アクセスに関して何らかの設定を行うことが必要です。Magic では、この設定を共有モードと呼んでいます。

共有モード
上記のように、事前にアクセスモードを指定しておくことができますが、加えて、処理に対して共有モードを指定することもできます。この共有モードにより、テーブルに対して最終的にアクセスできるかどうかが決まります。
たとえば、統計処理プログラムの場合、アクセスモードは「R= 読込」、共有モードも「R=読込」にします。これで、テーブルに対して読込処理が実行されているときでも、同時にほかの処理により同じテーブルの内容の読込が可能になります。
アクセスモードと共有モードの設定は、システムマネージャに伝えられ、最終的に処理が実行されるかどうかが決定されます。
テーブルを排他モードで開きたいときには、共有モードを「N= なし」にしておきます。
この設定の場合、そのテーブルに対する別のユーザからのアクセスは、いっさい禁止されます。

リファレンス
Magic eDeveloper V9 Plus

945

第 23 章 - マルチユーザ環境

マルチユーザ環境でのテーブルモードの設定• テーブルロックは、［DB テーブル］テーブルの［共有］欄の設定を「N= なし」または、「R= 読込」に設定したときに発行されます。Magic は、テーブルを排他的にロッ
クします。排他ロックに対する動作は、使用する DBMS に依存します。多くの DBMS
は、排他ロックをサポートしています。例えば、Oracle の場合は、テーブルは排他的にロックされますが他のユーザがそのテーブルを読み込むことができます。このため、［共有］欄の設定を「N= なし」にすることは正しくありません。開発者は、使用する DBMS の排他ロックについての制限を予め知っておく必要があります。
• テーブルロックはトランザクション内でのみ有効です。テーブルロックと一緒にレ
コードレベルのトランザクションを使用することはできません。Magic は、入力テー
ブルがロックされた場合のように動作します。他のユーザがテーブルの他のレコードをアクセスすることはできません。
• 並行性が失われるため、テーブルロックは、できる限り回避するようにしなけらばなりません。
• 開発者によって意図的にテーブルレベルでのロックを発行させることができます。ただし、排他ロックをかけると上記のように並行性が失われることになります。
• ［アクセス］モードと［共有］モードの両方で「W= 書込」に設定することで Magic は、
データベースロックを発行します。もしトランザクションが遅延モードであれば、データベースロックは発行されず、Mglock ファイルを使用する Magic ロックが発行されます。Magic ロックの場合は、トランザクションが終了したときだけロックが解除されます。
• ブラウザタスク内では、物理トランザクションがないためデータベースロックやテー
ブルロックは発行されません。論理的な Magic ロックのみが発行されます。
• MS-SQL Server の場合、レコードロックのデフォルトは物理ロックです。Magic は、
デ ー タ ベ ー ス に 対 し て SELECT...UPDLOCK のコマンドを送ります。（Oracle のSELECT...FOR UPDATE のようなものです。）旧バージョンのデフォルトは論理ロックでした。（通常の SELECT ステートメントが全てのセレクトされたカラムに対して送られます。
）デフォルトの違いについては、第 25 章「SQL に関する考慮事項」の「MSSQL Server データベースゲートウェイ」の説明を参照してください。
• テーブルロック時にリトライする時間は、［動作環境／動作設定タブ／コマンド処理のリトライ間隔］(MAGIC.INI の RetryOperationTime) で制御されます。デフォルト値は600 秒です。
ブラウザタスクでは、論理ロックのみ使用します。

946

リファレンス
Magic eDeveloper V9 Plus

テーブルモード

テーブルモードの定義方法
アクセスモードと共有モードはいずれも、タスクの［DB テーブル］テーブルで行うことができます。

図 23-1 タスクの DB テーブルリポジトリ

タスクの［DB テーブル］テーブルには、次の 2 つの設定欄が用意されています。
• アクセス……アクセスモードを指定します。
•

W= 書出（デフォルト）

•

R= 読込

のいずれかが指定できます。
• 共有……共有モードを指定します。
•

W= 書出（デフォルト）

•

R= 読込

•

N= なし

のいずれかを指定します。
「N= なし」を指定しておくと、テーブルの共有はできなくなります。

テーブル共有の仕組み
次の表は、2 つのタスクで同じテーブルに対して同時にアクセスが実行される場合、そのテーブルの共有の仕組みをまとめたものです。表で、マイナス記号（-）がある場合、
2 つのタスクのモードが矛盾を起こすことを示しています。これに対して、プラス記号（+）がある場合、2 つのタスクのモードは矛盾を起こさず、正常に機能することを表しています。
プロセス A
アクセスモード

読込

共有

読込

読込
プロセス B
書出

書出
書出

なし

読込

書出

なし

読込

+

+

-

-

-

-

書出

+

+

-

+

+

-

なし

-

-

-

-

-

-

読込

-

+

-

-

-

-

書出

-

+

-

-

+

-

なし

-

-

-

-

-

-

図 23-2 有効なアクセス / モード

リファレンス
Magic eDeveloper V9 Plus

947

第 23 章 - マルチユーザ環境
たとえば、タスク A でテーブルが R ／ R モード（アクセスモードが R 、共有モードが Rの意味）で開かれている場合、タスク B では、そのテーブルを R ／ R または R ／ W で開くことができます。
また、タスク A でテーブルが R ／ W モードで開かれている場合、タスク B では、そのテーブルを R ／ R 、R ／ W 、W ／ W で開くことができます。

テーブル共有の状態の変更
子タスクがある場合、親タスクでテーブルが開かれた後、子タスクによっては、処理の都合上、テーブルのアクセスモードと共有モードの変更が必要になることもあります。
また、その子タスクの終了後は、通常、テーブルのモード（アクセスモードと共有モード）は以前のモードに戻すことが必要です。このように、テーブルのモードは状況によっては変更されることもありますが、モードは基本的には当初のモードに戻さなければならないため、Magic では、どういったモードがどういったモードに変更できるか、その規則が決められています。この規則がなければ、子タスクにより変更されたモードが、当初のタスクのモードに戻らなくなり、不都合が生じることもあります。
たとえば、規則では、テーブルが「読込／書出」で開かれた場合には、モードを「書出／書出」に変更することができます。一方、テーブルが「読込／読込」で開かれたときには、その後、「読込／書出」に変更することはできません。これは、モードが「読込／書出」に変わったときには、そのテーブルを別のユーザ（子タスク）が「書出／読込」
モードで開くこともでき、その場合、当初の「読込／読込」モードに戻すことができなくなるためです。
以下は、異なるタスク間で、どういったモードがどういったモードに変更できるか、その規則をまとめた表です。左辺が当初のモードで、上辺が変更後のモードです。プラス
記号（+）がある場合、親タスクと子タスク間でモードの変更が可能なことを示しています。
処理 A
アクセスモード

処理 B

読込
（R）

書出
（W）

読込（R）

書出（W）

共有

読込

書出

なし

読込

書出

なし

読込

+

-

+

+

-

+

書出

+

+

+

+

+

+

なし

-

-

+

-

-

+

読込

-

-

+

+

-

+

書出

-

-

+

+

+

+

なし

-

-

+

-

-

+

図 23-3 有効なアクセス / モード

上記の表で分かるように、たとえば、テーブルが「読込／書出」で開かれたときには、子タスクではモードを「読込／読込」、「読込／なし」、「書出／読込」、「書出／なし」、「書出／書出」のいずれかに変更できます。
子タスクによりモードの変更が試みられ、変更後のモードが規則に反していた場合には、規則に反しないモードのうち、できるだけ当初のモードに近いモードに変更されます。
たとえば、テーブルが「読込／読込」で開かれており、子タスクで「書出／書出」モードへの変更が要求された場合（図 23-3 で分かるように、この 2 つのモードは矛盾します）、テーブルは「書出／読込」モードで再オープンされます。このように、モード間で矛盾が生じたときには、子タスクにはアクセスモードとして「書出」は認められますが、共有モードでは「読込」モードしか許可されません。この方法により、別のユーザによる書出を回避することができます。その後、子タスクが終了すると、モードは親タスクの当初のモードである「読込／読込」に戻ります。
また、規則には即しているものの、変更後のモードが許可されていないときには、処理はループに陥ります。この場合、テーブルの再オープンが試みられると同時にメッセー
ジが表示されます。

948

リファレンス
Magic eDeveloper V9 Plus

マルチユーザ環境の設定

自動レコードロック
アクセスモードが「書出」で共有モードも「書出」の場合、Magic の自動ロック機能が働きます。
自動レコードロック機能は、マルチユーザ環境で有効になります。この場合、どういったロックが実行されるかは、タスクに設定されているロック方式により決まります。この自動ロックによりロックがかけられた後、データがディスクに書き込まれると、ロックは解除されます。オンラインタスクで Esc キーが押されたときも同じです。

レコードロック（O= 入力時）修正モードのオンラインタスクの場合、ユーザが入力する際にレコードにロックをかけるように設定することができます。また、どの時点でロックを実行するか、細かく設定することもできます（これをロック方式と呼んでおり、入力時、入力後にロックをかけるといった設定が可能です）。
状況によっては、ユーザがレコードの項目にカーソルを置いても、実際の変更は行わない
ときもあり、その場合には、修正レコードフラグ（レコードが変更されたかどうかを示すフラグ）の設定の際にだけレコードにロックがかけられます。この修正レコードフラグ設
定のためのロックは、次のような処理の後に実行されます。
• 項目の内容が変更されようとしたとき。
• 次のいずれかの処理コマンドが実行されたとき。
• ［コール］コマンド（［コールプログラム］は除きます）。ただし、そのコマンド
でパラメータが渡され、また、［ロック］欄の値が「Yes」に設定されている場合に限ります。
•

項目更新コマンド（アボート不可）•

データ入力コマンド

このほか、［編集／行削除］によりレコードの削除が試みられたときにも、レコードにロッ
クがかけられます。

実行モードでのロックの効果
実行時、必要なアクセスモード、共有モードが設定されていない場合でも、テーブルは
Magic によりオープンが試みられます。また、タスクで、ロックがかけられているレコー
ドに対してアクセスが試みられた場合も、そのレコードに対してアクセスが試みられます。このどちらの場合でも、処理はループ処理になり、このループ処理の実行中、一定の時間間隔でメッセージが表示され、状況がユーザに報告されます。このループは、エンドユーザが Esc キーをーを押してタスクをアボートすると終了します。また、ループ処理の元となったタスクが終了すると終わります。そのほか、ロックによるループは、エンドユーザがレコード終了キー（↑、↓、PageDown、PageUp、Ctrl+End、Esc）を押すと終了します。

マルチユーザ環境の設定［動作環境］ダイアログには、マルチユーザ環境に関する設定欄がいくつか用意されています。こういった設定欄を使用して、環境がマルチユーザの場合の設定を行うことができます。

リファレンス
Magic eDeveloper V9 Plus

949

第 23 章 - マルチユーザ環境［動作環境］ダイアログのマルチユーザ環境関連の設定欄［動作環境］ダイアログの設定欄はいずれもグローバルパラメータです。Magic の環境全体に対して有効です。このダイアログの設定欄の値は、MAGIC.INI ファイルの［MAGIC_ENV ］セクションに保存され、各欄を使用して Magic 環境のカスタマイズを行うことができます。
［動作環境］ダイアログで設定欄を変更した場合、変更はすべて自動的に MAGIC.INI ファイルに記録されます。設定の値を変更した場合、設定欄によってはすぐに有効になることもありますし、Magic を次回起動したときに有効になるものもあります。
Magic の［動作環境］ダイアログの設定欄は、オペレーティングシステムの環境変数とは関係ありません。また、Magic は、実行時、コマンドラインパラメータ（オプション）を付加して起動するとこともでき、その場合、パラメータに指定した設定が［動作環境］ダ
イアログの対応する値に設定されます。この場合、コマンドラインパラメータの設定が、MAGIC.INI ファイルの設定より優先されます。一方、開発モードの場合、［動作環境］ダ
イアログの設定欄の値を変更すると、その変更は実行モードと同じく MAGIC.INI ファイ
ルに自動的に記録されますが、開発モードでは、コマンドラインパラメータより［動作環境］ダイアログの設定が優先されます。

図 23-4 マルチユーザアクセスの有効化

以下、［動作環境］ダイアログのマルチユーザ関連の設定欄について説明します。

マルチユーザアクセス• Yes……データベーステーブルに対して複数のユーザから同時にアクセスが可能になります。つまり、テーブルの共有が可能になり、データベースの整合性も維持されます。
• No……テーブルは排他モードでオープンされ、特定のユーザ以外はテーブルをオープンできなくなります（この設定は、タスクのテーブルのオープンモードより優先されます）。
デフォルトは「Yes」です。シングルユーザ環境の場合は、「No」に変更します。

端末番号
この欄には、マルチユーザ環境のエンドユーザごとに別個の番号を指定します。なお、値を「0 」にしておくと、ユーザごとに自動的に番号が振られます。ただし、この場合は、Term（）関数にて端末番号を取得できません。

950

リファレンス
Magic eDeveloper V9 Plus

コンテキスト

ロックファイル
Magic には、レコードとテーブルの２つのレベルのロック機能ががあります。最初のレベ
ルは、DBMS によってサポートされる機能を使用しています。２番目のレベルは、Magic
独自のロック機能です。Magic のロック機能は、アクセスするテーブルのある各ディレク
トリにロックファイルを作成します。
最初のユーザがディレクトリ上の共有テーブルにアクセスすると、そのディレクトリ上
で、Magic ロックファイルがオープンされます。最後のユーザが Magic から抜けるとロッ
クファイルは削除されます。

コンテキスト
各コンテキストは独自の環境を持っています。次の一覧は、共有されず、現在のコンテキ
ストでのみ有効なオブジェクトです。
• グローバル変数• 常駐テーブル• メモリテーブル• 常駐された INI ファイル• キャッシュ（遅延トランザクションの）リファレンス
Magic eDeveloper V9 Plus

951

第 23 章 - マルチユーザ環境［このページは意図的に空白にしています。］

952

リファレンス
Magic eDeveloper V9 Plus

ワークグループ開発

24

Magic のワークグループ開発機能は、同じアプリケーションを開発する開発者間の並行処理を制御することができます。
本章では、次の内容について説明します。
• ワークグループ開発のオプション• ［MVCS］メニュー• チーム開発

リファレンス
Magic eDeveloper V9 Plus953

第 24 章 - ワークグループ開発

ワークグループ開発のオプション
ワークグループ開発のオプションは、［CTL 特性］ダイアログの［ワークグループ開発］
タブで定義します。使用可能な設定は以下のとおりです。

［チーム開発を有効にします］
このチェックボックスを「オン」にするとチーム開発が有効になります。

［MVCS スナップショットファイル］
この欄からズームして、チーム開発用の MVCS スナップショットファイルを選択します。

［MVCS ロックファイルパス］
この欄からズームして、チーム開発用の MVCS ロックファイルのパスを選択します。

ワークグループ開発のオプションは、開発者がスーパーバイザ権を持ち、現在何もチェッ
クアウトしていない場合のみ変更できます。
スーパーバイザ権の詳細については、第 13 章「使用権利」を参照してください。

オブジェクトアプリケーションの構成要素をオブジェクトといいます。

チェックアウト／チェックインメカニズム
チーム開発を有効にした場合、Magic のリポジトリとプログラムについてそれぞれ、チェックアウトとチェックインを行う必要があります。リポジトリに対するチェックア
ウトはすべて一括して行われますが、プログラムは１つずつチェックアウトすることができます。
［MVCS］プルダウンメニューには、次のコマンドがあります。
• チェックアウト• チェックイン• チェックアウト一覧• アンチェック
• 再同期• チェックアウト・プログラムリポジトリ• チェックイン・プログラムリポジトリ

チェックアウト954

オブジェクトを編集したい場合、まず、そのオブジェクトをチェックアウトしなければなりません。チェックアウトしないときには、オブジェクトの内容を見ることはできま
すが編集はできません（つまり、読込専用になります）。なお、オブジェクトがフォームの場合、チェックアウトしないでもフォームエディタで内容を変更できますが（「読込専用」というメッセージなどは表示されません）、その場合でも、変更はいっさい保存されません。したがって、フォームを変更したいときには、忘れずにチェックアウトしなけ
ればなりません。
リファレンス
Magic eDeveloper V9 Plus

チェックアウト／チェックインメカニズム
Magic のリポジトリは、プログラムリポジトリを除きすべて一括して単一のオブジェク
トとしてチェックアウトされます。プログラムの場合、別個にチェックアウトすることができます。プログラム一覧情報を更新する場合は、プログラムリポジトリを１つのオブジェクトと考えて別にチェックアウトする必要があります。
ある開発者が Magic のリポジトリをチェックアウトすると、そのオブジェクト（リポジトリ）に自動的にロックがかけられます。このため、ほかの開発者は、読込専用でしか、そのリポジトリにはアクセスできません。つまり、いずれかの開発者によりリポジトリがチェックアウトされると、そのほかの開発者は、チェックアウト前のリポジトリの内容を見るという作業しかできなくなります。
ある開発者がオブジェクトをチェックアウトし、そのオブジェクトに変更を加えた場合、その変更は、その開発者の暫定ファイル（スナップショットファイル）に保存されます。
スナップショットは開発者ごとに用意され、各開発者は自分のスナップショットにのみアクセスが可能です。
また、プログラムを削除したい場合、まず、チェックアウトすることが必要になります。

チェックイン
チーム開発では、オブジェクトのチェックインが必要です。このチェックインにより、MCF が更新されるとともに同期化が実行されます。

チェックアウト一覧［チェックアウト一覧］には、チェックアウト済みのオブジェクトが表示されます。

図 24-1 チェックアウト一覧• オブジェクト名……オブジェクトの名前• ユーザ ID……オブジェクトをチェックアウトしたユーザのユーザ ID• チェックアウト日時……オブジェクトがロックされた日付と時刻［チェックアウト一覧］では、テーブルのカラム名をクリックすると、その欄の値を基準に行がソートされます。
• ユーザ……アプリケーションのオブジェクトにチェックアウトしているユーザの一覧が表示されます。
• OK……［チェックアウト一覧］が閉じます。
• 再表示……［チェックアウト一覧］の表示が更新されます。

リファレンス
Magic eDeveloper V9 Plus

955

第 24 章 - ワークグループ開発

アンチェックチェックアウトしたオブジェクトは、このコマンドを使用してアンチェックできます。
このコマンドを選択すると、チェックアウトしたオブジェクトに加えた変更が取り消されます。また、チェックアウト自体も取り消され、オブジェクトは元の状態に戻ります。

［MVCS］メニュー

図 24-2 ［MVCS］プルダウンメニュー

コマンド

用途

チェックアウト

選択されたオブジェクトをチェックアウトします。オブジェクト
が現在チェックアウトされていないときのみ有効です。

チェックイン

選択されたオブジェクトをチェックインします。オブジェクトが同じ開発者によって現在チェックアウトされているときのみ有効です。オブジェクトに対する現在のすべての変更は保存され、他の開発者は変更されたオブジェクトを表示できます。

チェックアウト一覧

現在チェックアウトされているオブジェクトの一覧を表示します。

再同期

オブジェクトの同期をとります。

アンチェック［アンチェック］現在のオブジェクトをアンチェックすると、チェックアウト以降にオブジェクトに加えられたすべての変更が取り消されます。

チェックアウト Prg.Rep

プログラム一覧情報を変更するためにプログラムリポジトリをチェックアウトします。

チェックイン Prg.Rep

プログラム一覧情報を変更後にプログラムリポジトリをチェック
インします。

チーム開発
チーム開発とは、複数の開発者が共同で同じアプリケーションの開発を行う状態をいいます。Magic は、最大で 128 名の開発者が同じアプリケーションの開発に取り組みことができるように設計されています。
チーム開発では、開発者間の足並みが重要になりますが、Magic では、これはアプリケー
ションのロックと同期という機能により可能になっています。

チーム開発の必須事項
956• チーム開発を行う場合、アプリケーションの開発にあたるワークグループの開発者に対して、それぞれ、別々のユーザ ID を割当てることが必要です。
リファレンス
Magic eDeveloper V9 Plus

チーム開発• システムは、あらかじめ、マルチユーザアクセスで動作するように設定しておかなけ
ればなりません。
• 実行版システム（MGRNTW.EXE）がアクセスしているアプリケーションに対して、開発作業を行うことはできません。

チーム開発の有効化
チーム開発を行いたい場合、まず、［CTL 特性］ダイアログの［ワークグループ開発］タブの［チーム開発を有効にします］というチェックボックスを、「オン」にします（図 243 を参照）。チーム開発を有効にすると、ナビゲータに［MVCS］オプションが表示されます。
［MVCS］をクリックすると、チェックアウトされたオブジェクトが表示されます。

図 24-3 ［CTL 特性］ダイアログの［ワークグループ開発］タブ

スナップショットファイル
オブジェクトを変更する場合、そのオブジェクトを手動でチェックアウトしなければなりません。
オブジェクトがチェックアウトされた場合、オブジェクトがチェックインされるかアンチェックされるまで全ての変更内容が一時ファイルに保存されます。この一時ファイル
によるメカニズムによって、アプリケーションのチーム開発が可能になります。
この一時ファイルは、「スナップショットファイル」と呼ばます。スナップショットファ
イルのファイル名は、［CTL 特性］ダイアログで指定できます。ファイル名が指定されていないときには、デフォルトの名前として xxSNP.MCF が使われます。ここで、xx はアプ
リケーションの識別子を表します。

排他処理
Magic でチーム開発を行う場合の排他制御は、アプリケーションに対するロックによって実現されます。ロックには、永続ロックと一時ロックがあり、永続ロックとはアプリ
ケーションに対して設定されるロックをいい、オブジェクトのチェックアウトのことを指します。また、一時ロックとは、アプリケーションが何らかの処理に対してかけられるロックをいい、このロックは、ロックファイルにより設定されます。

リファレンス
Magic eDeveloper V9 Plus

957

第 24 章 - ワークグループ開発

プログラムリポジトリの修正プログラムリポジトリはアプリケーションのプログラム一覧情報を管理しています。プ
ログラム一覧情報の変更を行う場合、プログラムリポジトリを変更する必要があります。
プログラムリポジトリは、プログラム一覧情報の変更に対して自動的にチェックアウト、
チェックインが行われません。開発者が、プログラムリポジトリに対して、手動でチェッ
クアウト、チェックインを行う必要があります。
プログラムリポジトリをチェックアウトする場合のみ、プログラム一覧情報を更新することができます。以下の操作によってプログラム一覧情報が更新されます。
（つまり、プログラムリポジトリのチェックアウトを行わないと、以下の操作ができません。）• プログラムの新規作成• プログラムの削除• プログラムの順番の変更• 別のフォルダへのプログラムの移動• プログラムフォルダ名の変更• プログラムの上書き• プログラムのコピー• プログラムリポジトリへの権利設定• プログラムのリポジトリ入力• テーブルリポジトリからの APG（作成モード）の実行

プログラムリポジトリのチェックアウトとチェックイン
［MVCS］メニューに表示される［チェックアウト Prg.Rep］または［チェックイン Prg.Rep］
をクリックするか、ツールバーのアイコンをクリックすることでプログラムリポジトリのチェックアウトやチェックインができます。プログラムリポジトリではアンチェック
はできません。

プログラムのリポジトリ入力
プログラムを含んだアプリケーションをリポジトリ入力するとき、プログラムリポジト
リをチェックアウトするように要求されます。
Magic Ver9.x 用のアプリケーションのリポジトリ出力ファイルを入力する場合は、プロ
グラムリポジトリをチェックアウトするように要求されます。プログラムリポジトリがチェックアウトされなかったり、他の開発者によってチェックアウト済みの場合、Magic
はリポジトリ入力処理が実行されなかったことを示す警告メッセージを表示します。
旧バージョンの Magic のアプリケーションをリポジトリ入力する場合、入力処理時にプ
ログラムが含まれているかどうかを判断できません。このため、無条件にプログラムリ
ポジトリのチェックアウト要求を出します。プログラムリポジトリがチェックアウトされなかったり、他の開発者によってチェックアウト済みの場合、Magic はリポジトリ入
力処理が実行されなかったことを示す警告メッセージを表示します。この場合、リポジ
トリ入力処理は失敗し、アプリケーションは入力前の状態にロールバックされます。

ロックファイル
ロックファイルの名前は xxMVCS.LOC で、このファイルは［CTL 特性］ダイアログの［ワークグループ開発］タブの［MVCS ロックファイルパス］で指定されているディレク
トリに置かれます。また、ロックファイルによるロックは、［チーム開発を有効にする］の設定が［オン］のときに有効になります。ロックファイルによるロックは、共有ロッ
クと排他ロックの 2 種類があります。どちらになるかは、オブジェクトの種類と操作により決まります。

958

リファレンス
Magic eDeveloper V9 Plus

チーム開発以下にその関係をまとめて示します。
オブジェクト

操作

ロック

モデル

チェックアウトせずにリポジトリに入る
チェックアウトしてリポジトリに入る
チェックイン

共有
排他
排他

テーブル

テーブル、カラム、インデックスからのズーム
特性
ファイルの APG
チェックイン

共有
共有
共有
排他

［プログラム］
リポジトリ

プログラムの追加、移動、削除

排他

プログラム

ズーム
実行
チェックイン

共有
共有
排他

ヘルプ

ヘルプからのズームイン
チェックイン

共有
排他権利チェックアウトせずにリポジトリに入る
チェックアウトしてリポジトリに入る
チェックイン

共有
排他
排他

メニュー

チェックアウトせずにリポジトリに入る
チェックアウトしてリポジトリに入る
チェックイン

共有
排他
排他

CTL 特性チェックイン排他

オブジェクトに共有ロックがかけられている場合、そのオブジェクトに対しては、排他ロックを必要とする処理はすべて禁止されます。

同期処理
チーム開発で最も重要なのは、開発者間の作業の同期です。この同期処理は、次の 2 つの部分に分けられます。
• アプリケーションへの変更が行われた場合にそれを検出し、変更により何かが影響を受けたかどうかを判別します。
• 各ユーザの開発環境への変更の同期をとります。

変更の検出
変更を検出するために、各開発モードにオブジェクトの現在の改訂を判別するカウンタが用意されています。これらのカウンタのもう 1 つのコピーがステーションロックファ
イルに保存されます。オブジェクトがチェックインされると、ステーションロックファ
イル内のオブジェクトのカウンタが 1 だけ大きくなります。
同期イベントが発生すると、開発モードで、内部カウンタとステーションロックファイ
ル内のカウンタとを比較します。

変更の同期
チーム開発機能で、変更が行われたことが検出されると、同期処理が開始します。この処理では、変更されたオブジェクトを開発環境に読み込みます。

リファレンス
Magic eDeveloper V9 Plus

959

第 24 章 - ワークグループ開発
読み込んだ後、バージョン管理オブジェクトに関係する開いているすべてのウィンドウ
が、オブジェクトの更新により再表示されます。カーソルが削除された行に置かれると、カーソルはオブジェクトのリポジトリの上に留まります。また変更を示すメッセージが表示されます。

同期処理のタイミング
以下の表は、同期処理が実行されるタイミングを一覧にしたものです。
オブジェクト操作

モデル

モデルリポジトリのオープン［モデル一覧］の表示

テーブル

テーブルリポジトリのオープン［テーブル一覧］の表示［カラム］欄からのズーム［インデックス］欄からのズームプログラムリポジトリ

プログラムリポジトリをアクセス

プログラム

プログラムリポジトリのオープン［プログラム一覧］の表示
プログラムの実行
プログラムの編集、照会

ヘルプ

ヘルプリポジトリのオープン［ヘルプ一覧］の表示
ヘルプの編集、照会

メニュー

メニューリポジトリのオープン

CTL 特性［CTL 特性］ダイアログのオープン

アプリケーションのアクセスモードと共有モード
次の表は、CTL ファイルアクセス時のアクセスモードと共有モードを定義したものです。
開発 / 実行チーム開発

アクセスモード

共有モード

開発

Yes

書出

書出

開発

No

書出

なし

実行

N/A

読込

読込

ステーションロックファイル
ステーションロックは xxSTTION.LOC という名前のファイルです。xx は、アプリケー
ションの識別子を示します。このファイルは、［CTL 特性］ダイアログの［ワークグルー
プ開発］タブの［MVCS ロックファイルパス］欄で指定されているディレクトリに置かれます。この欄がブランクのままであれば、ファイルは現在の作業ディレクトリに置かれます。
アプリケーションをオープンすると、ユーザ ID がステーションロックファイルに書き込まれます。同じユーザ ID を使用していても他のユーザはアプリケーションを開くことはできません。同じユーザが単一のユーザ ID を使用してアプリケーションの 2 つのインスタンスを開くことはできないことに注意してください。何らかの理由により、ユーザがアプリケーションを開こうとしたが、ログオンできなかった場合、「MVCS 稼動中です ログオンしないでアプリケーションをオープンすることはできません。」というメッセー
ジが表示されます。
ステーションロックファイルは、アプリケーションに最初にログオンしたときに作成され、最後のログオフ後に削除されます。

960

リファレンス
Magic eDeveloper V9 Plus

SQL に関する考慮事項

25

SQL データベースを使用して作業する際に Magic の環境を定義するには、フラグの定義
方法と MAGIC.INI ファイルの設定を理解しておく必要があります。
本章では、次の内容について説明します。
• Magic 動作環境の構成と定義• Magic ゲートウェイの命名規則• 構成とパフォーマンス• SQL ゲートウェイでサポートされるパラメータ• Oracle データベースゲートウェイ• MS-SQL Server データベースゲートウェイ• DB2 UDB データベースゲートウェイ• ODBC データベースゲートウェイ• ODBC チェックドライバユーティリティ

リファレンス
Magic eDeveloper V9 Plus

961

第 25 章 - SQL に関する考慮事項

Magic 動作環境の構成と定義
SQL データベースの Magic データベースゲートウェイは、Magic クライアントと、DBMSのクライアント／サーバのインストール、及び構成を行う必要があります。Magic では、
DBMS の番号を含む項目を MAGIC.INI に定義して、それぞれのゲートウェイをロードする必要があります。DB の番号は、実行可能なゲートウェイごとに決められています。

Windows オペレーティングシステム
Windows プラットフォームでは、MGDBnn は、MAGIC.INI ファイルの［MAGIC_GATEWAYS］セクションの関連する DLL にアクセスするように設定します。
たとえば、Oracle は、DBMS セクションの番号は 13 なので、次のように指定します。
MGDB13= mgora8.dll
Magic クライアント / サーバを使用している場合は、MGDB13 は mdora8.dll を参照します。Windows における MAGIC. INI ファイルのゲートウェイセクションの例は次のとおりです。
［MAGIC_GATEWAYS］
MGDB00=mgpv2k.dll
MGDB13=mgora8.dll;MGDB16=mgeac32.dll;MGDB18=mgdb2.dll;MGDB19=mgodbc.dll
MGDB20=mgms7.dll
MGDB21=mgmemory.dll

UNIX 系オペレーティングシステム
UNIX 系オペレーティングシステムでは、環境変数によって、特定のゲートウェイに使用される実行プログラムのファイル名を指定します。
たとえば、次のとおりです。
MAGIC_DB_14_DRIVER=$MAGIC_HOME/bin/mgoracle8
この場合、14 は、DB 番号＋ 1 を表します。

Magic ゲートウェイの命名規則
ゲートウェイは、オペレーティングシステムごとに異なります。したがって、ファイル名の構成は、オペレーティングシステムごとに異なります。
Windows オペレーティングシステムでは、構成は MGyyyy.dll になります。yyyy は Ora8や ODBC などの特定の RDBMS を表します。
UNIX 系オペレーティングシステムでは、MGyyyy です。yyyy は、Oracle 8 などの特定のRDBMS を表します。

ゲートウェイ名の構成［ヘルプ］の［Magic 情報］に表示される Magic ゲートウェイのバージョン情報の構成は、次のとおりです。
• 最初の文字列には、名前とバージョンが表示されます。
• 次の文字列には、Version という単語が表示されます。

962

リファレンス
Magic eDeveloper V9 Plus

Magic ゲートウェイの命名規則• 3 番めの文字列には、Magic のバージョン番号が表示され、その後に「-」が続きます。
• 4 番めの文字列には、ソース ID が X.Y の形式で表示されます。「X」は 9 や 8 などの
メジャーソースバージョン、「Y」はマイナーソースバージョン、つまりソースが変更
されるたびに変わる実行番号を表します。
• 最後の文字列には、ゲートウェイが作成された日付が表示されます。
たとえば、次のようになります。
Oracle 8 Version 9.00 - 9.1 08-Jan-2001
Oracle 8 は RDBMS の名前とバージョンを表し、その後に Version、Magic のバー
ジョン番号 9.00、ソース ID9.1、ゲートウェイの作成日 08-Jan-2001 が続きます。

Magic の API の実装とバージョン
Magic は、コンパイルやリンクの段階がないダイナミックなツールです。Magic プログラ
ムは、必要な処理コマンドをタスクの処理テーブルなどに定義するだけですぐに実行できます。Magic で定義されているデータビューもダイナミックなので、プログラム間やアプリケーション間で変更が可能です。Magic のデータビューは柔軟で、様々な形で利用できます。
この柔軟性に単一の規則に基づいたエンジンを提供するために、Magic では、ダイナミッ
ク SQL を使用して、Magic プログラムに必要な SQL データビューを構築します。SQL
テーブルを使用する Magic の各タスクによって、適切な SQL 文が発行され、必要なデー
タビューが指定されます。その後、SQL 文が Magic データベースゲートウェイ によって準備されます。この準備段階で、DBMS オプティマイザによって SQL 文の分析と処理の準備が行われます。
3GL や 4GL は、コンパイルによって実行時の SQL 文の解析と最適化を行わなくてもす
むように埋め込み SQL を使用しますが、Magic ではコンパイルは使用しません。そのため、準備段階で繰り返し呼び出されるタスクを実行することによって、余分なオーバーヘッドが生じることがありますが、この場合、常駐タスクを利用すると、SQL 文を１度だけ準備して解放しません。タスクが繰り返し呼び出される場合、新しい SQL 文を準備する代わりに、既存の SQL 文が使用されます。こうすれば、Magic のダイナミック SQL
は、埋め込み SQL を使用したプログラムと同等のパフォーマンスになります。

OracleOracle データベースゲートウェイは、OCI（Oracle Call Interface）インタフェースを使用
して、最大の処理能力とパフォーマンスを実現するように記述されています。このゲー
トウェイは、Oracle8 以降で動作するように設計されています。

MS-SQL Server
MS-SQL Server データベースゲートウェイは、OLE-DB（Object Link Embedding DB）イン
タフェースを使用して記述されています。最大限のパフォーマンスを得るために、クライアントのカーソルとコマンドが使用されます。このゲートウェイは、Microsoft SQL
Server7 以降で動作するように設計されています。

ODBCODBC データベースゲートウェイは、ODBC 2.00 API を使用して記述されています。このゲートウェイは、ODBC ドライバの Ver2 以降で動作するように設計されています。

リファレンス
Magic eDeveloper V9 Plus

963

第 25 章 - SQL に関する考慮事項

DB2 UDB
DB2 UDB データベースゲートウェイは、DB2 UDB の Call Level Interface() プロシージャ
を使用して記述されています。このゲートウェイは、DB2 UDB Ver7.2 以降で動作するように設計されています。

Pervasive.SQL
Pervasive.SQL 2000/V8 の ISAM エンジンには Pervasive.SQL 2000 ゲートウェイ、SQL エ
ンジンには ODBC ゲートウェイを使うことで、両方のインタフェースをサポートします。

データ定義規則
特性

Oracle8MS-SQL
Server7

DB2 UDB

オブジェクト名（ユーザ、カラム、テーブ
ル、ビュー、インデックス）の最大長

30

128

18*2

char / binary の最大長

2000

8000

254

varchar / varchar2 の最大長

4000

8000

4000

テーブル、ビューの最大カラム

1000

1024

500

行の最大長（行の長さ）

32511

8060

4005

インデックスの最大長

255

900

255

各 BLOB フィールドの最大サイズ

2GB

2GB

インデックスの最大セグメント数

3216

サポートされるメモ型フィールドの最大数

1 *1

16

• *1:Magic の Table Checker は、Oracle の LONG と LONG RAW、および Magic のメモ型
フィールドを区別することができません。このようなタイプのフィールドが複数ある
場合は、次のエラーメッセージが表示されます。メモ項目は 1 個しか使用できません。
• *2:DB2 UDB のオブジェクト名の最大長は、オブジェクトによって異なります。
•

スキーマ、列…… 30 バイト•

表、ビュー、シノニム、ストアドプロシジャ…… 128 バイト

構成とパフォーマンス
Magic と SQL の動作方法を理解できたら、次に Magic と SQL の効率的な動作方法について説明します。次では、Magic & SQL のパフォーマンスを最適にするため、様々なコン
セプトとテクニックについて説明します。

トランザクション
トランザクションは、1 つ以上の SQL 文で構成されます。トランザクションを構成する
SQL 文は、通常は相互に密接に関連していますが、実際には独立したアクションであり、論理的な作業単位と考えられます。

964

トランザクション内の SQL ステートメントは、それぞれ、そのトランザクションのタス
クの一部を担当し、こういった SQL ステートメントが集まって単一のトランザクションが成り立ちます。単一のトランザクションは、このように独立した論理単位としてまとめられているため、DBMS 側で１度に実行されます。つまり、DBMS 側から見ると、トランザクションを構成する SQL ステートメントは、その処理の流れが一貫していることが必要になります。
リファレンス
Magic eDeveloper V9 Plus

構成とパフォーマンス
アプリケーションでデータベース内の複数のテーブルを更新する場合、トランザクショ
ンによってデータベースの整合性が確保されるようにします。

トランザクションのメカニズム
トランザクションが正常に完了しなかった場合、データは、ROLLBACK 文によってトラ
ンザクションの開始前の状態に戻されます。正常に完了した場合は、データは、COMMIT
文によってデータベースに永久に保存されます。
SQL およびリレーショナルデータベースアーキテクチャでは、それぞれの更新は１度に1 つのテーブルでしか行うことができません。このため 2 つの更新文は同時に実行されなければなりません。両方の更新文が成功して COMMIT するか、または失敗してROLLBACK するかのどちらかです。
1 つのトランザクションでは、一連の更新は、共に COMMIT するか、または ROLLBACK
するかのどちらかです。まず、トランザクションが宣言され、その後、トランザクショ
ンの宣言以降に発行されたすべての文に対して COMMIT または ROLLBACK SQL 文が発行されます。

ロック
Magic Ver.9 には、物理および遅延トランザクションモードの概念が導入されています。
両方のモードでの Magic SQL ゲートウェイのデフォルトの動作は次のとおりです。
• 物理トランザクションモード……ODBC を除く SQL ゲートウェイでは、デフォルトのロック方式として物理ロックが使用されます。
ODBC では、トランザクションモードに関係なく、常に論理ロックが使用されます。
• 遅延トランザクションモード……すべての SQL ゲートウェイで、ロック方式として論理ロックが使用されます。
レコードは、データの整合性を確保し、各ユーザに共通のビューを提供するためにロッ
クされ、一方では最大の同時実行性を実現します。ロックすることにより、ユーザが参照したり修正したりしているときに、レコードが変更されることを回避できます。ロッ
クは、ほかのユーザがレコードを読み取ることさえできないように排他的にすることも、修正することはできなくても、ほかのユーザがレコードを読み取ることができるように共有にすることもできます。
トランザクションとロックは、RDBMS で密接に関連しています。SQL データベースはマルチユーザ環境で実行されるので、無計画なロックによって、ユーザのアプリケーショ
ンへのアクセスが極端に制限されてしまうことがあります。すべての RDBMS では、さまざまなロックのレベルを設定できます。
ISAM では、更新の際にレコードがロックされ、更新が完了するとすぐに解放されます。
RDBMS では、トランザクションの開始時には必ずロックが行われ、COMMIT またはROLLBACK 処理コマンドによってのみ解放されます。

ロックレベル
通常の操作時には、RDBMS によってビュー構造がロックされます。暗黙的なロックは自動的に行われ、ユーザによる介入なしにデータが保護されます。デフォルトのロックを上書きすることを、明示的なロックといいます。
暗黙的なロックは、SQL 文が実行されると自動的に行われます。たとえば、INSERT、UPDATE、DELETE などの文によって暗黙的なロックが行われ、トランザクション時にデータの一貫性と整合性が保たれます。
Oracle などの RDBMS では、レコードレベルでロックを設定することができます。ページレベルのロックしか設定することができない RDBMS では、同じページに属するほかのレコードもロックされてしまいます。

リファレンス
Magic eDeveloper V9 Plus

965

第 25 章 - SQL に関する考慮事項

テーブルロックへのエスカレート
一部のデータベースシステムでは、あるレベルで多数のロックが行われると、RDBMS に
よって、これらのロックがテーブルロックなどのより高いレベルのロックに自動的に変更されるので、ロックのエスカレーションが起こります。この場合、ロックの数は減少
しますが、ロックの範囲は広くなります。

強制的なロック
明示的なロックは、暗黙的なロックと同じレベルで設定することができます。レコードを更新する場合、暗黙的な排他ロックがレコードレベルで設定されます。
Oracle で以下の文
select * from table where ... for update
または MS-SQL Server でselect * from table （UPDLOCK NOWAIT） where …
という文が開始されると、明示的な共有ロックがレコードレベルまたはページレベルで設定されるので、ロックが解放されるまでレコードを更新することができません。

ロックの期間データロックは、トランザクションの有効期間中のある時点で設定され、COMMIT または ROLLBACK コマンドが開始されるまで実行されません。ロックは、トランザクショ
ン中は解放されません。

例:
begin transaction;
update table set fld1= 1 where fld2= 2
update table set fld1= 3 where fld2= 4
両方のレコードが排他ロックによってロックされます。
commit;両方のレコードが解放されます。

ロックとトランザクション処理
ロックとトランザクション処理は、マルチユーザ環境では非常に重要です。最大限の同時実行性を得るには、オンライントランザクションを短くし、ユーザ処理に影響を与えないようにすることが大切です。
トランザクションは、プログラムレベルまたはシステムレベルで設定可能な Magic タス
クのパラメータ設定に基づいて開きます。トランザクションを開き、ロックを強制する
方法に影響を及ぼすパラメータには、次のようなものがあります。
• マルチユーザおよび ISAM トランザクションに関するパラメータ。
［設定／動作環境］のマルチユーザタブで、［マルチユーザアクセス］と［ISAM トランザクション］の両方を「Yes」に設定する必要があります。
「Yes」に設定しないとトランザクションは発行されません。
• テーブルのロックに関するデータベース設定。
• データベーステーブルのアクセスと共有モード。
• ［タスク特性］ダイアログで指定されるタスクタイプ。オンライン、バッチ、ブラウザのいずれか。
• ［タスク特性］ダイアログで指定されるロック方式。
• ［タスク特性］ダイアログで指定されるトランザクションモード。
• ［タスク特性］ダイアログで指定されるトランザクション開始。

966

リファレンス
Magic eDeveloper V9 Plus

構成とパフォーマンス
• タスクコール、またはプログラムコール処理コマンドで指定される、コール特性のロックパラメータ。

マルチユーザフラグ
実行モード環境では、Magic のロックを実行する場合、基になっているデータベース内部でもロックを実行するかどうかを［動作環境］の［マルチユーザアクセス］欄によって指定することができます。
［マルチユーザアクセス］欄を「Yes」に設定すると、必要な SET TRANSACTION コマン
ドが DBMS にも送信され、実行中のほかのアプリケーションとのデータの整合性が確保されます。
［マルチユーザアクセス］欄を「No」に設定した場合は、複数の Magic ユーザがアプリ
ケーションを同時に使用することはできません。したがって、Magic でロックが実行されないので、ゲートウェイで物理ロックも論理ロックも実行されません（つまり、SELECT... FOR UPDATE 文はありません）。ただし、ほかの DB ユーザは、DBMS ツールを使用
して、直接データを変更できます。
［Magic ロック］パラメータを「No」に設定すると、共有モード（次のトピックを参照）
を実行する Magic 独自のロックメカニズムが使用されません。

テーブルのアクセスモードと共有モード
Magic では、タスクの［DB テーブル］テーブル（Ctrl ＋ D）で指定したアクセスモードと共有モードの両方を使用してテーブルを開きます。テーブルを開くと、データベース
からのテーブル構造の取得やテーブルの有無の確認などの内部タスクが実行されます。
Magic ロックが使用されている場合、関連する情報が mglock ファイルに書き込まれます。
RDBMS を使用している場合は、Open File コマンドも Open Table コマンドもありません。
したがって、アクセスモードおよび共有モードは、ほとんど意味がありません。ただし、以下の場合は例外です。
• 共有モードが「N= なし」の場合、SQL ゲートウェイによって、SQL データベースに［LOCK TABLE］コマンドが送信されます。これは、Oracle でのみ行われます。
• アクセスモードが「R= 読込」、共有モードが「W= 書出」で、テーブルがリンクテーブ
ルの場合、ロックが要求されても、リンクテーブルのレコードはロックされません。
• アクセスモードが「W= 書込」の場合は、リンクテーブルも更新されると想定し、リンクテーブルに対してもロックが発行されます。

排他ロックと共有ロック
SQL のロックには、主に 2 つのレベルがあります。
• 排他的ロック……UPDATE 文が発行されると、自動的に生成されます。
• 共有ロック……SELECT 文によって発行されるか、または SELECT 文の終わりに FOR
UPDATE 句を追加することによって発行されます。共有ロックは、予定されているレ
コードの更新を、このロックが解放されてから実行するように SQL サーバに指示します。レコードを更新しようとしたり、SELECT ... FOR UPDATE 文を送信しようとした
りするユーザには、レコードがほかのユーザによってロックされているというエラー
メッセージが表示されます。

リファレンス
Magic eDeveloper V9 Plus

967

第 25 章 - SQL に関する考慮事項

物理ロック
SELECT ...FOR UPDATE 文は、Oracle、MS-SQL Server 7、DB2 UDB で使用できます。これらの RDBMS では、行レベルのロックがサポートされています。したがって、選択したロック方式に基づいてロックが要求されると、Magic は、ゲートウェイにロックを使用して再びレコードを読み取るように指示します。トランザクションが開始されていな
い場合は、ゲートウェイによって開始されます。その後、ゲートウェイは、FOR UPDATE
句を使用して現在のレコードを読み取ります。MS-SQL Server 7 の場合は、UPDLOCK ヒ
ントを使用します。
上記のプロシージャによって、Magic 以外のアプリケーションを含むどのアプリケーショ
ンでも、トランザクションが完了するまでレコードを更新することはできません。通常
は、更新が行われた後、トランザクションが行われます。

例:
現在のレコードを取得します。
SELECT empnum, ename, deptno, rowid
FROM emp
WHERE empnum= 1
Returned values:1 , John, 30, 1111
ロックを要求します。
SELECT empnum, ename, deptno, rowid
FROM emp
WHERE empnum= 1111
FOR UPDATE NO WAIT
Returned values:1 , John, 30, 1111
deptno が 40 に変更されたとします。
UPDATE emp SET deptno= 40
WHERE rowid= 1111
バッチタスクでは、［即時］ロック方式が使用されている場合、ゲートウェイは、前もってデータビュー全体をロックすることができます。
Oracle では、SELECT 文に FOR UPDATE 句および ORDER BY 句を追加して発行することができます。したがって、カーソルがタスクの最初に定義されている場合、FOR
UPDATE 句を使用して宣言されます。その後、このカーソルからすべてのレコードが取得されます。
DB2 UDB は、Oracle のようにプロシージャは使用できません。その代わりに、カーソルがオープンし、各レコードに対して FOR UPDATE 句と一緒に他のカーソルがオープンさ
れます。

論理ロック
MS-SQL Server 7 では、論理ロックと物理ロックの両方がサポートされています。論理ロックを使用するには、［データベース特性］ダイアログの［データベース情報］欄で「SQL_PHYSICAL_LOCKING=N」というフラグを指定する必要があります。
ODBC ではページレベルのロックのみがサポートされていますが、ページレベルのロッ
クはロックの問題を引き起こす可能性があります。したがって、実際にはレコードがロッ
クされない論理ロック方式が使用されます。この場合、整合性を保つために、レコードが論理的にロックされたときから更新まで、レコードが変更されないことが保証されます。
ロックが要求され、Magic がゲートウェイにロックを使用してレコードを読み取るように指示すると、ゲートウェイはレコードを読み取り、読み取ったレコードの値を保持し
ます。

968

リファレンス
Magic eDeveloper V9 Plus

構成とパフォーマンス
その後、UPDATE 文がレコード後処理で発行されると、すべてのカラム、Magic で呼び出されたフィールドが WHERE 句に追加されます。
その間、ロックされていないレコードが別のユーザによって変更された場合、ゲートウェ
イによって、レコードが別のユーザによって変更されたというメッセージが送信され、UPDATE は失敗します。

例:
現在のレコードを取得します。
SELECT empnum, ename, deptno
FROM emp
WHERE empnum= 1
values:1 , John, 30
ロックを要求します。
SELECT empnum, ename, deptno
FROM emp
WHERE empnum= 1
values:1 , John, 30
deptno が 40 に変更されたとします。
UPDATE emp SET deptno= 40
WHERE
empnum= 1 AND ename= John' AND deptno= 30
ODBC ゲートウェイは、アクセスしたテーブルでレコードロックまたは FOR UPDATE 文が使用できることが想定できないため、論理ロック動作を使用します。

NULL 値
NULL は、データが存在しない場合や認識不可能な場合を表します。すべての SQL デー
タベースで NULL 値がサポートされます。NULL 値を持つフィールドは、ISAM ファイ
ルの空白フィールドとは異なります。NULL は、値が不明であることを意味し、特別な処理が必要です。数値カラムで計算を行う場合、1 つ以上の値が NULL であれば、計算結果も NULL になります。文字型フィールドで NULL 値を使用できる場合、空白フィー
ルドのすべてのレコードを選択しても、文字型フィールドに NULL 値を持つレコードは選択されません。
NULL 値は、インデックス検索には含まれません。NULL 値が許可されているカラムにはインデックスを定義しないよう強くお勧めします。
たとえば、
SELECT *FROM Table1
WHERE Fld1>=4 or Fld1<4という SELECT 文によって、Fld1 が NULL であるレコードを除く、Table1 のすべてのレ
コードが返ります。
NULL は、データベースごとに異なる順序で表示されます。たとえば、Oracle と MS-SQL
Server で次の SELECT 文を実行すると、それぞれ異なる順序のレコードを受け取ります。
SELECT *FROM Table1
Order by Fld1 ASC
Oracle では、NULL は、最も高い値としてデータベースに保存されるので、カラム Fld1に NULL 値を持つレコードは、この SELECT 文の最後のレコードとして表示されます。
リファレンス
Magic eDeveloper V9 Plus

969

第 25 章 - SQL に関する考慮事項
一方、MS-SQL Server では最も低い値としてデータベースに保存されるので、カラム Fld1に NULL 値を持つレコードは、この SELECT 文の最初のレコードとして表示されます。

インデックスの定義と使用応答時間を短縮するには、ほとんどのデータ取得で RDBMS インデックスを使用します。
通常、RDBMS がインデックスのうちの 1 つを使用するのは、SQL 文がそのインデック
スの 1 つ以上の最初のセグメントに WHERE 句を持っており、要求されたレコードの順
序がそのインデックスと一致している場合です。
以下の例は、SQL 文が使用するインデックスと、どのような場合にそのインデックスを使用するかを示します。これらの例では、TBL1 のフィールド F1、F3、F5 にインデック
ス IN1 があり、F3、F4、F5 には別のインデックス IN2 があるとします。
最初のキーを使用し、FROM と TO に同じ式を使用して F1 の範囲を指定し、2 つの異なる式を使用して F3 の範囲を指定する場合、次の文が発行されます。

例:
SELECT F1, F2, F3, F4, F5FROM TBL1
WHERE F1= 1
AND F3= 100
AND F3= 200
ORDER BY F1, F3, F5
インデックス IN1 は、F1 と F3 の範囲に使用されます。順序は、インデックスを使用して自動的に決まります。
最初のキーを使用し、FROM と TO に同じ式を使用して F1 の範囲を指定し、2 つの異なる式を使用して F2 の範囲を指定する場合、次の文が発行されます。

例:
SELECT F1, F2, F3, F4, F5FROM TBL1
WHERE F1= 1
AND F2<= 'x'
AND F2>= 'c'
ORDER BY F1, F3, F5
インデックス IN1 は、F1 の範囲に使用されます。RDBMS によって、F1= 1 のすべてのレ
コードが検索されます。そのうち、F2 が c から x のレコードのみが結果テーブルに抽出されます。順序は、インデックスを使用して自動的に決まります。
最初のキーを使用し、FROM と TO に異なる式を使用して「F1」の範囲を指定し、2 つの異なる式を使用して F3 の範囲を指定する場合、次の文が発行されます。

例:
SELECT F1, F2, F3, F4, F5FROM tbl1
WHERE F1>= 1
AND F1 <= 10
AND F3>= 100
AND F3<= 200
ORDER BY F1, F3, F5970

リファレンス
Magic eDeveloper V9 Plus

構成とパフォーマンス
インデックス IN1 は、F1 の範囲に使用されます。RDBMS によって、F1 が 1 から 10 のすべてのレコードが検索され、F3 の範囲と比較されます。F3 の範囲には、インデックスが使用されません。前のセグメントの範囲が単一の値でないためです。順序は、インデックスを使用して使用して自動的に決まります。
1 つの式を使用して F1 の範囲を指定し、2 つの異なる式を使用して F3 の範囲を指定し、2 番めのキーを使用する場合、次の文が発行されます。

例:
SELECT F1, F2, F3, F4, F5FROM TBL1
WHERE F1= 1
AND F3>= 100
AND F3<= 200
ORDER BY F3, F4, F5
インデックス IN1 は、F1 と F3 の範囲に使用されます。RDBMS は、結果テーブルをソートすることでクエリ結果を並べます。2 番めのインデックスを使用して、要求された順序を提供することはできません。最初のインデックスが範囲に使用されるからです。ソートを使用すると、結果テーブルのみがソートされるので、比較的高速です。結果テーブ
ルがほとんどの場合、小さいためです。
インデックスは、データベースのスペースを消費し、データベースでレコードの挿
入、更新、削除を行う際に時間がかかります。極端な場合、インデックスによって
SELECT 文のパフォーマンスが低下することがあります。たとえば、テーブルのデータがディスク容量の 1 ブロック以下の場合（通常のテーブルには、数千のレコー
ドがあります）、SELECT 文は十分に動作しません。インデックスを使用してテーブ
ルにアクセスする場合、RDBMS は、実際には、インデックスの入出力とデータの入出力という 2 つの入出力を実行します。1 つの入出力でメモリに読み込まれた 1 つのブロックで全テーブルのスキャンを実行すると、速くなります。メモリアクセスは常にディスクの入出力より速いためです。クエリで選択されたすべてのカラムがイン
デックス内にある場合、RDBMS はインデックスのみにアクセスし、データにはアクセスしません。これは、カバーインデックスクエリと呼ばれます。
しかし、ほとんどの場合、インデックスによってアプリケーションのスピードは向上
します。

範囲の定義
リレーショナルデータベースで大きいテーブルを参照する場合、範囲を使用して、ビュー
内のレコード数を減らすことが重要です。範囲を使用しないでテーブルにアクセスすると、操作に長時間を要することがあります。特に位置付けやページアップなどの操作には時間がかかります。パフォーマンスを向上させるには、範囲は 1 つのインデックスのセグメントに指定します。
Magic では、以下の 4 つの箇所から範囲を指定することができます。
• Magic のセレクト処理コマンド……Magic のセレクト処理コマンドで指定したすべての範囲は、SELECT 文の一部になります。その後、一連の検索中であっても、範囲は
RDBMS および WHERE 句によって処理されます。Magic は、クエリに一致したレコー
ドのみを受け取ります。
• タスクレベルの範囲式……タスクレベルの範囲式を使用すると、Magic によって、デー
タベースから返された各レコードが式と比較され、レコードをビューの一部とするかどうかが決定されます。Magic はすべてのレコードを受け取り、フィルタリングを実行します。
• DB SQL 範囲……データベースにそのまま送信される WHERE 句に連結されるフリーテキスト。これは、物理トランザクションモードのタスクでのみ実行されます。固有のデータベース構文を理解している必要があります。

リファレンス
Magic eDeveloper V9 Plus

971

第 25 章 - SQL に関する考慮事項• Magic SQL 範囲……データベースごとに適切な構文に変換される Magic の式。これは、データベースに送信される WHERE 句に追加されます。固有のデータベース構文を理解していなくてもかまいません。
これら 4 つのオプションの動作は、まったく異なります。できるだけデータベースに送信できる箇所で、範囲を設定することをお勧めします。タスクレベルの範囲では、他で指定できない範囲条件のみ設定してください。
範囲の詳細については、第 6 章「プログラム」の「範囲と位置付ダイアログ」を参照
してください。

ソート
Magic の内部ソートは、パフォーマンスに大きく影響します。そのためデータのソート
は RDBMS に指示し、その順序で Magic にレコードを取り込むことが、最善の方法です。
これは、RDBMS のソート機能を使用して行われます。
範囲の詳細については、第 6 章「プログラム」の「ソートテーブル」を参照してくだ
さい。

ストアドプロシージャ
ストアドプロシージャは、アプリケーションロジックの一部をサーバで実行するための強力な方法です。ストアドプロシージャは、SQL コマンドタスクを使用して、Magic から呼び出すことができます。
ストアドプロシージャの構文はデータベースによって異なります。したがって、この機能を使用するか、アプリケーションの移植性を優先するかを選択しなければなりません。
詳細については、第 6 章「プログラム」の「埋め込み SQL」を参照してください。

ネットワークトラフィックを軽減する
ネットワークトラフィックの軽減は、パフォーマンスを向上させるための最善の方法です。ネットワークトラフィックを軽減するには、以下のガイドラインに従います。
• 実際に必要なフィールドのみをレコードから選択します。選択したフィールドのみがデータベースから取得されます。
• タスクの範囲ではなく、データベースに送信できる範囲を使用します。
• ［照会リンク］コマンドではなく、［結合／外部結合リンク］コマンドを使用します。
• 可能な場合、リンクではなく RDBMS が提供するビューの機能を使用します。
テーブルを結合する場合、単純なテーブルの代わりに RDBMS ビューを使用すると、パフォーマンスが向上します。Magic の［リンク］コマンドは、リンクテーブルごとに異なる SELECT 文をデータベースに発行することで実行されます。バッチタスクをより効
果的に実行するには、メインテーブルとリンクテーブルを結合するビューを使用するか、または［照会リンク］コマンドの代わりに［結合／外部結合リンク］コマンドを使用します。これにより、データベースによって結合が実行されます。
Magic と RDBMS では、ビューという用語の意味が異なります。
• Magic では、ビューとは、メインテーブルから選択された項目とリンクテーブルから選択された項目、およびこれらの実項目の計算用に使用する変数項目を意味します。

972

リファレンス
Magic eDeveloper V9 Plus

構成とパフォーマンス• SQL データベースでは、ビューとは、内部のデータディクショナリに保存され、テーブルとして使用されるために事前に定義された SELECT 文を指します。ビュー定義では、複数のテーブルの結合、グループ関数の使用、およびテーブル内のレコードの一部を選択するための WHERE 句の使用などが可能です。

例:
10,000 のレコードがあるメインテーブルと 3 つのリンクテーブルを使用するタスクがあるとします。通常の方法（［照会リンク］コマンド）で処理すると、タスクで開いた
SELECT カーソル数は次のようになります。1 + 3* 10,000 = 30,001［結合／外部結合リンク］コマンドを［照会リンク］コマンドの代わりに使用する場合、そのタスクで実行する SELECT 文の数は 1 になります。
データベースで DB ビューを定義した場合は、タスクによって実行される SELECT 文の数は 1 になります。
ビューの更新は、データベースの制限によって実行できないこともあります。

照会モード位置付け
照会モード位置付けを使用すると、文字を入力するたびに、タスクのすべての SELECT
文が再発行されます。アプリケーションの中では、照会モード位置付けを使用しないよ
うお勧めします。
詳細については、第 7 章「処理コマンド」の「項目更新」を参照してください。

SQL コマンドSQL コマンドは、通常の Magic のプログラミングでは使用されない RDBMS 機能を使用することで、パフォーマンスを向上させます。
テーブルの行に対するグローバルな更新やテーブルの行のグローバルな削除がよい例です。クライアント／サーバ環境で作業している場合、過剰なネットワークトラフィックを防ぐには、グローバルな文を使用することが特に重要です。
別の例として、SUM、MAX、AVG などのグループ関数の使用があります。レコードをカウントする場合、SQL コマンドタスクで SELECT COUNT（*）を使用すると、カウントするためだけにレコードを読み込むよりも効率的です。

リファレンス
Magic eDeveloper V9 Plus973

第 25 章 - SQL に関する考慮事項

SQL ゲートウェイでサポートされるパラメータ
レベル

パラメータ

タイプ

デフォルト

適用可能な
ゲートウェイ

DBMS

ログレベル

なし / 開発者
用 / サポート
用 / ユーザ用

なし

すべて

ログ名

文字型 255

N/A

すべて

同期設定

Yes/NoNo

すべてプランの表示Yes/NoNo

MS-SQL Server
DB2 UDB

数値型

3MS-SQL Server

分離レベル

数値型

0

MS-SQL Server

1

DB2 UDB

テーブルの存在チェック

Yes/NoNo

すべてテーブルの存在チェック

Yes/No

No

すべて

ヒント

文字型 255

N/A

Oracle

数値型

0Oracle

最大接続数

データベースMS-SQL Server
配列のサイズMS-SQL Server
DB2 UDB

テーブル

接続文字列

文字型 255

N/A

Oracle

オーナー名

文字型

N/A

すべて

位置

デフォルト /
重複不可インデックス /
RowID

デフォルト

すべて

インデックス

重複不可イン
デックス番号なし

すべて

テーブルの存在チェック

Yes/No/ デー
タベース依存

データベース依存

すべてテーブルのタイプ

テーブル /
ビュー

テーブル

すべて

ヒント

Yes/NoYes

Oracle

文字型 255

N/A

OracleMS-SQL Server
ヒント

MS-SQL Server
カーソル

デフォルト /
Yes/No

デフォルト

MS-SQL Server

配列のサイズ数値型 4N/A

OracleMS-SQL Server
DB2 UDB974

リファレンス
Magic eDeveloper V9 Plus

SQL ゲートウェイでサポートされるパラメータ
レベル

パラメータ

タイプ

デフォルト

適用可能な
ゲートウェイインデックス

クラスタ化

Yes/NoNo

MS-SQL Server

ヒント

文字型 255

N/A

OracleMS-SQL Server

カラム

再作成

Yes/No

No

すべて

オーナー名

文字型 255

N/A

N/A

タイプ

文字型 255

N/A

すべて

ユーザタイプ文字型 255

N/A

MS-SQL Server
DB2 UDB

リファレンス
Magic eDeveloper V9 Plus975

第 25 章 - SQL に関する考慮事項

Oracle データベースゲートウェイ
Magic のデータタイプ
Magic の型とサポートされる保存タイプ、および Oracle で有効なデータタイプの詳細については、以下のテーブルに示します。表内の各項目には、［カラム特性］ダイアログの［SQL］タブのタイプ特性で指定されるデフォルトのデータタイプが含まれています。
n は、指定された書式番号です。

Magic の Magic の記憶型式
型
文字型

数値型

Magic の書式

Magic の
保存サイズ

Oracle のデータタイプn、1-4000n、1-4000

RAWn、4001-32700

n、4001-32700

RAW

Lstringn、1-255

n+1、2-256

RAW

Zstringn、1-4000

n+1、2-4001

VARCHAR2n、4001-32700

n+1、4002-32701

LONG

n、1-4

2

NUMBERn、5-9

4

NUMBERn、1-2

1

NUMBERn、3-4

2

NUMBERn、5-9

4

NUMBERn、1-7

4

NUMBERn、8-16

8

NUMBER

n、1-7

4

RAW

n、8-16

8

RAW

n、1-7

4

RAW

n、8-168

RAW

Packed Decimaln、1-102*n-1RAWNumeric

n、1-18nRAW

Character Number

n、1-18n-1

RAWString Number

n、1-19 1

n+1

NUMBER

Magic Number

n、1-18n/2+1

RAWC-Isam Decimaln、1-32n/2+1

RAWStringSigned Integer
Unsigned Integer

Float
Float MS-Basic
Float Decimal976

リファレンス
Magic eDeveloper V9 Plus

Oracle データベースゲートウェイ
Magic の Magic の記憶型式
型
論理型
日付型

時刻型

メモ型

BLOB

Magic の書式

Magic の
保存サイズ

Oracle のデータタイプInteger Logical

5

1

NUMBER

String Logical

5

1

RAW

String Date####/##/##

8

DATE 1

Integer Date####/##/##

4

NUMBER

Integer Date 1901####/##/##

4

NUMBERYYMMDD Date####/##/##

4

RAW

Magic Date####/##/##

4

RAW

Magic Date 1901####/##/##

4

RAW

String Time

HH:MM:SS

6

CHAR

Integer Time

HH:MM:SS

4

NUMBER

HMSH Time

HH:MM:SS

4

NUMBER

Magic Time

HH:MM:SS

4

RAW

String Memon、1-1998

n+2

RAWString Memon、1999 以上

n+2

LONG RAW

Magic Memon、1-1998

n+2

RAW

Magic Memon、1999 以上

n+2

LONG RAW

12（デフォルト）LONG RAW

Binary Large Object

1……Magic の String Date を Oracle の CHAR にマップするには、［カラム特性］の［SQL］でタイプ
として CHAR（8）を指定します。

リファレンス
Magic eDeveloper V9 Plus

977

第 25 章 - SQL に関する考慮事項

Oracle のデータタイプ
次の表は、Oracle テーブルに対する Magic の［定義取得］の結果、Oracle データベースのデータタイプに対応する Magic のデータタイプの一覧です。
Oracle のデータタイプ型

Magic の
保存タイプ

保存サイズ

書式

CHAR（n）
VARCHAR2（n）

文字型

Zstring

n+1、2-4001

n、1-4000LONG 1

文字型

Zstring

デフォルト（1）デフォルト（0）LONG RAW 1

BLOB

Binary Large
Object

デフォルト（12）RAW （n）

文字型

Stringn、1-2000n、1-2000NUMBER

数値型

Float

8

10.3

NUMBER（p、s）

数値型

Float

8

p-s、s

NUMBER （p）

数値型

Float

8

p

2

日付型

String Date8

YYYY/MM/DD

ROWID

文字型

Zstring

19

18

DATE

1

……テーブルの定義を取得したら、LONG および LONG RAW データタイプカラムの書式を、アプ
リケーションに適したサイズに設定する必要があります。
2……デフォルトでは、Oracle の DATE データタイプは、Magic の日付型保存タイプにマップされます。DATE カラムのすべての部分を「YYYY/MM/DD HH:MM:SS.mmm」形式で表示するには、Oracleの DATE データタイプを Magic の文字型にマップする必要があります。これは［DBMS］テーブルの［パラメータ］フィールドで ALPHA_DATE=Y］を指定して実行できます （詳細についてはこの章の「データベース情報」の節を参照してください。

LONG および LONG RAW データタイプ
Oracle テーブルで［定義取得］を実行したら、LONG または LONG RAW データタイプのカラムの適切な書式を入力しなければなりません。デフォルトでは、このカラムを受け取るフィールドの書式は 0 になっていますが、この書式は無効なので、1 から 32000 までの有効な書式を入力する必要があります。

ヒント
ヒント文字列を使用すると、開発者は、チェックなしでそのまま SELECT 文に追加することができるハードコードされた文字列を指定することができます。ヒントの構文は次のとおりです。
/*+ Oracle Hint */最適化ヒントは、特殊な場合にのみ使用するようお勧めします。
Oracle に送信することができる最適化ヒントの完全な一覧については、Oracle のマ
ニュアルを参照してください。

978

リファレンス
Magic eDeveloper V9 Plus

Oracle データベースゲートウェイ

データベース情報［DBMS］パラメータ、［データベース特性］、［テーブル特性］、［カラム特性］、および［インデックス特性］の［SQL データベース情報］パラメータを使用すると、Magic が基になっている DBMS に渡すことができるデータベース依存の情報を指定することができます。このパラメータの使用は任意です。
［データベース情報］パラメータで送信することができる
値については、次のトピックを参照してください。

DBMS パラメータ• SQL_DATETOALPHA=YSQL_DATETOALPHA=Y を設定すると、定義取得の際に RDBMS の DATE 型カラムが、長さ 19 文字、YYYY- MM- DD HH: MM: SS 形式の Magic の文字型（Zstring）カ
ラムに自動的に変換されます。
RDBMS で DATE 型であっても、Magic は文字型として処理するため、日付型としてのデータの検証を行うことはできません。SQL_ DATETOALPHA パラメータを使用する場合、INSERT および UPDATE 操作の妥当性検査をユーザが独自に制御する必要があります。行わない場合には、データベースに無効な日付が挿入される可能性があります。

テーブル特性• TABLESPACE=...
• INITRANS=...
• MAXTRANS=...
• PCTFREE=...
• PCTUSED=...
• CLUSTER=...
• STORAGE=...
Oracle でテーブルを作成している場合、［テーブル特性］ダイアログの［SQL データベー
ス情報］欄で上記のパラメータを指定することができます。

テーブルのロック
テーブルのロックは、Magic トランザクション内でのみ使用可能です。トランザクショ
ン外でロックの要求が発行された場合は、無視されます。
また、共有モードが「N= なし」の場合は［排他モード］のテーブルロックを行い、共有
モードが「R= 読込」の場合は［共有モード］のテーブルロックを行います。

物理ロック
物理ロックは、現在ロックされているレコードをどのユーザも修正できないようにする方法です。つまり、ユーザがレコードをロックしたときから、そのユーザがレコードを解放するまで、別のユーザはそのレコードを修正することができません。物理ロックは、
次のように実行されます。Magic のロック方式に基づいてレコードがロックされると、
SELECT 文が FOR UPDATE 句とともに発行されます。
FOR UPDATE 句によって、トランザクションが完了するまで、ほかのアプリケーション
でそのレコードを変更することができなくなります。

リファレンス
Magic eDeveloper V9 Plus

979

第 25 章 - SQL に関する考慮事項

ビュー
ビューには、仮想の一意インデックスを定義する必要があります。ビューでは INSERT、UPDATE および DELETE 操作を使用することができますが、ビューに ROWID がある場
合のみです。複数のテーブルに定義されているビューには ROWID はありません。したがって、［テーブル特性］ダイアログの［SQL］タブの［位置］欄は、「D= デフォルト」
または「R=ROWID」でなく、「U= 重複不可インデックス」に設定する必要があります。
Magic では、ビューは通常のテーブルと見なされます。Magic を使用して名前の変更
または変換操作は実行できません。このような操作を実行した場合、エラーメッセー
ジが表示され、データベース内のビューの変換や名前の変更は行われません。

一意の識別子Magic で開かれる各テーブルには、一意の行識別子が必要です。Magic では、可能な限り、一意の識別子として Oracle の ROWID が使用されます。データビューが複数の Oracle
データベーステーブルのフィールドから作成されている場合は、Oracle の ROWID がな
いので、一意のインデックスを入力する必要があります。このインデックスは仮想イン
デックスでもかまいません。

ストアドプロシージャ
INOUT または OUT パラメータがないプロシージャは、PL/ SQL ブロックとして呼び出す必要があります。
begin procname （par1 int, par2 int） ; end;
プロシージャに複数のパラメータを使用することができる場合、パラメータをカンマで区切ります。Oracle パラメータが INOUT または OUT でない場合は、APG ボタンを選択してからプロシージャを実行する必要があります。ストアドプロシージャには OUT パラ
メータを入力しないでください。代わりに、プレースホルダとしてカンマを使用します。
プロシージャの終わりに句読点を追加しないでください。

980

リファレンス
Magic eDeveloper V9 Plus

MS-SQL Server データベースゲートウェイ

MS-SQL Server データベースゲートウェイ
Magic のデータタイプ
Magic の型とサポートされる保存タイプ、および MS-SQL Server で有効なデータタイプの詳細については、以下のテーブルに示します。表内の各項目には、［カラム特性］ダイ
アログの［SQL］タブの［タイプ］欄で指定されるデフォルトのデータタイプが含まれています。
n は、指定された書式番号です。

Magic の書式

Magic の保存サイズ

MS-SQL Serverのデータタイプn、1-8000n、1-8000

CHAR

n、8001-32700

n、8001-32700

TEXT

Lstringn、1-255

n+1、2-256

BINARY

Zstringn、1-8000

n+1、2-8001

CHARn、8001-32700

n+1、8002-32701

TEXT

n、1-4

2

SMALLINTn、5-94

INTEGERn、1-2

1

BINARYn、3-4

2

BINARYn、5-9

4

BINARY

n、1-7

4

REAL

n、8-16

8

FLOAT

n、1-7

4

BINARYn、8-16

8

BINARYn、1-7

4

BINARYn、8-16

8

BINARY

Packed Decimaln、1-102*n-1

BINARY

Numeric

n、1-18n

BINARY

Character Number

n、1-18n-1

BINARY

String Number

n、1-19 1

n+1

NUMERIC

Magic Number

n、1-18n/2+1

BINARY

C-Isam Decimaln、1-32n/2+1

BINARY

Magic の Magic の
型
記憶型式
文字型

数値型

StringSigned Integer
Unsigned Integer

Float
Float MS-Basic
Float Decimal

論理型

日付型

リファレンス
Magic eDeveloper V9 Plus

Integer Logical

5

1

BIT

5

2

SMALLINT

String Logical

5

1

BINARY

String Date####/##/##

8

DATETIME 1

Integer Date####/##/##

4

INTEGER

Integer Date 1901####/##/##

4

INTEGERYYMMDD Date####/##/##

4

BINARY

981

第 25 章 - SQL に関する考慮事項
Magic の書式

Magic の保存サイズ

MS-SQL Serverのデータタイプ

Magic Date####/##/##

4

BINARY

Magic Date 1901####/##/##

4

BINARY

Magic の Magic の
型
記憶型式

時刻型

メモ型

BLOB

String Time

HH:MM:SS

6

CHAR

Integer Time

HH:MM:SS

4

INTEGER

HMSH Time

HH:MM:SS

4

BINARY

Magic Time

HH:MM:SS

4

BINARY

String Memon、1-7998

n+2

VARBINARY

String Memon、7999 以上

n+2

IMAGE

Magic Memon、1-7998

n+2

VARBINARY

Magic Memon、7999 以上

n+2

IMAGE

12（デフォルト）IMAGE

Binary Large
Object1……Magic の String Date を MS-SQL Server の CHAR にマップするには、［カラム特性］の［SQL］でタイプとして CHAR（8）を指定します。

982

リファレンス
Magic eDeveloper V9 Plus

MS-SQL Server データベースゲートウェイ

MS-SQL Server のデータタイプ
次の表は、MS-SQL Server テーブルに対する Magic の［定義取得］処理コマンドの結果の一覧です。また、Microsoft SQL Server のデータタイプに対応する Magic のデータタイ
プも示します。
MS-SQL Server のデータタイプ型

Magic の保存タイプ

保存サイズ

書式

CHAR（n）、
VARCHAR（n）

文字型

Zstring

n+1、2-8001

n、1-8000TEXT 1

文字型

Zstring

デフォルト（11） デフォルト （10）1

INTEGER

数値型

Signed Integer

4

10

SMALLINT

数値型

Signed Integer

2

5

TINYINT

数値型

Unsigned Integer

1

3

NUMERIC（p、s）

数値型

Float

8

p-s、s

DECIMAL（p、s）

数値型

Float

8

p-s、s

FLOAT、

数値型

Float

4

5.2

数値型

Float

8

［DBMS 特性］の［浮動小数点］特性に基づく（デフォルト 10,3）

数値型

Float

4

5.2

日付型

String Date8####/##/##

日付型

String Date8####/##/##BINARY（n）、
VARBINARY（n）

文字型

Stringn、1-8000n、1-8000

IMAGE

日付型

Binary Large Object

デフォルト（12）

BIT

論理型

Integer Logical

1

5

文字型

String

8

8

REAL
MONEY

SMALLMONEYDATETIME

2SMALLDATETIMETIMESTAMP

2

1……テーブルの定義を取得したら、TEXT データタイプカラムの書式を、アプリケーションに適したサイズに設定する必要があります。
2……デフォルトでは、MS-SQL Server の DATETIME および SMALLDATETIME データタイプは、Magic の日付型保存タイプにマップされます。DATETIME/SMALLDATETIME カラムのすべての部
分を、「YYYY/MM/DD HH:MM:SS.mmm」（DATETIME）/「YYYY/MM/DD HH:MM」（SMALLDATETIME）形式で表示するには、MS-SQL Server の DATETIME/SMALLDATETIME を
Magic の文字型型にマップする必要があります。これは［データベース特性］ダイアログの［データベース情報］フィールドで SQL_DATETOALPHA=Y］を指定して実行できます （この章の「データベース情報」の節を参照してください）。

TEXT データタイプ
MS-SQL Server テーブルで［定義取得］を実行したら、TEXT データタイプのカラムの適切な書式を入力しなければなりません。デフォルトでは、このカラムを受け取るフィールドの書式は 10 ですが、1 から 32000 までの有効な書式を入力する必要があります。

物理ロック
物理ロックは、現在ロックされているレコードをどのユーザも修正できないようにする方法です。
リファレンス
Magic eDeveloper V9 Plus983

第 25 章 - SQL に関する考慮事項
つまり、ユーザがレコードをロックしたときから、そのユーザがレコードを解放するまで、別のユーザはそのレコードを修正することができません。物理ロックは、次のように実行されます。Magic のロック方式に基づいてレコードがロックされると、SELECT 文が UPDLOCK ヒントとともに発行されます。
UPDLOCK ヒントによって、トランザクションが完了するまで、ほかのアプリケーショ
ンでそのレコードを変更することができなくなります。
また、論理ロックを有効にするにはフラグ「SQL_PHYSICAL_LOCKING=N」を使用します。
詳細については、この章の「データベース情報」を参照してください。

ヒント
ヒント文字列を使用すると、開発者は、チェックなしでそのまま SELECT 文に追加されるハードコードされた文字列を指定することができます。
［インデックス特性］ダイアログで FORCE_ INDEX ヒントを指定すると、そのインデックスのみに適用されます。
［テーブル特性］ダイアログで［ヒント］欄に「FORCE_ INDEX」を指定すると、そのテーブル内のすべてのインデックスに適用され、［データベース特性］ダイアログで FORCE_ INDEX ヒントを指定すると、データベース内のすべてのテー
ブルのすべてのインデックスに適用されます。
［テーブル特性］ダイアログまたは［インデックス特性］ダイアログで FORCE_ INDEX
ヒントを指定した場合、ゲートウェイでオプティマイザが特定のインデックスのイン
デックスまたは特定のテーブル内のすべてのインデックスのインデックスを使用しないようにするには、［テーブル特性］または［インデックス特性］ダイアログで［ヒント］
を「No」に設定します。これにより、最適化ヒントが発行されなくなります。
FORCE_ INDEX ヒントを使用すると、ゲートウェイで次のようにインデックスを強制することができます。
ゲートウェイによって生成された SELECT 文に次の文字列が追加されます。
"（INDEX indname） "Indname は、Magic のそのテーブルのインデックスの名前です。
最適化ヒントは、特殊な場合にのみ使用するようお勧めします。
MS-SQL Server に送信することができる最適化ヒントの完全な一覧については、MSSQL Server のマニュアルを参照してください。

IDENTITY カラム
IDENTITY 特性を持つカラムには、テーブル内の各行を一意に識別するシステム生成の値が含まれています。これを使用して、従業員の ID 番号などの一連の番号が生成されます。IDENTITY カラムがあるテーブルに値を挿入すると、MS-SQL Server によって、最後に使われた IDENTITY 値（行の追加によって増加されます）とカラム作成時に指定された増分値に基づいて次の識別子が自動的に生成されます。
デフォルトでは、IDENTITY カラムにデータを直接挿入することはできません。
IDENTITY カラムは、通常、Magic のテーブルの位置として使用されるように定義される
ので、Magic タスクで選択されなければなりません。つまり、タスクによって発行される INSERT コマンドにこのカラムが含まれることになります。MS-SQL Server ではこのカラムの値を手動で更新することはできないので、データを挿入するとエラーメッセー
ジが表示されます。解決策は、カラムが IDENTITY カラムであるため、Magic の INSERT
コマンドではこのカラムを無視するように Magic に知らせることです。

984

リファレンス
Magic eDeveloper V9 Plus

MS-SQL Server データベースゲートウェイ
これは、Magic MS-SQL Server ゲートウェイに次のように実装されました。
［カラム特性］ダイアログの［SQL タイプ］にキーワード「IDENTITY」を追加することによって、カラムが IDENTITY カラムとして識別されます。これは、Magic のプログラマがテーブルを新規作成しても、定義取得を実行しても機能します。その結果、このカ
ラムを IDENTITY として処理するようゲートウェイに通知されます。

例:
IDENTITY 特性をもつ INT カラムは、［カラム特性］の［SQL］セクションの［タイプ］
欄で次のように定義します。
INT IDENTITY
ゲートウェイによって INSERT コマンドが発行されても、IDENTITY カラムはスキップされます。
［定義取得］では、IDENTITY カラムは［修正許可］が「No」になります。
プログラマが IDENTITY カラムの［修正許可］を「Yes」に変更した場合、タスクでカラムを更新すると、エラーメッセージが表示されます。

ビュー
ビューには、仮想の一意インデックスを定義する必要があります。ビューでは INSERT、UPDATE および DALETE 操作を行うことができます。MS-SQL Server では、複数のテー
ブルビューで更新を実行することができます。テーブル特性の「位置」として指定されているインデックスのセグメントのいずれかが更新されると、画面に表示されるレコードが一致しなくなることがあります。Magic では、［ビュー］は通常のテーブルとみなされることに注意してください。
また、Magic を使用して名前の変更または変換操作は実行できません。Magic を使用して名前の変更または変換操作を実行すると、エラーメッセージが表示され、データベース
内のビューの変換や名前の変更は行われません。

一時テーブル
一時テーブルは、MS-SQL Server による処理が完了すると、自動的に消去されるテーブ
ルです。一時テーブルには、ローカルとグローバルの 2 種類があります。

ローカル一時テーブル
ローカル一時テーブルは、現在のセッション中のみ参照することができ、現在のセッションが終了すると自動的に消去されます。テーブル名には、先頭に記号が 1 つ付きます（#table_name）。
• ローカル一時テーブルをサブタスクで作成することはできません。実行中にロー
カル一時テーブルを作成するには、親タスクの［DB テーブル］テーブルで定義する必要があります。また、グローバル一時テーブルを使用する方法もあります。
• ローカル一時テーブルは、SQL コマンドを使用して参照することはできません。
代わりに、グローバル一時テーブルを使用してください。
• MCF ファイルも MS-SQL Server に保存している場合、ローカル一時テーブルを作成することはできません。ローカル一時テーブルを作成するには、MCF ファイ
ル用のエントリとデータ用のエントリの 2 つの異なる DB エントリを定義してください。また、グローバル一時テーブルを使用する方法もあります。

リファレンス
Magic eDeveloper V9 Plus

985

第 25 章 - SQL に関する考慮事項

グローバル一時テーブル
グローバル一時テーブルは、すべてのセッションで参照することができます。グローバ
ル一時テーブルは、テーブルを作成したセッションが終了し、ほかのすべてのタスクでテーブルが参照されなくなると自動的に消去されます。
セッションとテーブルとの関連は、1 つの Transact-SQL 文が有効な間のみ維持されます。
つまり、グローバル一時テーブルは、テーブルを作成しているセッションが完了したとき、そのテーブルを参照していた最後の Transact-SQL 文が完了すると消去されます。
グローバル一時テーブル名には、先頭に記号が 2 つ付きます（##table_name）。
グローバル一時テーブルとローカル一時テーブルは、CREATE コマンドの発行元のデー
タベースに関係なく、MS-SQL Server によって自動的に TempDB に作成されます。
一時テーブルは、DROP TABLE を使用して明示的に消去されていない限り、参照されなくなったときに自動的に消去されます。
MS-SQL Server ゲートウェイでは、テーブルリポジトリでテーブル名の前に番号記号（「#」
または「##」）を追加するだけで、TempDB データベースに一時テーブルを保存することができます。

カーソルと DB コマンド
MS-SQL Server での作業には、カーソルまたは DB コマンドを使用する 2 つの方法があります。

DB コマンド
ゲートウェイでは、デフォルトでカーソルが使用されます。ファイルをスキャンするバッ
チタスクなど、Magic タスクで多数のレコードを処理する場合、［テーブル特性］ダイア
ログの［カーソル］パラメータを「No」に変更することによって、デフォルトの設定を変更することができます。この場合、ゲートウェイで、カーソルの代わりに DB コマン
ドが使われるようになり、結果セットごとに異なる接続が必要になります。接続の最大数はユーザによって定義されますが、デフォルトでは 3 に設定されています。
ゲートウェイでは、現在の接続で、多数のカーソルのほかに DB コマンドを 1 つだけ送信することができます。別の DB コマンドが発行されると、新しい接続が開かれます。
DB コマンドは、リンクレコードの取得、CREATE TABLE コマンド、SQL コマンドタス
クの実行など、1 つのレコードやコマンドを実行するコマンドに使用されます。通常、
ゲートウェイで使用される接続数が多いほど、クライアントのパフォーマンスが向上します。ただし、同時に多くのメモリが必要になり、サーバのパフォーマンスは低下します。保留中のコマンドによって既存の接続がすべて使用されており、新しい接続が必要な場合、LRU アルゴリズムに基づいて既存の接続が解放されます。この場合、解放されたコマンドは最終的に再発行されるので、パフォーマンスに悪影響が生じる可能性があります。
SQLコマンドバッチタスクが使用されている場合（ストアドプロシージャまたはSELECT文）、すべての結果が取り出されるまで、ゲートウェイはこの接続を新たに使用することができません。ネストされている SQL コマンドバッチタスクが使用されており、ゲート
ウェイで使用可能な最大接続数が十分でない場合は、次のエラーメッセージが表示されます。
MS-SQL Gateway: No more connections available.
このエラーメッセージが表示された場合、［DBMS 特性］の［最大接続数］の値を増やしてみてください。それでもエラーメッセージが表示される場合は、エラーメッセージに示されているパラメータの値を増やすか、またはネストされている SQL コマンドタスク
を使用しないようにアプリケーションを修正してください。

986

リファレンス
Magic eDeveloper V9 Plus

MS-SQL Server データベースゲートウェイ

カーソル
MS-SQL Server ゲートウェイでは、オンラインタスクには動的カーソル、バッチタスクにはキーセットカーソルが使用されます。

関連するパラメータ• ［テーブル特性］の［SQL］の［カーソル］パラメータを「No」に設定すると、特定のテーブルのカーソル使用が無効になり、代わりに DB コマンドが使用されます。
• ［DBMS 特性］ダイアログの［最大接続数］パラメータを設定すると、ゲートウェイ
で使用可能な最大接続数を制御することができます。デフォルト値は「3」です（追加接続が 1 つあります）。追加接続は、1 つのレコードを SELECT する SQL コマンド、
あるいは UPDATE などの取得可能な結果がない SQL コマンドで使用されます。この
数字は、サーバ / ユーザ名ごとに適用されます。
［設定］の［データベース］で複数のデータベースを定義しており、異なるサーバまたは異なるユーザ名を使用するデータ
ベースがある場合、この数字は、異なるサーバまたはユーザ名を持つそれぞれのデー
タベースに適用されます。

データベース情報［データベース特性］、［テーブル特性］、［カラム特性］、および［インデックス特性］ダ
イアログの［データベース情報］欄を使用すると、Magic が基になっている DBMS に渡すことができるデータベース依存の情報を指定することができます。このパラメータの使用は任意です。
［データベース情報］で送信することができる値については、次のト
ピックを参照してください。

データベース特性
SQL_ DATETOALPHASQL_ DATETOALPHA=Y を設定すると、RDBMS の DATE 型カラムが、長さ 31 文字、YYYY- MM- DD HH: MM: SS 形式の Magic の文字型（Zstring カラム）に自動的に変換されます。
RDBMS で DATE 型であっても、Magic は文字型として処理するため、日付型としてのデータの検証を行うことはできません。SQL_ DATETOALPHA パラメータを使用する場合、INSERT および UPDATE 操作の妥当性検査をユーザが独自に制御する必要があります。行わない場合には、データベースに無効な日付が挿入される可能性があります。

SQL_PHYSICAL_LOCKING
MS-SQL Server では、Magic Ver.9 のデフォルトとして行レベルの物理ロックがサポートされています。前バージョンのように論理ロックを使用するには、［データベース特性］の［データベース情報］欄で次のフラグを追加します。
SQL_PHYSICAL_LOCKING=N
このフラグが「Y」に設定されている場合、またはフラグがまったく設定されていない場
合、次のように、FROM 句内の UPDLOCK ヒントが送信されます。
SELECT a,b
FROM tab1
ORDER BY a

（UPDLOCK NOWAIT）

このフラグが「N」に設定されている場合は、前バージョンと同様に、ロック動作は論理
ロックになります。

リファレンス
Magic eDeveloper V9 Plus

987

第 25 章 - SQL に関する考慮事項

SQLOWNER
MS-SQL Server ゲートウェイでは、所有者が接続の所有者と異なり、NT 認証によって識別される MCF ファイルを開くことができます。
SQL ユーザではなく、NT 認証を使用するユーザは、データベーステーブルの［データベースログオン］項目で［ユーザ名］および［ユーザパスワード］欄を空白にすればよいだけです。この場合、所有者は、MS-SQL Server で指定されたログイン情報に基づいて判断されます。問題は、MCF が別の所有者（MS-SQL Server のログイ
ン情報で指定された所有者以外）に属している場合、NT 認証を使用することができない点です。
この問題を解決するには、データベース特性のデータベース情報フィールドで MCFの所有者を指定するだけです。
SQLOWNER="xxxx"「xxxx」は所有者名です。

テーブル特性SQLBLOB
パラメータ SQLBLOB=n を使用すると、「n」、つまりテーブルの最大 BLOB のバイト数を指定することができます。デフォルト値は「65534」で、最大値は「2147483647」です。
SQLBLOB の値は、以下の SQL コマンドとデータ変換の 2 つの場合に関連があります。
• SQL コマンドから BLOB を含むストアドプロシージャを実行する場合
または• 結果データベースとして PervasiveSQL（ISAM）を使う SQL コマンドを使用する場合、またはファイルを PervasiveSQL（ISAM）に変換する場合。
PervasiveSQL（ISAM）では、各 BLOB に「65534」の制限があります。SQLBLOB の値を「65534」より少なくすることはできますが、「65534」より多くしようとしても変わりません。

ダイレクト SQL
Blob 型の項目は、MS-SQL Server データベースを使用したダイレクト SQL ステートメン
トでの入力パラメータとして指定することができません。

988

リファレンス
Magic eDeveloper V9 PlusDB2 UDB データベースゲートウェイ

DB2 UDB データベースゲートウェイ
Magic のデータタイプ
Magic の型とサポートされる保存タイプ、および DB2 UDB で有効なデータタイプの詳細については、以下のテーブルに示します。表内の各項目には、［カラム特性］ダイアログの［SQL］タブの［タイプ］欄で指定されるデフォルトのデータタイプが含まれています。
n は、指定された書式番号です。

Magic の Magic の
型
記憶型式
文字型

Magic の書式

Magic の保存サイズ

DB2 UDB の
データタイプn、1-254n、1-255

CHAR

n、n,255-32700

n、255-32700

LONGVARCH
AR

n、1-253

n+1、2-254

CHAR

n、254

n+1、255LONGVARCH
AR

n、1-254

n+1、2-255

CHARn、255-3999

n+1、256-4000

VARCHARn、4000-32700

n+1、4001-32701

LONGVARCH
R

n、1-4

2

SMALLINTn、5-94

INTEGERn、1-4

2

SMALLINTn、5-94

INTEGERn、1-6

4

DOUBLEn、7-16

8

DOUBLE

n、1-6

4

CHAR

n、7-16

8

CHAR

n、1-6

4

CHAR

n、7-16

8

CHAR

Packed Decimaln、1-10

2*n-1

CHAR

Numeric

n、1-18n

CHAR

Character Number

n、1-18n-1

CHARString Number

n、1-19n+1

CHAR

Magic Number

n、1-18

n/2+1

CHAR

C-Isam Decimaln、1-32

n/2+1

CHAR

Integer Logical

5

n,1-2

CHAR

String Logical

5

1

CHAR

String Date####/##/##

8

DATE 1

Integer Date####/##/##

4

INTEGER

Integer Date 1901####/##/##

4

INTEGERYYMMDD Date####/##/##

4

CHAR

String

Lstring

Zstring

数値型

Signed Integer
Unsigned Integer
Float
Float MS-Basic
Float Decimal

論理型
日付型

リファレンス
Magic eDeveloper V9 Plus

989

第 25 章 - SQL に関する考慮事項
Magic の Magic の
型
記憶型式

時刻型

メモ型

BLOB

Magic の書式

Magic の保存サイズ

DB2 UDB の
データタイプ

Magic Date####/##/##

4

CHAR

Magic Date 1901####/##/##

4

CHAR

String Time

HH:MM:SS

6

TIME

Integer Time

HH:MM:SS

4

INTEGER

HMSH Time

HH:MM:SS

4

CHAR

Magic Time

HH:MM:SS

4

CHAR

String Memon、1-255

n+2

LONGVARCHR

Magic Memon、255 以上

n+2

LONGVARCH
R

12（デフォルト）BLOB

Binary Large
Object

1 ……Magic の String Date を DB2 UDB の CHAR に割り当てるには、［カラム特性］の［SQL/ タイプ］に ’CHAR（8）’ を指定してください。

DB2 UDB のデータタイプ
次の表は、DB2 UDB テーブルに対する Magic の［定義取得］処理コマンドの結果の一覧です。また、DB2 UDB のデータタイプに対応する Magic のデータタイプも示します。
DB2 UDB の
データタイプ型

Magic の保存タイプ

保存サイズ

書式

CHAR（n）、

文字型

Zstring

n+1、2-255

n、1-254

文字型

Zstring

n+1、2-4001

n、1-4000LONGVARCHR

文字型

Zstring

n+1、2-32701

n、1-327001

INTEGER

数値型

Signed Integer

4

10

SMALLINT

数値型

Signed Integer

2

5

8

p-s、s

VARCHAR（n）

数値型

Float

DOUBLE

数値型

Float

8

［DBMS 特性］の［浮動小数点］特性に基づく（デフォルト 10,3）

FLOAT

数値型

Float

4

5.2

DATE

DECIMAL（p、s）

日付型

String Date8####/##/##

TIME

時刻型

String Time6##:##:##

BLOB

BLOB

Binary Large Object

デフォルト (12)TIMESTAMP

日付型

String Date8####/##/##

1……定義取得した後、適切な書式を設定する必要があります。

ビュー
ビューには、仮想の一意インデックスを定義する必要があります。ビューでは INSERT、UPDATE および DALETE 操作を行うことができます。
Magic では、［ビュー］は通常のテーブルとみなされることに注意してください。

990

リファレンス
Magic eDeveloper V9 PlusODBC データベースゲートウェイ
また、Magic を使用して名前の変更または変換操作は実行できません。Magic を使用して名前の変更または変換操作を実行すると、エラーメッセージが表示され、データベース
内のビューの変換や名前の変更は行われません。

物理ロック
物理ロックは、現在ロックされているレコードをどのユーザも修正できないようにする方法です。
つまり、ユーザがレコードをロックしたときから、そのユーザがレコードを解放するまで、別のユーザはそのレコードを修正することができません。物理ロックは、次のように実行されます。Magic のロック方式に基づいてレコードがロックされると、SELECT 文が FOR UPDATE 句とともに発行されます。
FOR UPDATE 句によって、トランザクションが完了するまで、ほかのアプリケーション
でそのレコードを変更することができなくなります。

ODBC データベースゲートウェイ
この節では、ODBC 用の Magic データベースゲートウェイでのオプションについて説明します。

Magic のデータタイプ
Magic の型とサポートされる保存タイプ、および ODBC で有効なデータタイプの詳細については、以下のテーブルに示します。表内の各項目には、［カラム特性］ダイアログの［SQL］タブの［タイプ］特性で指定されるデフォルトのデータタイプが含まれています。
n は、指定された書式番号です。

Magic の型

Magic の記憶型式

Magic の書式

Magic の保存サイズ

ODBC のデータ
タイプ

文字型

Stringn、1-8000n、1-8000

CHAR

n、8001-32700

n、8001-32700

TEXT

Lstringn、1-255

n+1、2-256

BINARY

Zstringn、1-8000

n+1、2-8001

CHARn、8001-32700

n+1、8002-32701

TEXT

n、1-4

2

SMALLINTn、5-94

INTEGERn、1-2

1

BINARYn、3-4

2

BINARYn、5-9

4

BINARY

n、1-7

4

REAL

n、8-16

8

FLOAT

n、1-7

4

BINARYn、8-16

8

BINARY

数値型

Signed Integer
Unsigned Integer

Float
Float MS-Basic

リファレンス
Magic eDeveloper V9 Plus

991

第 25 章 - SQL に関する考慮事項

Magic の型

論理型

日付型

時刻型

メモ型
BLOB

Magic の記憶型式

Magic の書式

Magic の保存サイズ

ODBC のデータ
タイプ

Float Decimal

n、1-7

4

BINARYn、8-16

8

BINARY

Packed Decimaln、1-102*n-1

BINARY

Numeric

n、1-18n

BINARY

Character Number

n、1-18n-1

BINARY

String Numbern, 1-19 1

n+1

BINARY

Magic Number

n、1-18n/2+1

NUMERIC

C-Isam Decimaln、1-32n/2+1

BINARY

Integer Logical

5

1

BIT

5

2

SMALLINT

String Logical

5

1

BINARY

String Date##/##/####

8

DATETIME 1

Integer Date##/##/####

4

INTEGER

Integer Date 1901##/##/####

4

INTEGERYYMMDD Date##/##/####

4

BINARY

Magic Date##/##/####

4

BINARY

Magic Date 1901##/##/####

4

BINARY

String Time

HH:MM:SS

6

CHAR

Integer Time

HH:MM:SS

4

INTEGER

HMSH Time

HH:MM:SS

4

BINARY

Magic Time

HH:MM:SS

4

BINARY

String Memon、1-7998

n+2

VARBINARY

Magic Memon、7999 以上

n+2

IMAGE

12（デフォルト）IMAGE

Binary Large Object

1 ……Magic の String Date を ODBC の CHAR にマップするには、［カラム特性］の［SQL］
でタイプとして SQL_CHAR（8）を 指定します。

ODBC のデータタイプ
次の表は、ODBC テーブルに対する Magic の［定義取得］処理コマンドの結果と、Microsoft
ODBC のデータタイプに対応する Magic のデータタイプの一覧です。
ODBC のデータタイプ

型

Magic の保存タイプ

保存サイズ

書式

文字型

Zstring

n+1、2-256

n、1-255

文字型

Zstring

n+1、2-256

n、1-255

文字型

Zstring

デフォルト（0）デフォルト（0）1

SQL_BIGINT

数値型

Float

8

15

SQL_INTEGER

数値型

Signed Integer

4

9

SQL_SMALLINT

数値型

Signed Integer

2

5

SQL_TINYINT

数値型

Unsigned Integer

1

3

SQL_CHARSQL_VARCHARSQL_LONGVARCHAR

992

1

リファレンス
Magic eDeveloper V9 PlusODBC データベースゲートウェイ
型

Magic の保存タイプ

保存サイズ

書式

SQL_DOUBLEODBC のデータタイプ

数値型

Float

8

［DBMS 特性］の［浮動小数点］特性に基づく（デフォルト 10.3）

SQL_FLOAT

数値型

Float

4

5.2

SQL_REAL

数値型

Float

4

5.2

SQL_NUMERIC

数値型

Float

8

15

SQL_DECIMAL

数値型

Float

8

15

SQL_DATE

日付型

String Date

8

DD/MM/YYYY

SQL_TIME

時刻型

String Time

6

HH:MM:SS

SQL_BINARY

文字型

Zstring

n+1、2-256

n、1-255

SQL_VARBINARY

文字型

Zstring

n+1、2-256

n、1-255

SQL_LONGVARBINARY

BLOB

Binary Large Object

デフォルト（12）SQL_BIT

論理型

Integer Logical

1

5

TIMESTAMP

日付型

String Date

8

DD/MM/YYYY

1……テーブルの定義を取得したら、SQL_LONGVARCHAR データタイプカラムの書式
を、アプリケーションに適したサイズに設定する必要があります。

ロック
ODBC には、明示的なテーブルロックはありません。したがって、共有モードが「N= なし」や「R= 読込」に設定しても機能しません。基になっているデータベースエンジンによってロックが実行されます。

トラブルシューティング
ODBC 用の Magic データベースゲートウェイの使用中に発生した問題を解決するには、
次の段階的なアプローチを使用します。
1. ODBC ドライバをテストします。
2. データに正常にアクセスすることができても、ゲートウェイが正しく動作しない場
合、Microsoft Query や ODBC Test などのツールを使用して ODBC ドライバそのものをテストします。
3. これらのツールを使用してデータにアクセスできる場合、ODBC ドライバは正しくインストールされています。
Magic に付属している ODBC Check Driver ユーティリティを使用することもできます。
詳細については、この章の「ODBC チェックドライバユーティリティ」を参照して
ください。

ビュー
ビューには、仮想の一意インデックスを定義する必要があります。ビューでは INSERT、UPDATE および DELETE 操作を行うことができます。Magic では、［ビュー］は通常のテーブルとみなされることに注意してください。Magic を使用して名前の変更または変換操作を実行しないでください。Magic を使用して名前の変更または変換操作を実行す
ると、エラーメッセージが表示され、データベース内のビューの変換や名前の変更は行われません。
リファレンス
Magic eDeveloper V9 Plus993

第 25 章 - SQL に関する考慮事項

データベースデフォルト値
ODBC では、デフォルト値はサポートされません。

ソート／一時データベース
ODBC は、ソートまたは一時テーブル用のデータベースとして使用することはできません。

SQL コマンドODBC は、SQL コマンドタスクの結果データベースとして使用することはできません。

ODBC チェックドライバユーティリティ
ODBC Check Driver ユーティリティは、ODBC ドライバに付属しています。このプログラ
ムを実行すると ODBC データソースがテストされ、ドライバによって作成される関数の一覧が印刷されます。このテストによって、ODBC に対して Magic データベースゲート
ウェイでそのドライバが使用できるかどうかがわかります。
MGCHKDRV ユーティリティは、ODBC ドライバの情報をチェックするために提供しています。
この例で使用しているログファイルは、MS Access データソースに対してユーティリ
ティを実行して作成したものです。ただし、ログの構成はすべてのデータソースと同じであり、検索したテキストだけが異なります。courier 10 フ ォ ン ト で表示されたテキ
ストはログファイルのものです。
ODBC ユーティリティを実行すると、次の手順で SQL 文が実行されます。
1. Connect - Full Connect……データベースに接続します。
2. Statement - AllocStmt……文ハンドルを割当てます。
3. Statement - SQLExecDirect……必要な SQL 文を実行します。
4. Results - SQLGetData All……取り出されたデータをすべて取得します。
5. Statement - FreeStmt……文を解放します。
6. Connect - Full Disconnect……データベースとの接続を解除します。
チェックドライバユーティリティでは、以下の 8 つのデータソースに関する情報が出力
されます。

994

節番号

セクション内の情報

1

ドライバと DBMS 製品情報

2

データソース情報3

データソースでサポートされる SQL 文

4

制限値

5

サポートしているデータタイプ

6

固有のキーワード

7関数

8DML コマンドの例

リファレンス
Magic eDeveloper V9 PlusODBC チェックドライバユーティリティ

データソース情報
次の情報が mgchckdrv.log ファイル、または別に指定したログファイルに含まれます。

セクション 1: ドライバと DBMS 製品情報
このユーティリティは、選択されたデータソースに接続し、接続の割当てられたハンド
ルと関連付けられているドライバに関する一般情報を返す SQLGetInfo 関数を送信します。
SQL_DBMS_NAME = ACCESS
ドライバによってアクセスされた DBMS 製品の名前を含む文字列です。
SQL_ODBC_VER = 03.51
Driver Manager が準拠する ODBC のバージョンを含む文字列です。バージョンの形式は##.## です。最初の 2 桁はメジャーバージョンで、次の 2 桁はマイナーバージョンです。
これは、Driver Manager でのみ実行されます。
SQL_DRIVER_NAME = odbcjt32.dll
データソースへのアクセスに使われたドライバのファイル名を含む文字列です。
SQL_DRIVER_ODBC_VER = 03.51, major = 3, minor = 51
ドライバでサポートされる ODBC のバージョンを含む文字列です。バージョンの形式は##.## です。最初の 2 桁はメジャーバージョンで、次の 2 桁はマイナーバージョンです。
SQL_SPEC_MAJOR および SQL_SPEC_MINOR によって、メジャーバージョン番号とマ
イナーバージョン番号が定義されます。このマニュアルで説明している ODBC のバー
ジョンの場合、2 と 0 です。したがって、ドライバによって「02.00」が返されます。ドライバで SQLGetInfo がサポートされていて、fInfoType パラメータのこの値がサポートされていない場合は、Driver Manager によって「01.00」が返されます。
SQL_DRIVER_VER = 04.00.3513
ドライバのバージョンを含む文字列です。任意でドライバの説明を含めることもできます。バージョンの形式は ##.##.#### です。最初の 2 桁はメジャーバージョン、次の 2 桁
はマイナーバージョン、最後の 4 桁はリリースバージョンです。
SQL_DBMS_VER = 01.00.0000
ドライバによってアクセスされた DBMS 製品のバージョンを表す文字列です。バージョンの形式は ##.##.#### です。最初の 2 桁はメジャーバージョン、次の 2 桁はマイナーバー
ジョン、最後の 4 桁はリリースバージョンです。ドライバは、この形式で DBMS 製品のバージョンを返しますが、DBMS 製品固有のバージョンを追加することもできます。その場合、「04.01.0000 Rdb 4.1」のようになります。
SQL_DATABASE_NAME = C:¥gateways¥ODBCSDK¥ACCESS¥SAMPLE
データソースによって「データベース」という名前の付いたオブジェクトが定義されている場合、使用中のデータベースの名前を含む文字列です。
ODBC 2.0 では、fInfoType のこの値は、SQL_CURRENT_QUALIFIER 接続オプションに置き換えられました。ODBC 2.0 ドライバでは引き続き
SQL_DATABASE_NAME 情報タイプがサポートされていますが、ODBC 2.0 アプリ
ケーションは ODBC 1.0 ドライバについてのみこの値を使用します。
SQL_ACTIVE_CONNECTIONS = 64
ドライバでサポートされるアクティブな接続ハンドルの最大数を示す16ビットの整数値です。この値には、ドライバまたはデータソースによって課せられる制限が反映されます。
制限が指定されていない場合、または制限が不明の場合は、この値はゼロに設定されます。
SQL_ACTIVE_STATEMENTS = 0
リファレンス
Magic eDeveloper V9 Plus995

第 25 章 - SQL に関する考慮事項
接続ハンドルに対してドライバでサポートされるアクティブな文ハンドルの最大数を示す 16 ビットの整数値です。この値には、ドライバまたはデータソースによって課せられる制限が反映されます。制限が指定されていない場合、または制限が不明の場合は、この値はゼロに設定されます。
SQL_ODBC_API_CONFORMANCE = Level 1 Supported
ODBC 適合のレベルを示す、以下の文字列が出力されます。
None / Level 1 Supported / Level 2 Supported
SQL_SEARCH_PATTERN_ESCAPE = ¥検索パターンの有効な文字としてパターンマッチのメタ文字の下線（_）やパーセント（%）の使用を許可するエスケープ文字としてドライバでサポートされる文字を示す文字
列です。このエスケープ文字は、検索文字列をサポートするカタログ関数のパラメータにのみ適用されます。この文字列が空白の場合、ドライバでは検索パターンのエスケー
プ文字がサポートされていません。この fInfoType は、カタログ関数にのみ使用されされます。
SQL_SERVER_NAME = ACCESS
実際のデータソース固有のサーバ名を含む文字列です。SQLConnect、SQLDriverConnect、および SQLBrowseConnect で、データソース名に利用します。

セクション 2: データソース情報
このユーティリティは、選択されたデータソースへの既存の接続を使用し、接続の割当
てられたハンドルと関連付けられているデータソースに関する一般情報を返す
SQLGetInfo 関数を送信します。
SQL_DATA_SOURCE_NAME = try-access
接続時に使用されたデータソース名を含む文字列です。アプリケーションが SQLConnect
を 呼 び 出 した 場 合、こ れ は szDSN パラメータの値です。SQLDriverConnect またはSQLBrowseConnect を呼び出した場合は、ドライバに渡される接続文字列内の DSN キー
ワードの値です。接続文字列に DSN キーワードが含まれていなかった場合は空の文字列です。（DRIVER キーワードが含まれている場合など）
SQL_ACCESSIBLE_TABLES = Y
この文字列は、ユーザが SQLTables によって返されるすべてのテーブルに SELECT 権限が付与されている場合、「Y」です。ユーザがアクセスできないテーブルがある場合、「N」
です。
SQL_CONCAT_NULL_BEHAVIOR =Concatenation of a NULL value with no NULL value
result is NULL valued
NULL 値の文字型カラムと非 NULL 値の文字型カラムとの結合に対して、データソースが処理する方法を示す文字列です。
• ... result is NULL valued の場合、NULL を返します。
• ... result is concatenation of non-NULL valued column の場合、NULL でない文字列の結合を返します。
SQL_DATA_SOURCE_READ_ONLY = N
この文字列は、データソースが読み取り専用モードに設定されている場合、「Y」です。
データソースが読み取り専用モードに設定されていない場合、「N」です。この特性はデー
タソース自体にのみ関連するもので、データソースにアクセスすることができるドライバの特性ではありません。
SQL_CURSOR_COMMIT_BEHAVIOR = Close cursors
COMMIT 処理コマンドがデータソースでカーソルおよび準備されている文にどのように影響するかを示す文字列です。

996

リファレンス
Magic eDeveloper V9 PlusODBC チェックドライバユーティリティ• Close cursors and delete prepared statements. の場合、カーソルを閉じ、準備されている文を削除します。カーソルを再び使用するには、アプリケーションは文ハンドルをもう１度準備して、再実行する必要があります。
• Close cursors. の場合、カーソルを閉じます。準備されている文については、アプリケー
ションは、SQLPrepare を再度呼び出さなくても文ハンドルで SQLExecute を呼び出すことができます。
• Preserve cursors... の場合、COMMIT 処理コマンドの前と同じ位置にカーソルを維持します。アプリケーションは引き続きデータを取り出すことができます。また、カーソ
ルを閉じて、文ハンドルをもう１度準備しなくても再実行することができます。
SQL_CURSOR_ROLLBACK_BEHAVIOR = Close cursors
ROLLBACK 処理コマンドがデータソースでカーソルおよび準備されている文にどのように影響するかを示す文字列です。
• Close cursors and delete prepared statements の場合、カーソルを閉じ、準備されている文を削除します。カーソルを再び使用するには、アプリケーションは文ハンドルをもう１度準備して、再実行する必要があります。
• Close cursors の場合、カーソルを閉じます。準備されている文については、アプリケー
ションは、SQLPrepare を再度呼び出さなくても文ハンドルで SQLExecute を呼び出すことができます。
• Preserve cursors... の場合、COMMIT 処理コマンドの前と同じ位置にカーソルを維持します。アプリケーションは引き続きデータを取り出すことができます。また、カーソ
ルを閉じて、文ハンドルをもう１度準備しなくても再実行することができます。
SQL_DEFAULT_TXN_ISOLATION = SQL_TXN_READ_COMMITTED
ドライバまたはデータソースによってサポートされるデフォルトのトランザクション分
離レベルを示す文字列です。データソースでトランザクションがサポートされていない
場合は、ゼロです。トランザクション分離レベルの定義には、次の用語が使用されます。
• ダーティリード……トランザクション 1 によって行が変更されます。トランザクショ
ン 1 によって変更がコミットされる前に、トランザクション 2 によって変更された行が読み取られます。トランザクション 1 によって変更がロールバックされると、それまで存在したことがないと考えられる行がトランザクション 2 によって読み取られることになります。
• 反復不可能なリード……トランザクション 1 によって行が読み取られます。トランザ
クション 2 によってその行が更新または削除され、この変更がコミットされます。ト
ランザクション 1 がその行をもう１度読み取ろうとすると、異なる値を受け取るか、またはその行が削除されたことがわかります。
• ファントム……トランザクション 1 によって、検索条件に一致した行が読み取られます。トランザクション 2 によって、その検索条件に一致する行が挿入されます。トラ
ンザクション 1 がその行を読み取る文をもう１度実行すると、異なる行を受け取ります。
データソースでトランザクションがサポートされている場合、ドライバによって以下のビットマスクのいずれかが返されます。
• SQL_TXN_READ_UNCOMMITTED の場合、ダーティリード、反復不可能なリード、およびファントムがサポートされます。
• SQL_TXN_READ_COMMITTED の場合、ダーティリードはサポートされません。反復
不可能なリードとファントムはサポートされます。
• SQL_TXN_REPEATABLE_READ の場合、ダーティリードと反復不可能なリードはサポートされません。ファントムはサポートされます。
• SQL_TXN_SERIALIZABLE の場合、トランザクションは直列化することができます。
ダーティリード、と反復不可能なリード、およびファントムはサポートされません。

リファレンス
Magic eDeveloper V9 Plus997

第 25 章 - SQL に関する考慮事項• SQL_TXN_VERSIONING の場合、トランザクションは直列化することができますが、
SQL_TXN_SERIALIZABLE より同時実行数が増える可能性があります。ダーティリード
はサポートされません。通常、SQL_TXN_SERIALIZABLE は同時実行数を削減するロックプロトコルを使用して実装され、SQL_TXN_VERSIONING はレコードのバージョン化などの非ロックプロトコルを使用して実装されます。Oracle の読取り一貫性の分離レベ
ルは、SQL_TXN_VERSIONING の一例です。
SQL_MULT_RESULT_SETS = N
この文字列は、データソースで複数の結果セットがサポートされている場合、「Y」です。
それ以外の場合、「N」です。
SQL_MULTIPLE_ACTIVE_TXN = Y
この文字列は、複数の接続でアクティブなトランザクションが許可されている場合、「Y」
です。１度にアクティブなトランザクションを所有することができる接続が 1 つだけの場合、「N」です。
SQL_NEED_LONG_DATA_LEN = N
この文字列は、長いデータ値（データタイプが SQL_LONGVARCHAR、
SQL_LONGVARBINARY、またはデータソース固有の長いデータタイプの場合）がデー
タソースに送信される前に、データソースでその値の長さが必要な場合、「Y」です。それ以外の場合、「N」です。
詳細については、「SQLBindParameter」と「SQLSetpos」を参照してください。

SQL_OWNER_TERM = NULL STRING
所 有 者 の デ ー タ ソ ー ス ベ ン ダ の 名 前 を 含 む 文 字 列 で す。た と え ば、所 有 者、Authorization ID、Schema などです。
SQL_NULL_COLLATION = NULLs are sorted at the low end of the list
NULL データがリストのどこにソーティングされるかを示す文字列です。
• NULLs are sorted at the end of the list の場合、並べ替え順に関係なく、NULL は一覧の末尾に格納されます。
• NULLs are sorted at the high end of the listの場合、NULLは一覧の最上部に格納されます。
• NULLs are sorted at the low end of the list の場合、NULL は一覧の最下部に格納されます。
• NULLs are sorted at the start of the list の場合、並べ替え順に関係なく、NULL は一覧の先頭に格納されます。
次に説明する SQL_AUTOCOMMIT の値を取得する場合、ユーティリティは選択された
デ ー タ ソ ー ス へ の 既 存 の 接 続 を 使 用 し、接 続 オ プ シ ョ ン の 現 在 の 設 定 を 返 すSQLGetConneCToption 関数を送信します。
SQL_AUTOCOMMIT on connection = SQL_AUTOCOMMIT_ON
自動コミットモードと手動コミットモードのどちらを使用するかを示す文字列です。
• SQL_AUTOCOMMIT_OFF の場合、ドライバでは手動コミットモードが使用されるので、アプリケーションは、SQLTransact を使用して明示的にトランザクションをコミッ
トまたはロールバックする必要があります。
• SQL_AUTOCOMMIT_ON の場合、ドライバでは自動コミットモードが使用されます。
各文は、実行されるとすぐコミットされます。これはデフォルトです。手動コミット
モードから自動コミットモードに変更すると、接続上の開いているトランザクション
がすべてコミットされます。

998

リファレンス
Magic eDeveloper V9 PlusODBC チェックドライバユーティリティ• 重要 : 一部のデータソースでは、文がコミットされるたびに、アクセスプランが削除
され、接続上のすべての文ハンドルのカーソルが閉じられます。自動コミットモード
では、各文が実行された後、この動作が発生することがあります。詳細については、「SQLGetInfo」の「SQL_CURSOR_COMMIT_BEHAVIOR 」と「SQL_CURSOR_ROLLBACK_BEHAVIOR 」情報タイプを参照してください。
SQL_USER_NAME = admin
特定のデータベースで使用する名前を含む文字列です。ログイン名と異なってもかまいません。

セクション 3: データソースでサポートされる SQL 文
このユーティリティは、選択されたデータソースへの既存の接続を使用し、割当てられた接続のハンドルと関連付けられているデータソースでサポートされる SQL 文の型に関する情報を返す SQLGetInfo 関数を送信します。
SQL_CORRELATION_NAME = Correlation names are supported and can be any valid
name
テーブルの相関関係名がサポートされているかどうかを示す文字列です。
• Correlation names are not supported. の場合、相関関係名はサポートされていません。
• Correlation names are supported, but must differfrom the names of the tables they represent の場合、相関関係名はサポートされていますが、表示されるテーブルの名前とは異なります。
• Correlation names are supported and can be any valid user-defined name の場合、相関関係名がサポートされており、ユーザが定義した有効な名前です。
SQL_IDENTIFIER_CASE = Case insensitive,stored in mixed case
SQL の識別子について、大文字と小文字の識別の方法を示す文字列です。
• Case insensitive and are stored in upper case の場合、SQL の識別子は大文字と小文字を区別せず、システムカタログに大文字で格納されます。
• Case insensitive and are stored in lower case の場合、SQL の識別子は大文字と小文字を区別せず、システムカタログに小文字で格納されます。
• Case sensitive and are stored in mixed の場合、SQL の識別子は大文字と小文字を区別し、システムカタログに両方の文字で格納されます。
• Case insensitive and are stored in mixed case の場合、SQL の識別子は大文字と小文字を区別せず、システムカタログに両方の文字で格納されます。
SQL_NON_NULLABLE_COLUMNS = Columns may be non-nullable
データソースで NULL 値が許容されていないカラムがサポートされているかどうかを示す文字列です。
• All columns must be nullable の場合、すべてのカラムで NULL 値が許容されている必要があります。
• Columns may be non-nullable の場合、カラムで NULL 値が許容されていない可能性があります（データソースで CREATE TABLE 文内の NOT NULL カラム制約がサポートされています）。
SQL_ODBC_SQL_CONFORMANCE = Core grammer supported
ドライバでサポートされる SQL 文法を示す文字列です。
• Minimum grammar supported の場合、最低限の文法がサポートされています。
• Core grammar supported の場合、コアレベルの文法がサポートされています。
• Extended grammar supported の場合、拡張された文法がサポートされています。
SQL_QUOTED_IDENTIFIER_CASE = Core grammer supported
引用符で囲まれた識別子について、大文字と小文字の識別の方法を示す文字列です。
リファレンス
Magic eDeveloper V9 Plus

999

第 25 章 - SQL に関する考慮事項• Case insensitive and are stored in upper case の場合、SQL の引用符で囲まれた識別子は大文字と小文字を区別せず、システムカタログに大文字で格納されます。
• Case insensitive and are stored in lower case の場合、SQL の引用符で囲まれた識別子は大文字と小文字を区別せず、システムカタログに小文字で格納されます。
• Case sensitive and are stored in mixed case の場合、SQL の引用符で囲まれた識別子は大文字と小文字を区別し、システムカタログに両方の文字で格納されます。
• Case insensitive and are stored in mixed case の場合、SQL の引用符で囲まれた識別子は大文字と小文字を区別せず、システムカタログに両方の文字で格納されます。

セクション 4: 制限値
このユーティリティは、選択されたデータソースへの既存の接続を使用し、識別子の最大長や選択リスト内のカラムの最大数など、SQL 文内の識別子や句に適用される制限に関する情報を返す SQLGetInfo 関数を送信します。
ドライバまたはデータソースによって制限が課せられます。

SQL_MAX_COLUMN_NAME_LEN = 64
データソース内のカラム名の最大長を示す 16 ビットの整数値です。最大長がない場合、または長さが不明の場合は、この値はゼロに設定されます。
SQL_MAX_QUALIFIER_NAME_LEN = 260
データソース内の修飾子名の最大長を示す 16 ビットの整数値です。最大長がない場合、または長さが不明の場合は、この値はゼロに設定されます。
SQL_MAX_TABLE_NAME_LEN = 64
データソース内のテーブル名の最大長を示す 16 ビットの整数値です。最大長がない場
合、または長さが不明の場合は、この値はゼロに設定されます。
SQL_MAX_INDEX_SIZE = 255
インデックスの結合フィールドで許容される最大バイト数を示す 32 ビットの整数値です。制限が指定されていない場合、または制限が不明の場合は、この値はゼロに設定されます。
SQL_MAX_COLUMNS_IN_INDEX = 10
インデックスで許容されるカラムの最大数を示す 16 ビットの整数値です。制限が指定されていない場合、または制限が不明の場合は、この値はゼロに設定されます。
SQL_MAX_COLUMNS_IN_ORDER_BY = 10
ORDER BY 句で許容されるカラムの最大数を示す 16 ビットの整数値です。制限が指定されていない場合、または制限が不明の場合は、この値はゼロに設定されます。
SQL_MAX_COLUMNS_IN_SELECT = 255
選択リストで許容されるカラムの最大数を示す 16 ビットの整数値です。制限が指定されていない場合、または制限が不明の場合は、この値はゼロに設定されます。
SQL_MAX_COLUMNS_IN_TABLE = 255
テーブルで許容されるカラムの最大数を示す 16 ビットの整数値です。制限が指定されていない場合、または制限が不明の場合は、この値はゼロに設定されます。

1000

リファレンス
Magic eDeveloper V9 PlusODBC チェックドライバユーティリティ

セクション 5: サポートしているデータタイプ
このユーティリティは、選択されたデータソースへの既存の接続を使用し、サポートされているすべてのデータタイプに関する情報を返す、fInfoType が SQL_ALL_TYPES のSQLGetInfo 関数を送信します。この情報を受け取った後、ユーティリティは、データタ
イプが検索可能かどうか（つまり、データタイプが WHERE 句で使用可能かどうか）を確認するためにすべてのデータタイプに SQLGetTypeInfo 関数を送信します。
• 0 – SQL_UNSEARCHABLE……データタイプが WHERE 句で使用できない場合• 1 – SQL_LIKE_ONLY LIKE……LIKE 述語があるときだけでデータタイプが WHERE 句で使用できる場合• 2 – SQL_ALL_EXCEPT_LIKE……LIKE 述語を除くすべての比較演算子とともにデータタイプが WHERE 句で使用できる場合• 3 – SQL_SEARCHABLE ……すべての比較演算子とともにデータタイプが WHERE 句で使用できる場合
ユーティリティログファイル内の情報は、次の 3 つのカラムに表示されます。
• DBMS Type Name……DBMS のデータタイプの名前• SQL Data Type……ODBC によって定義される、対応する主要な SQL のデータタイプ• Searchable……データタイプが WHERE 句で使用できるかどうかを示す True/False の値
DBMS TYPE NAMESQL DATA TYPESEARCHABLEGUIDINVALID SQLTYPE

FALSE

BIT

SQL_BIT

TRUE

BYTE

SQL_TINYINTTRUELONGBINARY

SQL_LONGVARBINARYFALSE

VARBINARYSQL_VARBINARY

FALSE

BINARYSQL_BINARY

FALSE

LONGCHARSQL_LONGVARCHAR

FALSE

CHAR

SQL_CHARTRUE

CURRENCY

SQL_NUMERICTRUE

INTEGERSQL_INTEGER

TRUECounter

SQL_INTEGER

TRUE

SMALLINTSQL_SMALLINT

TRUE

REAL

SQL_REALTRUE

DOUBLESQL_DOUBLETRUE

DATETIMESQL_TIMESTAMPTRUE

VARCHAR

SQL_VARCHAR

TRUE

セクション 6: 固有のキーワード
このユーティリティは、選択されたデータソースへの既存の接続を使用し、fInfoType
フィールドに「SQL_KEYWORDS」を持つ SQLGetInfo 関数を送信します。
その結果、データソース固有のキーワードすべてのカンマ区切りの一覧を含む文字列が返されます。この一覧には、ODBC に固有のキーワードや、データソースと ODBC の両方で使用されるキーワードは含まれません。キーワードは予約語です。構文に基づいて、
特定の場所でのみ使用することができます。
SQL_KEYWORDS =ALPHANUMERIC,AUTOINCREMENT,BINARY,BYTE,Counter,CURRENCY,DATABASE,DATABASENAME,DATETIME,DISALLOW,DISTINCTROW,DOUBLEFLOAT,FL
OAT4,リファレンス
Magic eDeveloper V9 Plus

1001

第 25 章 - SQL に関する考慮事項
FLOAT8,GENERAL,IEEEDOUBLE,IEEESINGLE,IGNORE,INT,INTEGER1,INTE
GER2,INTEGER4,LEVEL,LOGICAL,LOGICAL1,LONG,LONGBINARY,LONGCHAR,LONGTEXT,MEMO,MO
NEY,NOTE,NUMBER,OLEOBJECT,OPTION,OWNERACCESS,PARAMETERS,PERCE
NT,PIVOT,SHORT,SINGLE,SINGLEFLOAT,SMALLINT,STDEV,STDEVP,STRING,TABLEID,TEXT,TOP,TRANSFORM,UNS
IGNEDBYTE,VALUES,VAR,VARBINARY,VARP,YESNO

セクション 7: 関数
このユーティリティは、選択されたデータソースへの既存の接続を使用し、fFunction
フィールドに SQL_API_ALL_FUNCTIONS を持つ SQLGetFunctions 関数を送信します。
この関数は、ドライバで ODBC 関数の一覧がサポートされるかどうかに関する情報を返します。これらの関数は Driver Manager に実装されています。また、ドライバにも実装することができます。ドライバで SQLGetFunctions が実行される場合、Driver Manager はドライバの関数を呼び出します。それ以外の場合は、Driver Manager によって関数が実行されます。
ユーティリティログファイル内の情報は、次の 3 つのカラムに表示されます。
• Function……ODBC 関数の名前• Supported by driver……SQLGetFunctionsの結果から返された True/Falseの値に基づく、サポート / 非サポート（Supported/Not Supported）• Used by Magic……Magic で必要かどうか（Required/Not Required）
関数が Magic で必要であるにもかかわらず、データソースでサポートされていない
場合、このデータソースを使用して Magic および ODBC で作業する際に問題が発生する可能性があります。
関数

Supported by Driver

Used by Magic

SQLAllocConnect

Supported

Required

接続ハンドルによって識別された環境内でハンドルにメモリを割当てます。
SQLAllocEnv

Supported

Required

環境ハンドルにメモリを割当て、アプリケーションによって使用される ODBC Call Level Interface を初期化します。アプリケーションは、ほかの ODBC 関数より先に SQLAllocEnv を呼び出す必要があります。
SQLAllocStmt

Supported

Required

構文ハンドルにメモリを割当て、その構文ハンドルを接続ハンドルによって指定された接続と関連付けます。アプリケーションは、SQL 文を実行する前に SQLAllocStmt を呼び出す必要があります。
SQLBindCol

Supported

Required

結果セット内のカラムに以下のようなストレージとデータタイプを割当てます。
••••

データのカラムの内容を受け取る保存バッファ
保存バッファの長さ
フェッチ処理によって返されたデータ内のカラムの実際の長さを保存するストレージ
データタイプの変換

SQLCancel

Supported

Required

構文のハンドルの処理をキャンセルします。
SQLColAttributes

Supported

Not Required

結果セット内のカラムに関する記述子情報を返します。この関数を使用してブックマークカラム（カラム 0）に関する情報を返すことはできません。記述子情報は、文字列、32 ビットの記述子依存の値、または整数値で返されます。
SQLConnect1002

Supported

Required
リファレンス
Magic eDeveloper V9 PlusODBC チェックドライバユーティリティ関数

Supported by Driver

Used by Magic

ドライバを読み込み、データソースへの接続を確立します。接続ハンドルによって、状態、トランザクション状態、エラー情報など、接続に関するあらゆる情報のストレージが参照されます。
SQLDescribeCol

Supported

Required

結果セット内の 1 つのカラムに関する結果記述子カラムの名前、タイプ、有効桁数、小数点部桁数、および NULL 値の許容を返します。この関数を使用してブックマークカラム（カラム 0）に関する情報を返すことはできません。
SQLDisconnect

Supported

Required

特定の接続ハンドルと関連付けられている接続を閉じます。
SQLError

Supported

Required

エラーや状態に関する情報を返します。
SQLExecDirect

Supported

Required

構文内にパラメータがある場合、パラメータマーカ変数の現在の値を使用して、準備可能な構文を実行します。SQLExecDirect を使用すると、1 回の実行で最も速く SQL 文を実行することができます。
SQLExecute

Supported

Required

構文内にパラメータマーカがある場合、パラメータマーカ変数の現在の値を使用して、準備された構文を実行します。
SQLFetchSupported

Required

結果セットからデータの行を取り出します。ドライバによって、SQLBindCol を使用して保存場所にバインドされたすべてのカラムのデータが返されます。
SQLFreeConnect

Supported

Required

接続ハンドルを解放し、ハンドルと関連付けられているすべてのメモリを解放します。
SQLFreeEnv

Supported

Required

環境ハンドルを解放し、環境ハンドルと関連付けられているすべてのメモリを解放します。
SQLFreeStmt

Supported

Required

特定の構文ハンドルと関連付けられている処理を停止し、その構文ハンドルと関連する開いているカー
ソルを閉じ、保留中の結果を破棄します。さらに、オプションで、この構文ハンドルに関連するすべてのリソースを解放します。
SQLGetCursorName

Supported

Not Required

指定された構文ハンドルと関連付けられているカーソル名を返します。
SQLNumResultCols

Supported

Required

結果セット内のカラム数を返します。
SQLPrepare

Supported

Required

SQL 文字列を実行する準備をします。
SQLRowCount

Supported

Required

UPDATE、INSERT、または DELETE 文、あるいは SQLSetPos の SQL_UPDATE、SQL_ADD、またはSQL_DELETE 処理コマンドによって影響を受ける行の数を返します。
SQLSetCursorName

Supported

Not Required

カーソル名をアクティブな構文ハンドルと関連付けます。アプリケーションで SQLSetCursorName が呼び出されない場合、ドライバによって SQL 文の処理に必要なカーソル名が生成されます。
SQLSetParamSupported

Not Required

ODBC 2.0 では、ODBC 1.0 の SQLSetParam 関数は SQLBindParameter に置き換えられました。詳細については、「SQLBindParameter」を参照してください。
SQLTransact

リファレンス
Magic eDeveloper V9 Plus

Supported

Required1003

第 25 章 - SQL に関する考慮事項
関数

Supported by Driver

Used by Magic

接続と関連付けられているすべての構文ハンドル上のすべてのアクティブな処理コマンドのコミットまたはロールバック操作を要求します。また、環境ハンドルと関連付けられているすべての接続に対して
コミットまたはロールバック操作を実行するように要求することもできます。
SQLColumns

Supported

Required指定されたテーブル内のカラム名の一覧を返します。ドライバは、指定された構文のハンドルの結果セットとしてこの情報を返します。
SQLDriverConnect

Supported

Required

SQLDriverConnect は、SQLConnect の代わりに使用します。SQLConnect の 3 つのパラメータより多くの接続情報を必要とするデータソース、すべての接続情報の入力をユーザに要求するダイアログボック
ス、ODBC.INI ファイルまたはレジストリで定義されていないデータソースをサポートします。
SQLDriverConnect には、次のような接続オプションがあります。
• データソース名、1 つ以上のユーザ ID、1 つ以上のパスワード、およびデータソースによって必要とされるその他の情報を含む接続文字列を使用して接続を確立します。
• 部分的な接続文字列を使用して、または追加情報なしで接続を確立します。この場合、Driver Manager
およびドライバは、ユーザに接続情報の入力を要求することができます。
• ODBC.INI ファイルまたはレジストリで定義されていないデータソースへの接続を確立します。アプ
リケーションによって部分的な接続文字列が提供される場合、ドライバは、ユーザに接続情報の入力を要求できます。
• 接続が確立すると、SQLDriverConnect によって完全な接続文字列が返されます。アプリケーション
は、それ以降の接続要求にこの文字列を使用できます。
SQLGetConneCToption

Supported

Required

接続オプションの現在の設定を返します。
SQLGetData

Supported

Required

現在の行内のバインドされていない 1 つのカラムの結果データを返します。アプリケーションは、
SQLGetData を呼び出す前に、データの行にカーソルを置くために SQLFetch、または SQLExtendedFetch
および SQLSetPos（任意）を呼び出す必要があります。一部のカラムに SQLBindCol を使用し、同じ行
内のほかのカラムに SQLGetData を使用することができます。この関数を使用すると、文字型、バイナ
リ型、またはデータソース固有のデータタイプを持つカラムから文字型またはバイナリ型のデータ値（SQL_LONGVARBINARY カラムや SQL_LONGVARCHAR カラム内のデータなど）を部分的に取得することができます。
SQLGetFunctions

Supported

Required

ドライバで特定の ODBC 関数がサポートされているかどうかに関する情報を返します。この関数はDriver Manager で実行されますが、ドライバで実行することもできます。ドライバで SQLGetFunctionsが実行される場合、Driver Manager はドライバの関数を呼び出します。それ以外の場合は、Driver
Manager によって関数が実行されます。
SQLGetInfo

Supported

Required

接続ハンドルと関連付けられているドライバおよびデータソースに関する一般情報を返します。
SQLGetStmtOption

Supported

Required

構文オプションの現在の設定を返します。
SQLGetTypeInfo

Supported

Required

データソースでサポートされているデータタイプに関する情報を返します。ドライバは、SQL 結果
セットの形式で情報を返します。
重要 : アプリケーションは、ALTER TABLE 文および CREATE TABLE 文の TYPE_NAME カラムに返されたタイプ名を使用する必要があります。SQLGetTypeInfo によって、DATA_TYPE カラムに同じ値を持つ複数の行が返されることがあります。
SQLParamData

Supported

Not Required

SQLPutData とともに、構文の実行時にパラメータデータを提供するために使用されます。

1004

リファレンス
Magic eDeveloper V9 PlusODBC チェックドライバユーティリティ関数

Supported by Driver

Used by MagicSQLPutData

Supported

Not Required

構文の実行時に、アプリケーションからドライバへのパラメータまたはカラムに関するデータの送信を可能にします。この関数を使用すると、文字型、バイナリ型、またはデータソース固有のデータタイプを持つカラムに文字型またはバイナリ型のデータ値（SQL_LONGVARBINARY 型や
SQL_LONGVARCHAR 型のパラメータなど）を部分的に送信することができます。
SQLSetConneCToption

Supported

Required

接続を制御するオプションを設定します。
SQLSetStmtOption

Supported

Required

構文ハンドルに関するオプションを設定します。特定の接続ハンドルと関連付けられているすべての構
文にオプションを設定する場合、アプリケーションは SQLSetConneCToption を呼び出すことができます。
SQLSpecialColumns

Supported

Required指定されたテーブル内のカラムに関する以下の情報を取得します。
• テーブル内の行を一意に識別する最適なカラムのセット• 行内の値がトランザクションによって更新された際に自動的に更新されるカラム
SQLStatistics

Supported

Required

1 つのテーブルに関する統計情報の一覧とそのテーブルと関連付けられているインデックスを取得します。ドライバは結果セットとして情報を返します。
SQLTables

Supported

Required

特定のデータソースに格納されているテーブル名の一覧を返します。ドライバは結果セットとして情報を返します。
SQLBrowseConnect

Not Supported

Not Required

データソースへの接続に必要な型および属性値を反復して検出および列挙する方法をサポートします。
SQLBrowseConnect への各呼び出しによって、型および属性値の連続するレベルが返されます。
すべてのレベルが列挙されると、データソースへの接続が完了し、SQLBrowseConnect によって完全な接続文字列が返されます。SQL_SUCCESS または SQL_SUCCESS_WITH_INFO のリターンコードは、すべての接続情報が指定されており、現在、アプリケーションがデータソースに接続されていることを示します。
SQLColumnPrivileges

Not Supported

Not Required

指定されたテーブルに関するカラムと、関連する権限の一覧を返します。ドライバは、指定された構文のハンドルの結果セットとして情報を返します。
SQLDataSources

Supported

Not Required

データソース名を一覧表示します。この関数は、Driver Manager によってのみ実行されます。
SQLDescribeParam

Not Supported

Not Required

準備された SQL 文と関連付けられているパラメータマーカの説明を返します。
SQLExtendedFetch

Supported

Required

次の方法で、SQLFetch の機能を拡張します。
• バインドされた各カラムについて、配列の形式で行セットデータ（1 つ以上の行）を返します。
• スクロールタイプのパラメータの設定に基づいて、結果セットをスクロールします。
SQLExtendedFetch は、SQLSetStmtOption とともに動作します。前方に１度に 1 行ずつ取り出す場合は、
アプリケーションは SQLFetch を呼び出す必要があります。

リファレンス
Magic eDeveloper V9 Plus

1005

第 25 章 - SQL に関する考慮事項
関数

Supported by Driver

Used by MagicSQLForeignKeys

Not Supported

Not Required

SQLForeignKeys は、以下の一覧を返すことができます。
• 指定されたテーブルの外部キー（ほかのテーブルの主キーを参照する指定されたテーブル内のカラム）の一覧• 指定されたテーブルの主キーを参照するほかのテーブルの外部キーの一覧
ドライバは、指定された構文のハンドルの結果セットとして各一覧を返します。
SQLMoreResults

Supported

Not Required

SELECT、UPDATE、INSERT、または DELETE 文を含む構文ハンドルで使用可能なより多くの結果があるかどうかを判断します。より多くの結果がある場合は、それらの結果に対する処理を開始します。
SQLNativeSql

Supported

Not Required

ドライバによって変換された SQL 文字列を返します。
SQLNumParams

Supported

Not Required

SQL 文内のパラメータ数を返します。
SQLParamOptions

Supported

Not Required

SQLBindParameter によって割当てられたパラメータのセットにアプリケーションが複数の値を指定できるようにします。パラメータのセットに複数の値を指定できれば、データソースがさまざまなパラ
メータ値を使用して複数回同じ SQL 文を処理しなければならない一括挿入などの作業を行う際に便利です。たとえば、アプリケーションが INSERT 文と関連するパラメータのセットに 3 セットの値を指定することができる場合、INSERT 文を１度実行して、3 つの挿入操作を行うことができます。
SQLPrimaryKeys

Not Supported

Not Required

テーブルの主キーを含むカラム名を返します。ドライバは結果セットとして情報を返します。この関数
では、1 回の呼び出しで複数のテーブルから主キーを返すことはできません。
SQLProcedureColumns

Supported

Not Required

入力パラメータと出力パラメータの一覧、および指定されたプロシージャの結果セットを構成するカラ
ムを返します。ドライバは、指定された構文ハンドルの結果セットとして情報を返します。
SQLProcedures

Supported

Not Required

特定のデータソースに格納されているプロシージャ名の一覧を返します。プロシージャとは、実行可能なオブジェクト、つまり入力パラメータおよび出力パラメータを使用して呼び出すことができる名前付
きエンティティを表す一般的な用語です。プロシージャは、SQL の SELECT 文によって返される結果と同様の結果セットを返すことができます。
SQLSetpos

Supported

Not Required

行セット内のカーソル位置を設定し、アプリケーションによるデータのリフレッシュ、更新、削除、または行セットへの追加を可能にします。
SQLSetScrollOptions

Supported

Not Required

構文ハンドルと関連付けられているカーソルの動作を制御するオプションを設定します。
SQLSetScrollOptions を使用すると、同時実行の制御、ほかのトランザクションによって行われる変更への感度、および行セットのサイズの 3 つの分野で希望するカーソルの動作のタイプを指定することができます。
注意 :ODBC 2.0 では、SQLSetScrollOptions は、SQL_CURSOR_TYPE、SQL_CONCURRENCY、
SQL_KEYSET_SIZE、および SQL_ROWSET_SIZE の構文プションに置き換えられました。ODBC 2.0
ドライバでは旧バージョンとの互換性のためにこの関数がサポートされていますが、ODBC 2.0 アプリ
ケーションは ODBC 1.0 ドライバでのみこの関数を呼び出します。
アプリケーションによって SQLSetScrollOptions が呼び出される場合、ドライバは、
SQLGetStmtOption を使用して前述の構文プションの値を返すことができなければなりません。詳細については、「SQLSetStmtOption」を参照してください。
SQLTablePrivileges

Not Supported

Not Required

テーブルと各テーブルに関連付けられている特権の一覧を返します。ドライバは、指定された構文ハンドルの結果セットとして情報を返します。
SQLDrivers

1006

Supported

Not Required
リファレンス
Magic eDeveloper V9 PlusODBC チェックドライバユーティリティ
Supported by Driver関数

Used by Magic

ドライバの説明とドライバ属性キーワードを一覧表示します。この関数は、Driver Manager によってのみ実行されます。
SQLBindParameter

Supported

Required

SQL 文内のパラメータマーカにバッファをバインドします。
注意 : この関数は、ODBC 1.0 の SQLSetParam 関数に代わるものです。

セクション 8: DML コマンドの例
このユーティリティは、選択されたデータソースへの既存の接続を使用し、szSqlStr
フィールドに SQL コマンドを持つ SQLExecDirect 関数を送信します。
各コマンドの後、ログにコマンドが成功したかどうかが記録されます。
テーブルとインデックスは、実際はデータソースがアクセスするデータベースから作成
およびドロップされます。
CREATE TABLE T11025 （FLD1 CHAR（1）, FLD2 CHAR（1））**** Succeeded ****
CREATE UNIQUE INDEX I11025 ON T11025 （FLD1）**** Succeeded ****DROP INDEX I11025 ON T11025**** Succeeded ****DROP TABLE T11025**** Succeeded ****
ユーティリティは、SQLDisconnect 関数を使用してデータソースから切断します。
******* Disconnected Successfully ... ************************************************************

リファレンス
Magic eDeveloper V9 Plus

1007

第 25 章 - SQL に関する考慮事項［このページは意図的に空白にしています。］

1008

リファレンス
Magic eDeveloper V9 Plus

改訂履歴
第２版
章

ページ

改訂内容

2

31

［システムログオン］の説明を変更

98［LDAP サーバへの接続］の説明を削除

688［Active ディレクトリによる認証方法］を追加

689［LDAP サーバによる認証方法］を追加

章

ページ

改訂内容

1

2

［オンラインドキュメント］を追加

2

25［CTL 特性］を追加

41［ロック前にトランザクション開始］の説明を修正

59108

以下のパラメータを追加

13

第３版

［SSL CA 証明書ファイル］［SSL クライアント証明書ファイル］［SSL CA 証明書パスワード］

63
109

以下のパラメータを追加［ブラウザクライアント方式］［ブラウザクライアント環境エラー URL］

64

以下のパラメータを追加［フォアグラウンドでのコンテキスト管理］

113

以下のパラメータを追加
SpecialSingleItemRadio

113［Interface_Builders］セクションを追加

114

以下のパラメータを追加
CheckPicInherit3122［データ項目］の章の内容を［モデル］の章にマージした

136［保存データ］を削除して、［リモートホスト］を追加

138

以下のパラメータを追加［選択項目リスト］［選択表示リスト］

6

ａ

146

［分割子ウィンドウ］を追加

146［分割］セクションを追加

219［コンテキストの保持］を追加

227［遅延トランザクション内での埋め込み SQL］の説明を追加
Magic リファレンス
Magic eDeveloper V9 Plus

章

7

8

ページ

改訂内容

235

［フォームのコンセプト］の章の内容をマージして［フォームテーブル］に追加
した。

307

［ファントムタスクの呼び出し］の説明を追加

307［Call UDP のパラメータ例］の説明を追加

337［XML ネームスペース］の説明を追加

376

以下の関数を追加
ClientCertificateAdd
ClientCertificateDiscard

384

CtxClose 関数を追加

384

CtxGetId 関数を追加

448

MTblSet 関数のパラメータを追加

472

SplitterOffset 関数を追加

480

UserDel 関数を追加

491

以下の関数を追加
WSAttachmentAdd
WSAttachmentGet499

以下の関数を追加
XMLGetAlias
XMLInsert
XMLModify
XMLSetNS

9526［分割子ウィンドウ］の追加

527［分割］セクションの追加

529［GUI 表示コマンド］の説明を修正

530［フォームのコンセプト］に記載されていた以下の説明を追加［コントロールの Z オーダ］
［コントロールの親子リンク］［チョイスコントロールによる親子リンク］535［［選択項目リスト］と［表示項目リスト］］の説明を追加

536［チェッカーメッセージ］の説明を追加

545
558
568
578
569

［表示項目リスト］［選択モード］の説明を修正

11［エラー処理］の章の内容をマージ

12［エンドユーザメニュー］の章と［エンドユーザヘルプ］の章を同じ章にした。

13

688

［HTTP 認証］の説明を追加

15

707

［MGItemSequential］の説明を追加
XCG の仕様変更に伴い全面改定

17
19

ｂ

以下のパラメータを追加［選択項目リスト］（［ラベル］から変更）

802［XSD データタイプ］の説明を追加

Magic リファレンス
Magic eDeveloper V9 Plus

章

ページ

改訂内容

809
809

Range パラメータの説明を修正

810

スイッチに OverwriteTarget パラメータを追加

814

グローバルパラメータとして以下を追加
MG_CurrentObject
MG_CurrentObjectISN
MG_CurrentObjCheckedOut
MG_CurrentRepository
MG_TeamDev
MG_ToolEntry

815［モニタユーティリティ］の説明を追加

824

キーワードを追加

874［MRB のエラーメッセージ］の説明を追加

878

Mgreq.ini のパラメータとして［HttpSigVars］を追加

章

ページ

改訂内容

2

83

［DBMS の設定／分離レベル］の説明を修正

110［MagicSpecials］セクションのパラメータを追加

20

第４版

MergeFlushSize
SpecialAccessPhantomByHandler
SpecialDefaultTransactionMode
SpecialTrimTrailingNulls
SpecialSoapXmlHeader

114［dbMAGIC］セクションのパラメータを追加
As400Set
EnableRefreshAction
GetDefPrintModePreviewFactorRoundDown
ModalIsFloating
NoDocumentName
ShowItemSymbolSelectWriteCheckerLog
ZoomFix

20878

Mgreq.ini のパラメータの説明の修正
HttpSigvars

ｃ

21

911

「SNMP サポート」の説明を全面修正

25

961

Oracle ゲートウェイのパラメータ名を変更

Magic リファレンス
Magic eDeveloper V9 Plus

第5版
章

ページ

改訂内容

1

8

［MDI クライアントの縁の表示］を追加

264［ブラウザクライアントネットワーク復旧タイムアウト］を追加

77［フィルタ］を追加

109［MAGIC_ENV］セクションを追加

111 〜［MAGIC_SPECIALS］セクションのパラメータを追加
Special3DstyleSpecialDynamicContextMenu
SpecialFlat2DCombo
SpecialNoCheckIndexInDeferred

114［Interface_Builders］セクションのパラメータを追加
XCG_RECURSION_LIMIT

3140［ツリー表示を保持］パラメータを追加

141［クリックでパーク］パラメータを追加

144

以下のパラメータを追加［テーブル色の指定］［交互表示色］［ハイライト行のスタイル］［ハイライト行の色］［下辺の間隔］

5

6

7

8

146

［デフォルトボタン］パラメータを追加

146［分割スタイル］パラメータを追加

183［強制終了］に「R= 編集」を追加

204［フロー］欄の説明を修正

207［ハンドラ内でのフロー制御］を追加

217［ショートカットメニュー］の説明を修正

254［強制終了］の説明を修正

278 〜［エラー］の説明を修正

329［ビュー再表示］イベントのパラメータ指定 を追加

339 〜［XML 関数］の説明に関数（XMLSetEncoding、XMLGetEncoding）を追加
CDATA セクションの説明を追加

355 〜

以下の関数のパラメータを修正
EvalStrInfo
MailConnecttｄMagic リファレンス
Magic eDeveloper V9 Plus

章

ページ

改訂内容

355 〜

以下の関数を追加
Blob2Req
FileListGet
IsFirstRecordCycle
MainLevel
OSEnvGet
OSEnvSet
SharedValPack
SharedValUnpack
XMLGetEncoding
XMLSetEncoding

9526［入力］セクションに［デフォルトボタン］を追加

527［分割］セクションに［分割スタイル］を追加

543［ツリーコントロールでのドロップ］を追加

546

ラジオボタンコントロールの［色］特性の説明を修正

551 〜

テーブルコントロールの［表示］セクションの説明を追加／修正

560

タブコントロールの［色］特性の説明を修正

570

リストボックスコントロールの［色］特性の説明を修正

576 〜

プッシュボタンコントロール［ボタンスタイル］特性に「T= イメージ上のテキスト」を追加［クリックでパーク］特性を追加

579

コンボボックスコントロールの［色］特性の説明を修正

585

チェックボックスコントロールの［色］特性の説明を修正

591

ツリーコントロールの［ツリー表示を保持］特性を追加

594［サポートするイメージフォーマット］を追加

706［フォームへの ActiveX コントロールの配置］を追加

707［OLE 項目と OLE と定義された BLOB 項目］を追加

715［パラメータ／戻り値］ダイアログを追加 s

18

753

objectLoadMT 関数を追加

19

813

［アプリケーションのオブジェクト一覧を出力］を追加

825 〜

以下のキーワードを追加

15

MDL_DSP_SPLIT_WINDOW_CHILDMDL_DSP_DEFAULT_BUTTON

827 〜

ｅ

MDL_FRM_KEEP_TREE_VIEW

Magic リファレンス
Magic eDeveloper V9 Plus

章

ページ

改訂内容

851 〜

CHILD_WINDOWCHILD_WINDOW_EXP
SPLIT_WINDOW_CHILDSPLIT_WINDOW_CHILD_EXP
DEFAULT_BUTTONHLSTYLE
HLCOLORHLCOLOR_EXP
KEEP_TREE_VIEW
KEEP_TREE_VIEW_EXP
HLSTYLE
HLCOLORHLCOLOR_EXP
KEEP_TREE_VIEW
KEEP_TREE_VIEW_EXP

20

867 〜

MGRB.ini のパラメータを追加
EnableFilters
Filters
AllowReserve
ActivityLog

873［リクエスタのフィルタ機能］を追加

876 〜

Mgreq.ini のパラメータを追加
FilterCloseWaitTimeout

22

ｆ

921 〜

EJB インタフェースビルダの変更に伴い説明を修正

931［PropagatePrincipal］の追加

933
934

［Java オブジェクトを渡すための設定］を追加

936［EJB リクエスト証明書へのアクセス］を追加

Magic リファレンス
Magic eDeveloper V9 Plus

索引A
ABS 関数 355
ACOS 関数 355
ActiveX 124
ActiveX コントロール 706
Active ディレクトリ 31
ActivityLog 870
AddDate 関数 355
AddTime 関数 355
AllowReserve 870
AltMessagingServer 876
ANSI2OEM 関数 356
Appl 878
ASC 関数 356
ASIN 関数 356
ASte 関数 356
ATAN 関数 357
AutoLoad 869
AutoLoopBack 878
AverageProcessTime 914
AverageWaitTime 914

B
Blb2File 関数 357
Blob2Req 357
BlobFromBase64 関数 358
BlobSize 関数 358
BlobToBase64 関数 358
BOM 関数 358
BOY 関数 358
BrokerPort 868
BrokerTimeout 877
BufGetAlpha 関数 358
BufGetBit 関数 360
BufGetBlob 関数 360
BufGetDate 関数 361
BufGetLog 関数 361
BufGetNum 関数 361
BufGetTime 関数 362
BufGetVariant 関数 362
BufGetVector 関数 363
BufSetAlpha 関数 363
BufSetBit 関数 364
BufSetBlob 関数 364
BufSetDate 関数 365
BufSetLog 関数 365
BufSetNum 関数 366
BufSetTime 関数 366
BufSetVariant 関数 367
BufSetVector 関数 367

C
CallDLL 関数 368

リファレンス
Magic eDeveloper V9 Plus

CallDLLF 関数 368
CallLDLLS 関数 369
CallLJS 関数 369
CallOBJ 関数 369
CallProg 関数 370
CALLPROGURL 370
CallURL 関数 371
CASE 関数 371
CDATA セクション 340
CDOW 関数 371
CHeight 関数 372
ChkDgt 関数 372
CHR 関数 373
Cipher 関数 373
CLeft 関数 374
CLeftMDI 関数 374
ClickCX 関数 374
ClickCY 関数 375
ClickWX 関数 375
ClickWY 関数 375
ClientCertificateAdd 関数 376
ClientCertificateDiscard 関数 376
ClipAdd 関数 377
ClipRead 関数 377
ClipWrite 関数 377
ClosePrintedTablesInSubtasks 110
CloseWaitTimeout 879
ClrCache 関数 377
CMonth 関数 378
CndRange 関数 378
CodePage 関数 378
COMError 関数 379
COMHandleGet 関数 379
COMHandleSet 関数 379
CommTimeout 868, 877
Community 913
COMObjCreate 関数 380
COMObjRelease 関数 380
CompressBrowserXML 110
COS 関数 381
Counter 関数 381
CRC 関数 381
CTop 関数 382
CTopMDI 関数 382
CtrlGoto 関数 382
CtrlHWND 関数 383
CtrlName 関数 383
CtxClose 関数 384
CtxGetId 関数 384
CtxKill 関数 385
CtxLstUse 関数 385
CtxNum 関数 385
CtxProg 関数 385
CtxSize 関数 386
CtxStat 関数 386
CurRow 関数 386
CurrPosition 関数 386
CWidth 関数 387

ｇ

D

E

Date 関数 387
Day 関数 387
DB2 UDB 964
DbCache 関数 387
DbCopy 関数 388
DbDel 関数 388
DbDiscnt 関数 389
DbERR 関数 389
DbExist 関数 390
dbMAGIC_ENV 114
DBMS テーブル2 相コミット 80
ID 81
NULL 81
パラメータ 81
設定欄 80
排他 TRN 81
浮動小数点 81
名前 80
DBMS 特性 81
DBMS の設定
照合順序ファイル 83
ログの設定
ログレベル 82
ログ名 82
同期設定 82
DbName 関数 390
DbRecs 関数 391
DbReload 関数 391
DbRound 関数 392
DbSize 関数 392
DDEBegine 関数 393
DDEEnd 関数 393
DDEGet 関数 394
DDEPoke 関数 395
DDERR 関数 396
DDExec 関数 396
DDE（動的データ交換） 336
DeCipher 関数 397
DefHtml 878
DefPath、DefName 877
Del 関数 398
Delay 関数 398
DelayServiceStart 869
DelayThresholdTraps 914
DiscSrvr 関数 398
DOW 関数 398
DragSetCrsr 関数 399
DragSetData 関数 399
DropFormat 関数 400
DropGetData 関数 400
DropMouseX 関数 401
DropMouseY 関数 401
DStr 関数 402
DVal 関数 402

EditGet 関数 402
EditSet 関数 403
EJB 921
EJB リクエスト証明書 936
EnableAgent 913
EnableFilters 869
EnableTraps 913
EnginesPriority 868
EOF 関数 404
EOM 関数 404
EOP 関数 404
EOY 関数 405
ERRDATABASENAME 関数 405
ERRDBMSCODE 関数 405
ERRDBMSMESSAGE 関数 405
ERRMAGICNAME 関数 405
ERRPOSITION 関数 406
ERRTABLENAME 関数 406
EUROCNV 関数 406
EURODEL 関数 407
EUROGET 関数 407
EUROSET 関数 407
EUROUPD 関数 408
EVALSTR 関数 408
EvalStrInfo 409
ExceptionMessageBoxDisplay 110
EXP 関数 409
EXPCALC 関数 410

リファレンス
Magic eDeveloper V9 PlusF
FILE2BLB 関数 410
FILE2OLE 関数 410
FILE2REQ 関数 411
FILEDLG 関数 411
FileListGet 411
FILL 関数 412
Filter 879
Filters 109
FIX 関数 412
FLIP 関数 412
FLOW 関数 412
FLWMTR 関数 413

G
Gateway 876
GeneralErrorLog 109
GETLANG 関数 413
GETPARAM 関数 414
GROUPADD 関数 414
GUI 表示コントロール特性
OLE クラス 574
OLE フレームタイプ使用 575
OLE 形式 574
ソーステーブル 535
GUI の拡張 5ｈH
HAN 関数 415
HANDLEDCTRL 関数 415
Handles 879
HITZORDR 関数 415
HOUR 関数 415
HSTR 関数 416
HTML スタイルテーブル
設定欄 97
HTML テンプレートファイル 622
HTML フォーム 598
HTML ヘルプ 670
HTML マージコマンド 622
HTML マージコマンドテーブル
ハイパーリンク 621
Http Vars 878
HTTPGET 関数 416
HTTPLASTHEADER 417
HTTPPOST 関数 417
HttpSigVars 878
HVAL 関数 418

I
IDLE 関数 418
IF 関数 419
IFRAME コントロール
ツールチップ 524
デフォルトクラス 524
デフォルトスタイル 524
可視 524
高さ 524左辺位置 524
上辺位置 524
幅 524
ImportCreateErrHandler 110
INIGET 関数 419
INIGETLN 関数 420
INIPUT 関数 420
INS 関数 421
INSTR 関数 421
INTRANS 関数 422
IOCOPY 関数 422
IOCURR 関数 422
IODEL 関数 422
IOEXIST 関数 423
IOREN 関数 423
IOSIZE 関数 424
ISDEFAULT 関数 424
IsFirstRecordCycle 425
ISNULL 関数 425

JJ2EE 921
J2EE の用語 921
Java オブジェクト 933, 934
JCDOW 関数 426
JGENGO 関数 427

リファレンス
Magic eDeveloper V9 PlusJMONTH 関数 428
JNDOW 関数 428
JYEAR 関数 429

K
KBGET 関数 429
KBPUT 関数 429
KeepAlive 877

L
LASTPARK 関数 430
LDAP 31LEFT 関数 431
LEN 関数 432
LEVEL 関数 432
LIKE 関数 433
LINE 関数 433
LMCHKIN 関数 433
LMCHKOUT 関数 434
LMUVSTR 関数 434
LMVSTR 関数 434
LOCK 関数 435
Log 870, 880
LOG 関数 435
LOGON 関数 435
LOWER 関数 436
LTRIM 関数 436

M
Magic によるデータビューの準備処理 187
Magic の 14 個の処理コマンド 185
MAGIC.INI ファイル
サーバ情報の保存 102
MAGIC.INI ファイル
フォーマット 101
MAGIC_ENV 109
MAGIC_MESSAGING_GATEWAYS 880
MAGIC_SPECIALS 109
Magic コンポーネント 4
Magic の主な機能 3
Magic リポジトリでカーソルを移動する 11
MAILBOXSET 436
MAILCONNECT 関数 437
MAILDISCONNECT 関数 438
MAILERR 関数 438
MAILFILESAVE 関数 438
MAILLASTRC 439
MAILMSGBCC 関数 439
MAILMSGCC 関数 439
MAILMSGDATE 関数 439
MAILMSGDEL 関数 439
MAILMSGFILE 関数 440
MAILMSGFILEs 関数 440
MAILMSGFROM 関数 440
MAILMSGHEADER 関数 440
MAILMSGID 関数 440
MAILMSGREPLAYTO 関数 440
MAILMSGSUBJ 関数 441ｉMAILMSGTEXT 関数 441
MAILMSGTO 関数 441
MAILSEND 関数 441
MainLevel 442
MAX 関数 442
MAXMAGIC 関数 443
MaxUploadKB 878
MDATE 関数 443
MDIClientEdge 109
MDI クライアントの縁の表示 8
MergeFlushSize 110
MergeTrim 111
MessagingServer 876
MethodCall 756
MID 関数 444
MIDV 関数 444
MIN 関数 444
MINMAGIC 関数 445
MINUTE 関数 445
MLSTRANS 関数 445
MMCLEAR 関数 445
MMCount 関数 446
MMCURR 関数 446
MMSTOP 関数 446
MNUCHECK 関数 446
MNUENABL 関数 446
MNUNAME 関数 447
MNUSHOW 関数 447
MONTH 関数 448
MRB_ENGINE_CLIENTS_MAP 871
MRB_EXECUTABLES_LIST 871
MRB_REMOTE_EXECUTABLES_LIST 871
MRB のエラーメッセージ 874
MSTR 関数 448
MVAL 関数 450

N
NDOW 関数 450
NMONTH 関数 451
NMSAddress 913
NULL 関数 451

O
ObjectList 813
objectLoad 752
objectLoadMT 753
objectRelease 753
OEM2ANSI 関数 451
OLE 124
OLE と定義された BLOB 項目 707
OLE 項目 707
OSEnvGet 451
OSEnvSet 452
OWNER 関数 452

P
PAGE 関数 452
PasswordQuery 869

リファレンス
Magic eDeveloper V9 Plus

PasswordSupervisor 868
PPD 関数 453
PREF() 関数 453
PreviewFactorRoundDown 116
Priority 877
PROG 関数 453
PROGIDX 関数 454
PropagatePrincipal 931
PropGet 754
PropSet 755

R
RAND 関数 454
RANGE 関数 454
Reload 869
REP 関数 455
ReportStatusCode 914
REPSTR 関数 455
REPV 関数 455
REQUESTER_ENV 876
RequesterTimeout 877
RESMAGIC 関数 455
RetryMainTime 879
RIGHT 関数 456
RIGHTADD 関数 456
RIGHTS 関数 456
ROLLBACK 関数 457
ROUND 関数 457
RQCTXTRM 関数 458
RQEXE 関数 459
RQHTTPHEADER 関数 459
RQLOAD 関数 460
RQQUEDEL 関数 460
RQQUELST 関数 460
RQQUEPRI 関数 461
RQREQINF 関数 461
RQREQLST 関数 462
RQRTAPP 関数 462
RQRTAPPS 関数 463
RQRTCTX 関数 464
RQRTCTXS 関数 465
RQRTINF 関数 458, 463
RQRTS 関数 465
RQRTTRM 関数 465
RQSTAT 関数 466
RTRIM 関数 467
RUNMODE 関数 467

S
SECOND 関数 468
SecureBrowserClient 111
Server Timeout 868
SETCRSR 関数 468
SETLANG 関数 469
SETPARAM 関数 469
SharedValPack 470
SharedValUnpack 470
ShowItemSymbolSelect 116ｊSIN 関数 471
SNMP データベース接続しきい値 914
SNMPNotify 関数 915
SOAP サーバリクエスト 884
SOUNDX 関数 471
Special3Dstyle 111
SpecialAccessPhantomByHandler 111
SpecialAffinity 879
SpecialCenteredFloatingWindow 111
SpecialConvAddSlash 112
SpecialDefaultTransactionMode 112
SpecialDynamicContextMenu 112, 217
SpecialFlat2DCombo 112
SpecialLockVersion 112
SpecialNoCheckIndexInDeferred 112
SpecialPaintFormInCreate 113
SpecialSoapXmlHeader 113
SplitterOffset 関数 472
SSL CA 証明書ファイル 59
SSL クライアント証明ファイル 60
SSL クライアント証明書パスワード 60
STAT 関数 472
STR 関数 472
STRTOKEN 関数 473
STRTOKENCNT 関数 473
Supervisor 672
SYS 関数 474

T
TAN 関数 474
TDEPTH 関数 474
TERM 関数 475
TEXT 関数 475
THIS 関数 475
TIME 関数 475
TRANSLATE 関数 476
TRANSMODE 関数 476
TRIM 関数 477
TSTR 関数 477
TVAL 関数 477

U
UDF 関数 478
UDFF 関数 478
UDFS 関数 478
UPPER 関数 479
USER 関数 479
USERADD 関数 480
UserDel 関数 480
Username、Password 877

V
VAL 関数 481
VARATTR 関数 481
VARCURR 関数 481
VARCURRN 関数 482
VARDBNAME 関数 482

リファレンス
Magic eDeveloper V9 Plus

VARINDEX 関数 486
VARINP 関数 486
VARMOD 関数 486
VARNAME 関数 487
VARPIC 関数 487
VARPREV 関数 487
VARSET 関数 488
Version 913
VIEWMOD 関数 490

W
WINBOX 関数 490
WINHWND 関数 491
WriteCheckerLog 116
WSAttachmentAdd 関数 491
WSAttachmentGet 関数 492
WSDL アシスト 310

X
XCG_RECURSION_LIMIT 114
XML 737
XML ネームスペース 337
XML 関数 339
XMLBlobGet 339
XMLCnt 339
XMLCNT 関数 493
XMLDelete 339
XMLDelete 関数 494
XMLExist 339
XMLEXIST 関数 495
XMLFind 340
XMLFIND 関数 497
XMLGet 340
XMLGetAlia 340
XMLGetAlias 関数 499
XMLGetEncoding 340, 499
XMLGET 関数 498
XMLInsert 339
XMLInsert 関数 500
XMLModify 339
XMLModify 関数 502
XMLSetEncoding 339, 504
XMLSetNS 339
XMLSetNS 関数 504
XMLStr 340
XMLVal 340
XSD データタイプ 802

Y
YEAR 関数 506

Z
ZEN 関数 506
ZENS 関数 506
ZIMEREAD 関数 506
ZKANA 関数 507

ｋあアイコンファイル名 217
アクション 234
アクセスキー 687
アクセスモード 945
後処理ハンドラ 179
アプリケーション 960
CTL ファイル 23
アプリケーションエンジン 186
アプリケーションサーバ関数 344
アプリケーションデータテーブルへのアクセスの制限 687
アプリケーションテーブル
データベース 23
テーブル CTL ファイル 23
識別子 22
名前 22
アプリケーションのセキュリティ 672
アプリケーションのドキュメント 781
アプリケーションの移植 781
アプリケーションの再構築 781
アプリケーションの新規作成 21
アプリケーションパーティショニング 896, 908
アプリケーション特性 24
MVCS 無効 24
アクセスキー 24
フラットファイルで実行 24
圧縮 24
アプリケーションファイル 23
アンチェック 956

い
位置指示記号 126, 131, 132, 133
一時テーブル 985, 986
位置付 277, 325
位置付け可 228
イベントハンドラ 539
イベント可 215
イベント駆動エンジン 4
イメージ
型 522
イメージコントロール 522, 533, 537
ツールチップ 523
可視 523
高さ 523左辺位置 523
上辺位置 523
幅 523
有効 523
イメージフォーマット 594
イメージプッシュボタン 536
イメージ上のテキスト 576
イメージプッシュボタンコントロール 536
色 514
色属性 631
印刷スタイル 630
印刷プレビュー 250

リファレンス
Magic eDeveloper V9 Plus

印刷方向 250
インストール 867
インタフェースタイプ 238
インタフェース関数 347
インデックス 215, 289
SQL 特性 168
降順 167
重複可 166
重複不可タイプ 166
昇順 167
インデックスセグメントテーブル 166
インデックステーブル 165
インデックスの定義と使用 970
インデックス最適化可 229
インデックス特性
DBMS インデックス識別子 168
オプティマイザのヒント 168
クラスタ化インデックスエントリのソート 168
データベースまたは Magic に対して定義されたイ
ンデックス 168
データベース依存情報 168
再作成 169
範囲処理モード 167
方向 167
インデックス変更可 228うウィンドウ再表示 230
ウィンドウ消去 229
ウィンドウ表示 229
ウェイト 326
埋め込み SQL 221
埋込み SQL 638

えエスケープ文字 135
エディットコントロール 513, 535
エディットコントロ−ル 514
エディットコントロール 535
エラーハンドライベント 648
スコープ 653
レベル 648
処理 653
詳細
メッセージ 652
対応 649伝播 653
有効 653
エラーメッセージ 278
エラー情報 653
エラーハンドラ 5
作成 648エンジンレベル 173
エンドユーザによる画面での操作 190

おオープン 245ｌオープンファイルトレースファイル 797
大文字 / 小文字の区別 134
オブジェクト一覧 813
オンラインタスク 194
オンラインタスクでのレコードループ 199
オンラインタスク用フォーム 236

かカーソル 987
外部キーセグメント 170
外部キーテーブル 169
書出 285
書出トランザクション 642
可視 514, 515
型 123, 513, 516
下辺の間隔 144, 552
カラム
NULL デフォルトの定義 163
NULL デフォルト値の設定 163
NULL 値の追加 162
NULL 文字列の表示 163
SQL 特性 164
サイズと定義 164
フィールドの属性 160
フィールドモデル 160
フィールド属性 160
更新形式 164
有効値としての NULL 162
カラムテーブル 159
環境設定 30
関数 345, 443, 752, 908
関数一覧 342

き
キー操作のシミュレート 429
キーボード 43
キーボード割付
アクションの例 72
ステータス 71
キーボード割付テーブル 72
アクション 73
キー 73
ステータス 73
設定欄 73
キーボード割付テーブルで行った変更の保存 74
キーワード 822
CTL 特性 837
DB テーブル 841
Frame 860
OS コマンド 849
SQL Where 句 844
SQL コマンド 843
Top 860
アクションコマンド 848
イベントテーブル 842
イベント実行 850
インデックスセグメントテーブル 832
インデックステーブル 832

リファレンス
Magic eDeveloper V9 Plus

エディットコマンド 849
エラーコマンド 845
カラムテーブル 830
コントロール 854
コンポーネントイベント 835
コンポーネントテーブル 834
コンポーネントプログラム 834
コンポーネントヘルプ 834
コンポーネントモデル 834
コンポーネントリポジトリ 833
コンポーネント権利 834
コンポーネント特性 833
コールコマンド 846, 847
セレクトコマンド 845
タスク制御 839
タスク特性 839
データ出力 848
データ入力 849
テーブルリポジトリ 829
パラメータ 847
ハンドラテーブル 844
フォーム 854
フォームテーブル 850
プルダウンメニュー 836, 837
プログラムテーブル 838
ブロックコマンド 846
ヘルプフォーム 835
ヘルプリポジトリ 835
マージパラメータ 848
モデルリポジトリ 824
外部キー 833
外部キーセグメント 833
権利リポジトリ 836
項目更新コマンド 848
式テーブル 842
処理テーブル 844
入出力テーブル 841, 842
変数項目テーブル 840
キーワードパラメータ
Blank 823
File 823
Short/Long 823
Wrap 822
記憶形式 125
既存レコード 189
機能指示記号 126, 127, 128, 130
書式指示記号 131
基本関数 340, 342
基本色テーブル
サンプル 67
基本色定義ダイアログ 67
設定欄 66
前景、背景 67
名前 66
基本色テーブルで行った変更の保存 68
キャッシュ 246, 645, 646
テーブル 156
キャンセル確認 231
旧バージョンからのリポジトリ入力 665ｍ強制的なロック 966
行 249
強制 MVCS 設定キー 29, 683
強制レコード後処理 231
共有 245
共有モード 945

く区切り文字 322
区分 237
クラス 237
クラスタイプ 120
コントロールモデル
文字型 121
フォームモデル 121
ヘルプモデル 121
項目モデル 120BLOB 120
メモ型 120
時刻型 120数値型 120
日付型 120
文字型 120
論理型 120
繰返し行数 512
クリックでパーク 576
グループハンドラレベル 178
グループレベル 179, 196, 635
グループ前処理 174
ループ後処理 175
グローバルキーワード 823
クロスリファレンスユーティリティ 773
クロスリファレンス 17

け
計算方法 ( 計 ) 315
結合 285
言語テーブル
設定欄 93
言語変換ファイルの作成 94
多言語システムの使い方 94
変換ファイル 93
名前 93
検索と置換 777
検証ハンドラ 179
権限リポジトリ 673
キー 674
公開 674
名前 674
権利の登録制限数 673
権利関数 345
権利設定 676

こ子ウィンドウ 238
公開プログラム名 210
公開権利アクセスキー 682
交互表示色 144, 551

リファレンス
Magic eDeveloper V9 Plus

更新レコードの識別 246, 940
更新／削除ステートメント 638
更新確認 231
項目 251, 295
項目のシンボル名 315
項目モデル特性 135
NULL 特性 137
コントロールに関連するツールチップ 136
コントロールに関連するヘルプ画面 136
コントロールに関連する自動ヘルプ 136
スタイル 137
モデル 135
起動モード 136
実行モードでのプログラム選択 136
書式 135
詳細 135値の範囲 135
入力 136
表示 136
項目関数 352
項目名 252
コール 297, 299, 302
コール Web サービス 308
コールコマンド 302, 305
コールタイプ 302, 303, 306, 308
コール前のレコード未更新への対応 639
コマンドラインオプション 102
MAGIC.INI との関係 104
アプリケーションの起動 104
詳細 103
動作環境ダイアログとの関係 105
例 103
コンテキスト 951
コンテキストメニュー 658
コンテキスト変数
Cookie を使用 603
ドメイン制限 603
パラメータ 603
設定 603
日付制限 603
保護チャネル 604
コンテキストの保持 219
コントロールモデル特性 138
コントロールレベル 179, 195
コントロール検証 195
コントロール検証処理 174
コントロール後処理 174
コントロール処理レベル 176
コントロール色 514
コントロール前処理 174
コントロール変更 195
コントロール変更処理 175
コンボボックス
ラベル 521
コンボボックスコントロール 533
コンポーネントの削除 694
コンポーネント 692, 693, 694, 695, 696, 697
CTL ファイル 695
アプリケーションデータベース 695ｎキー値 696
フラット CTL 695
ヘルプファイル 696
レビジョン 695
即時有効 695
コンポーネントの権利設定 680
削除 680
修正 680
照会 680コンポーネントの追加 700
コンポーネントビルダ 697, 698, 699, 700
特性 699コンポーネントビルダテーブル 698
コンボボックス
ツールチップ 521
ヘルプ画面 521
可視 522型 521
高さ 522
左辺位置 522
自動ヘルプ 521
修正許可 521
上辺位置 522
色 521
必須入力 521
幅 522
有効 522
コンボボックスコントロール 521

さサーバテーブル
サーバアドレス 75
サーバタイプ 75
サーバ特性 75
設定欄 75
名前 75
サーバ上でのフローモニタ 787
サービステーブル
サーバ 77
リモートアプリケーション 77
設定欄 76
名前 77
サービス特性 77
パスワード 77
フィルタ 77
ユーザ名 77
最終更新日 210, 211
サイズ 252
削除可 228
サブフォーム 510
差分更新 944
左辺位置 514
算術演算子 335

しシークレット名テーブル 686
式 234, 246, 249, 279, 295
式評価イベント 176

リファレンス
Magic eDeveloper V9 Plus

式の識別番号 313, 315
識別番号 302, 303, 306, 321, 326
システムイベント 176
実行モードでのロック 949
実行時における印刷属性 632
実行時のメニューのアクセス権 680
指定日付 100
自動ヘルプ 514, 515, 666, 668
自動的にリトライ 649
修正 189
修正モード
登録モードへの切替 189
修正モードから切り替え 189
修正可 228
修正許可 513
終了 213
順 252, 289
循環入力 231
上辺位置 514
照会 189
照会モード 190
照会モード位置付け 973
照会モード位置付け可 229
照会可 228
条件 293, 298, 314, 317, 321, 323,

325,

327
動作環境
外部参照ファイルタブ
照合順序ファイル 56
詳細 180
常駐テーブル 156, 159
ショートキー 661
ショートカットメニュー 216
初期リンク 283
書式 125, 233, 249, 513, 516
作成時の構文規則 134
使用方法 125
書式指示記号 133
処理 181
処理コマンドテーブル 173
処理レベルテーブル 180, 261
処理コマンドと式 6
新規レコード 189
シンボル名 336

す数値関数 350
数値型項目の更新 638
スーパー権利キー 682
スーパーバーザー 672
スケーラビリティ 922
ハンドラパラメータ 180
スコープ 180
スタティックコントロール ( 四角 ) 533
スタティックコントロール ( 楕円 ) 533
スタティックテキストコントロール 532
ステーションロックファイル 960
ストアドプロシージャ 972
スナップショットファイル 954, 957ｏスライダコントロール 535
スライダコントロール（垂直） 533
スライダコントロール（水平） 533
スライダコントロール 535
寸法単位 239

せセキュリティ 922
セグメントテーブル 251
設定
DBMS 80
HTML スタイル 97
キーボード割付 71
サーバ 74
サービス 76
シークレット名 98
チェックメッセージ 98
ニュー 20ビジュアル接続 78
フォント 69
プリンタ 95
プリンタ属性 98
ユーザ ID 99
ユーザグループ 98
ログオン 99
基本色 66
言語 93
通信ゲートウェイ 79
論理名 91
設定／ DBMS 80
設定／サービス 76
セレクト 272
セレクト項目 545, 554, 558, 563, 567, 572,

575, 578, 580, 584, 588
選択テーブル 216
選択項目リスト 535
そ
ソート 972
ソートテーブル 251
ソート／一時データベース 994
ソート可 229
その他関数 353

た
他アプリ連携関数 348
ダイアログ印刷 249
第 3 世代言語のコール 758
代入 272
タイマイベント 176
高さ 514, 515
多言語サポート 93
タスク 17, 172, 211, 260, 943
サイクルレベル 192
フロー 189
タスク関数 351
タスク後処理 175
タスク後処理レベル 193

リファレンス
Magic eDeveloper V9 Plus

タスク常駐 216
タスク制御 227
タスク前処理 174
タスク前処理の前 635
タブコントロール 533
端末番号 950ちチーム開発 956
チーム開発の必須事項 956
チーム開発の有効化 954
チーム開発を有効にする 957
チェッカーメッセージ 536
チェックアウト 954
チェックアウト一覧 955
チェックイン 955
チェックボックスコントロール 533, 536
チェック結果 9
チェック時期 214
チェックボックスコントロール 518
ツールチップ 519
ヘルプ画面 519
可視 519型 518
高さ 519左辺位置 519
自動ヘルプ 519
修正許可 518
上辺位置 519
色 519
必須入力 518
幅 519
有効 519遅延トランザクション 637
遅延トランザクション内での埋め込み SQL 227
中止 316
チューニング 188
チョイスコントロール 535
コンボボックス 534
タブ 534
ラジオボタン 534
リストボックス 534

534

つ通信ゲートウェイテーブル
ID 79
タイムアウト 79
パラメータ 79
設定欄 79名前 79
ツールチップ 514, 515, 666, 670
ツリーコントロール 533, 543
ツリー表示を保持 140, 591て定義取得ユーティリティ 771
データのセキュリティ 687

ｐデータベーステーブル
DBMS 86
DB 名 86
Magic サーバ 86
位置 86
データベーステーブル特性 87
SQL 90
XA トランザクション 91
データベース情報 90
テーブルの存在チェック 91
ヒント 90
照合順序ファイル 90
配列サイズ 91
オプション 88
Magic ロック 89
インデックスチェック 89
ロックパス 89
共通データ辞書 90
定義チェック 88
ログオン 87
データベース 87
ユーザパスワード 88
ユーザ名 87
接続文字列 88
開発モードでのテーブル変換 88
データベース情報 979
データ項目の属性 123
データ出力ウィザード可 229
データ定義 545, 554, 558, 563,

テーブルの権利設定 677
削除 677
実行／ ＡＰＧ 677
修正 677
照会 677
登録 677
テーブルモード 945
テーブルリポジトリ 152
テーブルロック 966
テーブル暗号化 155, 687
テーブル共有 947
テーブル色の指定 144, 551
テーブル特性 155, 988
テーブル変換ユーティリティ 159, 798
テキスト形式プリンタ 247
デッドロックとトランザクション処理 643
デバッグ 279
デフォルトボタン 146, 526
デフォルトメニュー 659
伝搬 180と567, 572,

575, 578, 580, 584, 588
データ定義規則 964
レコードデータビュー 189
データ管理 4
データビュー 188, 189
データベース 42
データベースデフォルト値 994
データベース関数 346
データベース情報 987
テーブル
DB テーブル 154
SQL 特性 157
アクセスキー 155
インデックス 153
データベース 154
フォルダ 155
外部キー 153
更新識別 156
テーブルコントロール 523, 533, 538
ツールチップ 523
ハイライト表示 523
可視 523左辺位置 523
上辺位置 523
色 523
明細行 523
テーブルのアクセスモード 967
テーブルのロック 979
テーブルのロード 771
テーブルの共有モード 967

リファレンス
Magic eDeveloper V9 Plus

同期 644
同期処理 959
動作環境
国別設定タブ
日付タイプ 51
動作環境のセキュリティー 672
動作環境の使用権利 683
動作環境
Magic のデフォルト値 65
アプリケーションサーバタブ 60
HTTP リクエスタ 61
SSL CA 証明書ファイル 59
SSL クライアント証明書パスワード 60
SSL クライアント証明書ファイル 60
Web オーサリングツール 62
Web ドキュメントパス 61
Web ドキュメントパスの別名 61
アプリケーションサーバとして動作 60
アプリケーションサーバはアプリケーションを変更可 61
コンテキストのアンロードタイムアウト 63
コンテキスト非稼動タイムアウト 62
フォアグラウンドでのコンテキスト管理 64
ブラウザクライアントのキャッシュエイリア
ス 64
ブラウザクライアントのキャッシュパス 64
ブラウザクライアントのサブバージョン 63
ブラウザクライアントモジュールのクライア
ント配置 63
ブラウザクライアント環境エラー URL 64
ブラウザクライアント方式 63
メッセージングサーバ 60
リクエスタのタイムアウト 62
最大並行リクエスト数 62
システムタブDBMS テーブル表示 36
HTML スタイルテーブル表示 37ｑMagic 日付 32
アプリケーションテーブル表示 35
アプリケーション起動モード 33
オーナー名 31
キーボード割付テーブル表示 35
サーバテーブル表示 35
サービステーブル表示 36
システムログオン 31
スクリーンモードプロンプト 33
タスクキャッシュサイズ 34
デフォルトアプリケーション 32
データベーステーブル表示 36
パスワード入力 32
バッチイベント間隔 34
ビジュアル接続表示 36
フォントテーブル表示 35
プリンタテーブル表示 37
プリンタ属性テーブル表示 37
モニタの出力ファイル 39
モニタ起動 39
ユーザ ID 32
ライセンス 38
ライセンスファイル 38
リモートフローモニタ 39
リモートフローモニタの使用ポート 39
ログオン許可 37
一時ファイルパス 38
開発モード許可 37
外部テストツール使用 37
基本色テーブル表示 35
言語テーブル表示 36
最大ファイル数 38
修正モードでの登録許可 34
照会モードでの修正許可 34
照会モード位置付けで確認表示 34
西暦基準年 33
通信ゲートウェイテーブル表示 36
動作環境テーブル表示 35
日付入力 32
論理名テーブル表示 36
マルチユーザタブ 39
ISAM トランザクション 40
サーバ通信間隔 41
マルチユーザアクセス 39
リソースロックファイル 41
ロックファイル 41
ロック前にトランザクション開始 41
端末番号 39
外部参照ファイル
LDAP アドレス

ポート番号 59
SNMP データベース接続しきい値 58
WSDL ファイルのパス 58
メール処理タイムアウト 58
メール接続タイムアウト 58
ロードバランシングの優先度 62
外部参照ファイルタブ 53
CONST ファイル 53
HTML スタイルファイル 54ｒ

HTTP Proxy 57
HTTP タイムアウト 57
OEM から ANSI への変換ファイル 56
エンコード 56
キーボード割付ファイル 54
コマンドプロセッサ 57
セキュリティファイル 55
チェッカー用メッセージテーブルファイル

57
デフォルト言語 57
データ出力 HTML テンプレート 58
データ出力 XML テンプレート 58
ドキュメントテンプレートファイル 54
ドロップデータサポート・ユーザフォーマッ
ト 57
フォント定義ファイル 54
プリンタ属性ファイル 55
ヘルプファイル 53
ロゴファイル 53
開始時セキュリティファイル 55
基本色定義ファイル 53
通貨変換ファイル 57
国別設定タブ 51
3 桁区切り文字 52
IME の初期入力状態 52
IME を自動的にオフ 53
時刻区切り文字 52
小数点 52
日付区切り文字 52
動作設定タブ 42
GUI 実行時ツールバー 45
MAGIC.INI 常駐 45
インデント文字 47
カーソルの画面中央位置付 46
クロスリファレンスの結果の最大登録数 48
コピーライトメッセージ表示 44
コマンド処理のリトライ間隔 48
ソート／一時用ポップアップ秒数 43
タスクフロー変更 44
チェック項目の自動位置付 51
ツールチップ表示タイムアウト 48
テキスト形式互換 51
デフォルトデータベース 42
デフォルトフォント 47
デフォルト色 47
パレット結合可 49
ブックマークの最大登録数 48
ブラウザクライアントネットワーク復旧タイ
ムアウト 64
プリントキューの区切り文字 51
プルダウンメニュータイムアウト 43
フロートパレットを常に全面表示 48
メッセージのグループ化 50
メッセージの詳細表示 45
印刷中断許可 51
画像キャッシュ 50
画像キャッシュサイズ 49
最小チェックレベル 50
自動終了時確認 43

リファレンス
Magic eDeveloper V9 Plus

実行時のカスタムコピーライト 45
修正後の再位置付け 46
常駐テーブル読込 45
単一拡張パレット 49
特性シートの自動操作 49
入出力デバイスのオープンタイミング 48
範囲／位置付ポップアップ秒数 43
動作環境関数 342, 353, 354
列動作環境
外部参照ファイル
LDAP タイムアウト 59
LDAP ドメインコンテキスト 59
LDAP 接続文字 59
登録 189, 285
登録可 228
キュメントレポートセクション 821
ド キュ メン トテ ンプ レー トフ ァイ ル 818, 819,

820, 821
ドキュメントテンプレート機能 817
ドキュメントレポートセクション 821
特性シート 8特性の継承解除 512
特性の再継承 512
トラブルシューティング 993
トランザクション 964
トランザクションのメカニズム 965
トランザクションの設定 655, 656
トランザクション 941
トランザクションモード特性 634
ネスト遅延 634
親と同じ 634
遅延 634
物理 634
トランザクションをマップする 642
トランザクション開始 637
トランザクション開始特性 634
トランザクション処理 634
取消不可の更新 314

な内部 Magic イベント 176
内部トランザクション 642
内部ヘルプ 666, 667
内部ヘルプ特性
システムメニュー 667
タイトルバー 667
フォント 667
位置とサイズ 668
色 667
内容 272, 279, 315, 319, 322
ナビゲータ 7
ナビゲータペイン 7
名前 210, 233, 247に入出力フォーム 628
入出力ファイル 246
入出力ファイルへのアクセス 248

リファレンス
Magic eDeveloper V9 Plus

入出力可 229
入出力関数 348
入出力特性 250

ね
ネストトランザクション 639
ネットワークトラフィックを軽減する 972

はパーク可能 191
背景 512
排他処理 957
ハイパーテキスト
ツールチップ 517
可視 517型 516
高さ 517左辺位置 517
書式 516上辺位置 517
色 517
幅 517
有効 517
ハイパーテキストコントロール 516
ハイパーリンク 601
ハイライト行のスタイル 144, 552
ハイライト行の色 144, 552
配列のサイズSQL テーブル特性 158
パスワード 100
バックグラウンド 230
バッチタスク 194, 270
バッチタスクイベントハンドラ 178
バッチタスクでのレコードループ 200
バッファ管理 337
パラメータ 297, 298
パラメータを渡す 295, 306
パラメータ／戻り値 715
範囲 276, 313
範囲可 228
範囲定義 971
ハンドラテーブル 260
ハンドラパラメータ 180, 181
ハンドラレベル 175, 179
ハンドラ処理レベル 177
ハンドラ内でのフロー制御 207
ハンドラタイプ 180

ひビュー 990
日付／時刻関数 346
非手続き的処理 186
非表示項目 603
ビュー 993
ビュー再表示 329
ビュー 985
表示形式 326
表示項目リスト 535

ｓヒント 978, 984

ふファイル 319
ファントムタスク 301
フィールドの区切り 322
フィルタ機能 873
フォーム 5, 298, 324, 525
フォームテンプレート 241
フォームテーブル 235, 237
フォームのキーボード割付 241
フォームモデル特性 144
フォーム色 512
フォーム特性 525
フォーム名 512
フォルダ 15, 784
フォルダの出力 784
フォルダの入力 784
フォントテーブル
サイズ 70サンプル 70
フォント 69
傾き 70
設定欄 69
名前 69
フォントテーブルで行った変更の保存 71
フォント定義ダイアログ 70
複数行編集 513
複数行編集の印刷 629
復帰 279
ブックマーク 16
プッシュボタンツールチップ 518
ヘルプ画面 518
可視 518型 517
高さ 518左辺位置 518
自動ヘルプ 518
書式 517上辺位置 518
幅 518
有効 518
プッシュボタンコントロール 517, 536
ページフッタ 250
物理ロック 967, 968, 983, 991
不特定コントロール 524
ツールチップ 524
デフォルトクラス 524
デフォルトスタイル 524
マウスオーバクラス 524
マウスオーバスタイル 524
マウスダウンクラス 524
マウスダウンスタイル 524
可視 524
高さ 525左辺位置 524
上辺位置 524
幅 524

ｔ

有効 524ブラウザクライアント
サブフォーム 511
ブラウザクライアントでのフローモニタ 788
ブラウザコントロール 513
IFRAME 513
その他 513ブラウザコントロール特性 513, 515, 516, 517,

518, 519, 521, 522, 523, 524
ブラウザフォーム 510
ヘルプ画面 512
高さ 512
左辺位置 512
上辺位置 512
色 512
背景 512
幅 512
ブラウザフォーム特性 512
ブラウザ形式実行のパラダイム 4
プリンタコマンド 630
プリンタテーブル
設定欄 95
キュー 96
コマンドファイル名 96
変換ファイル 96
名前 96
プリンタの設定 629
プリンタ属性サポート 629
プリンタ属性テーブル 630
プルダウンメニュー 658
フレームセットコントロールの特性
サイズ変更 618
スクロール 618
ハイパーリンク 618
フレーム名 618
表示 618
フレームセットのコマンドパレット 616
フレームセットフォーム 614
フレームセットフォームの特性HTML 内部属性 616
コンテキスト変数 616
フォーム名 615
フレームの間隔 615
境界線の表示 615
高さ 616
相対サイズ 615
幅 616
フロー 277, 289, 293, 298, 314, 317, 320,

323, 325, 327
フローモニタのコマンド 786
フローモニタのフィルタ 786
フローモニタの特徴 787
フローモニター 785
プログラム 210
プログラムのリポジトリ入力 958
プログラムの権利設定 678
削除 678
実行／ ＡＰＧ 678
修正 678リファレンス
Magic eDeveloper V9 Plus

照会 678
登録 678
プログラムリポジトリのチェックアウト 958
プログラムリポジトリのチェックイン 958
プログラムリポジトリの修正 958
プログラム実行トレースファイル 796
プログラムチェックユーティリティ 768
ブロックコマンド 292
プロトコル 922
分割 527
分割スタイル 146
分離レベル 944

へ
並行性 939
ペインの切り替え 9
ペインの統合 9
ページヘッダ 250
ページ当りレコード件数 231
頁 319
ベクトル 124
ベクトルデータ 337
ヘルプアクション 887
ヘルプタイプ 666
ヘルプの権利設定 679
削除 679
修正 679
照会 679
登録 679ヘルプモデル特性 147
ヘルプリポジトリ 665
ヘルプ画面 512, 514, 515
編集 183, 254, 324
変数項目 232
変数特性 233

ほポップアップウィンドウ 324

まマージのパラメータ 625
前処理ハンドラ 179
マスク文字 134
マルチスレッド 906
マルチマーキング 538
マルチユーザ 950
マルチユーザ環境へのアクセス 244
マルチスレッドエンジン 5
マルチユーザ環境 6

む
無視する 652

めメインテーブル 215
メインフォーム 217
メインプログラム 697, 5, 264

リファレンス
Magic eDeveloper V9 Plus

メディア 247
メニュータイプ 659
メニューの権利設定 679
削除 679
修正 679
照会 679
登録 679
メニューの種類 658
メニューリポジトリ 658
メニュー構成 658
メニュー使用可 228
メニュー定義タイプ 660
ショートキー 661
パラメータ 661
ユーザメニュー名 661
権利設定 662
論理メニュー名 661
メニュー特性 663
イメージ場所 664
イメージ番号 665
ウェイト 664
チェックマーク 665
ツールチップ 665
パラメータ 664
ヘルプ画面 663
ボタンイメージ 664
可視 665
権利 663
自動ヘルプ 663
表示 664なし 664
最小化 664
最大化 664
表示グループ 665
有効 665
メニュー名 659
メニュー関数 443

もモーダルウィンドウ 512
モード 279
文字関数 343
文字列演算子 335
モデル 4
オブジェクトからモデルを削除する 148
継承解除 148
権利 149
作成 148
削除 148式 149
特性 121
別のモデルを選択する 148
変換ユーティリティ 149
モデルの権利設定
削除 676
修正 676
照会 676
登録 676ｕモデルリポジトリ 120
モデルリポジトリカラム 120
モデル設定 122
戻りコード 314
戻り値 290, 326
モニタユーティリティ 815

ゆ
有効 181, 514
ユーザ ID 684
ユーザ ID テーブル 684, 685
ユーザイベントテーブル 182
ユーザグループ 685
ユーザグループテーブル 686
ユーザ定義イベント 182
ユーザ定義メニュー 659
ユーザがリトライ 650
ユーティリティ 6よ
用紙サイズ 250
読込トランザクション 642

ら
ラインコントロール 533, 537
ラジオボタン 515
ツールチップ 515
ヘルプ画面 515
可視 515
高さ 516左辺位置 516
自動ヘルプ 515
上辺位置 516
色 515
必須入力 515
幅 516
有効 515り
リストボックスコントロール 519
ツールチップ 520
ヘルプ画面 520
ラベル 520可視 520型 520
高さ 521
左辺位置 521
自動ヘルプ 520
修正許可 520
上辺位置 521
色 520
必須入力 520
表示行数 520
幅 521
有効 520
リッチエディットコントロール 534
リッチテキストコントロール 533, 537ｖ

リテラル 332
ACT 332
DATE 332
ERR 333
EXP 333
FILE 333
FORM 333
KBD 333
KEY 334
LOG 334
MODE 334
PROG 334
RIGHT 334
TIME 334
VAR 334
リポジトリ入出力ユーティリティ 781, 782, 783,

784
リポジトリ 10
コマンドオプション 11
リモートフローモニタ権利 29, 683
リモートフローモニタ ( りもーと ) 788
リロード 872
リンク 283
リンクコマンド 280
リンクの種類 281
リンクの条件 282

れレコード 273
レコードアクセス失敗時 655
レコードメイン 174, 273
レコードループ
アプリケーションエンジン 193
レコードロック 949
レコードロック時 636
レコード後処理 175
レコード後処理の前 636
レコード更新前 636
レコード削除 189, 194, 231
レコード終了 194
レコード初期化処理 193
レコード前処理 174
レコード前処理の前 636
レコードループ処理 193
レコード初期化処理 193
レベル 261
処理レベルテーブル 179

ろローカルキーワード 823
ロールバック 643
ロールバックと再起動 649
ログオンダイアログ
ユーザ ID 99
設定欄 99, 100
ロック 289, 965, 993
ロックとトランザクション 966
ロックの期間 966

リファレンス
Magic eDeveloper V9 Plus

ロックファイル 951, 958
ロックファイルパス 954
ロックレベル 965
ロック方式 637, 942, 943
論理ロック 967, 968
論理演算子 335
論理名テーブル
設定欄 91
実行名 92

リファレンス
Magic eDeveloper V9 Plus

名前 92
論理名の使用方法 92
構文 92

わワークグループ開発 (MVCS) 17
ワークスペース 7
ワークスペースペイン 7ｗ

ｘ

リファレンス
Magic eDeveloper V9 Plus