IBM Informix SQL リファレンス マニュアル バージョン 7.3 GB88-8662-00
by user
Comments
Transcript
IBM Informix SQL リファレンス マニュアル バージョン 7.3 GB88-8662-00
IBM Informix SQL リファレンス マニュアル バージョン 7.3 GB88-8662-00 お願い 本書および本書で紹介する製品をご使用になる前に、付録の特記事項に記載されて いる情報をお読みください。 本書には、IBM の専有情報が含まれています。その情報は、使用許諾条件に基づき提供され、著作権により 保護されています。本書に記載される情報には、いかなる製品の保証も含まれていません。また、本書で提 供されるいかなる記述も、製品保証として解釈すべきではありません。 IBM は、お客様が提供するいかなる情報も、お客様に対してなんら義務も負うことのない、自ら適切と信ず る方法で、使用もしくは配布することができるものとします。 画面表示やユーザーインターフェースの例にはすべて英語版の出力結果を用いております。 本マニュアルに関するご意見やご感想は、次の URL からお送りください。今後の参考にさせていただきま す。 http://www.ibm.com/jp/manuals/main/mail.html なお、日本 IBM 発行のマニュアルはインターネット経由でもご購入いただけます。詳しくは http://www.ibm.com/jp/manuals/ の「ご注文について」をご覧ください。 (URL は、変更になる場合があります ) 原典 : IBM Informix SQL Reference Manual Version 7.3 発行 : 日本アイ・ビー・エム株式会社 担当 : ナショナル・ランゲージ・サポート 第 1 刷 2004.11 この文書では、平成明朝体™ W3、平成明朝体™ W7、平成明朝体™ W9、平成角ゴシック体 ™W3、平成角 ゴシック体™ W5、および平成角ゴシック体 ™ W7 を使用しています。この ( 書体 *) は、 (財)日本規格協 会と使用契約を締結し使用しているものです。フォントとして無断複製することは禁止されています。 注 * 平成明朝体™ W3、平成明朝体™ W7、平成明朝体™ W9、平成角ゴシック体™ W3、平成角ゴ シック体™ W5、平成角ゴシック体™ W7 © Copyright International Business Machines Corporation, 1996, 2002. All rights reserved. © Copyright IBM Japan 2004 ii IBM Informix SQL リファレンス マニュアル 目次 目次 序 序章について . . . . . . . . . . . 本書について . . . . . . . . . . . 本書の構成 . . . . . . . . . . 本書の対象読者 . . . . . . . . . ソフトウェア要件 . . . . . . . . ロケールについて . . . . . . . . デモンストレーション データベースおよび例 本書の表記規則 . . . . . . . . . . 文字の表記規則 . . . . . . . . . アイコンの表記規則 . . . . . . . . 関連マニュアル . . . . . . . . . . 構文の表記規則 . . . . . . . . . INFORMIX-SQL に含まれる資料 . . . . . . オンライン マニュアル . . . . . . . 役に立つオンライン ファイル . . . . . オンライン ヘルプ . . . . . . . . オンライン エラー メッセージ . . . . 参考文献 . . . . . . . . . . . 第 1 章 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 3 3 5 5 5 6 6 7 7 8 9 13 14 14 14 14 15 INFORMIX-SQL メインメニュー 本章について . . . . . . . . . . . . . . . . 19 製品の概要 . . . . . . . . . INFORMIX-SQL へのアクセス方法 . . . INFORMIX-SQL 画面 . . . . . . . メニュー画面 . . . . . . . テキスト入力画面 . . . . . . メニュー構造の全体像 . . . . . . INFORMIX-SQL メインメニュー オプション . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 20 20 20 21 23 26 . . . . . . . . . . . . . . DATABASE . . EXIT . . . FORM . . . QUERY LANGUAGE REPORT . . TABLE . . . USER MENU . 第 2 章 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 27 28 30 35 37 41 FORMBUILD トランザクション フォーム生成プログラム 本章について . . . . . . . . . . . . . . PERFORM エラー メッセージ . . . . . . . . サンプル フォーム . . . . . . . . . . カスタム フォームの作成とコンパイル . . . . . . メニュー システムを使ったフォームの作成 . . . オペレーティング システムを使ったフォームの作成 フォーム仕様ファイルの構造 . . . . . . . . DATABASE ( データベース ) セクション . . . . . SCREEN ( スクリーン ) セクション . . . . . . . ページ レイアウト . . . . . . . . . . フォームのグラフィックス文字 . . . . . . . TABLES ( 表 ) セクション . . . . . . . . . 遠隔データベース . . . . . . . . . . . 外部表とシノニム . . . . . . . . . . . ATTRIBUTES ( 属性 ) セクション . . . . . . . 表示フィールドの順序 . . . . . . . . . 表の順序 . . . . . . . . . . . . . . データベース列にリンクされるフィールド . . . . 表示専用フィールド . . . . . . . . . . 列の結合 . . . . . . . . . . . . . ATTRIBUTES の構文 . . . . . . . . . . AUTONEXT . . . . . . . . . . . . . CENTURY . . . . . . . . . . . . . . COLOR . . . . . . . . . . . . . . COMENTS . . . . . . . . . . . . . . DEFAULT . . . . . . . . . . . . . . DOWNSHIFT . . . . . . . . . . . . . FORMAT . . . . . . . . . . . . . . INCLUDE . . . . . . . . . . . . . . INVISIBLE . . . . . . . . . . . . . iv . . . . . . . IBM Informix SQL リファレンス マニュアル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 47 48 48 50 51 54 55 57 61 64 66 66 67 68 68 69 71 73 75 76 77 79 82 83 85 86 89 91 LOOKUP . . . . . . . . NOENTRY . . . . . . . NOUPDATE . . . . . . . PICTURE . . . . . . . PROGRAM . . . . . . . . . QUERYCLEAR . . . . . . REQUIRED . . . . . . . REVERSE . . . . . . . RIGHT . . . . . . . . UPSHIFT . . . . . . . . VERIFY . . . . . . . . WORDWRAP . . . . . . . ZEROFILL . . . . . . . INSTRUCTIONS ( インストラクション ) COMPOSITES . . . . . . DELIMITERS . . . . . . MASTER OF . . . . . . . コントロール ブロック . . . BEFORE . . . . . . . . AFTER . . . . . . . . EDITADD および EDITUPDATE . ADD . . . . . . . . . UPDATE . . . . . . . . QUERY . . . . . . . . REMOVE . . . . . . . . DISPLAY . . . . . . . アクションの構文 . . . . . ABORT . . . . . . . . LET . . . . . . . . . NEXFIELD . . . . . . . COMMENTS . . . . . . . IF-THEN-ELSE . . . . . . SAMPLE フォーム仕様ファイル . . 「CUSTOMER INFORMATION」画面 . 「ORDER INFORMATION」画面 . . 第 3 章 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . セクション . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 94 95 96 98 100 101 102 103 104 105 106 109 110 111 113 115 117 118 119 121 123 124 125 126 127 128 129 130 133 135 136 138 140 141 PERFORM 画面トランザクション プロセッサ 本章について PERFORM の実行 . . . . . . . . . . . . . . . . 147 . . . . . . . . . . . . . . . 147 目次 v PERFORM へのメインメニューからのアクセス . . . . . PERFORM 画面 . . . . . . . . . . . . . . . 情報行 . . . . . . . . . . . . . . . . スクリーン フォーム . . . . . . . . . . . . 状態行 . . . . . . . . . . . . . . . . PERFORM からのオペレーティング システム コマンドの実行 データの入力 . . . . . . . . . . . . . . データ型 . . . . . . . . . . . . . . . 特殊機能 . . . . . . . . . . . . . . . カーソル移動 . . . . . . . . . . . . . . フィールド編集 . . . . . . . . . . . . . マルチライン エディタの使用 . . . . . . . . . 表示フィールドの順序 . . . . . . . . . . . . データ チェック . . . . . . . . . . . . . . ユーザ アクセス権 . . . . . . . . . . . . . 現行リスト . . . . . . . . . . . . . . . . メニュー オプション . . . . . . . . . . . . . ADD . . . . . . . . . . . . . . . . . CURRENT . . . . . . . . . . . . . . . . DETAIL . . . . . . . . . . . . . . . . EXIT . . . . . . . . . . . . . . . . . MASTER . . . . . . . . . . . . . . . . NEXT . . . . . . . . . . . . . . . . . OUTPUT . . . . . . . . . . . . . . . . PREVIOUS . . . . . . . . . . . . . . . . QUERY . . . . . . . . . . . . . . . . . REMOVE . . . . . . . . . . . . . . . . SCREEN . . . . . . . . . . . . . . . . TABLE . . . . . . . . . . . . . . . . UPDATE . . . . . . . . . . . . . . . . VIEW . . . . . . . . . . . . . . . . . 第 4 章 148 150 150 152 153 154 154 154 158 158 159 161 162 163 164 165 165 166 168 169 171 172 173 174 179 180 184 185 186 187 188 ACE レポート ライタ 本章について . . 193 カスタム レポートの作成とコンパイル . . . . . . . . メニューを使用したレポートの作成 . . . . . . . . コマンド行からのレポートの作成 . . . . . . . . ACE の関連情報 . . . . . . . . . . . . . . . ACE ファイル名規則 . . . . . . . . . . . . 193 194 196 198 198 vi IBM Informix SQL リファレンス マニュアル . . . . . . . . . . . . . 所有者名の指定 . . . . . レポート仕様における式の使用 . ACE エラー メッセージ . . . サンプル レポート . . . . . レポート仕様ファイルの構造 . . DATABASE セクション . . . . . DEFINE セクション . . . . . ASCII . . . . . . . . PARAM . . . . . . . . VARIABLE . . . . . . . INPUT セクション . . . . . . PROMPT FOR . . . . . . . OUTPUT セクション . . . . . REPORT TO . . . . . . . LEFT MARGIN . . . . . . RIGHT MARGIN . . . . . . TOP MARGIN . . . . . . . BOTTOM MARGIN . . . . . . PAGE LENGTH . . . . . . TOP OF PAGE . . . . . . SELECT セクション . . . . . READ セクション . . . . . . READ . . . . . . . . . FORMAT セクション . . . . . EVERY ROW . . . . . . . コントロール ブロック . . . . AFTER GROUP OF . . . . . BEFORE GROUP OF . . . . . FIRST PAGE HEADER . . . . ON EVERY ROW . . . . . . ON LAST ROW . . . . . . PAGE HEADER . . . . . . PAGE TRAILER . . . . . . 文 . . . . . . . . . . FOR . . . . . . . . . IF THEN ELSE . . . . . . LET . . . . . . . . . NEED . . . . . . . . . PAUSE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 目次 199 199 201 201 202 204 205 206 208 209 211 212 214 215 217 218 219 220 221 222 224 227 228 231 233 236 237 240 243 245 247 248 250 252 253 254 256 258 259 vii PRINT . . PRINT FILE SKIP . . SKIP TO TOP WHILE . . 集計 . . ASCII . CLIPPED . COLUMN . CURRENT . DATE . . DAT() . . DAY( ) . LINENO . MDY( ) . MONTH( ) PAGENO . SPACES . TIME . . TODAY . . USING . . WEEKDAY( ) WORDWRAP . YEAR( ) . 第 5 章 . . . OF . . . . . . . . . . . . . . . . . . . . . . . . . . PAGE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260 262 263 264 265 266 268 270 271 272 273 274 275 276 277 278 279 280 281 282 283 293 294 295 ユーザ メニュー 本章について . . . . . . . . . . . メニューへのアクセス . . . . . . . . INFORMIX-SQL 内でのメニューの使用 . . メニューの設計 . . . . . . . . . メニューの作成 . . . . . . . . . . PERFORM (menuform フォーム ) へのアクセス メニュー データの入力 . . . . . . 独自のデータを入力するための手順 . . . メニューの修正 . . . . . . . . . メニュー表示フィールド . . . . . . . MENU NAME . . . . . . . . . . MENU TITLE . . . . . . . . . . SELECTION NUMBER . . . . . . . . viii IBM Informix SQL リファレンス マニュアル . . . . 299 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300 300 302 304 304 306 310 312 312 313 314 315 SELECTION TYPE . . SELECTION TEXT . . SELECTION ACTION . . スクリプト メニューの作成 第 6 章 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317 319 320 322 . . . . . . . . 331 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332 333 335 337 338 340 341 342 344 348 349 350 352 355 358 360 361 361 362 362 363 365 367 ACE および PERFORM における関数 本章について . . . . . . . . ACE からの C 関数の呼出し . . . . . . . . . FUNCTION . . . . . . . . . . . . . CALL (ACE において ) . . . . . . . . . PERFORM からの C 関数の呼出し . . . . . . . CALL (PERFORM において ) . . . . . . . . ON BEGINNING および ON ENDING . . . . . . C プログラムを書く . . . . . . . . . . . C プログラムを編成する . . . . . . . . . C 関数に値を渡す . . . . . . . . . . . ACE および PERFORM に値を戻す . . . . . . PEFORM ライブラリ関数 . . . . . . . . . . PF_GETTYPE() . . . . . . . . . . . . PF_GETVAL() . . . . . . . . . . . . PF_PUTVAL () . . . . . . . . . . . . PF_NXFIELD () . . . . . . . . . . . . PF_MSG() . . . . . . . . . . . . . レポートとフォームのコンパイル、リンク、および実行 cace および cperf プログラムの構文 . . . . . cace および cperf の使用 . . . . . . . . 例 . . . . . . . . . . . . . . . . ACE 例 1 . . . . . . . . . . . . . ACE 例 2 . . . . . . . . . . . . . PERFORM 例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 付録 A デモンストレーション データベースおよび例 . . . 371 付録 B 環境変数の設定 . . . . . . . . . . . . 393 付録 C 広域言語サポート . . . . . . . . . . . 407 付録 D termcap および terminfo の変更 . . . . . . 435 目次 ix 付録 E ASCII 文字セット 付録 F 予約語 . 付録 G オペレーティング システムからプログラムへのアクセス . . . . . . . . . . . . . . . . 477 付録 H 特記事項 . . . . . . . . . . . . . 489 索引 . . . . . . . . . . . . . . 493 . . . x IBM Informix SQL リファレンス マニュアル . . . . . . . . . . . 463 . . . . . . . . . . 467 序 序 序章について . . . . . . . . . . . . . . . . 3 本書について . . . . . . . . . . . 本書の構成 . . . . . . . . . . . 本書の対象読者 . . . . . . . . . ソフトウェア要件 . . . . . . . . . ロケールについて . . . . . . . . . デモンストレーション データベースおよび例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 3 5 5 5 6 本書の表記規則 . . . . . . . . . . . . 文字の表記規則 . . . . . . . . . . . アイコンの表記規則 . . . . . . . . . . 機能、製品、およびプラットフォーム アイコン . . . . . . . . . . . . . . . . . 6 7 7 8 関連マニュアル . . . . . 構文の表記規則 . . . . パスに表示できる要素 . 構文ダイアグラムの読み方 . . . . . . . . . . . . . . . . . . . . . . . . 8 9 9 11 INFORMIX-SQL に含まれる資料 . オンライン マニュアル . . 役に立つオンライン ファイル オンライン ヘルプ . . . オンライン エラー メッセージ 参考文献 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 14 14 14 14 15 . . . . . . . . . . . . . . . . . . . . . 2 IBM Informix SQL リファレンス マニュアル 序章について この序では、本書に記載された情報の概要を示し、使用する表記規則につ いて説明します。 本書について 本書は、INFORMIX- SQL を構成する機能に関する参照資料です。 INFORMIX- SQL で行えることの情報が記載されており、また、機能名ごとに編成されてい ます。「INFORMIX- SQL ユーザ ガイド」をお読みになったことがあり、 INFORMIX- SQL の基本的な事項について習得されている場合に、本書を利用 して拡張機能について学んだり、特定の情報を素早く取得したりすること ができます。 本書の構成 本書は、次の章および付録から構成されます。 Q 『第 1 章 INFORMIX-SQL メインメニュー』では、INFORMIX- SQL メイン メニューの使用方法について説明し、メニューの各オプションの内 容について記述しています。 Q 『第 2 章 FORMBUILD トランザクション フォーム生成プログラム』 では、FORMBUILD にフォーカスを当て、スクリーン フォームの作成 に必要な情報を提供しています。 Q 『第 3 章 PERFORM 画面トランザクション プロセッサ』では、 PERFORM メニュー オプションについて詳細に検討し、データの入 力、変更、削除、および検索方法について説明しています。 Q 『第 4 章 ACE レポート ライタ』では、カスタム レポートを作成す るのに ACE を用いて利用できるフォーマット機能についてリスト しています。 3 本書の構成 Q 『第 5 章 ユーザ メニュー』では、ユーザ メニュー オプションに ついて記述し、メニューの作成に必要な情報を提供しています。 Q 『第 6 章 ACE および PERFORM における関数』では、ACE レポート および PERFORM フォームから C 関数を呼び出す方法について説明 しています。 Q 『付録 A. デモンストレーション データベースおよび例』では、本 書および「INFORMIX- SQL ユーザ ガイド」で使用されているフォー ムおよびレポートの例が記載されています。 Q 『付録 B. 環境変数の設定』では、環境変数の使用方法について記 述し、INFORMIX- SQL に固有の環境変数をいくつか紹介しています。 すべての Informix 製品の環境変数に関する詳細情報については、 「Informix SQL ガイド : 参照」を参照してください。 Q 『付録 C. 広域言語サポート』では、広域言語サポート (GLS) につ いて記述し、英語以外の環境の INFORMIX- SQL でどのように使用さ れているかが記載されています。 Q 『付録 D. termcap および terminfo の変更』では、 termcap および terminfo ファイルを変更し、FORMBUILD トランザクション プロ セッサで特殊なグラフィック文字を使用する方法について記述して います。 Q 『付録 E. ASCII 文字セット』は、ASCII の表です。 Q 『付録 F. 予約語』では、すべての Informix 製品の予約語をリスト しています。 Q 『付録 G. オペレーティング システムからプログラムへのアクセ ス』では、コマンド行から各 INFORMIX- SQL プログラムにアクセス する方法について説明しています。 4 IBM Informix SQL リファレンス マニュアル 本書の対象読者 本書の対象読者 本書は、あらゆる INFORMIX- SQL 開発者を対象としています。データベース 管理の経験がなくても、あるいはリレーショナル デーベースの概念に熟知 していなくても、本書をご利用いただけます。しかしながら、SQL ( 構造化 照会言語 ) の知識と高度なプログラミング言語の経験は本書で役に立ちま す。 ソフトウェア要件 本書では、使用する Informix データベース サーバが、バージョン 7.x 以 降であることを前提としています。 バージョン 4.x、6.x、または 7.2 などの以前のバージョンの INFORMIX- SQL で開発されたアプリケーションを、本バージョンの INFORMIX- SQL で容易に 利用することができます。 ロケールについて Informix 製品は、多くの言語、地域特有の情報、およびコード セットを サポートします。 地域固有のすべての情報は、GLS ( 広域言語サポート ) ロケールと呼ばれる 1 つの環境にまとめられています。 本書に記載する例は、デフォルト ロケール en_us.8859-1 を使用すること を前提としています。このロケールでは、日付、時刻、および通貨につい て、米国英語 (U.S. English) 形式規則をサポートします。さらにこのロ ケールでは、ASCII コード セットと、é、è、および ñ などの多くの 8 ビッ ト文字を含む ISO 8859-1 コード セットをサポートします。 データ、または SQL 識別子で ASCII 以外の文字を使用する場合、または文 字データをデフォルト以外の順序で照合する場合、デフォルト以外の適切 なロケールを指定する必要があります。 デフォルト以外のロケールの指定、構文の追加、および GLS ロケールに関 するその他の情報については、 「Informix Guide to GLS Functionality」を 参照してください。 5 デモンストレーション データベースおよび例 デモンストレーション データベースおよび例 INFORMIX- SQL には、架空のスポーツ用品卸売り業者の例を含む、stores7 と呼ばれるデモンストレーション データベースが含まれています。 stores7 データベースを任意のディレクトリに作成するには、ディレクト リに移動して、次のコマンドを入力します。 isqldemo INFORMIX- SQL の資料に記載されている例の多くは、stores7 データベース を基にしています。このデータベースの詳細は、 「Informix SQL ガイド : 参 照」に記載されています。これらの例はソフトウェアと一緒にインストー ルされ、$INFORMIXDIR/demo/sql ディレクトリに置かれます。U.S. English の場合は、en_us/0333 サブディレクトリに移動します。その他の 言語の場合は、fgl ディレクトリの下の該当するサブディレクトリに移動 します。 本書の表記規則 ここでは、本書で使用する以下の表記規則について説明します。これらの 表記規則を覚えておくと、本書、および他のマニュアルの内容を理解する のに役に立ちます。以下のような表記規則があります。 Q 文字の表記規則 Q アイコンの表記規則 Q コード例の表記規則 Q 構文の表記規則 6 IBM Informix SQL リファレンス マニュアル 文字の表記規則 文字の表記規則 本書では、新しい用語、画面表示、コマンド構文などを表記するのに、以 下の規則を使用します。 表記規則 意味 KEYWORD プログラミング言語の文中では、主要な要素 ( キーワード ) は、すべて大文字のセリフ フォントで表記されます。 イタリック体 本文中では、新しい用語および強調語は、イタリック体で表記 します。構文ダイヤグラムとコードの例では、ユーザが指定す る変数値は、イタリック体で表記されます。 イタリック体 イタリック体 太文字 太文字 モノスペース モノスペース プログラム エンティティ ( クラス、イベント、表など ) の名 前、環境変数、ファイルやパス名、およびインターフェース要 素 ( アイコン、メニュー項目、ボタンなど ) は、太文字で表記 されます。 製品が表示する情報、およびユーザが入力する情報は、モノス ペース タイプフェイスで表記されます。 ヒント : 文字を「入力」またはコマンドを「実行」するよう指示された場 合、入力直後に ENTER キーを押してください。テキストを「入力」または他 のキーを「押す」よう指示された場合、ENTER キーを押す必要はありませ ん。 アイコンの表記規則 資料の中で、いくつかの異なるタイプのアイコンで識別されるテキストが あります。このセクションでは、これらのアイコンについて記述します。 7 関連マニュアル 機能、製品、およびプラットフォーム アイコン 機能、製品、およびプラットフォーム アイコンは、機能、製品、またはプ ラットフォームに固有の情報を含むパラグラフを示します。 アイコン GLS IDS SE 説明 Informix 広域言語サポート (GLS) 機能に関連する情報を 示します。 Informix Dynamic Server エディションに固有の情報 や構文を示します。 INFORMIX- SE に固有の情報や構文を示します。 これらのアイコンは、表の 1 行、1 つ以上のパラグラフ、またはセクショ ン全体に適用されます。◆ 記号は、機能、製品、またはプラットフォーム 固有の情報の終了を表します。 関連マニュアル 追加情報について、次の資料を参照できます。 Q INFORMIX- SQL に含まれるマニュアル Q オンライン マニュアル Q オンライン エラー メッセージ Q 参考文献 8 IBM Informix SQL リファレンス マニュアル 構文の表記規則 構文の表記規則 このセクションでは、構文ダイヤグラムの表記規則について説明していま す。各ダイアグラムは、図 1 で示されているように、指定された文やセグ メントで有効な、必須またはオプションのキーワード、用語、および記号 のシーケンスを表しています。 図 1 構文ダイアグラムの簡単な例 OPEN FORM form FROM "filename " 各構文ダイアグラムは左上から開始し、右上の縦棒の終端記号で終了しま す。これらのポイント間の、終了や逆方向以外の任意のパスを、文の フォームとして記述できます。( しかしながら、ダイアグラムによっては、 テキストの注により、パス セグメントが相互に排他的であることを示す場 合もあります。) パス内の構文要素は、文に表示できる用語、キーワード、記号、およびセ グメントを表します。パスは、ループ内の分離記号がある場合を除いて、 常時左の要素から取り扱い、右の要素へと続きます。ループ内の分離記号 がある場合は、パスは左回りになります。特に明記されていない限り、少 なくとも 1 つのブランク文字が構文要素を区切ります。 パスに表示できる要素 パスに、次の要素が 1 つ以上出現する可能性があります。 要素 説明 KEYWORD 大文字の単語はキーワードです。単語を表示の通り 正確に指定する必要があります。ただし、大文字ま たは小文字のいずれでも使用できます。 ( . , ; @ + * - / ) 句読点、およびその他の英数字以外の文字は、表示 の通り正確に入力する必要のあるリテラル記号です。 " " 二重引用符は表示の通り入力する必要があります。 二重引用符の対を一重引用符と置き換えることもで きますが、二重引用符と一重引用符を混合して使用 することはできません。 ' ' (1 / 3) 9 構文の表記規則 要素 説明 変数 イタリック体の単語は、必須の値を表します。ダイ アグラムのすぐ後の表で、値について説明していま す。 ボックス内の参照は、サブダイヤグラムを表します。 この時点では、サブダイヤグラムはメイン ダイアグ ラムの一部であると考えてください。ページ番号が 指定されていない場合は、サブダイヤグラムは同じ ページに表示されます。ボックスの縦横比は重要で はありません。 ATTRIBUTE 節 p. 288 ATTRIBUTE 節 構文ダイアグラム内の SQL:S への参照は、 「Informix SQL ガイド : 構文」に記述されている SQL 文または セグメントを表します。この時点では、セグメント はダイアグラムの一部であると考えてください。 SELECT 文 SQL:S を参照 アイコンは、このパスが特定の製品または特定の条 件の下でのみ有効であることを警告しています。ア イコン上の文字は、このパスをサポートする製品ま たは条件を示します。 SE これらのアイコンは、特定の構文ダイアグラムで表 示されます。 SE このパスは、INFORMIX- SE データベース サーバでのみ有効です。 IDS このパスは、 Informix Dynamic Server でのみ有効です。 網かけのオプションは、特に指定しなかった場合の デフォルトです。 ALL ... 対の矢印内の構文セグメントはサブダイヤグラムで す。 縦線は、構文ダイヤグラムを終了します。 IS NULL NOT メイン パスの下の分岐は、オプションのパスを示し ます。( 分岐により迂回できる場合を除いて、メイン パスの用語はすべて必須です。) (2 / 3) 10 IBM Informix SQL リファレンス マニュアル 構文の表記規則 要素 説明 複数の分岐のセットは、複数の異なるパスを選択で きることを示します。 NOT FOUND ERROR WARNING , ループは、反復可能なパスを示します。ループの先 頭の句読点は、リスト項目の分離記号を示します。 変数 記号が表示されない場合は、空白が分離記号である か、または ( ここで示されているように ) ソース モ ジュール内の次の文を分離する改行となります。 文 , 3 パス上のゲート ( 3 ) は、そのパスを指定された回 数だけ使用できることを示します。大規模なループ の場合も同様です。この文のセグメントの場合、 size を 3 回まで指定できます。 サイズ (3 / 3) 構文ダイアグラムの読み方 図 2 では、前の表でリストしたパスの要素をいくつか使用する構文ダイア グラムを示します。 図 2 構文ダイアグラムの例 Case III: ( スクリーン フォームにおける display 出力 ) , DISPLAY 値 , TO フィールド節 , BY NAME ATTRIBUTE 節 変数 このダイアグラムの 「Case III」というラベルは、この文が 少なくとも 2 つの構文パターンを持てることを意味します。このダイアグラムを使用し て文を構築するには、キーワード DISPLAY を用いて左上から開始します。 次に、ダイアグラムの右に進み、必要なオプションを入力します。 次のステップがダイアログで表示されています。 11 構文の表記規則 1. キーワード DISPLAY を入力します。 2. 現行のスクリーン フォーム内の明示的なフィールド リストに、変 数のリストの値を表示できます。 Q 変数の名前を入力します。幾つかの変数の値を表示するには、 次の変数とカンマで区切ります。 3. 4. Q 最後の変数の名前の後に、キーワード TO を入力します。 Q 最初の変数を表示する現行フォームに、フィールド の名前を 入力します。フィールド名を指定するための構文を検索するに は、指定されたページの「フィールド節」セグメントに移動し ます。 表示する変数と同じ名前のフィールドを持つフォームを使用してい る場合は、もっと下のパスを指定します。 Q DISPLAY の後に BY NAME キーワードを入力します。 Q 変数 の名前を入力します。幾つかの変数の値を表示するには、 次の変数とカンマで区切ります。 オプションで、表示する値の画面属性を設定できます。 Q 5. 必要な画面属性を指定するには、指定されたページの 「ATTRIBUTE 節」セグメントの構文を使用します。 終端記号までダイアグラムに従ってください。 これで、DISPLAY TO または DISPLAY BY NAME 文が終了します。 ( 変数と同じ数のフィールドが必要であるという ) 手順 2 の制約 は、ダイアグラムそのものではなく、ダイアグラムに続く注釈に記 載されます。それぞれの文の構文ごとに、「使用法」の注意事項が 続きます。 12 IBM Informix SQL リファレンス マニュアル INFORMIX-SQL に含まれる資料 INFORMIX-SQL に含まれる資料 INFORMIX- SQL のマニュアル セットには、次の資料が含まれます。 マニュアル INFORMIX- SQL リファレ ンス マニュアル 説明 INFORMIX- SQL を構成するプログラムの参照資料です。INFORMIX- SQL で行え ることの情報が記載されており、また、プログラム名ごとに編成されていま す。「INFORMIX- SQL ユーザ ガイド」をお読みになったことがあり、 INFORMIX- SQL の基本的な事項について習得されている場合に、 「INFORMIX- SQL リファレンス マニュアル 」を利用して拡張機能について学 んだり、特定の情報を素早く取得したりすることができます。 INFORMIX- SQL ユーザ ガ INFORMIX- SQL について紹介し、マニュアル セットの他のマニュアルについ イド て理解するのに必要なコンテキストを提供します。データベース管理の経験 がなくても、あるいは基本的なリレーショナル デーベースの概念を熟知して いなくても、このマニュアルをご利用いただけます。データベース システム に関する一般的な情報を含んでおり、データベースを作成したり、データ ベース情報の入力、アクセスを行ったり、印刷されたレポートを作成したり するのに必要な手順を紹介します。 Informix SQL ガイド : チュートリアル Informix 製品に組み込まれている SQL に関するチュートリアルを提供しま す。ここでは、リレーショナル データベースの計画および実装を行う際に使 用される基本概念と用語について説明します。また、データベースから情報 を検索したり、データベースを変更したりする方法についても説明します。 Informix SQL ガイド : 参照 INFORMIX- SQL で提供されるデモンストレーション データベースの構成と内 容に関する詳しい情報を提供します。これには、Informix システムのカタロ グ表の詳細が含まれており、設定する必要のある Informix や共通の環境変 数、および、Informix データベース エンジンでサポートされる列データ タ イプについて記載されています。また、Informix 製品がサポートするすべて の SQL 文の詳細記述も提供します。 Informix SQL ガイド : 構文 7.3 データベース サーバでサポートされるすべての SQL 文および文セグメン トの構文ダイアグラムを含みます。 Informix Guide to GLS Functionality 広域言語サポート機能の使用に関する詳細情報を提供します。 Informix エラー メッ セージ集 エラー番号で編成されるエラー メッセージを提供します。エラーが発生した 場合は、その番号で検索して、原因と解決策を確認します。 13 オンライン マニュアル オンライン マニュアル Informix Answers OnLine CD を使用して、章ごと、または資料全体を印刷 したり、特定の資料やマニュアル セットの情報から全文検索を行ったりす ることができます。CD から資料をインストールしたり、直接 CD にアクセ スしたりすることができます。オンライン マニュアルのインストール、読 み取り、印刷に関する情報については、Answers OnLine に付いてくるイン ストール説明書を参照してください。以下の Web サイトの URL にある Answers OnLine にアクセスすることもできます。 www.informix.com/answers 役に立つオンライン ファイル Informix のマニュアル セットの他にも、$INFORMIXDIR/release ディレクト リにある次のオンライン ファイルを、「INFORMIX-SQL ユーザーズ ガイド」 および「INFORMIX-SQL リファレンス マニュアル」の補足資料として参照 できます。 ドキュメント ノート マニュアルでカバーされていない、またはマニュアルが 出版されてから変更された機能やパフォーマンスについ て説明します。INFORMIX- SQL のドキュメント ノートを含 むファイルは ISQLDOC_7.3 です。 リリース ノート Informix 製品の以前のバージョンとのパフォーマンスの 違い、およびその違いが現在の製品に及ぼす影響を説明 します。INFORMIX- SQL およびその他の製品のリリース ノートを含むファイルは TOOLS_7.3 です。 オンライン ヘルプ INFORMIX- SQL では、オンライン ヘルプを提供しています。CONTROL-W を押す と、ヘルプが呼び出されます。 オンライン エラー メッセージ 特定のエラー メッセージまたはメッセージを画面で表示するには、 finderr スクリプトを使用します。スクリプトは $INFORMIXDIR/bin ディレ クトリにあります。 14 IBM Informix SQL リファレンス マニュアル 参考文献 finderr スクリプトの構文は次の通りです。 finder msg_num msg_num 表示するエラー メッセージの番号を示します。エラー メッ セージ番号の範囲は、1 から 32000 です。- 符号はオプショ ンです。 例えば、-359 エラー メッセージを表示するには、次のいずれかを入力し ます。 finderr -359 または finderr 359 次の例は、エラー メッセージのリストを指定する方法を示します。この例 ではさらに、表示を制御するための UNIX more コマンドに出力をパイピン グしています。出力を別のファイルに送信して、エラー メッセージを保存 したり、印刷したりすることもできます。 finderr 233 107 113 134 143 144 154 | more 正数のメッセージもいくつかあります。これらのメッセージは、単にアプ リケーション開発支援ツール内で使用されているものです。一般的にはあ まり使用されていませんが、これらのメッセージを表示する場合は、メッ セージ番号の前に + 符号を付ける必要があります。 -1 から -100 の番号のメッセージは、プラットフォームに依存する可能性 があります。この範囲のメッセージ テキストがご使用のプラットフォーム に適用しない場合は、メッセージ番号の正確な意味について、オペレー ティング システムの資料を調べてください。 参考文献 以下の Informix データベース サーバの資料で、本書で説明しているト ピックの追加情報を提供します。 15 参考文献 Q Q Q Informix データベース サーバおよび SQL 言語については、 「Informix SQL ガイド : チュートリアル」、「Informix SQL ガイド : 構文」、および「Informix SQL ガイド : 参照」を含む各マニュア ルで説明されています。 Informix データベース サーバの設定に関する情報は、該当する サーバの「管理者ガイド」で提供されています。 「Informix Guide to GLS Functionality」では、広域言語サポート を使用して各国対応のアプリケーションを作成する方法を説明して います。 Informix Press は、Prentice Hall と協力して、Informix 製品に関する書 物を出版しています。著者は、Informix のユーザ グループ、社員、顧問、 カスタマなどから成る専門家で構成されています。以下の Web サイトの URL にある Informix Press にアクセスすることができます。 www.informix.com/ipress 16 IBM Informix SQL リファレンス マニュアル 章 INFORMIX-SQL メインメニュー 1 本章について . . . . . . . . . . . . . . . . . 19 製品の概要 . . . . . . . . . . . . . . . . . 19 INFORMIX-SQL へのアクセス方法 . . . . . . . . . . . 20 INFORMIX-SQL 画面 . . . . メニュー画面 . . . . . オプションの選択 . . . メニューの終了 . . . ヘルプの要求 . . . . テキスト入力画面 . . . テキストの入力 . . . テキスト入力画面の終了 . ヘルプの要求 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 20 21 21 21 21 22 22 22 メニュー構造の全体像 . . . . . . . . . . . 23 INFORMIX-SQL メインメニュー オプション DATABASE . . . . . . . . . EXIT . . . . . . . . . . FORM . . . . . . . . . . QUERY LANGUAGE . . . . . . . REPORT . . . . . . . . . . TABLE . . . . . . . . . . USER MENU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 26 27 28 30 35 37 41 . . . . 18 IBM Informix SQL リファレンス マニュアル 本章について この章では、INFORMIX- SQL の概要とメインメニューに関する詳細を説明しま す。 製品の概要 INFORMIX- SQL はコンピュータ ベースの記録管理システムです。データベー ス管理システム として、INFORMIX- SQL は、データ管理タスクを実行する便 利なプログラムやモジュールから構成されています。INFORMIX- SQL により、 情報の編成、格納、および抽出にかかる時間を大幅に削減できます。また、 種々の便利な方法で情報を要約、グループ化、および書式設定できます。 INFORMIX- SQL では、次のデータベース管理タスクを実行できます。 Q データベースと表の作成、修正、および削除 Q オペレーティング システム ファイルからのデータのロード Q 対話型問合せ言語を使った問合せの実行 Q データベース内のデータの挿入、削除、更新、および問合せ Q アクセス権とインデックスの作成および削除 Q カスタム用紙またはレポートの作成およびコンパイル Q カスタム メニューの作成および実行 INFORMIX-SQL メインメニュー 19 INFORMIX-SQL へのアクセス方法 INFORMIX-SQL へのアクセス方法 INFORMIX- SQL を使って作業を開始するには、オペレーティング システム プ ロンプトで isql と入力します。この時点で、INFORMIX- SQL によってメイン メニューが表示されます。 INFORMIX-SQL: Form Report Query-language User-menu Database Table Exit Run, Modify, Create, or Drop a form. ------------------------------------------------Press CONTROL-W for Help ---- INFORMIX-SQL 画面 INFORMIX- SQL メニュー システムは、2 種類の画面を使用します。 INFORMIX- SQL メインメニューのようなメニュー画面とテキスト入力画面で す。 メニュー画面 メニュー画面の先頭行にはオプションがリストされます。1 つのオプショ ンが常に強調表示されています。2 行目には、強調表示されたオプション の要旨が表示されます。スペース キーを押すたびに強調表示が次のオプ ションへ移動し、説明が変わります。[ → ] と [ ← ] キーを使用して、 強調表示を移動することもできます。4 行目には、現行のデータベース名 と次のメッセージが表示されます。 Press CONTROL-W for Help 20 IBM Informix SQL リファレンス マニュアル テキスト入力画面 オプションの選択 メニュー オプションを選択する方法は、通常 2 つあります。 Q スペース キーを使用して、選択するオプションを強調表示し、Enter キーを押す。 Q 選択するオプションの先頭の文字を入力する。大文字小文字は問い ません。例えば、 「Table」オプションを選択する場合は、t または T と入力できます。 INFORMIX- SQL は選択されたメニュー オプションの画面を表示します。 メニューの終了 各メニューに「Exit」オプションがあります。メニュー画面を終了するに は、Exit の e を入力します。INFORMIX- SQL は前のメニューまたは画面を表 示します。 ヘルプの要求 CONTROL-W キーを押すと、INFORMIX- SQL の各部分に該当するヘルプ メッセー ジが表示されます。ヘルプ画面に表示されたメッセージを読み終えたら、 Enter キーを押します。INFORMIX- SQL によって、ヘルプを要求する前に作業 していた画面が再表示されます。 テキスト入力画面 テキスト入力画面は 2 種類目の画面です。そこでは、メニュー オプション を選択する代わりに、テキストを入力する必要があります。画面の先頭行 には画面名と、それに続いて二重不等号 (>>) 括弧が表示されます。2 行目 には、指示が表示されます。 INFORMIX-SQL メインメニュー 21 テキスト入力画面 「RUN FORM」画面はテキスト入力画面の 1 例です。そこには、次のような項 目がインクルードされます。 RUN FORM >> Choose a form with the Arrow Keys, or enter a name, then press RETURN. --------------------------- stores2 ----------- Press CONTROL-W for Help ---customer orderform sample テキストの入力 入力したものはすべて画面の先頭にある二重不等号括弧の後に表示されま す。入力が終わったら、Enter キーを押します。「RUN FORM」画面などの一 部の画面には、選択を入力する代わりに、画面の下部のリストから項目を 選択するオプションがあります。矢印キーを使用して選択する項目を強調 表示してから、Enter キーを押します。INFORMIX- SQL は次の画面を表示しま す。 テキスト入力画面の終了 テキスト入力画面には「Exit」オプションがありません。CONTROL-C を押す と、INFORMIX- SQL は前のメニューまたは画面を再表示します。 ヘルプの要求 テキスト入力画面でも、CONTROL-W キーが、メニュー画面とまったく同じよ うに機能します。ヘルプ メッセージを読み終えたら、Enter キーを押しま す。INFORMIX- SQL によって、ヘルプを要求する前に作業していた画面が再表 示されます。 22 IBM Informix SQL リファレンス マニュアル メニュー構造の全体像 メニュー構造の全体像 INFORMIX- SQL メインメニューには、7 つのオプションがあります。Form、 Report、Query- language、User- menu、Database、Table、および Exit で す。メインメニューの各オプションはサブメニューを呼び出し、そこに INFORMIX- SQL の一部の作業を可能にするオプションが表示されます。24 ページの図 3 と 25 ページの図 4 に、INFORMIX- SQL のメニュー構造を示し ます。 24 ページの図 3 は、INFORMIX- SQL メニュー階層の全体像です。この図は、 メインメニューから利用できる各サブメニューのオプションを示していま す。 INFORMIX-SQL メインメニュー 23 メニュー構造の全体像 図 3 INFORMIX-SQL メニュー階層 Form Form Form Report Form Query-language フォームを使用してデータの入力やデータ ベースの問合せを実行 Modify フォーム仕様を修正 Generate デフォルト フォームを生成 New 新規フォーム仕様を作成 Compile フォームをコンパイル Drop フォームをデータベースから削除 Exit INFORMIX-SQL メインメニューへ戻る Form User-menu Form Database Form Table Run Run Modify Exit Run レポートを表示 Modify 既存のレポート仕様を変更 Generate データベース表を基にデフォルトレポー ト仕様を生成 New 新規レポート仕様を作成 Compile レポート仕様をコンパイル Drop レポートを削除 Exit INFORMIX-SQL メインメニューへ戻る New Run Modify Use-editor Output Choose Save Info Drop Exit Select Create Drop Exit 現行のデータベースのユーザ メニューを実行 現行のデータベースのユーザ メニューを修正 INFORMIX-SQLメインメニューへ 戻る 既存のデータベースを選択 新規データベースを作成 既存のデータベースを削除 INFORMIX-SQL メインメニューへ戻る 新規 SQL 文を入力 現行の SQL 文を実行 現行の SQL 文を修正 システム エディタを使用して現行の SQL 文を修正 現行の SQL 文の結果をプリンタ、ファイル、またはパイプへ送信 SQL 文を含んでいるファイルを選択し、それらの文を現行文にする 後で再度使用できるように、現行の SQL 文をファイルに保存 現行のデータベースに関する情報を表示 INFORMIX-SQL コマンド ファイルを削除 INFORMIX-SQL メインメニューへ戻る Create Alter Info Drop Exit 24 IBM Informix SQL リファレンス マニュアル 新規表を作成 既存の表の構造を変更 表の構造に関する情報を表示 表をデータベースから削除 INFORMIX-SQL メインメニューへ戻る メニュー構造の全体像 図 4 は、INFORMIX- SQL メニュー システムの機能ガイドです。メニュー オプ ションは動作またはタスクに従ってグループ化されます。 図 4 メニュー階層の機能ガイド メニュー オプション 機能 Form Report Querylanguage User-menu Database 使用 Run Run Run Run Select 修正 Modify Modify Modify Modify Generate New Generate New NewUseeditor Compile Compile Table Alter 作成 デフォルト カスタム コンパイル 特殊タスク Create Info Choose Output Save 削除 Drop Drop Drop 終了 Exit Exit Exit Create Info Exit Drop Drop Exit Exit INFORMIX-SQL メインメニュー 25 INFORMIX-SQL メインメニュー オプション INFORMIX-SQL メインメニュー オプション 次のセクションでは、INFORMIX- SQL メインメニューのオプションについて説 明します。オプションはアルファベット順に記載されています。 DATABASE 「Database」オプションを使用して、新規データベースを作成したり、既存 のデータベースを現行のデータベースにしたり、既存のデータベースを削 除します ( 図 5 を参照 )。 図 5「DATABASE」メニュー DATABASE: Select Create Drop Select database to work with. Exit --------------------- stores ------------- Press CONTROL-W for Help --------- メニュー オプション 「DATABASE」メニューには 4 つのオプションが表示されます。 Select データベースを現行のデータベースにします。 Create 新規データベースを作成し、そのデータベースを現行のデータ ベースにします。 Drop データベースをシステムから削除します。 Exit 「DATABASE」メニューを終了して、INFORMIX- SQL メインメニューに 戻ります。 26 IBM Informix SQL リファレンス マニュアル EXIT 使用法 Q 「Create」オプションを使ってデータベースを作成すると、その データベースが現行のデータベースになります。 Q 「Select」オプションを使用すると、画面にリストされるデータ ベース名の 1 つを強調表示する代わりに、既存のデータベースの 名前を入力できます。その場合、カレント ディレクトリまたは DBPATH 環境変数で指定されたディレクトリに配置されているデー タベースの名前を入力しなければなりません。存在しないデータ ベースまたは INFORMIX- SQL が見付けることができないデータベー スの名前を入力した場合、INFORMIX- SQL は次のメッセージを表示し ます。 329: Database not found or no system permission. 2: No such file or directory Q データベースを削除するときは注意が必要です。データベース内の すべてのデータは永久に廃棄されます。 Q 「Informix SQL ガイド : 構文」では、Informix 製品がサポートする すべての SQL DATABASE 文の機能を説明しています。 Q 「Query-language」オプションを使用しているときは、現行のデー タベースの削除は許可されません。最初に、CLOSE DATABASE 文を 使って明示的にクローズしなければなりません。CLOSE DATABASE 文 についての詳細は、 「Informix SQL ガイド : 構文」を参照してくだ さい。 Q 「DATABASE」メニューについて詳しくは、「INFORMIX- SQL ユーザ ガ イド」を参照してください。 EXIT 「Exit」オプションを使用して、INFORMIX- SQL メインメニューを終了してオ ペレーティング システムに戻ります。 メインメニューを終了するには 1. 2. INFORMIX- SQL メインメニューから、e を入力して、 「Exit」オプ ションを選択する。 INFORMIX- SQL メインメニューを離れてオペレーティング システム に戻る。 INFORMIX-SQL メインメニュー 27 FORM FORM 「Form」オプションを使用して、スクリーン フォームを実行したり、スク リーン フォームを作成または修正したり、既存のスクリーン フォームを 削除します ( 図 6 を参照 )。 図 6 「FORM」メニュー FORM: Run Modify Generate New Compile Drop Use a form to enter data or query a database. Exit --------------------------------------------Press CONTROL-W for Help -------- メニュー オプション 「FORM」メニューには、次の 7 つのオプションが表示されます。 Run コンパイル済みのスクリーン フォームを実行します。 Modify スクリーン フォーム仕様を修正します。 Generate デフォルト スクリーン フォームを作成します。 New カスタム スクリーン フォーム仕様を作成します。 Compile スクリーン フォーム仕様をコンパイルします。 Drop スクリーン フォームを削除します。 Exit 「FORM」メニューを終了して、INFORMIX- SQL メインメニューに 戻ります。 28 IBM Informix SQL リファレンス マニュアル FORM 使用法 Q フォーム仕様ファイルを (「FORM」メニューの「New」または 「Modify」オプションを使って ) 編集した後は、それをコンパイル しなければなりません。( フォームはコンパイルが完了するま で、INFORMIX- SQL で使用することはできません。) 「New」または 「Modify」オプションを選択すると、編集したフォームのコンパイ ルを可能にするメニューが表示されます。「FORM」メニューの 「Compile」オプションを使用して、フォーム仕様をコンパイルする こともできます。 フォーム仕様にエラーがある場合は、INFORMIX- SQL から通知されま す。画面上の指示に従って訂正してからフォームを再コンパイルし てください。コンパイルが済んだフォームは保存することも、破棄 することもできます。また、未コンパイルのフォームも後で作業す るために保存したり、あるいは完全に破棄することもできます。 Q フォーム仕様をコンパイルする INFORMIX- SQL プログラムは、 FORMBUILD といいます。FORMBUILD に関する情報は、 『第 2 章 FORMBUILD トランザクション フォーム生成プログラム』を参照し てください。 Q スクリーン フォームを実行する INFORMIX- SQL プログラムは、 PERFORM といいます。PERFORM に関する情報は、 『第 3 章 PERFORM 画面トランザクション プロセッサ』を参照してください。 Q 「FORM」メニューについて詳しくは、「INFORMIX- SQL ユーザ ガイ ド」を参照してください。 INFORMIX-SQL メインメニュー 29 QUERY LANGUAGE QUERY LANGUAGE 図 7 に示すように、 「Query-language」オプションを選択して、SQL 問合せ 言語を使用します。 図 7 「SQL」メニュー SQL: New Run Modify Useeditor Output Choose Save Info Drop ExitEnter new SQL statements using SQL editor.-----------------------------------------------Press CONTROLW for Help ----- メニュー オプション 「SQL」メニューには、次の 10 のオプションが表示されます。 New SQL エディタを使用して、新規 SQL 文を入力できるようにし ます。 Run 現行の SQL 文 ( 複数文 ) を実行します。 Modify SQL エディタを使用して、現行の SQL 文 ( 複数文 ) を修正 できるようにします。 Use-editor システム エディタを使って、SQL 文を入力したり編集した りできるようにします。 Output 現行の SQL 文を実行した結果の出力をシステム ファイル、 プリンタ、またはシステム パイプに発送します。 Choose SQL 文を含んでいる既存のコマンド ファイルを選択して、 それらを現行文にできるようにします。現行文は実行または 編集が可能です。 30 IBM Informix SQL リファレンス マニュアル QUERY LANGUAGE Save 現行の SQL 文をコマンド ファイルに保存します。「SQL」メ ニューの「Choose」オプションを選択することにより、後で このコマンド ファイルを使用できます。 Info 表の列、インデックス、アクセス権、および状態に関する情 報の抽出を可能にします。 Drop コマンド ファイルをデータベースから削除します。 Exit 「SQL」メニューを終了して、INFORMIX- SQL メインメニューに 戻ります。 使用法 Q 現行のデータベースがない場合、INFORMIX- SQL は、INFORMIX- SQL メイ ンメニューで「Query-language」オプションが選択された後、 「CHOOSE DATABASE」画面を表示します。 Q Informix Dynamic Server を使用している場合は、リストされる表 に加えて、外部表に関する情報も要求できます。外部表を指定する には、拡張表名をプロンプトで入力しなければなりません。例え ば、次の入力は、central という INFORMIX- OnLine システムにアク セスする stores7 データベース内の richard.customer 表の情報 を要求します。 INFO FOR TABLE >> stores7@central:richard.customer 拡張表名の代わりにシノニムを使用することもできます。 「INFO」メニューの「Status」オプションを選択した場合、 INFORMIX- SQL は、表を含んでいる DB 領域の情報を表示します。ロ グ機能が更新記録を置き換えるため、「Status」オプションでは更 新記録情報は表示されません。 Q 「INFORMIX- SQL ユーザ ガイド」では、「SQL」メニューの使用法と SQL 文の作成および実行方法を説明しています。 Q 「Informix SQL ガイド : 構文」では、Informix 製品がサポートする SQL DATABASE 文を説明しています。 INFORMIX-SQL メインメニュー 31 QUERY LANGUAGE 次のセクションには、可変長文字 (VARCHAR) 型、テキスト (TEXT) 型、および バイト (BYTE) 型の各データ型を使う SQL 文の使用に関する特別な注を記載 します。 可変長文字 (VARCHAR) 型、テキスト (TEXT) 型、およびバイト (BYTE) 型データの問合せ INFORMIX- SQL 対話型エディタが表示する問合せの結果のフォーマットは、 選択された列のデータ型によって異なります。可変長文字 (VARCHAR) 型列に 対して問合せを実行した場合、INFORMIX- SQL は、文字 (CHAR) 型の値を表示す るのとまったく同じように、可変長文字 (VARCHAR) 型の値全体を表示します。 テキスト (TEXT) 型列を選択した場合、INFORMIX- SQL は、テキスト (TEXT) 型列 の内容を表示します。内容は、「Next」オプションを使用して、一度に 1 画面をスクロールできます。バイト (BYTE) 型列を選択した場合、 INFORMIX- SQL は、<BYTE value> という文字を表示します。 BLOB を使う CREATE TABLE および ALTER TABLE 文の使用 CREATE TABLE および ALTER TABLE 文を使用する際は、次の例に示すように BLOB 領域名を引用符で囲むことができます。 CREATE TABLE mytab (column1 TEXT IN "blob1") この場合、引用符はオプションです。しかし、使用する BLOB 領域の名前 が table の場合、INFORMIX- SQL は BLOB 領域名とキーワード TABLE を区別 するために引用符を必要とします。次の ALTER TABLE 文はこれを示していま す。 ALTER TABLE mytab ADD (column1 TEXT IN "table") この場合、キーワード TABLE とのあいまいさを避けるために引用符が必要 です。 可変長文字 (VARCHAR) 型および BLOB を使う LOAD および UNLOAD 文の使用 LOAD および UNLOAD 文を使用して、表と ASCII データのオペレーティング システム ファイル間でデータを転送することができます。このファイルに は、印刷可能な ASCII 文字と復帰改行文字のみが含まれます。 32 IBM Informix SQL リファレンス マニュアル QUERY LANGUAGE これらの文は、可変長文字 (VARCHAR) 型、テキスト (TEXT) 型、およびバイト (BYTE) 型を含んでいる表およびファイルに対して使用できます。可変長文字 (VARCHAR) 型または BLOB データが含まれるファイルをロードまたはアン ロードする場合は、このセクションを読んでください。 LOAD および UNLOAD 文の使用について詳しくは、 「Informix SQL ガイド : 構 文」を参照してください。 UNLOAD 文 可変長文字 (VARCHAR) 型、テキスト (TEXT) 型、またはバイト (BYTE) 型が含ま れるファイルをアンロードする場合、次の点に注意してください。 Q バイト (BYTE) 型項目は、スペースや復帰改行文字の付かない 16 進 数ダンプ フォーマットで書き込まれます。したがって、バイト (BYTE) 型項目が含まれるアンロードされたファイルの論理的な長さ は、非常に長くなる可能性があり、そのようなファイルを印刷した り編集したりすることは不可能かもしれません。 Q 可変長文字 (VARCHAR) 型列の場合、後続の空白文字が保存されます。 Q 次の文字は、アンロード ファイル内で区切り文字として使用しな いでください。 0 から 9 a から f A から F 空白 タブ \ LOAD 文 可変長文字 (VARCHAR) 型、テキスト (TEXT) 型、およびバイト (BYTE) 型が含ま れるファイルをロードする場合、次の点に注意してください。 Q LOAD 文には、列サイズより長い文字 ( 可変長文字 (VARCHAR) 型を含 む ) フィールドのデータを指定できます。超過文字は無視されま す。 Q バイト (BYTE) 型フィールドを除いて、非文字フィールドに先行ブラ ンクと末尾ブランクを保持できます。 INFORMIX-SQL メインメニュー 33 QUERY LANGUAGE Q すべての文字フィールド ( 可変長文字 (VARCHAR) 型とテキスト (TEXT) 型を含む ) で、埋込み区切り文字と円記号 (\) は円記号でエス ケープされます。 Q 可変長文字 (VARCHAR) 型列では、復帰改行文字にエスケープが必要 です。 Q バイト (BYTE) 型列にロードされるデータは、ASCII 16 進数フォーム になっていなければなりません。バイト (BYTE) 型列に先行ブランク を含めることはできません。 Q 次の文字は、ロード ファイル内で区切り文字として使用しないで ください。 0 から 9 a から f A から F 空白 タブ \ 34 IBM Informix SQL リファレンス マニュアル REPORT REPORT 「Report」オプションを使用して、図 8 に示すように、レポートを実行し たり、レポートを作成または修正したり、レポートをコンパイルしたり、 あるいは既存のレポートをデータベースから削除します。 図 8 「REPORT」メニュー REPORT: Run Modify Run a report. Generate New Compile Drop Exit -----------------------------------------------Press CONTROL-W for Help ----- メニュー オプション 「REPORT」メニューには、次の 7 つのオプションが表示されます。 Run レポートを実行します。 Modify レポート仕様を修正します。 Generate デフォルト レポート仕様を作成します。 New カスタム レポート仕様を作成します。 Compile レポート仕様をコンパイルします。 Drop レポート仕様をデータベースから削除します。 Exit 「REPORT」メニューを終了して、INFORMIX- SQL メインメニュー に戻ります。 INFORMIX-SQL メインメニュー 35 REPORT 使用法 Q レポート仕様ファイルを (「REPORT」メニューの「New」または 「Modify」オプションを使って ) 編集した後は、それをコンパイル しなければなりません。( レポートはコンパイルが完了するまで、 INFORMIX- SQL で使用することはできません。) 「New」または 「Modify」オプションを選択すると、編集したレポートのコンパイ ルを可能にするメニューが表示されます。「REPORT」メニューの 「Compile」オプションを使用して、レポート仕様をコンパイルする こともできます。 レポート仕様にエラーがある場合は、INFORMIX- SQL から通知されま す。画面上の指示に従って訂正してからレポートを再コンパイルし てください。コンパイルが済んだレポートは保存することも、破棄 することもできます。また、未コンパイルのレポートも後で作業す るために保存したり、あるいは完全に破棄することもできます。 Q Q レポート仕様をコンパイルする INFORMIX- SQL プログラムは、 ACEPREP といいます。レポート仕様を実行する INFORMIX- SQL プログ ラムは、ACEGO といいます。これらのプログラムに関する完全な情 報は、『第 4 章 ACE レポート ライタ』を参照してください。 「INFORMIX- SQL ユーザ ガイド」では、レポートの作成および使用 方法を説明しています。 36 IBM Informix SQL リファレンス マニュアル TABLE TABLE 「Table」オプションを使用して、図 9 に示すように、表を作成または修正 したり、表に関する情報を抽出したり、表をデータベースから削除します。 図 9 「TABLE」メニュー TABLE: Create Alter Create a new table. Info Drop Exit -----------------------------------------------Press CONTROL-W for Help ----- メニュー オプション 「TABLE」メニューには、次の 5 つのオプションが表示されます。 Create 対話型スキーマ エディタを使用して、新規表を作成できるよう にします。 Alter 対話型スキーマ エディタを使用して、表を修正できるようにし ます。 Info 表の構造に関する情報を抽出します。 Drop 表をデータベースから削除します。 Exit 「TABLE」メニューを終了して、INFORMIX- SQL メインメニューに戻 ります。 INFORMIX-SQL メインメニュー 37 TABLE 使用法 Q 現行のデータベースがない場合、「Table」オプションが選択された 後、「CHOOSE DATABASE」画面が表示されます。 Q 表を削除するときは、注意が必要です。表内のすべてのデータが失 われます。 Q 「INFORMIX- SQL ユーザ ガイド」では、 「TABLE」メニューのオプショ ンの使い方を説明しています。 Q 「Informix SQL ガイド : 構文」では、Informix 製品がサポートする すべての SQL DATABASE 文の機能を説明しています。 Informix Dynamic Server での「Table」オプションの使用 「Table」オプションを使用して表を作成する場合、初期エクステントと追 加エクステントにはデフォルトのサイズしか与えられません。その他のサ イズが必要な場合は、INFORMIX- SQL 対話型エディタを使用して、明示的なエ クステント サイズを含んでいる CREATE TABLE 文を実行する必要がありま す。 データベース サーバに接続中は、次の画面に表示の通り、「ADD」または 「MODIFY TYPE」メニューに「Variable-length」の選択が追加されます。 MODIFY TYPE longtablename : ... Interval Variable-length Displays the VARIABLE-LENGTH Menu for variable-length columns ----- Page 1 of 1 ----- dbname ---------------- Press CONTROL-W for Help -- 38 IBM Informix SQL リファレンス マニュアル TABLE 「Variable-length」を選択すると、ここに表示の通り、Informix Dynamic Server 固有のデータ型がメニューに表示されます。 VARIABLE-LENGTH: Varchar Text Byte Variable-length data containing a maximum of 255 characters. ----- Page 1 of 1 ----- dbname ---------------- Press CONTROL-W for Help -- これらのデータ型の中から任意のものを選択して、表に可変長列をセット アップできます。 可変長文字 (VARCHAR) 型を選択した場合、列長を求めるプロンプトが出され ます。可変長文字 (VARCHAR) 型列には、最大サイズと最小領域の 2 つの長さ があります。次の画面に表示の通り、後続のプロンプトでこれら 2 つの数 字を指定できます。 ADD MAXIMUM LENGTH >> Enter maximum length of data from 1 to 255. RETURN adds it. ----- Page 1 of 1 ----- dbname ---------------- Press CONTROL-W for Help -- ADD MINIMUM SPACE >> Enter amount of space to reserve for each item from 0 to max length. ----- Page 1 of 1 ----- dbname ------------------ Press CONTROL-W for Help - INFORMIX-SQL メインメニュー 39 TABLE テキスト (TEXT) 型またはバイト (BYTE) 型を選択する場合、データの格納先 を指示しなければなりません。ここでは、「BLOBSPACE」メニューを表示して います。 ADD BLOBSPACE tab1: Table BLOBSpace-name Column data is stored in the same table-space as other columns. ----- Page 1 of 1 ----- dbname ---------------- Press CONTROL-W for Help - 「Table」を選択すると、列データは他の列と同じ DB 領域に格納されます。 「BLOBSpace-name」を選択すると、次のプロンプトが表示されます。 ADD BLOBSPACE NAME >> Enter name of BLOBSpace ----- Page 1 of 1 ----- dbname --------- Press CONTROL-W for Help -- プロンプトでは、任意の既存の BLOB 領域の名前を入力できます。 40 IBM Informix SQL リファレンス マニュアル USER MENU USER MENU 「User-menu」オプションを使用して、図 10 に示すように、ユーザ作成の メニューを実行したり、ユーザ メニューを作成したり、既存のユーザ メ ニューを修正します。 図 10 「USER-MENU」メニュー USER-MENU: Run Modify Exit Run the user-menu for the current database. ------------------------------------------------Press CONTROL-W for Help ---- メニュー オプション 「USER-MENU」メニューには、次の 3 つのオプションが表示されます。 Run 現行のデータベースのユーザ メニューを実行します。 Modify ユーザ メニューの作成または修正を可能にします。 Exit 「USER-MENU」メニューを終了して、INFORMIX- SQL メインメニューに 戻ります。 使用法 Q 現行のデータベースがない場合、「User-menu」オプションが選択さ れた後、「CHOOSE DATABASE」画面が表示されます。 Q ユーザ メニューの作成と修正の両方に「Modify」オプションを使 用します。 Q 現行のデータベースのユーザ メニューがない場合、「Run」または 「Modify」オプションが選択されると、INFORMIX- SQL は、その旨を ユーザに通知するメッセージを表示します。 INFORMIX-SQL メインメニュー 41 USER MENU Q メニューの作成、修正、および使用についての詳細は、『第 5 章 ユーザ メニュー』を参照してください。 42 IBM Informix SQL リファレンス マニュアル 章 FORMBUILD トランザクション フォーム生成プログラム 本章について . . . . . . PERFORM エラー メッセージ . サンプル フォーム . . . . . . . . . . . . . . . . . . 47 47 47 カスタム フォームの作成とコンパイル . . . . . メニュー システムを使ったフォームの作成 . . . オペレーティング システムを使ったフォームの作成 . . . . . . . . . . . . 48 48 50 フォーム仕様ファイルの構造 . . . . . . . . . . . . . . . . . . . . . 2 . . . . . . . . . 51 . . . . . . . . . 54 SCREEN ( スクリーン ) セクション ページ レイアウト . . . フォームのグラフィックス文字 必要な端末エントリ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 57 61 64 TABLES ( 表 ) セクション 遠隔データベース . . 外部表とシノニム . . . . . . . . . . 64 66 66 . . . . . . . . . . . . . . . . . . . . 67 68 68 69 71 73 74 75 76 77 DATABASE ( データベース ) セクション . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ATTRIBUTES ( 属性 ) セクション . . . . . . . . . 表示フィールドの順序 . . . . . . . . . . . 表の順序 . . . . . . . . . . . . . . . データベース列にリンクされるフィールド . . . . . 表示専用フィールド . . . . . . . . . . . . 列の結合 . . . . . . . . . . . . . . . 照合結合 . . . . . . . . . . . . . . ATTRIBUTES の構文 . . . . . . . . . . . . AUTONEXT . . . . . . . . . . . . . . . CENTURY . . . . . . . . . . . . . . . . COLOR . . COMENTS . DEFAULT . DOWNSHIFT FORMAT . . INCLUDE . INVISIBLE . LOOKUP . NOENTRY . NOUPDATE . PICTURE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 82 83 85 86 89 91 92 94 95 96 PROGRAM . . QUERYCLEAR REQUIRED . REVERSE . RIGHT . . UPSHIFT . VERIFY . WORDWRAP . ZEROFILL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 100 101 102 103 104 105 106 109 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 111 113 115 117 118 119 121 123 124 125 126 127 128 129 130 INSTRUCTIONS ( インストラクション ) セクション COMPOSITES . . . . . . . . . . DELIMITERS . . . . . . . . . . MASTER OF . . . . . . . . . . コントロール ブロック . . . . . . BEFORE . . . . . . . . . . . AFTER . . . . . . . . . . . . EDITADD および EDITUPDATE . . . . . ADD . . . . . . . . . . . . . UPDATE . . . . . . . . . . . QUERY . . . . . . . . . . . . REMOVE . . . . . . . . . . . DISPLAY . . . . . . . . . . . アクションの構文 . . . . . . . . ABORT . . . . . . . . . . . . LET . . . . . . . . . . . . 44 IBM Informix SQL リファレンス マニュアル NEXFIELD . COMMENTS . . IF-THEN-ELSE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 135 136 SAMPLE フォーム仕様ファイル . 「CUSTOMER INFORMATION」画面 「ORDER INFORMATION」画面 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 140 141 FORMBUILD トランザクション フォーム生成プログラム 45 46 IBM Informix SQL リファレンス マニュアル 本章について カスタム スクリーン フォームで PERFORM を使用するには (『第 3 章 PERFORM 画面トランザクション プロセッサ』を参照 )、最初に FORMBUILD を使用してフォーム仕様ファイルをコンパイルする必要があります。 フォーム仕様ファイルには、画面形式とデータの表示方法に関する PERFORM への指示が含まれます。 PERFORM エラー メッセージ すべてのエラー メッセージのテキストと修正に関する提案は、『Answers OnLine』の「Informix エラー メッセージ集」に記載されています。 サンプル フォーム 「INFORMIX- SQL ユーザ ガイド」および「INFORMIX- SQL リファレンス マニュ アル」内の例は、次の 5 つのサンプル フォーム仕様を基にしています。こ れらのフォーム仕様は、PERFORM で利用できるさまざまなコマンドを示して います。 customer.per 顧客情報の入力および抽出に使用する簡単なフォーム。 orders.per 注文情報の入力および抽出に使用する簡単なフォーム。 orderform.per 顧客の注文に関する情報の入力および抽出に使用するより 複雑なフォーム。 sample.per stores7 データベースに組み込まれている最も高機能の フォーム。ORDERFORM フォームの拡張されたバージョンで す。 p_ex1.per フォーム内部から C 関数を呼び出す方法を説明します。 FORMBUILD トランザクション フォーム生成プログラム 47 カスタム フォームの作成とコンパイル 『付録 A. デモンストレーション データベースおよび例』には、これらの サンプル フォーム仕様のフルテキストがあります。加えて、138 ページの 『SAMPLE フォーム仕様ファイル』というタイトルのセクションには、 sample 仕様のコピーが記載されています。 カスタム フォームの作成とコンパイル フォーム仕様ファイルを作成する方法は 2 つあります。INFORMIX- SQL メイ ンメニューの「Form」オプションを使用するか、またはオペレーティング システムのコマンド行から適切なプログラムを使って直接作業することが できます。どちらの方法を選択する場合も、フォームが参照するデータ ベースとすべての表をあらかじめ作成しておく必要があります。次の 2 つ のセクションでは、これらの方法の手順を説明しています。ただし、 フォーム仕様ファイルの作成または修正方法に関するルールの説明はあり ません。そのようなルールは、本章の残りのセクションに定義されていま す。 メニュー システムを使ったフォームの作成 INFORMIX- SQL メニュー システムを使用してカスタム スクリーン フォーム を作成するには、次の手順に従ってください。 1. INFORMIX- SQL メインメニューで「Form」オプションを選択してか ら、 「FORM」メニューで「Generate」オプションを選択する。 2. 現行のデータベースがない場合、「SELECT DATABASE」画面が表示さ れる。データベースを選択した後、「GENERATE FORM」画面が表示さ れます。フォームに割り当てる名前を入力します ( 例えば、 NEWFORM)。INFORMIX- SQL から、フォームに必要な列が含まれる表の 名前を要求されます。「GENERATE FORM」メニューでは、最大 8 つの 表の入力が可能です。(8 個より多い表をフォーム仕様にインク ルードする必要がある場合は、「FORM」メニューの「New」オプショ ンを使用して、最初から作成しなければなりません。) インク ルードするすべての表の選択が完了すると、FORMBUILD によってデ フォルトのフォーム仕様ファイルが作成されます。その後、「FORM」 メニューが表示されます。これで、PERFORM でデフォルト スクリー ン フォームを使用できます。 48 IBM Informix SQL リファレンス マニュアル メニュー システムを使ったフォームの作成 デフォルト フォーム仕様ファイルは、フォームにインクルードさ れた表のすべての列のリストとして画面をフォーマットします。そ れは、データの表示方法に関する特別な指示を PERFORM に提供する こともなければ、データ操作を実行するための指示も組み込まれて いません。 3. 「FORM」メニューで「Modify」オプションを選択すると、 INFORMIX- SQL によって「MODIFY FORM」画面が表示される。デフォル ト フォーム仕様の名前を指示します (NEWFORM)。このセッションの 前にエディタを指定しなかった場合、または (『付録 B. 環境変数 の設定』で説明しているように ) DBEDIT 環境変数を設定していな い場合、INFORMIX- SQL から使用するエディタの名前を要求されます。 その後、INFORMIX- SQL はそのファイルでシステム エディタを呼び出 します。 デフォルト フォーム仕様ファイルを編集して、カスタム スクリー ン フォームと関連する指示を作成します。エディタを終了します。 4. 「MODIFY FORM」メニューが表示される。「Compile」オプションを選 択します。 5. フォーム仕様ファイルのコンパイルが正常に終了した場合、その趣 旨のメッセージが表示され、FORMBUILD によってファイル名の拡張 子 .frm のフォーム仕様ファイル ( 例えば、newform.frm) が作成 される。ステップ 7 へ進んでください。フォーム仕様ファイルにエ ラーが含まれる場合は、その趣旨のメッセージが表示され、 FORMBUILD によってファイル名の拡張子 .err のフォーム仕様ファ イル ( 例えば、newform.err) が作成されます。ステップ 6 へ進ん でください。 6. 「COMPILE FORM」メニューから「Correct」オプションを選択す る。INFORMIX- SQL は、コンパイル エラーのマークが付いたフォーム 仕様ファイルでシステム エディタを呼び出します。エラーを訂正 したら、エラー メッセージを削除する必要はありません。それ は、 INFORMIX- SQL が自動的に行います。ステップ 4 を繰り返します。 7. コンパイルが正常終了したら、「MODIFY FORM」メニューで「Saveand-exit」オプションを選択する。 「Generate」オプションを使用してデフォルト フォーム仕様を作成する代 替手段として、 「New」オプションを選択することもできます。INFORMIX- SQL がシステム エディタを呼び出します。 FORMBUILD トランザクション フォーム生成プログラム 49 オペレーティング システムを使ったフォームの作成 通常、カスタム フォームを作成する方法としては「Generate」オプション の方が能率的です。「New」オプションを使用する場合、フォーム仕様のす べての指示をファイルに入力しなければならないからです。 オペレーティング システムを使ったフォームの作成 オペレーティング システムのコマンド行から直接カスタム スクリーン フォームを作成するには、次の手順に従ってください。 1. オペレーティング システムのプロンプトで次のコマンドを入力し て、デフォルト フォーム仕様ファイルを作成する。 sformbld -d FORMBUILD から、フォーム仕様ファイルの名前、データベースの名 前、およびフォームに必要な列が含まれる表の名前を要求されま す。FORMBUILD は、最大 14 個まで表の入力を許可します。表名に空 白行を入力すると、FORMBUILD は、すべての表が選択されたと判断 してデフォルト フォーム仕様ファイルを作成します。FORMBUILD は、そのファイルの名前に拡張子 .per を追加します。 代替手段として、システム エディタを使用してフォーム仕様ファ イルを作成することもできます。フォーム仕様ファイルの名前に拡 張子 .per を追加する必要はありませんが、追加することも可能で す。この方法を使用する場合は、ステップ 3 へ進んでください。 2. システム エディタを使用して、必要な仕様を満たすようデフォル ト フォーム仕様ファイルを修正する。 3. コマンドを入力する。 sformbld newform ここで、newform は使用するフォーム仕様ファイルの名前です (拡張子 .per は付けません)。コンパイルが正常終了した場合は、 FORMBUILD によって newform.frm というコンパイル済みのフォーム 仕様ファイルが作成され、ここでカスタム スクリーン フォームの 作成は終了します。コンパイルが異常終了した場合は、FORMBUILD によって newform.err というファイルが作成されるので、ステッ プ 4 へ進む必要があります。 4. ファイル newform.err を編集して、コンパイル エラーを訂正す る。エラー メッセージは消去しなければなりません。ファイル newform.per を、この訂正済みのバージョンで上書きして、ステッ プ 3 を繰り返します。 50 IBM Informix SQL リファレンス マニュアル フォーム仕様ファイルの構造 コンパイル済みのフォーム仕様をコマンド行から直接実行するには、次の コマンドを入力します。 sperform newform INFORMIX- SQL メインメニュー オプションの短縮版を使用して、オペレー ティング システムのコマンド行からカスタム スクリーン フォームを作成 することもできます。『付録 G. オペレーティング システムからプログラ ムへのアクセス』では、この方法を詳細に説明しています。 フォーム仕様ファイルの構造 フォーム仕様ファイルは、図 11 に表示の通り、4 つの必須セクション (DATABASE、SCREEN、TABLES、および ATTRIBUTES) と 1 つのオプション セク ション (INSTRUCTIONS) から構成されます。 図 11 フォーム仕様ファイルの構文 DATABASE セクション P.54 SCREEN セクション P.55 TABLES セクション P.64 ATTRIBUTES セクション P.67 INSTRUCTIONS セクション P.110 DATABASE セクション SCREEN セクション 各フォーム仕様ファイルは、そのフォームで使用するデータ ベースを識別する DATABASE ( データベース ) セクションで 開始しなければなりません。 SCREEN ( スクリーン ) セクションが次に現れ、画面に表示さ れる通りの正確なフォームのレイアウトを表示します。 フォームに幾つかの画面がある場合、このセクションには各 画面のレイアウトが続けてインクルードされます。グラ フィックス文字を使用して、画面のアピアランスを強化する ことができます。 FORMBUILD トランザクション フォーム生成プログラム 51 フォーム仕様ファイルの構造 TABLES セクション 各フォーム仕様ファイルには、SCREEN ( スクリーン ) セク ションの後に TABLES ( 表 ) セクションが含まれなければな りません。TABLES ( 表 ) セクションは、フォームに現れる列 が含まれる表を識別します。 ATTRIBUTES ATTRIBUTES ( 属性 ) セクションは、例えば、アピアランス、 セクション 許容できる入力値、表示されるコメント、デフォルト値と いったものを含む、フォームの各フィールドを説明します。 INSTRUCTIONS INSTRUCTIONS ( インストラクション ) セクションはオプショ セクション ンで、主 / 詳細関係、複合結合、代替フィールド区切り記 号、およびコントロール ブロックを指定します。 フォーム仕様ファイル内でセクションの終わりをマークするために END キーワードを使用することはオプションです。ユーザの中には、セクショ ンの終わりを END で示すと便利だと考える人もいます。デモンストレー ション データベースに付いてくるフォームは、END キーワードを使用して います。 図 12 は、フォーム仕様ファイルの全体的な構造を表しています。 52 IBM Informix SQL リファレンス マニュアル フォーム仕様ファイルの構造 図 12 部分的なフォーム仕様ファイル database stores7 screen { -------------------------------------------------------------------------CUSTOMER INFORMATION: Customer Number: [c1 ] Telephone: [c10 ] . . . SHIPPING INFORMATION: Customer P.O.: [o20 ] Ship Date: [o21 ] Date Paid: [o22 ] } end tables customer orders attributes c1 = *customer.customer_num = orders.customer_num; c10 = phone, picture = "###-###-####x#####"; . . . o20 = po_num; o21 = ship_date; o22 = paid_date; instructions customer master of orders; orders master of items; end FORMBUILD トランザクション フォーム生成プログラム 53 DATABASE ( データベース ) セクション DATABASE ( データベース ) セクション フォーム仕様ファイルの DATABASE ( データベース ) セクションは、フォー ムが連動するように意図されているデータベースを識別します。 DATABASE ( データ ベース ) セクション DATABASE database name WITHOUT NULL INPUT DATABASE database-name WITHOUT NULL INPUT 必須キーワード。 データベースの名前。 NULL 値を不許可にすることができるオプションの キーワード。 NULL 値を保持しないデータベースを作成して作業するよう決定した場合の み、キーワード WITHOUT NULL INPUT オプションを使用します。その他のデ フォルトを保持しないフィールドの場合、このオプションによって、 INFORMIX- SQL は数値型フィールドと時間隔 (INTERVAL) 型フィールドの場合は デフォルト値としてゼロ を、文字フィールドの場合は空白 を表示します。 日付 (DATE) 型のデフォルト値は 12/31/1899、日時 (DATETIME) 型のデフォ ルト値は 1899-12-31 23:59:59.99999 です。 次の DATABASE ( データベース ) セクションは、本章の終わりにある sample フォーム仕様ファイルからの抜粋です。 database stores7 Informix Dynamic Server では、遠隔データベースのフルネームを DATABASE ( データベース ) セクションに指定することができます。TABLES ( 表 ) セ クションには、表の単純名をリストします。詳しくは、64 ページの 『TABLES ( 表 ) セクション』を参照してください。 54 IBM Informix SQL リファレンス マニュアル SCREEN ( スクリーン ) セクション SCREEN ( スクリーン ) セクション フォーム仕様ファイルの SCREEN ( スクリーン ) セクションでは、PERFORM でフォームを使用するとき、画面上にそのフォームがどのように表示され るかを記述します。1 つのフォーム仕様に、複数のページ レイアウトに対 応する複数の SCREEN ( スクリーン ) セクションをインクルードできます。 SCREEN ( スクリーン ) セクション ページ { レイアウト P.57 } SCREEN SIZE lines SCREEN SIZE BY columns END 必須キーワード。 FORMBUILD に長さ何行、幅何列 という具体的な数値で画面を作成する よう指示するオプションのキーワード。 画面の長さを行数で指定する整数。デフォルトは 24 行です。 オプションのキーワード。 画面の幅を列数で指定する整数。デフォルトは 80 列です。 SCREEN ( スクリーン ) セクションを終了するオプションのキーワード。 lines BY cols END 使用法 Q 各ページ レイアウトは、その前に先行する SCREEN キーワードがあ り、中かっこ ({ }) で囲まれます。ページ レイアウトは、タイト ル、フィールド ラベル、グラフィックス文字といった、一連の表 示フィールド とテキスト情報から構成されます。表示フィールド は、フィールドの長さを定義する角かっこ ([ ]) とフィールドを 識別するフィールド タグによって表されます。 Q SCREEN ( スクリーン ) セクションのデフォルトは SCREEN SIZE 24 by 80 です。FORMBUILD は、最大で 20 行まで (4 行はシステム使 用のために予約されます )、1 行に最大で 80 文字までの画面を準 備します。 Q 代替の画面サイズを指示するには、SIZE キーワードを使用します。 大きい画面サイズを指示せずに、中かっこのペアの間に 20 を超え る画面の行をインクルードした場合、FORMBUILD はページを分割し て、2 番目のページの先頭に 21 行目を配置します。 FORMBUILD トランザクション フォーム生成プログラム 55 SCREEN ( スクリーン ) セクション Q 画面サイズを指定する場合、そのサイズが最初の画面に現れなけれ ばなりません。そのサイズはすべての画面に適用されます。 Q コマンド行構文を使用して、次のように指定することで、SCREEN ( スクリーン ) セクションの行数または次元 のいずれか、あるい はその両方を上書きすることができます。 sformbld -l lines -c cols filename ここで、lines と cols は、上の構文ダイヤグラムと同じように定 義されます。filename はフォーム仕様ファイルの名前です。 FORMBUILD は、INFORMIXTERM 環境変数を使用して、コンパイル時に 画面の特性を設定するために termcap または terminfo のどちら を使用するかを決定します。INFORMIXTERM が設定されていない場 合、FORMBUILD は termcap を使用します。 次の例は、複数のページ レイアウトを持つ SCREEN キーワードの使用を示 しています。 SCREEN SIZE 18 BY 75 { . . . display fields page layout . . . } SCREEN { . . . display fields page layout . . . } 本章の終わりに組み込まれている sample フォームは、複数ページ フォー ムの SCREEN ( スクリーン ) セクションを明示しています。 56 IBM Informix SQL リファレンス マニュアル ページ レイアウト ページ レイアウト フィールドを区切る角かっこ ([ ]) を使用して、データを画面上のどこに 表示するかを指示します。各フィールドは関連したフィールド タグを保持 し、それにより ATTRIBUTES ( 属性 ) セクションと INSTRUCTIONS ( インスト ラクション ) セクションの中でそのフィールドを識別します。 ページ レイアウト | text text [ ] | field-tag [ field-tag ] 画面に表示する素材。 フィールドの区切り記号。フィールドの幅は、角かっこの間に配置 できる文字数です。このコンテキストでは、角かっこはオプション の入力ではありません。 1 つのフィールドが終わり、次のフィールドが開始することを示し ます。 表示フィールドを識別するために使用されるフィールド タグ。 使用法 Q 各フィールドには必ずフィールド タグが必要です。フィールド タ グの長さは 1 から 50 文字です。先頭は文字でなければなりません が、タグの残りの部分には文字、数字、およびアンダスコア (_) をインクルードできます。フィールド タグは角かっこの中に収ま るような長さでなければなりません。同じ列情報が複数の場所に現 れる必要がある場合、同じフィールド タグをフォーム仕様の SCREEN ( スクリーン ) セクション内の複数の位置で使用できます。 FORMBUILD トランザクション フォーム生成プログラム 57 ページ レイアウト Q フィールド タグはデータベースの列名とは異なります。それらは、 情報をどこに表示および格納するかを PERFORM に指示するために SCREEN ( スクリーン ) セクション、ATTRIBUTES ( 属性 ) セクショ ン、および INSTRUCTIONS ( インストラクション ) セクションで使 用されるアソシエーションです。ATTRIBUTES ( 属性 ) セクション は、各フィールド タグをデータベース内の列と関連付けたり、表 示専用フィールドとして識別したりします。 Q FORMBUILD は、フィールド タグの大文字小文字は無視します。すな わち、a1 と A1 は同じと見なされます。 Q 単一文字列には、a から z の表示タグを使用できます。これは、 スクリーン フォームが使用できる単一文字列は 26 個に限られる ことを意味します。 Q デフォルト フォーム仕様ファイルを作成する際、すべてのフィー ルドの幅は、データベース表内の対応する列のデータ型によって決 定されます。 Q フォーム仕様の SCREEN (スクリーン) セクション内のフィールドの 幅は、通常、そのフィールドと対応するデータベース列の幅と等し い設定になります。画面の幅は削減したり拡張したりできますが、 それによってデータの画面表示やデータベース保管が切り捨てられ ることがあるため、注意が必要です。 Q 数値の列に対応するフィールドは、表示する可能性がある最大の数 値を含むことができるだけの大きさが必要です。フィールドが小さ すぎて、割り当てられた数値を表示できない場合、PERFORM は フィールドをアスタリスクで埋めます。 Q バイト (BYTE) 型データのフィールドは一切表示されません。代わり に、<BYTE value> というフレーズが表示フィールドに表示され、 バイト (BYTE) 型データは表示できないことをユーザに示します。次 のフォーム仕様の抜粋は、テキスト (TEXT) 型フィールド resume と バイト (BYTE) 型フィールド photo を表示しています。テキスト (TEXT) 型フィールドの場合、フォームで複数の行は必要ありませ ん。バイト (BYTE) 型フィールドには、<BYTE value> という言葉が 表示されるだけなので、このフィールドは短くなっています。 resume [f003 photo [f004 ] attributes f003 = employee.resume f004 = employee.photo 58 IBM Informix SQL リファレンス マニュアル ] ページ レイアウト Q 文字 (CHAR) 型データのフィールドは、列の定義済みの長さより短 くできます。PERFORM は、フィールドを左から埋めていき、割り当 てられたフィールドより長い文字 (CHAR) 型の文字列の右端を切り 捨てます。サブスクリプト付けによって、文字 (CHAR) 型列の一部分 を 1 つ以上のフィールドに割り当てることができます。(67 ページ の『ATTRIBUTES ( 属性 ) セクション』を参照。) Q デフォルト フォーム仕様ファイルを編集して修正した場合、また はファイルを最初から作成した場合、FORMBUILD の検査 (-v) オプ ションを使用して、文字列フィールドの幅が対応する列のデータ型 と一致することを検査できます。システム プロンプトに応答して 次のコマンドを入力します。 sformbld -v newform 矛盾があると、FORMBUILD はそれをファイル newform.err に報告し ます。ここで、newform は、検査されたフォーム仕様ファイルの名 前です。 Q 棒記号 (|) を使用して、1 つのフィールドの終わりと次のフィー ルドの開始を示すことができます。次の例で、field-tag1 は最初 の表示フィールド、field-tag2 は 2 番目の表示フィールドを識別 します。 text [ field-tag1 | field-tag2 ] 棒記号を使用して、1 つのフィールドの終わりと次のフィールドの 開始を示すときは、フォーム仕様の INSTRUCTIONS ( インストラク ション ) セクションに DELIMITERS 文をインクルードしなければな りません。文の中では、左右の区切り記号に同じ記号を使用してく ださい。 FORMBUILD トランザクション フォーム生成プログラム 59 ページ レイアウト sample フォーム仕様ファイルの画面レイアウトを次に示します。 screen { ================================================================================ ================================================================================ Customer Number: Company: First Name: Address: City: Telephone: [c1 [c4 [c2 [c5 [c6 [c7 [c10 ] ] ] Last Name: [c3 ] ] ] State: [c8] Zip: [c9 ] ] ] ================================================================================ ================================================================================ } screen { ================================================================================ CUSTOMER NUMBER: [c1 ] COMPANY: [c4 ] ORDER INFORMATION: Order Number: [o11 ] Stock Number: [i13 Description: [s14 Unit: [s16 Order Date: [o12 ] ] ] ] Manufacturer: [i16] [m17 Quantity: [i18 Unitprice: [s15 Total Price: [i19 SHIPPING INFORMATION: Customer P.O.: [o20 Backlog: [a] Ship Date: [o21 Date Paid: [o22 Instructions: [o23 ] ] ] ] Ship Charge: [d1 ] Total Order Amount: [d2 ] ] } end 60 IBM Informix SQL リファレンス マニュアル ] ] ] フォームのグラフィックス文字 フォームのグラフィックス文字 グラフィックス文字を使用して、スクリーン フォームの中にボックスやそ の他の長方形を配置できます。 単純な線を引いたり、図形を呼び出すコマンド文字列を入力できます。そ れにより、普通の文字が、表示されるコンパイル済みのフォームで特殊効 果を生みます。例えば、図 13 に表示の通り、文字 p はボックスの左上隅 になり、一連のハイフン (-) は実線の水平ルールになります。 図 13 フォーム仕 様と表示される フォーム ( 方法 1) フォーム仕様 database STORES7 screen { \gp---------------------------------------------------------q \g|------------------------\gCUSTOMER\g-----------------------| \g|\g \g|\g Cust No [f000] Company [f001 ] \g| \g|\g \g| \g|\g Name: [f002 ] [f003 ] \g| \g|\g \g| \g|\g Telephone Number: [f004 ] \g| \g|\g \g|\g \g|\g \g|\g CUSTOMER \g|\g Cust No. [112 ] Company [Runners & Others ] } e Name [Margaret ] [Lawson ] Telephone Number: [415-887-7235 ] 表示されるフォーム FORMBUILD トランザクション フォーム生成プログラム 61 フォームのグラフィックス文字 次の手順は、グラフィックス文字を指定するステップの概要です。 1. フォームを通常の方法で作成する。 2. 次の文字を SCREEN ( スクリーン ) セクションで使用して、フォー ム上に 1 つ以上のボックスの枠を示す。 文字 効果 p ボックスの左上隅 q ボックスの右上隅 b ボックスの左下隅 d ボックスの右下隅 _ 水平線文字 | 縦線文字 これら 6 つの文字の意味は、termcap ファイルの gb 仕様、また は terminfo ファイルの acsc 仕様から派生しています。コンパイ ル済みのフォームを表示する際は、これらの文字が INFORMIX- SQL によって termcap または terminfo ファイルで指定されているグ ラフィックス文字に置換されます。 62 IBM Informix SQL リファレンス マニュアル フォームのグラフィックス文字 3. フォームの望ましい構成が完成したら、文字列 \g を使用して、ど こからグラフィックス モードが開始して、どこでグラフィックス モードが終了するかを指示する。 文字列 \g を、最初の p、q、d、b、ダッシュ、またはグラフィッ クス文字を表すパイプの前に挿入します。グラフィックス モード を終了するには、文字列 \g を p、q、d、b、ダッシュ、またはパ イプの後に挿入します。図 14 は、テキストを囲むボックスを描画 するコマンドを示しています。 \gp-----------------------q \g|\g \g|\g this is text \g|\g \g|\g text, 2 \g|\g \gb-----------------------d 図 14 テキストを 囲むボックスの 描画 \g| \g| \g| \g| \g| 仕様 this is text text, 2 表示結果 文字列 \g は、フォーム上で本来の空白部分には挿入しないでください。 円記号 (\) は行内で最初のグラフィックス文字の本来の位置に来て、残り の行を右へプッシュする必要があります。これによって、フォーム仕様は 画面上ゆがんで見えますが、実際の出力はゆがんでいません。 フォーム仕様には、ボックスや四角形を作成するために使用する文字のみ でなく、その他のグラフィックス文字もインクルードできます。しかし、 p、q、d、b、ダッシュ、およびパイプ以外の文字の意味は、使用する端末 によって異なります。 FORMBUILD トランザクション フォーム生成プログラム 63 TABLES ( 表 ) セクション 必要な端末エントリ グラフィックス文字を使用する計画がある場合、termcap または terminfo ファイル内の端末エントリが次の変数をインクルードしていなければなり ません。 termcap: gs グラフィックス モードに入るためのエスケープ シーケンス。 ge グラフィックス モードを終了するためのエスケープ シーケン ス。 gb 枠を描画するために使用する 6 つのグラフィックス文字に相当 する ASCII の連結番号付きリスト。 terminfo: smacs グラフィックス モードに入るためのエスケープ シーケンス。 rmacs グラフィックス モードを終了するためのエスケープ シーケン ス。 acsc 枠を描画するために使用する 6 つのグラフィックス文字に相当 する ASCII の連結番号付きリスト。 termcap および terminfo ファイルの変更方法に関する情報については、 『付録 B. 環境変数の設定』を参照するか、ご使用の端末に同梱されている マニュアルで確認してください。 TABLES ( 表 ) セクション フォーム仕様ファイルの 3 番目のセクションには、スクリーン フォーム に現れる列を保持しているすべての表をリストします。リストされている すべての表のすべての列をスクリーン フォームに表示する必要はありませ んが、フォームにデータを提供する表は、すべてここにインクルードする 必要があります。 TABLES ( 表 ) セクションは、TABLES キーワードとそれに続く単一の表名ま たは空白で分離されている表名のリストで構成されます。 64 IBM Informix SQL リファレンス マニュアル TABLES ( 表 ) セクション ANSI 標準準拠データベースで、所有者 以外のユーザがフォームを実行する 場合、フォームではすべての表名を owner. プレフィックスで修飾しなけ ればなりません。所有者名を指定する場合は、owner.table-name の単純別 名を TABLES ( 表 ) セクションで指定して、フォーム仕様ファイル内のその 他のセクションでその表を参照できるようにする必要があります。 TABLES ( 表 ) セクション TABLES table-name alias = TABLES alias owner table-name END owner . END TABLES ( 表 ) セクションを開始するキーワード。 フォーム仕様ファイル内での表名、シノニム、または表の名前の 別名。 表を作成したユーザのユーザ名。 データベース内での表の ID またはシノニム。 TABLES ( 表 ) セクションを終了するオプションのキーワード。 使用法 Q 一時表を表名リストにインクルードすることはできません。 Q ビューにデータを提供する列が、すべて同じ表に属している場合に 限り、ビューを基にしたフォームを作成することができます。集計 データは許可されません。 Q 1 つのフォームの中で使用可能な表数はマシンに依存します。大部 分の UNIX システムでは、一度にオープンできる最大表数は 12 個 です。 本章の終わりにある sample フォーム仕様ファイルの TABLES ( 表 ) セク ションは、次のとおりです。 tables customer items stock orders manufact 次の TABLES ( 表 ) セクションでは、2 つの表の別名を指定しています。 tables tab1 = refdept.archive tab2 = athdept.equip FORMBUILD トランザクション フォーム生成プログラム 65 遠隔データベース 遠隔データベース Informix Dynamic Server では、フォーム内に遠隔データベース、外部表、 および外部分散表を指定できます。遠隔データベースをフォームで使用す るために現行のデータベースにしたり、現行のデータベースの外部にある 表をフォームで指定したりできます。 フォームの DATABASE ( データベース ) セクションには、遠隔データベース のフルネームを指定できます。TABLES ( 表 ) セクションには、表の単純名 をリストします。現行のデータベースのシノニムが定義済みであれば、 TABLES ( 表 ) セクションで table-name のシノニムを使用することも可能 です。これらのシノニムは、現行のデータベース内またはその他のデータ ベース内の表を表すことができます。 フォームの ATTRIBUTES ( 属性 ) セクションでは、単純表名を使って現行の データベース内の表を参照します。また、次のように、ATTRIBUTES ( 属性 ) セクションでシノニムを使用することもできます。 ATTRIBUTES f0 = table-name.colname, .....; f1 = synonym.colname, ......; f2 = view-name.colname, .....; . . . 外部表とシノニム 複数の要素で構成される名前を持つ表またはシノニムを使用する必要があ る場合は、最初に別名を与えなければなりません。表の別名を必要とする オブジェクトには次のようなものがあります。 Q 外部表 Q 所有者名で修飾されている、現行のデータベース内の表 Q 複数の要素で構成されるシノニム 次の構文を使用して、オブジェクトに表の別名を与えます。 TABLES . . . table-alias=database@servername:[owner.]table table-alias=[owner.]table 66 IBM Informix SQL リファレンス マニュアル ATTRIBUTES ( 属性 ) セクション table-alias は、単語の識別子です。 フォームの ATTRIBUTES ( 属性 ) および INSTRUCTIONS ( インストラクショ ン ) セクションでは、次のように外部表を参照します。 ATTRIBUTES . . . f3 = table-alias.colname, .....; . . . 例えば、TABLES ( 表 ) セクションに次のような宣言があるとします。 timecard_a = otherdb:acctg.timecard この場合、ATTRIBUTES ( 属性 ) セクションの該当部分は次のようになりま す。 f3 = timecard_a.sickleave エラー メッセージには、実際の表名でなく別名が表示されます。PERFORM を使用している場合は、表名の代わりに別名が画面の 2 行目に表示されま す。 ATTRIBUTES ( 属性 ) セクション ATTRIBUTES ( 属性 ) セクションでは、 SCREEN ( スクリーン ) セクションで定 義した各フィールドの動作とアピアランスを記述します。SCREEN ( スク リーン ) セクションにあるフィールドはすべて、ATTRIBUTES ( 属性 ) セク ションの中に記述しなければなりません。属性 を使用して、75 ページの 『ATTRIBUTES の構文』で説明しているように、PERFORM でそのフィールドを どのように表示するかを記述したり、デフォルト値を指定したり、入力可 能な値を制限したり、その他のパラメータを設定したりします。 ATTRIBUTES ( 属性 ) セクションにフィールドを記述する順序によって、画 面上のカーソル移動のデフォルトの順序が決まります。また、列の参照順 序によって、PERFORM が表をアクティブにする順序 ( すなわち、データ入力 を可能にする順序 ) が決まります。 FORMBUILD トランザクション フォーム生成プログラム 67 表示フィールドの順序 SCREEN ( スクリーン ) セクション内のフィールドは、列と関連している必 要はありません。列との関連がないフィールドを表示専用フィールド と呼 びます。ATTRIBUTES ( 属性 ) セクションには、フィールド タグをデータ ベース列にリンクする文とフィールド タグを表示専用フィールドにリンク する文の 2 種類のリンク文 が含まれます。 ATTRIBUTES (属性) セクション = ATTRIBUTES field-tag フィールドの記述 P.69 ; 表示専用 フィールド P.71 ATTRIBUTES field-tag 必須キーワード。 SCREEN ( スクリーン ) セクションで使用されるフィールド タ グ。 表示フィールドの順序 PERFORM で「Query」 、 「Add」、および「Update」の各オプションを使用する と、デフォルトでカーソルは、フォーム仕様の ATTRIBUTES ( 属性 ) セク ションにフィールド タグが現れる順序に従って、実効表内のフィールドか らフィールドへ移動します。カーソルは画面上の実効表の最後のフィール ドまで進むと、最初のフィールドへ戻ります。デフォルトの順序は、110 ページの『INSTRUCTIONS ( インストラクション ) セクション』で説明して いるコントロール ブロックを使用して変更することができます。 表の順序 フォームが幾つかのデータベース表に対応するフィールドを含んでいる場 合、PERFORM はそれらの表を番号付きリストにします。「Table」オプショ ンを使用すると、PERFORM は、リスト内の次の表を選択することで実効表を 変更します。PERFORM は、表の列が ATTRIBUTES ( 属性 ) セクションで参照 される順序で表を割り当てます。ある表の列をタグ名または結合で別の列 と関連付けるときはいつも、その表を参照することになります。 68 IBM Informix SQL リファレンス マニュアル データベース列にリンクされるフィールド データベース列にリンクされるフィールド ATTRIBUTES ( 属性 ) セクションでは、入力を受け入れるフィールドと受け 入れないフィールドの 2 種類のフィールドをデータベース列にリンクする ことができます。データベース列にリンクされるフィールドの中で、キー ボードからの入力を許可しないものをルックアップ フィールド といいま す。ルックアップ フィールドは、75 ページの『ATTRIBUTES の構文』で説 明している、LOOKUP 属性を使って指定します。 このセクションでは、入力を許可して列にリンクされるフィールドを説明 します。 フィールドの記述 columnname * ; table , , * table column-name attributespecification attributespecificatio 照合結合において主列を識別するオプションの句読点。 データベース表のオプションの名前または別名。フォーム 内で同一列名が複数の表に現れる場合のみ表を指定する必 要があります。( これにより、PERFORM が列を一意的に識 別することができます。) 列の名前。 FORMBUILD 属性またはカンマで分離された属性のリスト。 すべての属性を 67 ページの『ATTRIBUTES ( 属性 ) セク ション』に記述します。 FORMBUILD トランザクション フォーム生成プログラム 69 データベース列にリンクされるフィールド 使用法 Q サブスクリプト付けを使用して、フィールドに文字 (CHAR) 型列の 一部分を表示できます。例えば、orders 表には、長さ 40 の文字 (CHAR) 型列 ship_instruct 列があります。これを画面で、 長さ 20 の 2 つの表示フィールドとして表示できます。2 つのフィールドの フィールド タグがそれぞれ inst1 と inst2 であった場合、 ATTRIBUTES ( 属性 ) セクションのエントリは次のようになります。 inst1 = ship_instruct[1,20]; inst2 = ship_instruct[21,40]; また、WORDWRAP 属性を使用して、長い 文字 (CHAR) 型フィールドを 複数行に表示することも可能です。 Q TABLES ( 表 ) セクションで別名を使用する場合は、 ATTRIBUTES ( 属性 ) セクションでも別名を使用して表を参照しなければなりません。 Q フォームの ATTRIBUTES ( 属性 ) および INSTRUCTIONS ( インストラク ション ) セクションでは、次のように外部表を参照します。 ATTRIBUTES . . . f3 = table-alias.colname, .....; . . . 例えば、TABLES ( 表 ) セクションに次のような宣言があるとしま す。 timecard_a = otherdb:acctg.timecard この場合、ATTRIBUTES ( 属性 ) セクションの該当部分は次のよう になります。 f3 = timecard_a.sickleave エラー メッセージには、実際の表名でなく別名が表示されます。 PERFORM を使用している場合は、表名の代わりに別名が画面の 2 行 目に表示されます。 外部表へのアクセス方法についての詳細は、64 ページの『TABLES ( 表 ) セクション』を参照してください。 70 IBM Informix SQL リファレンス マニュアル 表示専用フィールド 表示専用フィールド 表示専用フィールドはデータベースの列と関連しておらず、画面上にのみ 存在します。その値は、その他のフィールドの値に基づいた計算や論理的 決定を受けて設定されます。 表示専用フィールド TYPE data-type NOT NULL DISPLAYONLY ; ALLOWING INPUT , , DISPLAYONLY ALLOWING INPUT TYPE data-type NOT NULL attributespecification attributespecification フィールドがデータベース内の表の列に対応していない ことを示す必須キーワード。そのようなフィールドに 値を設定する方法は、INSTRUCTIONS ( インストラクショ ン ) セクションで記述します。 入力を可能にするために使用するオプションのキーワー ド。 必須キーワード。 シリアル (SERIAL) 型を除いて、INFORMIX- SQL が許可す るデータ型のうちのいずれか 1 つ。( データ型に関する 情報は、「Informix SQL ガイド : 参照」を参照してくだ さい。) 入力可能なフィールドの場合、ユーザが必ず値を設定し なければならないことを INFORMIX- SQL に通知するオプ ションのキーワード。 属性またはカンマで分離された属性のリスト。すべての 属性を 67 ページの『ATTRIBUTES ( 属性 ) セクション』 に記述します。 Q 文字 (CHAR) 型には長さを指定しないでください。長さは、表示幅 によって決定されます。 Q 10 進数 (DECIMAL) 型または金額 (MONEY) 型に精度を指定する場合、 表示幅に値が収まることを確認してください。 FORMBUILD トランザクション フォーム生成プログラム 71 表示専用フィールド Q 入力が許可されないフィールドの場合、表示専用フィールドで使用 できるのは次の属性に限定されます。 DEFAULT FORMAT REVERSE UPSHIFT DOWNSHIFT QUERYCLEAR RIGHT ZEROFILL Q 1 つ以上の表示専用フィールドで入力を許可するよう指定すると、 PERFORM はそれらのフィールドを displaytable というデータベー ス表に集めます。実際にはデータベース表は作成されませんが、 PERFORM は、あたかも displaytable が存在し、フィールド タグが 列名であるかのように振る舞います。displaytable は INSTRUCTIONS ( インストラクション ) セクションの中で使用して、 入力を許可する表示専用フィールドでのデータ入力やカーソル移動 を制御します。 Q displaytable は、存在する場合、その他のフィールド タグに混 じってそのフィールドがどのように順序付けされているかに関係な く、実効表の順序において常に最後の表になります。 Q DATABASE ( データベース ) セクションにキーワード WITHOUT NULL INPUT 節がある場合、NOT NULL キーワードにより INFORMIX- SQL は、 このフィールドのデフォルトとしてゼロ ( 数値型 ) または空白 (文字 (CHAR) 型)を使用します。 Q Informix Dynamic Server では、表示専用 (FORMBUILD) フィールド を定義するとき、キーワード TEXT と BYTE を使用できます。フィー ルドをバイト (BYTE) 型として指定すると、<BYTE value> と表示さ れるだけなので、そのような指定では不十分なためです。 sample フォーム仕様ファイルの ATTRIBUTES ( 属性 ) セクションには、次の 2 つの DISPLAYONLY フィールドが含まれます。 d1 = displayonly type money; d2 = displayonly type money; これらのフィールドは、注文ごとの運送費と注文総額の計算に使用されま す。そのような情報は、データベース内のどの列にも格納されません。 72 IBM Informix SQL リファレンス マニュアル 列の結合 列の結合 幾つかのデータベース表からの情報を含むスクリーン フォームには、通 常、同じ情報を含んでいる複数のデータベース列を結合する 表示フィール ドが組み込まれます。結合列へのインデックス付けは必須ではありません が、基礎の結合列がインデックス付けされていない場合、表間での問合せ があまり迅速に実行されないため、そうすることをお勧めします。 結合するデータベース列は、同一データ型のものでなければなりません。 文字 (CHAR) 型列の場合は、 同じ長さでなければなりません。2 つのシリアル (SERIAL) 型列同士を結合してはいけません。シリアル (SERIAL) 型列は、整数 (INTEGER) 型列とのみ結合してください。 列は、ATTRIBUTES ( 属性 ) セクションで同一フィールド タグに結び付ける ことで結合します。 field-tag = col1 = col2; sample フォームの例を次に示します。 o11 = *orders.order_num = items.order_num; フィールド タグ o11 は、orders 表の order_num 列を items 表の order_num 列と結合します。(orders.orders_num 列名の前に配置されてい るアスタリスクは、これが特殊な結合 - 照合結合であることを示していま す。照合結合は、74 ページで説明しています。) 属性の配置方法によって、どこでその属性が有効になるか決定されます。 結合の中のどの表がアクティブかに関係なく属性を適用する必要がある場 合は、列名を同一行に配置し、属性を最後の列名の後ろに配置します。 field-tag = col1 = col2, attr; 結合の中のそれぞれの列ごとに異なる属性を適用する必要がある場合は、 各列名を別々の行に配置します。 field-tag= col1, attr1; = col2, attr2; attr1 は col1 が含まれる表がアクティブになると有効になり、attr2 は column2 が含まれる表がアクティブになると有効になります。 sample フォームの例を次に示します。 i13 = items.stock_num; = *stock.stock_num, noentry, noupdate, queryclear; FORMBUILD トランザクション フォーム生成プログラム 73 列の結合 属性 NOENTRY、NOUPDATE、および QUERYCLEAR (75 ページの『ATTRIBUTES の 構文』に説明があります ) が有効なのは、stock 表がアクティブなときの みです。 同様に『ATTRIBUTES の構文』セクションで説明している、FORMAT および REVERSE 属性は、配置方法に関係なく常に有効になります。 照合結合 ある表の列に対応しているフィールドに入力する値が、別の表の別の列 ( 主 列 ) にすでに存在していることを検証することができます。 これは、 照合結合 を使って行います。照合結合は、次のように、主列名の前にアス タリスクを配置することで表します。 field-tag = col1 = *col2; PERFORM は、col2 に存在しない値を field-tag に入力できないようにしま す。( これは非複合条件にあたります。) 例えば、顧客の注文を設定するときは、あるお店に対して入力する顧客番 号が customer 表に存在する有効な顧客番号であることを確認する必要が あります。sample フォームの ATTRIBUTES ( 属性 ) セクションにある次の文 は、まさにこれを実行します。 c1 = *customer.customer_num = orders.customer_num; 前の文では、customer.customer_num 列が照合結合の主列です。この場合、 orders 表がアクティブなとき、customer 表の customer_num 列に存在しな い値をフィールド c1 に入力することはできません。 92 ページの『LOOKUP』で説明している 3 種類目の結合は、アクティブで ない表のデータの表示や検証を可能にします。 74 IBM Informix SQL リファレンス マニュアル ATTRIBUTES の構文 ATTRIBUTES の構文 PERFORM は次の属性を認識します。各属性の構文は次のセクションで詳細に 説明しています。 AUTONEXT CENTURY COLOR COMMENTS DEFAULT DOWNSHIFT FORMAT INCLUDE INVISIBLE LOOKUP NOENTRY NOUPDATE PICTURE PROGRAM QUERYCLEAR REQUIRE REVERSE RIGHT UPSHIFT VERIFY WORDWRAP ZEROFILL FORMBUILD トランザクション フォーム生成プログラム 75 AUTONEXT AUTONEXT AUTONEXT 属性を使用すると、現行フィールドが埋まるとカーソルが自動的 に次フィールドへ進むようにできます。 AUTONEXT 使用法 Q AUTONEXT は、部分文字列を利用して複数の表示フィールドに分割さ れている文字 (CHAR) 型のデータベース列にテキストを入力する際、 特に便利です。 Q AUTONEXT の別の使い方としては、入力データが標準的な長さの文字 (CHAR) 型フィールドに使用したり ( 例えば、 州名の省略形は常に 2 桁です )、あるいは文字 (CHAR) 型フィールドの長さが 1 の場合 ( キーストローク 1 回のみでデータ入力が完了し、次フィールドへ 移動できる場合 ) などに使用します。 sample フォーム仕様ファイルは、表示の通り、AUTONEXT 属性を使用して、 customer 表の state と zipcode の各列を表示します。 c8 = state, upshift, autonext; c9 = zipcode, autonext; c8 フィールドに 2 文字入力されると ( フィールドが埋まると )、カーソル は自動的に次フィールド (c9 フィールド ) の先頭に移動します。c9 フィールドに 5 文字入力されると ( フィールドが埋まると )、カーソルは 自動的に次フィールドの先頭に移動します。 76 IBM Informix SQL リファレンス マニュアル CENTURY CENTURY CENTURY 属性は、日付 (DATE) 型および日時 (DATETIME) 型のフィールドで 1 桁および 2 桁に省略された年 の指定を拡張する方法を指定します。この設 定 ( そして、実行時にシステム クロックから取得した年の値 ) を基にし て拡張が行われます。 CENTURY = "R" "C" "F" "P" C または c F または f P または p R または r 現在日付に最も近い過去、未来、または現在の年を使用。 未来の最も近い年を使用して、入力された値を拡張。 過去の最も近い年を使用して、入力された値を拡張。 入力された値のプレフィックスに現在の年の先頭 2 桁を使用。 使用法 INFORMIX- SQL の 7.20 より以前のリリースの大部分は、ユーザがリテラルの 日付 (DATE) 型または日時 (DATETIME) 型の値に年の末尾 2 桁しか入力しない と、自動的に数字 19 をプレフィクスに付けます。例えば、12/31/02 は、 プログラムがいつ実行されたかに関係なく、常に 12/31/1902 と拡張され ます。このような従来の動作は、Y2K 問題 と呼ばれることがあります。 CENTURY を使うと、省略された年を、ユーザが入力した数字と同じ数字で終 わる 4 桁の年に拡張するための 4 つのアルゴリズムのうちの 1 つを指定 できます。CENTURY は、DBCENTURY 環境変数と同じ設定をサポートしますが、 有効範囲は単一フィールドに制限されます。 ここで、過去、現在、および未来 は、すべてシステム クロックとの比較 です。 DBCENTURY 環境変数について詳しくは、 「INFORMIX- SQL ユーザ ガイド」お よび「Informix SQL ガイド : 参照」を参照してください。 FORMBUILD トランザクション フォーム生成プログラム 77 CENTURY CENTURY 属性を持たない日付 (DATE) 型および日時 (DATETIME) 型のフィールド で省略された年の値を拡張するグローバル ルールを設定する DBCENTURY と は異なり、CENTURY は大文字と小文字を区別しません。小文字 (r、c、f、 p) を、それらの大文字の代わりに使うことができます。それ以外のもの (例えば、数字)を指定した場合は、R がデフォルトとして使用されます。 CENTURY と DBCENTURY の設定が異なる場合、CENTURY が優先されます。 3 桁の年は拡張されません。1 桁の年は、まずゼロを使ったプレフィクス 変換によって 2 桁に拡張されます。その後、指定された設定に従い、 CENTURY によってその値が 4 桁に拡張されます。BC ( または BCE) 99 年か ら AD ( または CE) 99 年の間の年には ( 拡張を避けるため ) 先行ゼロが必 要です。 DBCENTURY 同様、省略された年の拡張には、実行の日時とシステム クロッ ク カレンダの正確性が大いに影響します。CENTURY に依存する必要性を避 けるには、ユーザに 4 桁で年を入力するよう要求する必要があります。 重要 : CENTURY 属性は、最初の時間単位として YEAR を含んでいない日時 (DATETIME) 型フィールドおよび日付 (DATE) 型または日時 (DATETIME) 型 フィールド以外のフィールドには効果がありません。例えば、文字フィー ルドや数値型フィールドに省略された年が入力されたとしても、CENTURY と DBCENTURY のどちらも効果を持ちません。 78 IBM Informix SQL リファレンス マニュアル COLOR COLOR COLOR を使用して、フィールドのテキストを 8 色のうちのどれか 1 色単独 で、あるいは 4 つある強調オプションの中の 1 つ以上のオプションとの組 み合わせで表示できます。 COLOR = display mode WHERE where conditio COLOR 必須キーワード。 利用できる色および強調オプションのリストから選択された 1 つ以上の表示属性。 WHERE オプションのキーワード。 where condition 指定した表示属性が効果を現す必要がある状態。 display mode 使用法 display mode は、色のリストから選択する場合は 1 つの属性と、強調オプ ション リストから選択する場合は 1 つ以上の属性、各リストからの選択 は必須ではありませんが、これらの属性で構成されます。 色 強調オプション 表示結果 WHITE 白 YELLOW 黄 MAGENTA マゼンタ RED 赤 CYAN シアン GREEN 緑 BLUE 青 BLACK 黒 (1 / 2) FORMBUILD トランザクション フォーム生成プログラム 79 COLOR 色 強調オプション 表示結果 BLINK 明滅 UNDERLINE アンダーライン付き REVERSE 反転表示 LEFT 左寄せ ( 数値型フィールド ) (2 / 2) Q where condition が選択されない場合、その表示モードが常時、 フィールドに適用されます。where condition を選択すると、 フィールドに新しい値が入力されるたび、FORMBUILD によって条件 がテストされます。 Q 条件が true の場合、FORMBUILD は選択されたモードでフィールド を表示します。条件が false の場合、FORMBUILD はデフォルトの特 性でフィールドを表示します。 80 IBM Informix SQL リファレンス マニュアル COLOR Q where condition の構文は、次の方法のうちのいずれかでコーディ ングできます。 expr LIKE expr expr NOT LIKE expr expr MATCHES expr expr NOT MATCHES expr expr IS NULL expr IS NOT NULL expr BETWEEN expr AND expr expr NOT BETWEEN expr AND expr expr IN ( list of exprs) expr NOT IN ( list of exprs) expr relop expr (bool-expr) bool-expr OR bool-expr bool-expr AND bool-expr ここで、expr は、次の項目のうちのいずれかを表すことができま す。 field tag constant TODAY CURRENT agg-function OF field tag - expr expr [ + - * / ] expr (expr) また、relop は、次の比較演算子のうちのいずれか 1 つです。 = <> != >= <= < > 次の例は、フィールドのテキストを赤で表示するよう指定する方法を示し ています。 f000 = customer.customer_num, color=red; 次の例は、COLOR の条件付き使用を示しています。 f002 = manufact.manu_code, color=red where f002="HRO"; f003 = customer.lname, color=red where f003 not like "Quinn"; f004 = customer.zipcode color=red blink where f004 > 10000; GLS 文字の引数が含まれる MATCHES、LIKE、および BETWEEN 式の評価は、照合設 定に依存します。詳しくは、『付録 C. 広域言語サポート』および 「Informix Guide to GLS Functionality」を参照してください。♦ FORMBUILD トランザクション フォーム生成プログラム 81 COMENTS COMENTS COMMENTS を使用すると、PERFORM で、画面の下にあるコメント行にメッセー ジを表示できます。メッセージは、関連フィールドにカーソルが移動する と表示されます。 COMMENTS = COMMENTS message "message" 必須キーワード。 引用符で囲まれた文字列。 使用法 Q message は、フォーム仕様ファイルの単一行上に引用符で囲んで記 載しなければなりません。 Q 画面の最下行は状態行です。コメント行は、状態行の真上です。 Q COMMENTS 属性の最も一般的な用途は、ユーザに情報や指示を与える ことです。これは、フィールドが受け入れるユーザ指定の値が限定 されるときに特に適しています。 sample フォーム仕様ファイルの例を次に示します。 c2 = fname, comments = "Please enter initial if available." ; 関連の属性 INCLUDE 82 IBM Informix SQL リファレンス マニュアル DEFAULT DEFAULT DEFAULT 属性を使用して、表示フィールドにデフォルト値を割り当てます。 DEFAULT = value DEFAULT value 必須キーワード。 デフォルト値。 使用法 Q DEFAULT 属性を使用しない場合、表示フィールドは空白のデフォル ト値を採用します。 Q 空白または特殊文字が含まれる日付 (DATE) 型の値と文字 (CHAR) 型 の値は、引用符で囲みます。空白や特殊文字が含まれない文字 (CHAR) 型の値を引用符で囲むことはオプションです。 Q PERFORM は、 「Add」操作でデータ入力のためにフィールドが表示さ れるたびにデフォルト値を表示します。 Q 同一フィールドに DEFAULT 属性と REQUIRED 属性の両方が割り当て られた場合、REQUIRED 属性は無視されます。 Q 日付 (DATE) 型フィールドのデフォルト値として現在日付を割り当 てるには、value に TODAY キーワードを使用します。 Q 日時 (DATETIME) 型フィールドのデフォルト値として現在日時を割り 当てるには、CURRENT キーワードを使用します。 Q DATABASE ( データベース ) セクションでキーワード WITHOUT NULL INPUT オプションを使用しながら DEFAULT 属性を使用しない場合、 文字フィールドは空白のデフォルト値を採用し、数値型および時間 隔 (INTERVAL) 型フィールドは 0 のデフォルト値を採用し、金額 (MONEY) 型フィールドは $0.00 のデフォルト値を採用します。日付 (DATE) 型のデフォルト値は 12/31/1899、日時 (DATETIME) 型のデ フォルト値は 1899-12-31 23:59:59.99999 です。 Q DATABASE ( データベース ) セクションでキーワード WITHOUT NULL INPUT を使用しない場合、DEFAULT 属性を使用しない限り、すべて のフィールドが NULL 値のデフォルト値を採用します。 FORMBUILD トランザクション フォーム生成プログラム 83 DEFAULT Q テキスト (TEXT) 型またはバイト (BYTE) 型のフィールドに DEFAULT を 使用することはできません。 sample フォーム仕様ファイルから 2 つの例を次に示します。 c8 = state, upshift, autonext, default = "CA" ; o12 = order_date, default = today, format = "mm/dd/yyyy" ; 84 IBM Informix SQL リファレンス マニュアル DOWNSHIFT DOWNSHIFT PERFORM に大文字を小文字へ変換させる必要があるとき、文字 (CHAR) 型 フィールドに DOWNSHIFT 属性を割り当てます。 DOWNSHIFT 使用法 大文字と小文字では ASCII の値が異なるため、文字列をどちらか一方の フォーマットで格納することで、データベースのソートおよび問合せを単 純化できます。 GLS 大文字と小文字間の変換結果は、GLS 設定の定義に従い、使用中の各国語 に合わせることができます。詳しくは、『付録 C. 広域言語サポート』およ び「Informix Guide to GLS Functionality」を参照してください。♦ 関連の属性 UPSHIFT FORMBUILD トランザクション フォーム生成プログラム 85 FORMAT FORMAT FORMAT 属性は 10 進数 (DECIMAL) 型、小桁実数 (SMALLFLOAT) 型、実数 (FLOAT) 型、または日付 (DATE) 型の列に使用して、表示形式を制御します。 FORMAT FORMAT fstring = fstring 必須キーワード。 望ましいデータ形式を指定する (フォーマット) 文字列。fstring は引用符で囲む必要があります。 使用法 Q 10 進数 (DECIMAL) 型、小桁実数 (SMALLFLOAT) 型、または実数 (FLOAT) 型の各データ型の場合、fstring は数字を表すシャープ記号 (#) と小数点で構成されます。例えば、###.## とすると、小数点の左 に最大で 3 桁、右にきっちり 2 桁が作成されます。 Q 実際に表示される数字が fstring より短い場合、PERFORM はそれを 右寄せして、左に空白を埋め込みます。 Q fstring が表示幅より短い場合、FORMBUILD によって警告が表示さ れますが、フォームは使用可能です。 Q PERFORM は必要な場合、表示前に数字を丸めます。 86 IBM Informix SQL リファレンス マニュアル FORMAT Q 日付 (DATE) 型の場合、PERFORM は文字列 fstring の中で、次の記号 を特殊なものとして認識します。 mm 月の 2 桁表記を形成します。 mmm 月の 3 文字の省略形を形成します ( 例えば、Jan、Feb、 など )。 dd 日の 2 桁表記を形成します。 ddd 曜日の 3 文字の省略形を形成します ( 例えば、Mon、Tue、 など )。 yy 年の 2 桁表記を形成します。 yyyy 4 桁の年を形成します。 日付に関しては、その他の文字を fstring のどこに配置しても、 FORMBUILD はそれらをリテラルと解釈してそのまま表示します。 Q 日時 (DATETIME) 型または時間隔 (INTERVAL) 型に FORMAT 属性を使用 することはできません。 次の表に、日付 (DATE) 型フィールドの FORMAT 属性の例をリストします。 入力 結果 FORMAT 属性なし 09/15/1994 FORMAT = "mm/dd/yy" 09/15/94 FORMAT = "mmm dd, yyyy" Sep 15, 1994 FORMAT = "yymmdd" 940915 FORMAT = "dd-mm-yy" 15-09-94 FORMAT = "(ddd.) mmm. dd, yyyy" (Thu.) Sep. 15, 1994 FORMBUILD トランザクション フォーム生成プログラム 87 FORMAT sample フォーム仕様ファイルから 2 つの例を次に示します。 o12 = order_date, default = today, format = "mm/dd/yyyy"; o22 = paid_date, format = "mm/dd/yyyy"; GLS 数値データおよび通貨データで FORMAT 属性のフォーマット文字列を解釈す る方法は、GLS 設定によって変更することができます。フォーマット文字列 において、ピリオド記号 (.) はリテラル文字でなく、環境変数によって指 定される小数点記号の位置指定子となります。同様に、カンマ記号 (,) は、環境変数によって指定される 3 桁区切り記号の位置指定子になりま す。$ 記号は、先行の通貨記号の位置指定子です。@ 記号は、後書きの通貨 記号の位置指定子です。したがって、フォーマット文字列 $$#,###.## に よって 1234.56 という値は、ロケールが英国の場合は £1,234.56 と フォーマット設定されますが、ロケールがフランスの場合は f1.234,56 の ようになります。詳しくは、『付録 C. 広域言語サポート』および 「Informix Guide to GLS Functionality」を参照してください。 フォーマット文字列の中の mmm と ddd 指定子は、各国語固有の月名および 曜日名の省略形をフォームに表示できます。このためには、メッセージ ファイルを $INFORMIXDIR/msg というサブディレクトリへインストールし、 その後、環境変数 DBLANG を使ってそのサブディレクトリを参照する必要が あります。例えば、ロケールがスペインの場合、ddd 指定子は土曜日を 「Sabado」( 土曜日を表すスペイン語 ) の略語である Sab に変換します。♦ 関連の属性 PICTURE 88 IBM Informix SQL リファレンス マニュアル INCLUDE INCLUDE INCLUDE 属性を使用して、フィールドの許容値を指定し、入力を受け入れる 前に PERFORM にチェックさせます。 , INCLUDE = ( ) value TO value NULL INCLUDE value 必須キーワード。 個々の値のリスト (value1, value2, ...)、値の範囲 (value1 TO value2)、またはすべてカンマで分離された個々の値と範囲の組み 合せのいずれか。 NULL 値を指定するオプションのキーワード。 NULL 使用法 Q 値の範囲を指定する際は、下限値が最初に現れる必要があります。 Q 値が文字の範囲の場合、PERFORM は、ディクショナリの順序と印刷 可能な ASCII 文字セットを使用します。(ASCII 文字セットの番号付 きリストについては、『付録 E. ASCII 文字セット』を参照してく ださい。) 数値型フィールドの場合、範囲 (5 to 10) は許容され ます。しかし、文字 (CHAR) 型フィールドでは誤りになります。 ASCII 文字セットの中で 1 は 5 の前に来るため、文字列 10 は文 字列 5 より小さいからです。 Q 空白、カンマ、または特殊文字が含まれる文字列をインクルードす る場合、文字列全体を引用符で囲む必要があります。文字列はいつ も引用符で囲むようにすることをお勧めします。 Q INCLUDE 属性を持つすべての表示フィールドに許容値が入力されな いと、PERFORM は新規行を受け入れません。NULL 値を許容すること を指示するには、キーワード NULL を使用します。フィールドが DEFAULT と INCLUDE の両方の属性を保持する場合は、 DEFAULT の値が INCLUDE のリストの中に現れなければなりません。そうしないと、 フォームはコンパイルされません。 FORMBUILD トランザクション フォーム生成プログラム 89 INCLUDE Q 許容値を示す COMMENTS をインクルードすると、データ入力を容易 にできます。 sample フォーム仕様ファイルの例を次に示します。 i18 = items.quantity, include = (1 to 50), comments = "Acceptable values are 1 through 50"; GLS INCLUDE の範囲における文字データの評価の結果は、GLS 設定の影響を受け る場合があります。特定の文字が INCLUDE の範囲に含まれるかどうかは、 INCLUDE の各値との相対的な順位によります。詳しくは、 『付録 C. 広域言 語サポート』および「Informix Guide to GLS Functionality」を参照して ください。♦ 関連の属性 COMMENTS、REQUIRE 90 IBM Informix SQL リファレンス マニュアル INVISIBLE INVISIBLE フィールドが INVISIBLE として定義された場合、INFORMIX- SQL はそのフィー ルドに割り当てられた値、またはユーザがそのフィールドに入力する値を 表示しません。 INVISIBLE 使用法 Q INVISIBLE と COLOR の両方の属性をフィールドに割り当てた場合、 COLOR=REVERSE の指定がない限り、 INFORMIX- SQL は COLOR 属性を無視 します。そのような指定がある場合、INFORMIX- SQL は反転表示で フィールドを表示し、フィールドの内容の不可視性を維持します。 Q INVISIBLE と PICTURE の両方の属性をフィールドに割り当てた場 合、INFORMIX- SQL はピクチャ パターンを表示しません。 FORMBUILD トランザクション フォーム生成プログラム 91 LOOKUP LOOKUP LOOKUP 属性を使用して、実効表にデータを入力するとき、または実効表の 問合せをするときに、別の表のデータを表示します。また、値が別の表に 存在しない場合、そのデータを実効表に入力できないようにするためにも 使用できます。 LOOKUP table2.co JOINING * field-tag1 = table2.col1 , field-tag2 = LOOKUP field-tag1 table2.col1 JOINING * table2.col field-tag2 table2.col2 結合を指定するキーワード。 参照表からの値を表示するフィールドのフィールド タグ。 値が field-tag1 に表示される table2 の列。 結合される列を識別するキーワード。 照合結合において主列を識別するオプションの句読点。(74 ペー ジの『照合結合』を参照。) table2 に属し、table1.col に結合される列の名前。 参照表からの値を表示するフィールドのフィールド タグ。 値が field-tag2 に表示される table2 の列。 使用法 Q TABLES ( 表 ) セクションで別名を使用する場合は、 ATTRIBUTES ( 属性 ) セクションでも別名を使用して表を参照しなければなりません。 Q table2.col の前に配置するオプションのアスタリスクは、PERFORM に対して、同じ値が table2.col に存在する場合のみ、table1.col に入力された値を受け入れるよう指示します。 92 IBM Informix SQL リファレンス マニュアル LOOKUP Q LOOKUP 属性に続く列名付きのフィールド タグのオプションのリス トは、PERFORM に対して、table1.col と table2.col 間の結合が正 常に行われたときはいつでも、それらの値を表示するよう指示しま す。これらのフィールドへは、キーボードから値を入力することは できません。 Q ルックアップの結合列がインデックス付けされていない場合、ルッ クアップはあまり迅速に実行されません。 sample フォーム仕様ファイルのルックアップ結合の例を次に示します。 i16 = items.manu_code, lookup m17 = manufact.manu_name joining *manufact.manu_code; この例では、品目のメーカー コードのエントリを manufact 表のメーカー コードのリストと照合します。そこで同じ値が見つかれば、manufact 表か らメーカー名を取り出して、フィールド m17 に表示します。 FORMBUILD トランザクション フォーム生成プログラム 93 NOENTRY NOENTRY NOENTRY 属性を使用して、 「Add」操作の中で新規行が作成される際、データ 入力できないようにします。 NOENTRY 使用法 Q NOENTRY 属性は、 「Update」操作時におけるフィールドの変更を抑 制することはありません。 Q シリアル (SERIAL) 型列には、NOENTRY 属性は必要ありません。 sample フォーム仕様ファイルから 2 つの例を次に示します。 i13 = items.stock_num; = *stock.stock_num, noentry, noupdate, queryclear; s14 = stock.description, noentry, noupdate; stock 表がアクティブのとき、列 i13 と s14 ( それぞれ列 stock.stock_num と stock.description に対応 ) に値を追加することはで きません。(NOUPDATE 属性のインクルードによって、「Update」操作時の データ入力が抑制されます。) 関連の属性 NOUPDATE 94 IBM Informix SQL リファレンス マニュアル NOUPDATE NOUPDATE NOUPDATE 属性を使用して、 「Update」操作の中で行が修正される際、データ 入力できないようにします。 NOUPDATE 使用法 NOUPDATE 属性は、 「Add」操作時におけるフィールドへのデータ入力を抑制 することはありません。 sample フォーム仕様ファイルから 2 つの例を次に示します。 s15 = stock.unit_price, noentry, noupdate; s16 = stock.unit_descr, noentry, noupdate; stock 表がアクティブのとき、列 s15 と s16 ( それぞれ列 stock.unit_price と stock.unit_descr に対応 ) は、「Update」操作の間 に値を受け付けることはできません。(NOENTRY 属性のインクルードによっ て、「Add」操作時のデータ入力が抑制されます。) 関連の属性 NOENTRY FORMBUILD トランザクション フォーム生成プログラム 95 PICTURE PICTURE PICTURE 属性を使用して、非数値型フィールドへのデータ入力の文字パター ンを指定します。 PICTURE = PICTURE "pstring" 必須キーワード。 望ましい文字パターンを指定する ( ピクチャ ) 文字列。 pstring 使用法 Q pstring は 3 つの特殊記号の組み合せです。 記号 意味 A 任意の文字 # 任意の数字 X 任意の文字 pstring 内のそれ以外の文字はリテラルとして扱われ、データ入力 時、指定されたそのままの場所に表示されます。 Q pstring に従わない文字を入力しようとした場合は、ビープ音が発 せられ、PERFORM はその文字を画面にエコーイングしません。 Q PICTURE 属性はフィールド全体の入力を要求するものではなく、単 に入力される内容が pstring に従っていることを要求するだけで す。pstring の長さは、対応する表示フィールドの長さと等しくな ければならない点に注意してください。 Q PERFORM は、表示フィールドのリテラル文字を表示し、他の場所は 空白のままにすることで必要なパターンをデータ入力のオペレー ターに教えます。 96 IBM Informix SQL リファレンス マニュアル PICTURE 次の例は、sample フォーム仕様ファイルからの抜粋です。 c10 = phone, picture = "###-###-####x####"; この結果、データ入力項目の前に次の表示フィールドが生成されます。 [ - - ] 別の例として、パーツ ナンバーのフィールドを次のように指定した場合、 f1 = part_no, picture = "AA#####-AA(X)"; PERFORM は次の入力をすべて受け入れます。 LF49367-BB(*) TG38524-AS(3) YG67491-ZZ(D) GLS PICTURE がフォーマットするのは文字情報のみであるため、GLS 設定が PICTURE 属性に影響を与えることはありません。♦ 関連の属性 FORMAT FORMBUILD トランザクション フォーム生成プログラム 97 PROGRAM PROGRAM PROGRAM 属性は BLOB ( バイト (BYTE) 型またはテキスト (TEXT) 型 ) 列に使用 して、外部プログラムを呼び出し、テキスト (TEXT) 型またはバイト (BYTE) 型データを処理することができます。外部プログラムは、カーソルを BLOB フィールドに置いた状態で感嘆符キーを押して起動します。そうすると画 面の制御が外部プログラムに移ります。外部プログラムを終了すると、 フォームが画面に復元されます。 PROGRAM 属性の構文は次のとおりです。 field-tag = field-tag PROGRAM = "name" SCREEN ( スクリーン ) セクションで使用されるフィール ド タグ。 table.col PROGRAM name 列に関連付けられているフィールド、フォーム専用フィール ド、または表示専用 (INFORMIX- SQL) フィールドのいづれかの フィールドの名前。 必須キーワード。 編集プログラムを起動するバッチ ファイルへのコマンド文字 列かバッチ ファイルの名前。 使用法 空のフィールドからプログラムを呼び出した場合、外部プログラムでの処 理を終了して作業を保存すると、データは BLOB フィールドに格納されま す。すでにデータが入っているフィールドからプログラムを呼び出した場 合、指定されたプログラムはそのフィールドのデータを処理します。いず れにしても、Informix Dynamic Server は BLOB を一時ファイルに書き込 み、それが外部プログラムに渡されます。外部プログラムは、変更内容を その一時ファイルに書き込んで戻さなければなりません。ユーザがその一 時ファイルの名前を把握しておく必要はありません。それは、アプリケー ション開発支援ツールが管理します。例えば、PROGRAM を使用して、以前保 存した図面を表示するため CAD やグラフィックス プログラムを呼び出すこ とが考えられます。また、PROGRAM を使用して、テキスト (TEXT) 型フィール ドのエディタを起動することもできます。 98 IBM Informix SQL リファレンス マニュアル PROGRAM 例えば、テキスト (TEXT) 型フィールドには、次のような行をタグ付けでき ます。 f003 = personnel.resume, WORDWRAP, PROGRAM = "edit"; データ型がテキスト (TEXT) 型のフィールドを表示すると、INFORMIX- SQL は、 定義されたフィールドに収まるだけの先行文字を表示します。データ型が バイト (BYTE) 型のフィールドを表示すると、 INFORMIX- SQL は、 <BYTE value> と表示します。 カーソルをテキスト (TEXT) 型フィールドに配置して、テキスト (TEXT) 型ま たはバイト (BYTE) 型フィールドの先頭文字位置で感嘆符キーを押すと、外 部プログラムが起動されます。このプログラムはフィールドの内容を受け 取り、画面の制御を引き継いでフィールドの編集または変更を可能にしま す。プログラムを終了すると、画面の制御がアプリケーションに戻り、実 行を続けます。 テキスト (TEXT) 型フィールドの場合、次のプログラムのうちの 1 つが起動 されます。 Q そのフィールドに PROGRAM ="name" 属性が定義されている場合、そ こで指定されたプログラム。 Q DBEDIT 環境変数が定義済みの場合、そこで指定されたプログラム。 Q デフォルトのエディタ ( ホストのオペレーティング システムに依 存 )。 バイト (BYTE) 型フィールドの場合、デフォルトのエディタが呼び出された り、DBEDIT 環境変数が検証されることがないので、外部プログラムを明示 的に定義する必要があります。 プログラムを起動する前に、INFORMIX- SQL はバイト (BYTE) 型またはテキスト (TEXT) 型フィールドを一時ディスク ファイルにコピーします。その後、 PROGRAM キーワードの後ろに指定された名前と一時ファイルの名前からなる システム コマンドを出します。 name 文字列は単語である必要はありません。追加のコマンド パラメータ を追加してかまいません。また、プログラムをシェル スクリプトにして、 一連のアクションを開始できるようにすることも可能です。 外部プログラムを PERFORM から起動している場合、 「Add」または「Update」 を完了するとデータは BLOB 列に格納されます。例 : f010 = contract, PROGRAM = "edit"; FORMBUILD トランザクション フォーム生成プログラム 99 QUERYCLEAR QUERYCLEAR QUERYCLEAR 属性を使用して、 「Query」操作の開始時、画面上の結合フィー ルドをクリアします。 QUERYCLEAR 使用法 Q 「Query」オプションを入力すると、通常、PERFORM は、結合フィー ルドと表示専用フィールドを除いたすべてのフィールドをクリアし ます。 Q QUERYCLEAR は、表示専用フィールドには適用されません。表示専用 フィールドをクリアするためには、INSTRUCTIONS ( インストラク ション ) セクションで明示的な指示を与えなければなりません。 sample フォーム仕様ファイルの例を次に示します。 i13 = items.stock_num; = *stock.stock_num, noentry, noupdate, queryclear; ここでは、items 表と stock 表が取扱品目番号によって結合されます。 stock 表が実効表であるときに問合せが行われると、stock_num フィール ドがクリアされます。しかし、items が実効表であるときに問合せが行わ れても、stock_num フィールドはクリアされません。 100 IBM Informix SQL リファレンス マニュアル REQUIRED REQUIRED REQUIRED 属性を使用すると、 「Add」操作時に特定フィールドへのデータ入 力を強制できます。 REQUIRED 使用法 Q REQUIRED 属性の効果は、PERFORM の「Update」操作時は適用されま せん。「Update」操作の中であれば、自由に REQUIRED 属性の フィールドから値を削除することができます。 Q REQUIRED 属性のフィールドにデフォルト値はありません。同一 フィールドに REQUIRED 属性と DEFAULT 属性の両方を割り当てた場 合、REQUIRED 属性は無視されます。 sample フォームの例を次に示します。 o20 = po_num, required; この例では、データベースに新規注文を追加する際、FORMBUILD は発注書番 号の入力を要求します。 FORMBUILD トランザクション フォーム生成プログラム 101 REVERSE REVERSE PERFORM に反転表示させる必要があるフィールドに REVERSE 属性を割り当て ます。 REVERSE 使用法 反転表示をサポートしないコンピュータの場合、REVERSE 属性を持つフィー ルドは山形かっこ (< >) で囲まれます。 102 IBM Informix SQL リファレンス マニュアル RIGHT RIGHT データを右寄せする必要があるフィールドに RIGHT 属性を割り当てます。 RIGHT 使用法 Q PERFORM は、 「Add」または「Update」操作時に入力されるデータを 右寄せします。 Q 値が「string」の右寄せの文字 (CHAR) 型フィールドを「Query」操 作で検索するには、可能性のある先行の空白を表すために、ワイル ドカード検索パターン「*string」を使用します。 FORMBUILD トランザクション フォーム生成プログラム 103 UPSHIFT UPSHIFT PERFORM に小文字を大文字へ変換させる必要があるとき、文字 (CHAR) 型 フィールドに UPSHIFT 属性を割り当てます。 UPSHIFT 使用法 大文字と小文字では ASCII の値が異なるため、文字列をどちらか一方の フォーマットで格納することで、データベースのソートおよび問合せを単 純化できます。 sample フォームの例を次に示します。 c8 = state, upshift, autonext, include = ("CA", "OR", "NV", "WA"), default = "CA" ; UPSHIFT 属性により、PERFORM は、大文字小文字のどちらで入力されたかに 関係なく、state フィールドに大文字を入力します。 GLS 大文字と小文字間の変換の結果は、GLS 設定を使用して、それぞれの言語 に合うよう調整できます。詳しくは、『付録 C. 広域言語サポート』および 「Informix Guide to GLS Functionality」を参照してください。♦ 関連の属性 DOWNSHIFT 104 IBM Informix SQL リファレンス マニュアル VERIFY VERIFY VERIFY 属性は、誤ったデータ入力の可能性を減らすため、ユーザに特定 フィールドへの 2 度のデータ入力を要求するよう PERFORM に指示するとき に使用します。 VERIFY 使用法 一部の重要なデータのために、VERIFY 属性はデータ入力に追加のステップ を提供することで、データベース内のデータの整合性を確保します。ユー ザが VERIFY 属性のフィールドに値を入力して Enter キーを押すと、PERFORM はそのフィールドを消去して、値を再入力するよう要求します。ユーザは、 毎回、文字と文字が同じになるよう、正確に 同じデータを入力しなければ なりません。例えば、15000 と 15000.00 は、同じとは見なされません。 次のように給与情報のフィールドを指定した場合、 s10 = salary, verify; PERFORM は、まったく同じデータを 2 回入力することを要求します。 FORMBUILD トランザクション フォーム生成プログラム 105 WORDWRAP WORDWRAP WORDWRAP 属性は、長い文字列を同一フィールド タグを持つ次のフィールド に折り返すよう PERFORM に指示するときに使用します。 WORDWRAP COMPRESS WORDWRAP COMPRESS 長い文字列を次の継続的なフィールドに折り返すよう PERFORM に指示する必須キーワード。 ユーザが入力していない空白およびデータの一部でない空白は すべて破棄するよう PERFORM に指示するオプションのキーワー ド。 使用法 Q キーワード WORDWRAP により、マルチライン エディタが使用可能に なります。キーボードからテキストを入力していて行の終わりに達 すると、エディタは、必要に応じてテキストを後続の行へ移動し て、現在の単語を次の行へ移動します。テキストを削除すると、エ ディタは、下部の行から適宜、単語を引き寄せます。 WORDWRAP 属性を使用しないと、フィールド内で単語がある行から次 の行へ自動的に移動することはないので、矢印キーか Enter キーを 使用してフィールドからフィールドへ移動しながらテキストを編集 しなければなりません。 Q エディタは、意図的な 空白 ( ユーザが入力したかデータの一部で ある空白 ) とエディタによる 空白 ( テキストを次の行へ折り返す ためにエディタが行の終わりに挿入する空白 ) を区別します。意図 的な空白はデータの一部として保存されます。エディタによる空白 は、ワードラップの必要に応じて自動的に挿入されたり削除された りします。 Q COMPRESS 属性は、エディタによる空白を破棄するよう PERFORM に指 示します。COMPRESS 属性を使用しない場合、セグメント長の合計が 列サイズを超えると、PERFORM は末尾の単語を切り捨てる場合があ ります。 106 IBM Informix SQL リファレンス マニュアル WORDWRAP Q マルチライン フィールドの設計にあたっては、エディタによる空 白のためのスペースを考慮に入れてください。1 行あたりのエディ タによる空白の平均数は、平均的な単語の半分の長さになると予期 することができます。 Q エディタは、常に単語と単語の間で改行します。通常、フィールド の長さは列サイズと同じか、あるいはそれより長く設定され、 PERFORM はすべてのテキストを表示します。 Q 列データがフィールドより長い場合、エディタはフィールドをいっ ぱいに埋めて、超過データは破棄します。切り捨て表示でデータ ベースを更新した場合、データを失います。 次の例は、マルチライン フィールドを指定するフォーム仕様ファイルの SCREEN ( スクリーン ) セクションと ATTRIBUTES ( 属性 ) セクションを示し ています。 database... screen { Enter text: [mlf [mlf [mlf [mlf ] ] ] ] } tables... attributes mlf = charcolm, wordwrap compress; タグが mlf の画面フィールドは、画面レイアウト内で 4 つの物理的なセグ メントに出現しており、WORDWRAP 属性を保持しているので、これはマルチ ライン フィールドです。その値は、上から下、左から右の順序で取り込ま れる物理的なセグメントで構成されます。フィールドは、通常、すべての テキストを表示できるよう、列と同じ長さまたはそれ以上の長さにする必 要があります。しかし、セグメント同士は、例ではすべてが同じ長さです が、同一サイズである必要はありません。 ATTRIBUTES ( 属性 ) セクションのフィールドの記述では、キーワード WORDWRAP によってマルチライン エディタを使用可能にします。それを省略 すると、単語を 1 つのセグメントから次のセグメントへ自動的に移動させ ることはできません。 フィールドが可変長文字 (VARCHAR) 型データを受け入れるよう定義されてい る場合、そのフィールドに WORDWRAP 属性を割り当てて、マルチライン エ ディタを使用可能にする必要があります。 FORMBUILD トランザクション フォーム生成プログラム 107 WORDWRAP 可変長文字 (VARCHAR) 型は文字 (CHAR) 型フィールドと似ており、マルチラ イン エディタは両方をサポートします。可変長文字 (VARCHAR) 型フィールド には WORDWRAP 属性を割り当てて、マルチライン エディタを使用可能にし なければなりません。次のフォーム仕様からの抜粋は、employee 表の可変 長文字 (VARCHAR) 型フィールド history と、このフィールドに割り当てられ た属性を示しています。 history [f002 [f002 [f002 ] ] ] attributes f002 = employee.history, WORDWRAP COMPRESS; 可変長文字 (VARCHAR) 型列を持つ表のデフォルト フォームを生成すると、可 変長文字 (VARCHAR) 型フィールドはサブスクリプト付きフィールドに分割さ れます。ワード ラップを使用可能にするには、フォームを修正して、可変長 文字 (VARCHAR) 型フィールドのすべてのコンポーネントに同一フィールド タグを使用します。その後、WORDWRAP および COMPRESS 属性を追加します。 表示専用 (FORMBUILD) フィールドのデータ型として可変長文字 (VARCHAR) 型 を使用できます。 DEFAULT 属性を使用して、可変長文字 (VARCHAR) 型フィールドにデフォルト値 を指定できます。 テキスト (TEXT) 型およびバイト (BYTE) 型データの指定 テキスト (TEXT) 型またはバイト (BYTE) 型の列をフィールドとして使用でき ます。 テキスト (TEXT) 型フィールドに WORDWRAP 属性を割り当てると、空 白で始まる行をなくして、ディスプレイに合わせてフィールドを表示でき ます。テキスト (TEXT) 型フィールドの場合、WORDWRAP 属性は値の表示方法 にのみ効果があります。WORDWRAP を指定しても、マルチライン エディタは 使用可能になりません。テキスト (TEXT) 型フィールドを編集する必要があ る場合は、PROGRAM 属性を使用して、外部エディタの名前を指示する必要が あります。 108 IBM Informix SQL リファレンス マニュアル ZEROFILL ZEROFILL ZEROFILL 属性は、右寄せして先行ゼロを埋め込む必要があるフィールドに 割り当てます。 ZEROFILL 使用法 この属性は、数値フィールドに最も役立ちます。フィールドに入力された 数字がフィールド自身の長さより短い場合、PERFORM はそれを右寄せして、 先行の空白をゼロで埋めます。 FORMBUILD トランザクション フォーム生成プログラム 109 INSTRUCTIONS ( インストラクション ) セクション INSTRUCTIONS ( インストラクション ) セク ション フォーム仕様ファイルの最後のセクションは、オプションの INSTRUCTIONS ( インストラクション ) セクションです。このセクションは、次のタスク のために使用します。 Q 複合結合の設定 Q 代替フィールド区切り記号の指定 Q 主 / 詳細関係の作成 Q コントロール ブロックの定義 また、INSTRUCTIONS ( インストラクション ) セクションの中から C 関数を 呼び出すこともできます。詳細は、 『第 6 章 ACE および PERFORM における 関数』を参照してください。 次のダイヤグラムに表示の通り、INSTRUCTIONS キーワードによって INSTRUCTIONS ( インストラクション ) セクションが開始します。 INSTRUCTIONS ( インスト ラクション ) セクション INSTRUCTIONS COMPOSITES セクション P.111 END DELIMITERS セクション P.113 MASTER OF セクション P.115 コントロール ブロック セクション P.117 110 IBM Informix SQL リファレンス マニュアル COMPOSITES COMPOSITES 行を一意的に指定するために、表内の複数の列の値を指定する必要がある とき、2 つの表の間に複合結合を設定します。 COMPOSITES セクション , COMPOSITES table1.col1 . , table1.col table2.col1 table2.col ; * COMPOSITES table1.colJ table2.colJ * 後続の山形かっこ (< >) で囲まれた列名のセットを相互に結合 される複合列として扱うことを指示するキーワード。 table1 内の列 ( ここで、J = 1、2、3、...)。 table2 内の列 ( ここで、J = 1、2、3、...)。 結合が照合結合であることを指示します。すなわち、マークさ れた複合列が table2 に存在しない限り、PERFORM は、table1 への対応する行の書き込みを許可しません。 使用法 Q TABLES ( 表 ) セクションで別名を使用する場合は、複合結合でもそ の別名を使用して表を参照しなければなりません。 Q 複合結合にインクルードする各列は、フォーム仕様の ATTRIBUTES ( 属性 ) セクションの中でも個々に結合する必要があります。すな わち、table1.col1 は、ATTRIBUTES ( 属性 ) セクションの中で table2.col1 に個別に結合される必要があり、同様に table1.col2 と table2.col2 も結合が必要であり、以下同様に続きます。 Q 複合結合にインクルードされていない 2 つの表の列間で追加の結 合を行うことはできません。 Q 複合結合の中の列が個々に、そして共同でインデックス付けされて いない場合、表間の問合せがあまり迅速に実行されません。 sample フォーム仕様ファイルの例を次に示します。 composites <items.stock_num, items.manu_code> * <stock.stock_num, stock.manu_code> FORMBUILD トランザクション フォーム生成プログラム 111 COMPOSITES 複合結合には、items および stock 表の stock_num と manu_code の各 フィールドがインクルードされます。これは、複合照合結合です。items 表がアクティブのとき、stock_num と manu_code の各フィールドに入力さ れる値は、stock 表内のそれら 2 つの列に存在している値と比較されま す。一致するものがない場合、PERFORM はそれをユーザに通知し、入力をリ ジェクトします。これにより、個々にデータベースには存在しても、複合 として stock 表内の一意な行に対応しない、取扱品目番号とメーカー コードの入力を防止します。 stock 表内の一意な行を指定するには、stock_num と manu_code の両方が 必要です。例えば、stock 表には、取扱品目番号 1 の行が 3 行、メーカー コード HRO の行が 4 行あります。( サンプル データベースに組み込まれて いるデータのリストについては、『付録 A. デモンストレーション データ ベースおよび例』を参照してください。) 取扱品目番号またはメーカー コードをそれぞれ単独で把握していても、一意な行を見付けることはでき ません。表内の一意な行 (Hero の野球グローブ ) を指定するには、取扱品 目番号 (1) とメーカー コード (HRO) の両方が必要です。 112 IBM Informix SQL リファレンス マニュアル DELIMITERS DELIMITERS フォームが画面に表示される際に PERFORM がフィールドを囲むために使用 する区切り記号を変更できます。デフォルトの区切り記号は角かっこ ( [ ] ) ですが、空白を含め、その他の印刷可能文字を代用することがで きます。 DELIMITERS セクション DELIMITERS "ab" ; DELIMITERS a b 必須キーワード。 開始区切り記号。 終了区切り記号。 使用法 Q DELIMITERS 命令は、フィールドを画面に表示するときに区切り記号 として使用すべき記号を PERFORM に指示します。 Q 各区切り記号は、1 文字でなければなりません。 Q ただし、FORMBUILD は、フォーム仕様ファイルの中ではそのまま角 かっこを使用しなければなりません。 Q フォームに複数のデータベース表の列が存在する場合、区切り記号 として空白は避けることをお勧めします。空白を使用した場合、ど のフィールドが実効表の列に対応しているか、画面ではわからなく なるからです。 FORMBUILD トランザクション フォーム生成プログラム 113 DELIMITERS Q 棒記号 ( | ) を使用して、終了区切り記号と開始区切り記号の両方 を表すことができます。例えば、 Name [tag1 |tag2 ] tag1 は最初の表示フィールドを識別し、tag2 は 2 番目の表示 フィールドを識別します。SCREEN ( スクリーン ) セクションで棒記 号を使用する場合は、フォーム仕様の INSTRUCTIONS ( インストラク ション ) セクションに DELIMITERS 文をインクルードしなければな りません。DELIMITERS 文では、左右の区切り記号に同一の記号を使 用してください。 114 IBM Informix SQL リファレンス マニュアル MASTER OF MASTER OF 1 つの表 ( 主 ) のある行が別の表 ( 詳細 ) の幾つかの行と関連付けられる ときは、2 つの表の間に主 / 詳細関係を作成します。 MASTER OF セクション table1 MASTER OF table2 ; table1 MASTER OF table2 主表として指定するデータベース内の表。 必須キーワード。 詳細表として指定するデータベース内の表。 使用法 Q TABLES ( 表 ) セクションで別名を使用している場合は、 主 / 詳細関係 でもその別名を使用して表を参照しなければなりません。 Q 一時表を表名リストにインクルードすることはできません。 Q 主 / 詳細関係は、特に table1 の 1 つの行が table2 の幾つかの行 と関連付けられているときの表間の問合せを単純化します。 Q 主 / 詳細関係は、両方向から定義できます。 Q 明示的な主 / 詳細関係が存在しない場合に「Master」または 「Detail」オプションが使用されると、PERFORM はエラー メッセー ジを表示します。 sample フォーム仕様ファイルから 2 つの例を次に示します。 customer master of orders; orders master of items; それぞれの顧客がたくさんの注文を行い、それぞれの注文には多数の品目 が含まれることが考えられるため、このような主 / 詳細関係が役に立ちま す。 FORMBUILD トランザクション フォーム生成プログラム 115 MASTER OF 別の例を次の表に示します。 主 詳細 projects personnel orders items agents clients parents children 複数の社員 (personnel) が同一プロジェクト (projects) に従事する場合、 各発注書 (orders) に複数の品目 (items) が含まれる場合、1 つのエー ジェント (agents) に多数のクライアント (clients) が存在する場合など、 このような主 / 詳細関係が便利です。 両方向で定義された主 / 詳細関係を使うと、次のような方法でデータベー スを調べることができます。personnel 表と projects 表で構成されるデー タベースがあるとします。各人は単一プロジェクトに割り当てられ、各プ ロジェクトには複数の人員が従事しています。スクリーン フォームは、次 のような INSTRUCTIONS ( インストラクション ) セクションをインクルード しています。 personnel master of projects; projects master of personnel; ここで、どのプロジェクトに従事しているかは分からないけれども、この データベースに問い合わせて、ある特定の従業員と一緒に仕事をしている 従業員をすべて検索する必要があると仮定します。そこで、その特定の従 業員を識別して画面に表示し (personnel 表がアクティブになる )、 「Detail」オプションを選択すると、PERFORM は「PROJECT INFORMATION」画面 に移動し (projects 表がアクティブになる )、その従業員のプロジェクト に関する情報を表示します。そこから「Detail」オプションを選択すると、 PERFORM はそのプロジェクトに従事している従業員をすべて選択し、 「PERSONNEL INFORMATION」画面へシフトします (personnel 表がアクティブ になる )。 116 IBM Informix SQL リファレンス マニュアル コントロール ブロック コントロール ブロック コントロール ブロックを使用して、次のような機能を実行します。 Q 行の追加時または更新時のカーソル移動を制御する。 Q ユーザが入力するデータの値を、すでに入力済みのその他のデータ が前提となる基準に照らしてチェックする。 Q 「Add」、「Update」、および「Query」操作の後にフィールドのデータ を修正する。 Q フィールドの値を基に計算を行い、結果を別のフィールドに入力す る。 Q 現行リストの列の平均や合計といった集約情報を表示する。( 現行 リストとは、問合せの結果戻される行のセットであり、以降の 「Add」または「Remove」操作で変更される行のセットです。) Q PERFORM から C 関数を呼び出す。詳細は、第 6 章を参照してくだ さい。 すべてのコントロール ブロックは、BEFORE ブロックまたは AFTER ブロック のいずれかです。画面制御アクションは、PERFORM の操作が完了する前また は後のいずれかで実行することができます。BEFORE ブロックは、「Add」、 「Update」、および「Remove」操作で使用できます。AFTER ブロックは、 「Add」、「Update」、「Query」、「Remove」、および「Display」操作で使用でき ます。 コントロール ブロック セクション BEFORE ブロック P.118 AFTER ブロック P.119 ON BEGINNING ブロック P.340 ON ENDING ブロック P.340 FORMBUILD トランザクション フォーム生成プログラム 117 BEFORE BEFORE BEFORE コントロール ブロックを使用すると、操作を実行する前の PERFORM に、一連のアクションを実行させることができます。 BEFORE ブロック , EDITADD BEFORE column OF EDITUPDATE アクショ ン P.128 table . REMOVE BEFORE OF table.column 必須キーワード。 必須キーワード。 最大 16 までのデータベース表の名前か別名または列の名前、あ るいはその両方からなるリスト。ご使用のオペレーティング シス テムによっては、表名の数の限度が下がる場合があります。 Q EDITADD および EDITUPDATE キーワードは、それぞれ「Add」および 「Update」時の編集行為を指します。EDITADD および EDITUPDATE の 場合、PERFORM が行を表へ書き込む前にアクションが実行されます。 Q BEFORE REMOVE 操作とともに ABORT キーワード (129 ページで説明 ) を使用すると、ユーザが詳細表の最終行を削除するのを防止できま す。 118 IBM Informix SQL リファレンス マニュアル AFTER AFTER AFTER コントロール ブロックを使用すると、オプションを実行した後の PERFORM に、一連のアクションを実行させることができます。 AFTER ブロック , AFTER EDITADD ADD column OF アク ション table UPDATE QUERY REMOVE DISPLAY EDITUPDATE AFTER OF table.column Q 必須キーワード。 必須キーワード。 最大 16 までのデータベース表の名前か別名または列の名前、あ るいはその両方からなるリスト。ご使用のオペレーティング シス テムによっては、表名の数の限度が下がる場合があります。 ADD、UPDATE、QUERY、および REMOVE キーワードは、それぞれ PERFORM のオプションである「Add」 、「Update」、「Query」 、および 「Remove」に対応します。PERFORM のオプションについての詳細は、 『第 3 章 PERFORM 画面トランザクション プロセッサ』を参照して ください。 Q DISPLAY キーワードは、PERFORM が「Next」 、「Previous」、「Query」 またはその他のオプションを実行した後のフィールドの表示を指し ます。 Q EDITADD および EDITUPDATE と、ADD および UPDATE は異なります。 EDITADD および EDITUPDATE の場合は、PERFORM が行を表へ書き込む 前にアクションが実行されます。ADD および UPDATE の場合は、 PERFORM が行を表へ書き込んだ後でアクションが実行されます。 FORMBUILD トランザクション フォーム生成プログラム 119 AFTER Q ADD、UPDATE、QUERY、REMOVE、および DISPLAY キーワードの後に続く table.column にリストできるのは、displaytable を含む表名また は別名に限定されます。 120 IBM Informix SQL リファレンス マニュアル EDITADD および EDITUPDATE EDITADD および EDITUPDATE EDITADD および EDITUPDATE キーワードにより、それぞれ「Add」および 「Update」操作時、フィールドにデータを入力する前または入力した後に 1 つ以上のアクションの実行が可能になります。アクションは、表に行を書 き込む前に実行されます。 EDITADD EDITUPDATE 使用法 Q EDITADD または EDITUPDATE を BEFORE コントロール ブロックの中で 使用していて、table.column に列の名前しか含まれていない場合、 BEFORE キーワードの指示により、PERFORM は対応するフィールドに カーソルが移動すると、ユーザがデータを入力する前にアクション を実行します。 Q EDITADD または EDITUPDATE を AFTER コントロール ブロックの中で 使用していて、table.column に列の名前しか含まれていない場合、 AFTER キーワードの指示により、PERFORM は、対応するフィールド にユーザがデータを入力して、Enter キーを押すとアクションを実 行します。PERFORM は、アクションを実行する前に、すべての属性 指定のチェック (INCLUDE、VERIFY など ) を行います。 Q BEFORE ブロックの中に列でなくデータベース表または別名を指定 すると、PERFORM はユーザがフォームにデータを入力する前にアク ションを実行します。この機能を使用すると、PERFORM に、実効表 に応じてフィールドにデフォルトを入力させたり、コメントを表示 させたりできます。 Q AFTER ブロックの中に列でなくデータベース表または別名を指定す ると、PERFORM は、ユーザがすべてのデータを入力してトランザク ションを完了するために Esc キーを押した後、行がデータベース に書き込まれる前にアクションを実行します。この技法を使用する と、入力されたすべてのデータの整合性検査を行い、不整合が検出 された場合、データ入力へ戻ることができます。 FORMBUILD トランザクション フォーム生成プログラム 121 EDITADD および EDITUPDATE Q BEFORE ブロックの中で、複数のフィールドに分割されている文字 (CHAR) 型列を参照すると、PERFORM は、表示されるフィールドの各 セクションの前でアクションを実行します。分割フィールドの最初 のセクションの前でのみこれらのアクションを実行するようにする には、分割フィールドの BEFORE ブロックを、直前のフィールドの AFTER ブロックに置き換えます。 Q 分割フィールドの最後のセクションの後でのみこれらのアクション を実行するようにするには、分割フィールドの AFTER ブロックを、 直後のフィールドの BEFORE ブロックに置き換えます。 次の例は、本章の終わりにある sample フォーム仕様ファイルからの抜粋 です。この例で使用している操作文の構文は、128 ページの『アクション の構文』で説明しています。 after editadd editupdate of quantity let i19 = i18 * s15 nextfield = o11 quantity フィールドに (「Add」または「Update」オプションを使用して ) 値を入力すると、PERFORM は i19 ( 総額 ) 列の値を計算して設定し、カーソ ルを o11 ( 注文番号 ) フィールドに配置します。 before editadd editupdate of orders nextfield = o20 この例では、orders が実効表であるとき、ユーザが「Add」または 「Update」オプションを要求し次第、PERFORM はカーソルを o20 ( 顧客の発 注書番号 ) フィールドへ移動するよう指示されます。この指示がないと、 カーソルは、フォームの ATTRIBUTES ( 属性 ) セクションに最初に現れる orders のフィールドである o11 ( 注文番号 ) フィールドへ最初に移動しま す。 122 IBM Informix SQL リファレンス マニュアル ADD ADD ADD キーワードを使用して、 「Add」操作の後、PERFORM にアクションを実行 させます。アクションは、表に行を書き込んだ後に実行されます。 ADD 使用法 ADD キーワードの主な使用法としては、書き込まれる行数の管理、特定 フィールドに入力される値の統計情報の計算、およびその他の記帳操作な どがあります。 次の例は、sample フォームからの抜粋です。この例で使用している操作文 は、128 ページの『アクションの構文』で説明しています。 after add update query of items if (total of i19) <= 100 then let d1 = 7.50 else let d1 = (total of i19) * .04 let d2 = (total of i19) + d1 items 表の「Add」、 「Update」、または「Query」の後で Esc キーが押される と、PERFORM は d1 と d2 の各フィールドの値を計算して、結果を画面に表 示します。 FORMBUILD トランザクション フォーム生成プログラム 123 UPDATE UPDATE UPDATE キーワードを使用して、 「Update」操作の後、PERFORM にアクション を実行させます。 UPDATE 使用法 UPDATE キーワードの主な使用法としては、書き込まれる行数の管理、特定 フィールドに入力される値の統計情報の計算、およびその他の記帳操作な どがあります。 次の例は、sample フォーム仕様ファイルからの抜粋です。この例で使用し ている操作文は、128 ページの『アクションの構文』で説明しています。 after add update query of items if (total of i19) <= 100 then let d1 = 7.50 else let d1 = (total of i19) * .04 let d2 = (total of i19) + d1 items 表の「Add」、 「Update」、または「Query」の後で Esc キーが押される と、PERFORM は d1 と d2 の各フィールドの値を計算して、結果を画面に表 示します。 124 IBM Informix SQL リファレンス マニュアル QUERY QUERY QUERY キーワードを使用して、 「Query」操作の後、PERFORM にアクションを 実行させます。 QUERY 使用法 QUERY キーワードの主な使用法としては、書き込まれる行数の管理、特定 フィールドに入力される値の統計情報の計算、およびその他の記帳操作な どがあります。 次の例は、sample フォーム仕様ファイルからの抜粋です。この例で使用し ている操作文は、128 ページの『アクションの構文』で説明しています。 after add update query of items if (total of i19) <= 100 then let d1 = 7.50 else let d1 = (total of i19) * .04 let d2 = (total of i19) + d1 items 表の「Add」、 「Update」、または「Query」の後で Esc キーが押される と、PERFORM は d1 と d2 の各フィールドの値を計算して、結果を画面に表 示します。 FORMBUILD トランザクション フォーム生成プログラム 125 REMOVE REMOVE REMOVE キーワードを使用して、 「Remove」操作の前または後、PERFORM にア クションを実行させます。 REMOVE 使用法 Q AFTER REMOVE 操作の主な使用法としては、削除された行数の管理、 特定フィールドに入力される値の統計情報の計算、およびその他の 記帳操作などがあります。 Q BEFORE REMOVE 操作を使用すると、データベース表から行を削除す る前に PERFORM に 1 つ以上のアクションを実行させることができ ます。 次の文は、ユーザが「Remove」オプションを選択するたびに、画面にメッ セージを出力します。 . . . instructions before remove of customer comments reverse "Remember to send a notice to the sales department" . . . BEFORE REMOVE 操作とともに ABORT キーワード (129 ページの『ABORT』を 参照 ) を使用すると、ユーザが詳細表の最終行を削除するのを防止できま す。 126 IBM Informix SQL リファレンス マニュアル DISPLAY DISPLAY DISPLAY キーワードを使用して、どのような PERFORM の操作であろうと、そ れによってデータが画面に表示される操作の後、PERFORM にアクションを実 行させます。 DISPLAY 使用法 次の例は、本章の終わりにある sample フォーム仕様ファイルからの抜粋 です。 after display of orders let d1 = 0 let d2 = 0 このコントロール ブロックによって、orders 表がアクティブなときデー タが表示され次第、d1 ( 運送費 ) と d2 ( 注文総額 ) の各フィールドにゼ ロを設定するよう PERFORM に指示します。 FORMBUILD トランザクション フォーム生成プログラム 127 アクションの構文 アクションの構文 このセクションでは、次のアクションの構文を提供します。 アクション ABORT オプション P.129 COMMENTS オプション P.135 IF-THEN-ELSE オプション P.136 LET オプション P.130 NEXTFIELD オプション P.133 ABORT COMMENTS IF-THEN-ELSE LET NEXTFIELD データベースを変更せずに PERFORM メニューに戻ります。 メッセージを状態行に表示します。 フィールドの値を基にその他のアクションを実行します。 フィールドに値を割り当てます。 カーソルを特定のフィールドへ移動したり、PERFORM メニュー へ戻ります。 これらのアクションを適切にコンパイルするには、それらを BEFORE または AFTER コントロール ブロックの中にインクルードしなければなりません。 128 IBM Informix SQL リファレンス マニュアル ABORT ABORT フォーム仕様の INSTRUCTIONS ( インストラクション ) セクションで ABORT キーワードを使用すると、データベースを変更せずに現在の Add、Update、 または Remove アクションを終了して、PERFORM メニューに戻すことができ ます。 ABORT オプション ABORT 使用法 Q ABORT アクションと NEXTFIELD EXITNOW アクションを比較すると、次 のような違いがあります。 T NEXTFIELD EXITNOW の場合、PERFORM は「Update」 、 「Remove」、ま たは「Add」を実行してから PERFORM メニューへ戻る。 NEXTFIELD EXITNOW は Esc キーを押すことに相当します。 T ABORT の場合、PERFORM は「Update」 、「Remove」、または「Add」 を実行せずに PERFORM メニューへ戻る。ABORT は CTRL-C を押す ことに相当します。 Q ABORT キーワードは、EDITADD、EDITUPDATE、および REMOVE の各オプ ションで使用できます。 例えば、従業員情報が入っている主表と従業員のプロジェクトに関 する情報が入っている詳細表 ( 従業員番号によって主表と結合さ れている ) を管理しているとします。プロジェクトは定期的に追加 されたり削除されたりしますが、確実にすべての従業員が何かのプ ロジェクトに従事しているようにする必要があります。( 最後の詳 細行を削除し、それによってどのプロジェクトにも属さない従業員 が生じることは管理上または事務上のエラーです。) この場合、 BEFORE REMOVE 操作で ABORT キーワードを使用して、詳細表の行数 をチェックする C 関数を呼び出すことができます。現行行が最後 の詳細行の場合、操作はアボートします。PERFORM から C 関数を呼 び出す方法については、『第 6 章 ACE および PERFORM における関 数』を参照してください。 FORMBUILD トランザクション フォーム生成プログラム 129 LET LET LET アクションを使用して、フィールド タグにフォームで表示するための 値を関連付けます。 LET オプション LET field-tag LET field-tag expression = 必須キーワード。 表示専用フィールド、コントロール ブロックの table.column リス トの中で指定されている列、または table.column リストの中で指 定されている表のどれかに属している列のフィールド タグ。 下に定義されているような表現式。 使用法 Q field-tag が先行条件を満たさない場合、FORMBUILD はエラーを生 じさせます。 Q 値を割り当てることができるフィールドは、実効表内の列または表 示専用フィールドに対応するフィールドのみです。 Q 使用できる表現式は次のとおりです。 T フィールド タグ T 定数値 T 集計関数の 1 つとそれに続くフレーズ OF tagname。ここで、 tagname はデータベース列のフィールド タグであり、表示専 用フィールドの名前ではありません。集計関数の値は、現行リ ストを対象に計算されます。 130 IBM Informix SQL リファレンス マニュアル LET 使用できる集計関数は次のとおりです。 COUNT 行数 TOTAL tagname の値の算術的合計 AVERAGE tagname の値の平均 (AVERAGE は AVG と書くことも 可能 ) MAX tagname の最大値 MIN tagname の最小値 T 今日の日付を戻すキーワード TODAY T 現在日時を戻すキーワード CURRENT T 算術演算子 +、-、*、および / で結合された、前述の関数の組 み合せ 集計関数についての詳細は、 「Informix SQL ガイド : 構文」を参照 してください。 Q 表現式には括弧を使用して、算術演算子の優先順位を明示的に示す ことができます。 次の例は、sample フォームからの抜粋です。 after add update query of items if (total of i19) <= 100 then let d1 = 7.50 else let d1 = (total of i19) * .04 let d2 = (total of i19) + d1 items 表の「Add」、 「Update」、または「Query」の後で Esc キーが押される と、PERFORM は d1 ( 運送費 ) と d2 ( 注文総額 ) の各フィールドの値を計 算します。i19 ( 品目の総額 ) フィールド ( 注文に含まれるすべての品 目 ) の値が 100 以下の場合は、d1 フィールド ( 運送費 ) の値に 7.50 を 設定します。そうでない場合は、i19 ( 品目の総額 ) フィールドの合計に .04 をかけた値を設定します。 d2 ( 注文総額 ) フィールドの値には、i19 ( 品目の総額 ) フィールドの合 計に d1 ( 運送費 ) フィールドの値を足したものが設定されます。 FORMBUILD トランザクション フォーム生成プログラム 131 LET LET 文の使用の別の例を次に示します。 let f1 = f2 * 1.065 let s2 = "default string" let f3 = (f5 + f8) * f7 let ftax = 0.065 * f_price let f9 = average of f_price let yr = (today - hdate)/365 GLS LET 文による数値または通貨的な値から文字列への変換は、GLS 設定の影響 を受けます。デフォルトの変換と USING 節を使った変換の両方で、作成さ れる文字列には、米国英語記号でなく、ロケール固有の分離記号および通 貨記号が挿入されます。♦ 132 IBM Informix SQL リファレンス マニュアル NEXFIELD NEXFIELD EDITADD または EDITUPDATE オプションを使用する際、NEXTFIELD アクション を使用してカーソルの移動を管理します。NEXTFIELD アクションは、フォー ム仕様ファイルの ATTRIBUTES ( 属性 ) セクションで決定されるデフォルト の順序をオーバーライドします。 NEXTFIELD オプション NEXTFIELD = fieldEXITNOW NEXTFIELD field-tag EXITNOW カーソルを特定フィールドへ移動する、または現在の「Add」また は「Update」を終了するよう PERFORM に指示するキーワード。 実効表内のデータベース列に対応するフィールド タグ。 現行の編集を終了する NEXTFIELD のキーワード値。 使用法 Q NEXTFIELD アクションを使用してカーソルを別の表内の列のフィー ルドへ移動することにより実効表を変更することはできません。 Q Q NEXTFIELD EXITNOW アクションと ABORT アクションを比較すると、次 のような違いがあります。 T NEXTFIELD EXITNOW の場合、PERFORM は「Update」 、 「Remove」、ま たは「Add」を実行してから PERFORM メニューへ戻る。 NEXTFIELD EXITNOW は Esc キーを押すことに相当します。 T ABORT の場合、PERFORM は「Update」 、「Remove」、または「Add」 を実行せずに PERFORM メニューへ戻る。 NEXTFIELD アクションは、カーソルの移動を制御するため、EDITADD および EDITUPDATE オプションの後ろでのみ効果があります。 sample フォームの例を次に示します。 before editadd editupdate of orders nextfield = o20 FORMBUILD トランザクション フォーム生成プログラム 133 NEXFIELD この例では、orders が実効表であるとき、ユーザが「Add」または 「Update」オプションを要求し次第、PERFORM はカーソルを o20 列 ( 顧客の 発注書番号 ) へ移動するよう指示されます。この指示がないと、カーソル は、フォームの ATTRIBUTES ( 属性 ) セクションに最初に現れる orders の フィールドである o11 フィールド ( 注文番号 ) へ最初に移動します。 134 IBM Informix SQL リファレンス マニュアル COMMENTS COMMENTS COMMENTS アクションを使用して、 メッセージを画面の状態行に表示します。 この COMMENTS の使用は、ATTRIBUTES ( 属性 ) セクションにインクルードし てコメント行にメッセージを書き込む COMMENTS 属性とは対照的です。 COMMENTS オプション "mstring" COMMENTS BELL REVERSE COMMENTS BELL REVERSE mstring メッセージを状態行に書き込むよう PERFORM に指示するキー ワード。 メッセージの書込み時にベルを鳴らすよう PERFORM に指示する キーワード。 メッセージを反転表示で書き込むよう PERFORM に指示するキー ワード。デフォルトは標準表示です。 引用符で囲まれたメッセージ ( 文字列 )。画面上で 1 行に収まら なければならず、フォーム仕様ファイルでも 1 行に収まってい なければなりません。 使用法 Q REVERSE キーワードを使用する場合、行の先頭で制御文字のための 領域が必要になるので、一部のモニタでは注意する必要がありま す。 Q メッセージは次のキーストロークでクリアされます。PERFORM は、 行の書込み時、「Update」または「Add」のアボート時、または 「Query」または「Remove」の実行時にメッセージを表示するので、 このアクションは EDITADD および EDITUPDATE キーワードにのみ効 果があります。 FORMBUILD トランザクション フォーム生成プログラム 135 IF-THEN-ELSE IF-THEN-ELSE IF-THEN-ELSE アクションを使用して、表示されるフィールドの値によって 異なるアクションを実行させます。 IF-THEN-ELSE オプション IF boolean-expression THEN t-action ELSE f-action IF booleanexpression THEN t-action ELSE f-action 必須キーワード。 true または false の値を取り得る、フィールド タグを伴う ブール (BOOLEAN) 式。 必須キーワード。 ブール (BOOLEAN) 式 が true の場合に実行すべき ( 一連の ) アクション。 キーワード。 ブール (BOOLEAN) 式 が false の場合に実行すべき ( 一連の ) アクション。 使用法 Q ブール (BOOLEAN) 式は、論理比較 (=、<>、>、<、>=、<=)、論理 演算子 (AND、OR、NOT)、および前述の表現式の組み合せです。ま た、演算子 IS NULL および IS NOT NULL も使用可能です。 Q 文字 (CHAR) 型フィールドの場合のみ、ブール (BOOLEAN) 式を次の ような形式にできます。 field-tag MATCHES " string" ここで、string は、「Informix SQL ガイド : 構文」で説明してい るとおり、引用符で囲まなければならず、またワイルドカード文字 をインクルードすることができます。 Q t-action と f-action は、このセクションで定義しているような (一連の)単一アクションか、キーワード BEGIN と END の間にある ような複数のアクションのいずれかです。 136 IBM Informix SQL リファレンス マニュアル IF-THEN-ELSE 次の例は、true アクションと false アクションがそれぞれ 1 つずつの単 純な IF-THEN-ELSE を示しています。 if (f1 * f2 > 200) then LET f5 = -f4 else LET f5 = -5 もっと複雑な sample フォーム仕様ファイルの例を次に示します。 after add update query of items if (total of i19) <= 100 then let d1 = 7.50 else let d1 = (total of i19) * .04 let d2 = (total of i19) + d1 items 表の「Add」、 「Update」、または「Query」の後で Esc キーが押される と、PERFORM は d1 ( 運送費 ) と d2 ( 注文総額 ) の各フィールドの値を計 算します。品目の総額フィールド ( 注文に含まれるすべての品目 ) の値が 100 以下の場合は、d1 フィールド ( 運送費 ) の値に 7.50 を設定します。 そうでない場合は、品目の総額フィールドの合計に .04 をかけた値を設定 します。 d2 ( 注文総額 ) フィールドの値には、品目の総額フィールドの合計 ( 注文 に含まれるすべての品目 ) に運送費フィールドの値を足したものが設定さ れます。 GLS 文字比較の結果と、文字引数が含まれる MATCHES、LIKE、および BETWEEN 式 の結果は、GLS 照合設定に依存します。詳しくは、『付録 C. 広域言語サ ポート』および「Informix Guide to GLS Functionality」を参照してくだ さい。♦ FORMBUILD トランザクション フォーム生成プログラム 137 SAMPLE フォーム仕様ファイル SAMPLE フォーム仕様ファイル sample フォーム仕様ファイルは、stores7 デモンストレーション データ ベースにリストされている顧客および注文に関するデータを入力および管 理するために設計されました。最初の画面は、customer 表から情報を表示 し、CUSTOMER INFORMATION というラベルが付いています。2 番目の画面は、 顧客の注文に関する情報の入力および抽出に使用します。 database stores7 screen { ================================================================================ ================================================================================ CUSTOMER INFORMATION: Customer Number: [c1 Company: [c4 First Name: [c2 ] ] ] Last Name: [c3 Address: [c5 [c6 ] ] ] City: [c7 Telephone: [c10 ] State: [c8] ] Zip: [c9 ] ================================================================================ ================================================================================ } screen { ================================================================================ CUSTOMER NUMBER: [c1 ] COMPANY: [c4 ] ORDER INFORMATION: Order Number: [o11 ] Stock Number: [i13 Description: [s14 Unit: [s16 Order Date: [o12 ] ] ] Manufacturer: [i16] [m17 Quantity: [i18 Unitprice: [s15 Total Price: [i19 SHIPPING INFORMATION: Customer P.O.: [o20 ] Backlog: [a] 138 IBM Informix SQL リファレンス マニュアル ] Ship Charge: [d1 Total Order Amount: [d2 ] ] ] ] ] ] SAMPLE フォーム仕様ファイル Ship Date: [o21 Date Paid: [o22 Instructions: [o23 ] ] ] } end tables customer items stock orders manufact attributes c1 = *customer.customer_num = orders.customer_num; c2 = fname, comments = "Please enter initial if available"; c3 = lname; c4 = company, reverse; c5 = address1; c6 = address2; c7 = city; c8 = state, upshift, autonext, include = ("CA","OR","NV","WA"), default = "CA" ; c9 = zipcode, autonext; c10 = phone, picture = "###-###-####x####"; o11 = *orders.order_num = items.order_num; o12 = order_date, default = today, format = "mm/dd/yyyy"; i13 = items.stock_num; = *stock.stock_num, noentry, noupdate, queryclear; i16 = items.manu_code, lookup m17 = manufact.manu_name joining *manufact.manu_code, upshift, autonext; = *stock.manu_code, noentry, noupdate, upshift, autonext, queryclear; s14 = stock.description, noentry, noupdate; s16 = stock.unit_descr, noentry, noupdate; s15 = stock.unit_price, noentry, noupdate; i18 = items.quantity, include = (1 to 50), comments = "Acceptable values are 1 through 50" ; i19 = items.total_price; o20 = po_num, required, comments = "If no P.O. Number enter name of caller" ; a = backlog, autonext; o21 = ship_date, default = today, format = "mm/dd/yyyy"; o22 = paid_date, format = "mm/dd/yyyy"; o23 = ship_instruct; d1 = displayonly type money; d2 = displayonly type money; instructions customer master of orders; orders master of items; composites <items.stock_num, items.manu_code> *<stock.stock_num, stock.manu_code> before editadd editupdate of orders nextfield = o20 FORMBUILD トランザクション フォーム生成プログラム 139 「CUSTOMER INFORMATION」画面 before editadd editupdate of items nextfield = i13 after editadd editupdate of quantity let i19 = i18 * s15 nextfield = o11 after add update query of items if (total of i19) <= 100 then let d1 = 7.50 else let d1 = (total of i19) * .04 let d2 = (total of i19) + d1 after display of orders let d1 = 0 let d2 = 0 end 「CUSTOMER INFORMATION」画面 「CUSTOMER INFORMATION」画面には、customer 表のすべての列の入力および 表示用フィールドが含まれます。この画面を使用して、顧客をデータベー スに追加したり、データベースから削除したりできます。 この画面には、次の重要なポイントがあります。 Q customer 表は customer_num 列で orders 表と結合される。 customer 表は、この結合の主表です。 Q カーソルが c2 ( 店代表者の名 ) フィールドへ移動するとコメント 行が表示される。 Q c4 ( 店名 ) フィールドは反転表示で表示される。 Q c8 ( 州 ) フィールドには PERFORM によって自動的に大文字が入力さ れる。このフィールドのデフォルト値は CA で、使用できるのは 4 つの州の省略形に限定されます。 Q c10 ( 電話番号 ) フィールドには文字パターンが指定されている。 140 IBM Informix SQL リファレンス マニュアル 「ORDER INFORMATION」画面 「ORDER INFORMATION」画面 2 番目の画面には、orders、items、stock、および manufact の各表から 集められたフィールドが含まれます。この画面は、顧客の注文に関する情 報を入力するために使用します。出荷情報 ( 発注書番号、特別な出荷指示、 出荷日付など ) と注文情報 ( 注文番号、日付、注文に含まれる品目、各品 目ごとの総額など ) は、この画面で入力します。 この画面には、次の重要なポイントがあります。 Q c1 ( 顧客番号 ) および c4 ( 店名 ) フィールドは、「CUSTOMER INFORMATION」画面から再現される。 customer.customer_num 列と orders.customer_num 列との照合結 合によって、存在しない顧客への注文の割当てを防止します。 orders 表がアクティブなときは、前もって customer 表に存在し ない値をこのフィールドに入力することはできません。 Q orders 表と items 表は order_num 列で結合されている。この照 合結合によって、存在しない注文番号への品目の割当てを防止しま す。items 表がアクティブなときは、前もって orders 表に存在し ない値をこのフィールドに入力することはできません。 Q o12 ( 注文日付 ) フィールドには特定のフォーマットが割り当てら れており、現在日付のデフォルト値を採用する。 Q items 表の stock_num 列は stock 表の stock_num 列と結合され る。これは、照合結合です。 Q items 表の manu_code 列は stock 表の manu_code 列と結合され る。これは、照合結合です。 FORMBUILD トランザクション フォーム生成プログラム 141 「ORDER INFORMATION」画面 Q i13 ( 取扱品目番号 ) と i16 ( メーカー コード ) フィールドは、 items 表と stock 表間の複合結合のメンバである。これは複合照 合結合であるため、前もって stock 表の stock_num および manu_code の各列に存在しない値を、(items 表がアクティブなと き ) それら 2 つのフィールドに入力することはできません。これ により、個々にデータベースには存在しても、複合として stock 表内の一意な行に対応しない、取扱品目番号とメーカー コードの 入力を防止します。 stock 表内の一意な行を指定するには、stock_num と manu_code の両方が必要です。例えば、stock 表には、取扱品目番号 1 の行 が 3 行、メーカー コード HRO の行が 4 行あります。取扱品目番 号またはメーカー コードをそれぞれ単独で把握していても、一意 な行を見付けることはできません。表内の一意な行 (Hero の野球 グローブ ) を指定するには、取扱品目番号 (1) とメーカー コード (HRO) の両方が必要です。 Q i13 ( 取扱品目番号 ) と i16 ( メーカー コード ) フィールドが埋ま ると、PERFORM は stock 表内で対応する一意な行を見付けることが できる。s14 ( 説明 )、s16 ( 単位 )、および s15 ( 単価 ) の各 フィールドには自動的に情報が表示されます。 Q i16 ( メーカー コード ) は、manufact 表内で該当するメーカー名 を見付けて、その情報を m17 フィールドに配置するルックアップ 結合に参加している。 Q i18 ( 注文数 ) フィールドに入力が許可される値は 1 から 50 まで で、カーソルがこのフィールドに移動してくるとコメントが表示さ れる。これにより、余分の数字の誤った入力 ( 例えば、10 のとこ ろを 100 といったような誤り ) を防止します。 Q orders 表が実効表である場合、カーソルは o11 ( 注文番号 ) フィールドへは移動しない。これは、orders 表の order_num 列が シリアル (SERIAL) 型であるためです。 Q INSTRUCTIONS ( インストラクション ) セクション内の次のエントリ により、orders 表が実効表になったときは、カーソルを o12 ( 注 文日付 ) フィールドでなく、まず o20 ( 顧客の発注書番号 ) に位 置付けるよう PERFORM に指示している。 before editadd editupdate of orders nextfield = o20 Q フィールド o21 ( 出荷日付 ) のデフォルト値には、今日の日付が設 定される。 142 IBM Informix SQL リファレンス マニュアル 「ORDER INFORMATION」画面 Q d1 および d2 フィールドは、どのデータベース列にも対応してい ない。これらのフィールドの 1 つは、運送費フィールドであり、 注文全体に対する運送費の合計です。2 番目のフィールドは、注文 総額フィールドであり、すべての品目と運送費を含めた注文全体の 請求総額です。各フィールドは、PERFORM が自動的に計算します。 INSTRUCTIONS ( インストラクション ) セクション内の次のエントリ により、この注文におけるフィールド i19 のすべての値の合計が 100 以下の場合は、フィールド d1 の値に 7.50 を設定するよう PERFORM に指示しています。この注文におけるフィールド i19 のす べての値の合計が 100 より大きい場合は、その合計に .04 をかけ たものをフィールド d1 の値に設定します。 after add update query of items if (total of i19) <= 100 then let d1 = 7.50 else let d1 = (total of i19) * .04 let d2 = (total of i19) + d1 Q 注文総額 (d2 フィールド ) は、注文における品目の総額 (i19 フィールド ) のすべての値の合計に運送費 (d1 フィールド ) を加 えたものです。 Q 顧客の注文における個々の品目の総額は、FORMBUILD によって自動 的に計算されます。このフィールドは、フィールド i13 ( 品目の 取扱品目番号 )、i16 ( 品目のメーカー コード )、および i18 ( 品 目の注文数 ) に情報が提供され次第、PERFORM によって入力され ます。PERFORM がこれを行うのは、INSTRUCTIONS ( インストラクショ ン ) セクションの中で、i18 ( 注文数 ) と s15 ( 単価 ) の各 フィールドに入力された値を基に品目の総額 (i19 フィールド ) の 値を計算するよう PERFORM に指示しているからです。 FORMBUILD トランザクション フォーム生成プログラム 143 「ORDER INFORMATION」画面 144 IBM Informix SQL リファレンス マニュアル 章 PERFORM 画面トランザクション プロセッサ 本章について . . . . . . . . . . . . . . 147 PERFORM の実行 . . . . . . . . . . PERFORM へのメインメニューからのアクセス . . . . . . . . . . . . 147 148 . . . . . . . . . . . . . . . . . . . . . . . . 150 150 152 153 154 154 154 158 158 159 161 162 PERFORM 画面 . . . . . . . 情報行 . . . . . . . . スクリーン フォーム . . . 状態行 . . . . . . . PERFORM からのオペレーティング データの入力 . . . . . . データ型 . . . . . . . 特殊機能 . . . . . . . カーソル移動 . . . . . . フィールド編集 . . . . . マルチライン エディタの使用 . 表示フィールドの順序 . . . . . . . . . . . . . . . . . . システム . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . コマンドの実行 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . データ チェック . . ユーザ アクセス権 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163 164 現行リスト . . . . . . . . . . . . . . . . 165 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 166 168 169 171 172 173 174 . . メニュー オプション ADD . . . . CURRENT . . DETAIL . . . EXIT . . . . MASTER . . . NEXT . . . OUTPUT . . . 3 PREVIOUS QUERY . REMOVE . SCREEN TABLE . UPDATE VIEW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146 IBM Informix SQL リファレンス マニュアル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179 180 184 185 186 187 188 本章について PERFORM は、データ入力および抽出を簡素化するために設計された INFORMIX- SQL プログラムです。FORMBUILD でスクリーン フォームを作成した 後、PERFORM でフォームを使用して、データベース内のデータを問い合わせ たり、修正したりできます。スクリーン フォームの設計および作成方法に ついては、『第 2 章 FORMBUILD トランザクション フォーム生成プログラ ム』を参照してください。 本章は 2 つのパートで構成されています。最初のパートでは、次の PERFORM の各プロシジャを説明します。 Q PERFORM へのメインメニューからのアクセス Q PERFORM 使用時のオペレーティング システム コマンドの実行 Q カーソル移動およびテキスト編集のための特殊キーの使用 Q 画面上でのデータ入力および編集 Q PERFORM によるデータ チェック Q PERFORM でのユーザ特権の制御 Q 現行リストの使用 本章の 2 番目のパートでは、PERFORM の各オプションを説明します。オプ ションはアルファベット順にリストされています。 PERFORM の実行 PERFORM は、フォーム仕様ファイルのコンパイル時に FORMBUILD が生成する ファイルを使用します。このファイルは、ユーザの作業ディレクトリまた は DBPATH 環境変数にインクルードされているディレクトリに存在しなけれ ばなりません。 PERFORM 画面トランザクション プロセッサ 147 PERFORM へのメインメニューからのアクセス PERFORM は、INFORMIX- SQL メインメニューから、または直接オペレーティン グ システムから実行することができます。コマンド行の使用方法について は、『付録 G. オペレーティング システムからプログラムへのアクセス』 を参照してください。 PERFORM へのメインメニューからのアクセス INFORMIX- SQL メインメニューで「Form」オプションを選択すると、 「FORM」 メニューが表示されます。 FORM: Run Modify Generate New Compile Drop ExitUse a form to enter data or query a database. ------------------------------------------------ Press CONTROL-W for Help --- 「FORM」メニューで「Run」オプションを選択します。「RUN FORM」画面とと もに使用可能なスクリーン フォームのリストが表示されます。 RUN FORM >> Choose a form with Arrow Keys, or enter a name, then press Enter. ------------------------------------------------ Press CONTROL-W for Help --customer orderform sample 148 IBM Informix SQL リファレンス マニュアル PERFORM へのメインメニューからのアクセス 使用するフォームの名前をタイプするか、または矢印キーを使用して、画 面上の選択項目を強調表示します。Enter キーを押します。次の図に表示の 通り、選択したフォームとともに PERFORM メニューが画面に表示されます。 PERFORM: Query Next Previous View Add Update Remove Table . . . Searches the active database table. ** 1: customer table** _____________________________________________________________________________ _____________________________________________________________________________ CUSTOMERS Customer Number: [ Company : First Name: [ Address : [ [ City : [ ] ] Last Name: [ ] ] ] ] State : [ ] Zip : [ ] Telephone : [ ] __________________________________________________________________________ _____________________________________________________________________________ PERFORM 画面トランザクション プロセッサ 149 PERFORM 画面 PERFORM 画面 PERFORM 画面は、3 つのセクションで構成されます。 Q 画面の先頭の 2 行 ( 情報行 ) には、PERFORM メニュー オプション、 強調表示されたオプションを説明するメッセージ、および実効表の 番号と名前または別名が表示される。 Q 画面の真ん中のセクション ( スクリーン フォーム ) には、選択さ れたフォームが表示される。 Q 画面の下の 2 行 ( コメント行と状態行 ) には、PERFORM メッセージ と、フォーム仕様ファイルで指定されたコメントが表示される。 情報行 PERFORM メニューは 2 ページに渡ります。最初の情報行には、メニュー オ プションのリストが表示されます。2 番目の情報行では、現行オプション を説明し、アクティブなデータベース表の番号と名前または別名を示しま す。次の 2 画面は、2 ページある PERFORM メニューそれぞれの情報行を示 しています。 PERFORM: Query Next Previous View . Searches the active database table. Add Update PERFORM: . . . Current Master Detail Output Displays the current row of the current table. 150 IBM Informix SQL リファレンス マニュアル Remove Table Screen . . ** 1: customer table** Exit ** 1: customer table** 情報行 最初のメニュー ページの省略記号は、次のメニュー ページに、利用でき る追加メニュー項目があることを表しています。2 番目のメニュー ページ の省略記号は、前のメニュー ページに、利用できる追加メニュー項目があ ることを表しています。 ヒント : 最初のメニュー ページに表示されるオプションの数は、ご使用 の画面の文字容量に依存します。ここに表示している 2 ページの画面は、 80 文字画面の端末またはモニタの例を示しています。文字容量がもっと大 きい端末では、最初のメニュー ページにより多くのオプションが表示され ます。 スペース キーまたは矢印キーを使用して、選択するメニュー オプションを 強調表示します。強調表示をページ上の最初または最後のメニュー オプ ションの先へ移動させると、代替のメニュー ページが表示されます。メ ニューがスクロールすることはありません。省略記号が強調表示され続け ることはありません。強調表示を各画面ページ上の最初または最後のオプ ションの先へ移動させると、次の PERFORM メニュー ページが表示されま す。 PERFORM はメニュー方式プログラムです。画面上でデータを扱う作業をする には、メニュー オプションのうちの 1 つを選択します。最初の情報行にあ るメニュー オプションの 1 つを選択するには、矢印キーまたはスペース キーを使用してメニュー オプションを強調表示してから Enter キーを押す か、またはメニュー オプションの頭文字を入力します。すると選択された オプションの画面を PERFORM が即時に表示します。何も入力せずにメ ニューへ戻る場合、割込みキーを押してください。このキーはほとんどの システムで削除キーです。 PERFORM 画面には次のメニュー オプションがあります。 Query フォームに入力された検索値を基にデータベースから行を抽出 したり、現行リストの行を格納します。 Next 現行リストの次行を表示します。 Previous 現行リストの前行を表示します。 View データ型がテキスト (TEXT) 型またはバイト (BYTE) 型のフィール ドの内容を表示します。 Add データをデータベースに追加します。 Update データベース内のデータを修正します。 PERFORM 画面トランザクション プロセッサ 151 スクリーン フォーム Remove 行をデータベース表から削除します。 Table フォームに別の表を表示します。 Screen フォームの別の画面ページを表示します。 Current 複数表の問合せにおける基本現行リストを復元して、表示され た行の最新バージョンをマルチユーザ環境で表示します。 Master 実効表の主表を表示します。 Detail 実効表の詳細表を表示します。 Output 選択された ( 複数 ) 行を画面フォーマットまたはアンロード フォーマットのいずれかでオペレーティング システム ファイ ルに書き込みます。 Exit PERFORM を終了します。 情報行には、実効表の番号と名前または別名も示されます。スクリーン フォームにインクルードされるすべての表には、表の表示フィールド タグ ( 結合を含む ) がフォーム仕様ファイルの ATTRIBUTES ( 属性 ) セクション に最初に現れる順序に従って表番号が割り当てられます。この番号は、表 がアクティブなとき、情報行の 2 行目の右隅で表名の隣に表示されます。 表番号は、「Detail」および「Table」オプションを使用した別の表への非 順次移動に便利です。 スクリーン フォーム スクリーン フォームは、PERFORM がデータを表示し、ユーザがデータを入 力する 1 つ以上のフィールドで構成されます。スクリーン フォーム上の各 表示フィールドは、1 つ以上のデータベース列またはフォーム仕様ファイ ルで指定されている特定の表示専用フィールドに対応しています。フォー ム仕様ファイルの中で代替区切り記号を指定している場合を除いて、画面 上でアクティブな表示フィールドは角かっこ ([ ]) で囲まれます。区切り 記号が付いていないフィールドはアクティブではありません。そのフィー ルドがルックアップ フィールドまたは表示専用フィールドの場合は、そこ に値が表示されることがありますが、データを入力することはできません。 スクリーン フォームは長さが 1 ページの場合もあれば複数ページの場合 もあり、幾つかの表の列を含むことができます。1 つのフォームにインク ルードする表は、すべて同一データベースのものでなければなりません。 152 IBM Informix SQL リファレンス マニュアル 状態行 デモンストレーション データベースに付いてくる customer フォームを使 用すると、PERFORM 画面は次のようになります。 PERFORM: Query Next Previous View Add Update Remove Table . . . Searches the active database table. ** 1: customer table** ______________________________________________________________________________ ______________________________________________________________________________ CUSTOMERS Customer Number: [ Company : First Name: [ Address : [ [ City : [ Telephone : [ ] ] Last Name: [ ] ] ] ] State : [ ] Zip : [ ] ] ______________________________________________________________________________ ______________________________________________________________________________ 状態行 PERFORM は画面の最後の 2 行を使用して、PERFORM エラー メッセージと、 フォームが独自に生成するメッセージを表示します。 The two entries were not the same - please try again. PERFORM 画面トランザクション プロセッサ 153 PERFORM からのオペレーティング システム コマンドの実行 PERFORM からのオペレーティング システム コマンド の実行 PERFORM メニューからオペレーティング システム コマンドを実行するに は、感嘆符 (!) キーを押します。PERFORM は感嘆符を画面の下に表示しま す。オペレーティング システム コマンドを入力して、Enter キーを押す と、PERFORM がコマンドの結果と次のメッセージを表示します。 Press RETURN to continue Enter キーを押すと、オペレーティング システムから PERFORM へ戻ります。 データの入力 スクリーン フォームからデータベースへ直接データを入力するには、 「Add」および「Update」オプションを使用します。入力するデータは、表 の作成時に指定したデータ型のもの、すなわち、日付 (DATE) 型フィールド であれば日付、金額 (MONEY) 型フィールドであれば金額でなければなりませ ん。データ入力を間違った場合は、フィールド編集キーを使用して訂正で きます。(159 ページの『フィールド編集』を参照。) データ型 次のリストは、各データ型に入力すべきデータの種類を説明しています。 誤ったデータ型のデータを入力した場合、PERFORM は次のメッセージを状態 行に表示します。 Error in field 154 IBM Informix SQL リファレンス マニュアル データ型 許容値を入力するか、割込みキーを押して実行中のオプションをキャンセル します。表内の各列のデータ型を調べるには、「SQL」または「TABLE」メ ニューの「Info」オプションを使用できます。データ型についての詳細は、 「INFORMIX-SQL ユーザ ガイド」を参照してください。 バイト (BYTE) 型 PERFORM メニューの「View」オプションを使用して、 フォームの PROGRAM 属性で参照しているバイト (BYTE) 型 フィールドを表示できます。バイト (BYTE) 型フィールド の内容は、表示することはできますが、変更はできませ ん。 文字 (CHAR) 型 [(n)] 文字、数字、および記号を入力します。「Add」または 「Update」時、文字列データの長さは最長で表示フィール ドと同じ長さにできます。 文字 (CHARACTER) 文字 (CHAR) 型のシノニム。 型 小桁整数 (SMALLINT) 型 -32,767 から +32,767 までの整数を入力します。 整数 (INTEGER) 型 -2,147,483,647 から +2,147,483,647 までの整数を入力 します。 整数 (INT) 型 整数 (INTEGER) 型のシノニム。 シリアル (SERIAL) PERFORM によってシリアル値が自動的に割り当てられるの 型 で、ユーザはシリアル (SERIAL) 型フィールドにデータを 追加したり、フィールドを更新したりしてはいけません。 しかし、 「Query」オプションを使用するときは、シリアル (SERIAL) 型フィールドに検索値を入力できます。 10 進数 (DECIMAL) 10 進数を入力します。数字のフォーマット ( 小数点の右 型 [(m,[n])] 側と左側の桁数 ) は、データベース表を作成したときに 指定したフォーマットに依存します。小数点以下の桁数 が多過ぎる数字を入力すると、PERFORM によって丸められ ます。 10 進数 (DEC) 型 10 進数 (DECIMAL) 型のシノニム。 10 進数 (NUMERIC) 10 進数 (DECIMAL) 型のシノニム。 型 PERFORM 画面トランザクション プロセッサ 155 データ型 金額 (MONEY) 型 ドル記号 ($) とカンマを付けずに金額を入力します ( 例えば、4254.30。$4,254.30 ではありません )。Enter キーを押すと、PERFORM が自動的にドル記号 ($) を追加し ます。 小桁実数 (SMALLFLOAT) 型 最大 7 有効桁までの浮動小数点数を入力します。小桁実 数 (SMALLFLOAT) 型フィールドへの数字の入力時、PERFORM が、わずかな矛盾を生じさせることがあります。例えば、 1.1 と入力した後に Enter または Esc キーを押すと、 1.11000001 と表示される場合があります。これは、コン ピュータが内部で数字を格納する方法に原因があります が、影響があるのは 7 桁を超える精度が必要な場合のみ です。 小桁実数 (REAL) 型 小桁実数 (SMALLFLOAT) 型のシノニム。 実数 (FLOAT) 型 最大 14 有効桁までの浮動小数点数を入力します。14 桁 を超える精度が必要な場合、小桁実数 (SMALLFLOAT) 型デー タで言及した矛盾がこのデータ型にも適用されます。 [(n)] 日付 (DATE) 型 日付を [mm]m[d]d[yy]yy というフォームで、オプショ ンの区切り文字として非数値の文字を付けて入力します ( 例えば、1985 年 8 月 2 日の場合、Aug 2 85、 08/02/85、8.2.85、または 08 02 1985 と入力できま す )。 日時 (DATETIME) 型 日時値を [yyy]y-[m]m-[d]d [h]h:[m]m:[s]s.[ffff] というフォームで入力します。各フィールドは次のよう に分離する必要があります : YEAR-MONTH、MONTH-DAY、DAY ( 空白 )HOUR、HOUR:MINUTE、MINUTE:SECOND、 SECOND.FRACTION。 156 IBM Informix SQL リファレンス マニュアル データ型 時間隔 (INTERVAL) 間隔値を [yyy]y-[m]m または [d]d 型 [h]h:[m]m:[s]s.[ffff]f というフォームで入力しま す。各フィールドは次のように分離する必要があります: YEAR-MONTH、DAY( 空白 )HOUR、HOUR:MINUTE、MINUTE:SECOND、 SECOND.FRACTION。 テキスト (TEXT) 型 可変長文字 (VARCHAR) 型 GLS テキスト (TEXT) 型フィールドは、内容の表示のみが可 能で、変更することはできません。 文字、数字、および記号を入力します。「Add」または 「Update」時、文字列データの長さは最長で表示フィール ドと同じ長さにできます。 数字分離記号と小数点記号は、GLS 設定を使用して調整できます。この設定 により、画面上、数値または金額フィールドに表示される分離記号が変わ ります。例えば、1234.56 は、ロケールがフランスまたはドイツの場合、 1234,56 と表示されます。また、ロケールがフランスまたはドイツの場合、 ユーザが入力する値には、小数点記号として、ピリオドでなくカンマが含 まれることが予期されます。 メッセージ ファイルを $INFORMIXDIR/msg のサブディレクトリにインストー ルし、それ以降、そのサブディレクトリを環境変数 DBLANG を使って参照す ることにより、日時 (DATETIME) 型および日付 (DATE) 型の値は、フォーム上、 ロケール特有の月名の省略形で表示されます。同様に、月名の値が入力さ れる際は、有効なロケール固有の名前であることが予期されます。例えば、 6 月であれば、ロケールがフランスの場合、Jun でなく、( フランス語で 6 月を表す ) Juin の略語である Jui と入力しなければなりません。正しい 月名が不確かな場合は、数字で月を指定してください。♦ PERFORM 画面トランザクション プロセッサ 157 特殊機能 特殊機能 データの入力時、または問合せ時、特定のキーを使用することで 3 つの特 殊機能を利用できます。 機能 使用するキー ヘルプ Ctrl-W で、特殊キー、制御キー、編集キー、および PERFORM に関 するその他の情報の簡潔な要約が記載された「HELP」画面が表示 されます。 実行 Esc キーで、選択したオプションを実行します。新規行を追加する には、a と入力して「Add」オプションを選択し、行の情報を入力 してから Esc キーを押して、データベースに行を追加します。 割込み ほとんどのシステムで、削除キーまたは Ctrl-C によって割込みま たは実行中のオプションをキャンセルします。例えば、本当は 「Query」を選択するつもりが「Add」を選択してしまった場合、 Ctrl-C を押してから「Query」オプションを選択します。 カーソル移動 画面上でカーソルを移動するには、次のキーを使用できます。 移動 使用するキー 次フィールド Enter キーおよび [ ↓ ] キーで、カーソルが次フィールドへ移 動します。 バックスペー ス 後退キーおよび [ ← ] キーで、テキストを消去することなく、 一度に 1 文字ずつカーソルが後方へ移動します。フィールドの 先頭でいずれかのキーを押すと、カーソルは前のフィールドへ移 動します。 (1 / 2) 158 IBM Informix SQL リファレンス マニュアル フィールド編集 移動 使用するキー 前進 [ → ] キーで、テキストを消去することなく、一度に 1 文字ず つカーソルが前方へ移動します。フィールドの終わりで [ → ] キーを押すと、カーソルは次フィールドへ移動します。 早送り Ctrl-F で、カーソルが各行の最初のフィールドに沿って、画面 の下方へ素早く移動します。多数のフィールドが含まれるフォー ムの下部へ素早く移動するには Ctrl-F を使用します。 高速移動 Ctrl-B で、カーソルが各行の最後のフィールドに沿って、画面 の上方へ素早く移動します。長いフォームの上部へ素早く移動す るには Ctrl-B を使用します。 (2 / 2) フィールド編集 フィールドへの入力データを間違った場合、それをバックスペースで消去 して再入力することで訂正できます。しかし、場合によっては、PERFORM の フィールド編集機能を使用した方が速いことがあります。フィールドへの データ入力に使用できる編集モードは 2 種類あります。 Q Q 上書きモード では、入力される文字で既存のデータが置き換えら れる。例えば、上書きモードを使用して、「Sports'R Us」を 「Abe's Sporting Goods」に変更できます。 挿入モード では、入力される文字が既存のデータを右へ移動させ る。例えば、挿入モードを使用して、Rchard に i を追加できます。 カーソルがフィールドへ移動すると、PERFORM は常に上書きモードになりま す。挿入モードにするには、Insert ( 挿入 ) キーを押さなければなりませ ん。上書きモードに戻すには、再度 Insert ( 挿入 ) キーか Ctrl- A を押し てください。カーソルを新たなフィールドへ移動すると、自動的に上書き モードになります。 PERFORM 画面トランザクション プロセッサ 159 フィールド編集 フィールドに表示されるデータを編集するには、次のキーを使用します。 機能 使用するキー バックスペース 後退キーおよび [ ← ] キーで、テキストを消去することな く、一度に 1 文字ずつカーソルが後方へ移動します。 フィールドの先頭でいずれかのキーを押すと、カーソルは 前のフィールドへ戻ります。 前進 [ → ] キーで、テキストを消去することなく、一度に 1 文 字ずつカーソルが前方へ移動します。フィールドの終わり で [ → ] キーを押すと、カーソルは次フィールドへ前進し ます。 文字の削除 削除キーまたは Ctrl-X で、カーソルが置かれている文字を 削除します。カーソルの位置は変わらず、テキストがシフ トして、削除された文字があった場所を埋めます。 モード変更 Insert ( 挿入 ) キーまたは Ctrl-A で、挿入モードと上書 きモードが切り替わります。PERFORM へ最初にアクセスする と、上書きモードになっています。 順方向削除 Ctrl-D を押すと、現行カーソル位置からフィールドの終わ りまで、すべて削除されます。 データの繰返し 画面の消去 Ctrl-P によって、フィールドで最後に表示された値を入力 します。「Add」オプションを使用して、1 つ以上のフィー ルドで同一データが含まれる複数の行を入力するとき、 Ctrl-P を押すと、データを再入力せずに済みます。 「Update」オプション使用時は、Ctrl-P によって、フィー ルドを変更する前にそのフィールドに表示された値を復元 できます。 Ctrl-C によって、「Query」オプションで入力した検索条件 をクリアします。 160 IBM Informix SQL リファレンス マニュアル マルチライン エディタの使用 マルチライン エディタの使用 マルチライン フィールドとも呼ばれる長い文字フィールドを編集するため に、マルチライン エディタを使用できます。マルチライン フィールドに は、次のフォーム仕様ファイルに表示の通り、複数の物理的フィールドが あります。 database reference screen { TITLE: [b001 AUTHOR: [b002 SYNOPSIS: [b003 [b003 [b003 [b003 } ] ] ] ] ] ] tables booktab attributes b001 = refdpt.booktab.title b002 = refdpt.booktab.author b003 = refdpt.booktab.synopsis,WORDWRAP COMPRESS . . . PERFORM 画面トランザクション プロセッサ 161 表示フィールドの順序 マルチライン エディタは、WORDWRAP 属性 (106 ページの『WORDWRAP』を参 照 ) を使用して起動します。マルチライン編集においても、ほとんどの キーが、わずかな例外を除いて通常のフィールド編集と同じように機能し ます。 Enter キー Enter キーによって、カーソルが現在のマルチライン フィールドを離れて、次フィールドの先頭に移動します。 上矢印 [ ↑ ] キーで、カーソルが同一マルチライン フィールド内 の 1 行上へ移動します。エディタによる空白を避けるため に必要な場合 (106 ページの『WORDWRAP』を参照 )、カーソ ルは左へ移動します。カーソルがマルチライン フィールド の先頭行にある場合、[ ↑ ] キーで、カーソルは先行 フィールドの最初の文字位置へ移動します。 下矢印 [ ↓ ] キーで、カーソルが同一マルチライン フィールド内 の 1 行下へ移動します。エディタによる空白を避けるため に必要な場合、カーソルは左へ移動します。カーソルがマ ルチライン フィールドの最下行にある場合、[ ↓ ] キー で、カーソルは次フィールドの最初の文字位置へ移動しま す。 Tab キー 上書きモードを使用中の場合、Tab キーで、カーソルは次 フィールドへ移動します。 Ctrl-N Ctrl-N によって復帰改行文字が挿入され、後続のテキスト が同一マルチライン フィールドの次行の先頭に移動しま す。これにより、順次、テキストがフィールドの下部へ移 動させられるため、場合によっては、フィールドの最後の 行にあるテキストが失われます。 表示フィールドの順序 カーソルは通常、フォーム仕様ファイルの ATTRIBUTES ( 属性 ) セクション でフィールド タグがリストされている順序に従って表示フィールド間を移 動します。この順序は、フォーム仕様ファイルの INSTRUCTIONS ( インスト ラクション ) セクションの中で NEXTFIELD 文を使用することで変更できま す。 162 IBM Informix SQL リファレンス マニュアル データ チェック データ チェック フォーム仕様ファイルの中の属性と指示は、「Add」、「Update」および 「Query」オプション使用時のデータ入力、データ格納、データ表示、およ びカーソル移動に影響します。現状の表示方法またはカーソル移動が望ま しくない場合、フォーム仕様ファイルを修正することで、その状態を変更 できます。一部の属性と指示を、それぞれの関連オプションとともに次に リストします。属性と指示に関する詳細は、第 2 章を参照してください。 Q 画面上の文字データの大文字小文字が入力したものと異なる。 UPSHIFT および DOWNSHIFT 属性をチェックしてください (Add、 Update、Query)。 Q 小桁実数 (SMALLFLOAT) 型または実数 (FLOAT) 型のデータが入力した ものと異なる。小数点の右と左の桁数を指定することで四捨五入を 行う FORMAT 属性をチェックしてください (Add、Update)。 Q PERFORM が次のメッセージを表示する。 This value is not among the valid possibilities. 許容値と値の範囲を指定する INCLUDE 属性をチェックしてください (Add、Update)。 Q 端末がビープ音を発し、入力した内容を画面にエコーイングしな い。指定された変数とリテラルのパターンにデータ入力を制限する PICTURE 属性をチェックしてください (Add、Update)。 Q 角かっこで囲まれた表示フィールドをカーソルがスキップする。 フィールドがシリアル (SERIAL) 型フィールドでない場合、NOENTRY 属性 (Add のみ )、NOUPDATE 属性 (Update のみ )、または NEXTFIELD アクション (Add と Update の両方 ) をチェックしてください。 Q PERFORM が次のメッセージを表示する。 This field requires an entered value. REQUIRED 属性をチェックしてください (Add)。DEFAULT を使って値 を指定している場合を除いて、REQUIRED 属性のフィールドには、明 示的にすべて値を入力しなければなりません。 Q PERFORM が次のメッセージを表示する。 Please type again for verification. VERIFY 属性をチェックしてください (Add、Update)。 Q 入力したデータが、画面上、右寄せで表示される。RIGHT 属性を チェックしてください (Add)。 PERFORM 画面トランザクション プロセッサ 163 ユーザ アクセス権 Q 数値データが、画面上、右寄せで表示され、先行ゼロが埋め込まれ る。ZEROFILL 属性をチェックしてください (Add)。 Q 入力していない値がフィールドに表示される。DEFAULT 属性、リテ ラルを伴う PICTURE 属性 (Add、Query)、結合フィールド (Add、場 合によって Query)、または LET アクション (Add) をチェックして ください。 Q あるフィールドが埋まると、カーソルが自動的にその次フィールド へ移動する。AUTONEXT 属性をチェックしてください (Add、 Update)。 Q 画面にテキストが 1 行表示される。COMMENTS 属性をチェックして ください (Add、Update、Query)。 Q 通常表示または反転表示で画面にテキストが 1 行表示される、ま たは端末のベルが鳴る、あるいはその両方。COMMENTS アクションを チェックしてください (Add、Update、Query)。 Q Esc キーを押す前に、データが自動的に格納される。NEXTFIELD EXITNOW アクションをチェックしてください (Add、Update)。 Q PERFORM が次のメッセージを表示する。 This is an invalid value--it does not exist in tablename. 照合結合をチェックしてください (Add、Update)。 ユーザ アクセス権 GRANT および REVOKE 文によって制御されるアクセス権は、ユーザが表また は表示フィールドのデータを表示、入力、変更、および削除する能力に影 響します。次のようなメッセージが表示される場合は、ユーザにアクセス 権がないことを意味します。 Permission not granted to allow update 特定の表に対するアクセス権を調べるには、「SQL」または「TABLE」メ ニューの「Info」オプションを使用します。 アクセス権についての詳細は、 「Informix SQL ガイド : 構文」を参照してく ださい。 164 IBM Informix SQL リファレンス マニュアル 現行リスト 現行リスト 現行リストは、PERFORM が問合せの結果を格納する一時記憶域です。そこに は、1 行からデータベース内のすべての行までを保持することができます。 「Query」オプションが選択されるたび、PERFORM は既存の現行リストを消去 して、新しい問合せ結果のためのスペースを用意します。 「Query」、 「Next」、「Previous」、「Remove」および「Update」の各オプショ ンは、すべて現行リストを必要とします。「Query」オプションは、検索条 件を満たす行をすべて検索して、それらを現行リストに書き込みます。 「Next」と「Previous」の各オプションは、現行リストの中の行を順次、ス テップスルーします。「Update」と「Remove」の各オプションでは、現行 リストの中の行しか処理できません。 メニュー オプション 以降のページでは、PERFORM で利用可能なメニュー オプションを詳細に説 明しています。簡単に参照できるように、メニューの順序でなく、アル ファベット順に記載しています。 PERFORM 画面トランザクション プロセッサ 165 ADD ADD 「Add」オプションを使用して、実効表に新規行を作成します。スクリーン フォームにデータを入力し、それを見直し、編集して、データベースに格 納できます。 「ADD」オプションは、次の手順に従って利用します。 1. a と入力して、 「Add」オプションを選択する。 PERFORM は、結合フィールドと一部の表示専用フィールドを除い て、スクリーン フォームからすべてのデータをクリアし、フィー ルドに空白またはデフォルト値を表示し、カーソルを最初のフィー ルドに位置付けます。 2. 必要な値をフォームに入力する。 表示フィールドのデータ型にふさわしくないデータが入力された場 合、PERFORM は次のメッセージを表示します。 Error in field 入力を訂正するまで、次の表示フィールドへ移動することはできま せん。 3. Esc キーを押して行を格納するか、または割込みキーを押して追加 をキャンセルし、PERFORM メニュー オプションを再表示する。 166 IBM Informix SQL リファレンス マニュアル ADD 使用法 Q PERFORM が次のメッセージを表示する場合、Esc キーを押しても行 は格納されません。 Could not insert new row - duplicate value in a unique index column これは、重複値が許可されていない箇所に重複値を入力しようとし ているためです。一意性インデックスをチェックするには、「SQL」 または「TABLE」メニューの「Info」オプションを使用します ( ま たは、INFO 文を実行してください )。 Q 別のユーザが LOCK TABLE 文を起動しているため、または更新また は削除しようとしている行を別のユーザが更新中であるために、表 全体または表の一部を使用できないことがあります。そのような場 合、PERFORM はエラー メッセージを表示します。 Q 小桁実数 (SMALLFLOAT) 型または実数 (FLOAT) 型フィールドにユーザ が数字を入力したとき、PERFORM がわずかな矛盾を生じさせること があります。例えば、1.11 と入力した後に Enter または ESC キー を押すと、1.11000001 と表示される場合があります。このような 矛盾が生じる理由は、コンピュータが内部で数字を格納する方法に よるものです。 関連のオプション Update、Remove PERFORM 画面トランザクション プロセッサ 167 CURRENT CURRENT 「Current」オプションは、実効表の現行リストの現行行を再読取りして再 表示します。 「Current」オプションは、次の手順に従って利用します。 1. c と入力して、 「Current」オプションを選択する。 2. PERFORM は、ユーザが別の表へ移動する前に表示していた画面の最 新版を表示する。 使用法 「Current」オプションは、次のような 2 つの状態に便利です。 Q LAN 環境の場合、表示中の画面上の表示フィールドに対応する情報 を、別のユーザが変更できる。「Current」オプションを使用する と、PERFORM は行を再読取りして、最新の情報を表示します。 Q フォームが結合フィールドをインクルードしている場合、スクリー ン フォームに現れる各表は独自の現行リストを保持する。実効表 の情報を調べているうちに、1 つ以上のその他の現行リストの中 で、自分が「どこにいるか分からなくなる」可能性があります。そ のようなとき、「Current」オプションを使用すると、実効表の現行 リストの元の位置に戻ることができます。 168 IBM Informix SQL リファレンス マニュアル DETAIL DETAIL フォーム仕様ファイルの INSTRUCTIONS ( インストラクション ) セクション には、複数表の問合せを単純化するため、結合フィールドを持つ 1 つ以上 の表の主 / 詳細関係を挿入することができます。「Detail」オプションは、 自動的に実効表の詳細表を選択、表示して、詳細表の問合せを行います。 「Detail」オプションは、次の手順に従って利用します。 1. d と入力して、 「Detail」オプションを選択する。 2. 実効表に詳細表がない場合、PERFORM はエラー メッセージを表示す る。実効表に 1 つ以上の詳細表が指定されている場合、PERFORM は、詳細表の絶対表番号が何であるかに関係なく、実効表の最初の 詳細表を見付けて表示します。 3. PERFORM は、詳細表のフィールドと結合している主表のフィールド の現行値を検索値として使用して、詳細表に対する問合せを自動的 に実行する。次に、PERFORM は、問合せ条件を満たす行を詳細表の 現行リストに書き込みます。これらの行を検証するには、「Next」 と「Previous」の各オプションを使用できます。行が見付からな かった場合、PERFORM は次のメッセージを表示します。 There are no rows satisfying the conditions. 4. 主表を再び実効表にするには、m と入力する。詳細表の現行値に一 致する結合フィールド値を持つ主表の最初の行が表示されます。 PERFORM 画面トランザクション プロセッサ 169 DETAIL 使用法 Q 明示的な主 / 詳細関係が存在しない場合に、表番号の指定なしに 「Master」オプションまたは「Detail」オプションが使用されると、 PERFORM はエラー メッセージを表示します。 Q INSTRUCTIONS ( インストラクション ) セクションの中で主表に複数 の詳細表が指定されている場合、最初の詳細表の表示と問合せを行 うには d を入力、別の詳細表の表示と問合せを行うには、d の前 にその詳細表の番号を付けて入力します。 Q 主 / 詳細関係が指定されていない場合でも、表番号を使用して、実 効表に結合している任意の詳細 表の問合せを実行できます。例え ば、4d と入力したとします。表番号 4 の表が実効表に結合してい れば、PERFORM は表番号 4 に問い合わせて、それが新たな実効表に なります。しかし、INSTRUCTIONS ( インストラクション ) セクショ ンの中で主 / 詳細関係を指定していない場合に、表番号を付けずに d と入力すると、PERFORM はエラー メッセージを表示します。 関連のオプション Master 170 IBM Informix SQL リファレンス マニュアル EXIT EXIT 「Exit」オプションを使用して、PERFORM を終了します。 「Exit」オプションは、次の手順に従って利用します。 1. e と入力して、 「Exit」オプションを選択する。 2. PERFORM が終了して、FORM メニューかオペレーティング システム のいずれかの開始点に戻る。 PERFORM 画面トランザクション プロセッサ 171 MASTER MASTER 「Master」オプションを使用して、詳細表からその主表へ直接移動します。 「Master」オプションは、次の手順に従って利用します。 1. m と入力して、 「Master」オプションを選択する。 2. 実効表に主表がない場合、PERFORM はエラー メッセージを表示す る。実効表に主表がある場合、PERFORM は、詳細表に結合している、 検索された行を持つ主表を表示します。 3. このオプションを使用するには、INSTRUCTIONS ( インストラクショ ン ) セクションの中で主 / 詳細関係を宣言しなければならない。 関連のオプション Detail 172 IBM Informix SQL リファレンス マニュアル NEXT NEXT 「Next」オプションを使用して、現行リストの中の次の行へ進みます。 「Next」オプションは、次の手順に従って利用します。 1. 「Query」オプションを使用して、検査する必要がある行を現行リス トに書き込む。 2. n と入力して、 「Next」オプションを実行する。PERFORM は現行リス ト内の次行を表示します。 3. 繰り返し n を入力する。現行リスト内の最終行に達すると、 PERFORM は次のメッセージを表示します。 There are no more rows in the direction you are going. 使用法 一度に幾つか先の行へ移動するには、「Next」オプションの前に数字を入力 します。例えば、10n と入力すると、10 行先へスキップします。 関連のオプション Query、Previous PERFORM 画面トランザクション プロセッサ 173 OUTPUT OUTPUT PERFORM メニューの「Output」オプションを使用すると、現行リスト内の 1 行またはすべての行を新規または既存のファイルへ書き込むことができま す。 データ、表示フィールドのラベル、ボックス、線などを含め、行が画面と まったく同じように現れる出力ファイルを作成できます。また、UNLOAD 文 を実行したときと同じように行が出力される出力ファイルを作成すること も可能です。後者の方法を使って抽出される行は、デフォルトの区切り記 号で分離されたフィールドを持つ、1 行が 1 レコードの ASCII ファイルに 出力されます。このアンロード フォーマットのファイルと、ACE READ 文を 使用してレポートを作成できます。 「Output」オプションは、次の手順に従って利用します。 1. PERFORM メニューの「Query」オプションを選択して、ファイルへ 書き込む必要がある ( 複数 ) 行のリストを抽出する。必要な場合、 「Next」または「Previous」オプションを使用して、ファイルへ書 き込む必要がある単一行を表示します。 2. o と入力して、 「Output」オプションを選択する。PERFORM からファ イル名を要求するプロンプトが出されます。 Enter output file (default is perform.out): 174 IBM Informix SQL リファレンス マニュアル OUTPUT 3. Enter キーを押して、デフォルトのファイル名を受け入れる。ある いは、出力を格納するファイルの名前を入力して、Enter キーを押 します。異なるディレクトリに出力を格納する場合、必ず完全なパ ス名を入力してください。新たに異なるファイル名を入力しない限 り、ここで入力する名前が、セッションの残りの間ずっと 「Output」オプションの新たなデフォルト ファイル名になります。 PERFORM は、次のとおり「FORM OUTPUT FILE」メニューを表示しま す。 FORM OUTPUT FILE: Append Create Adds new data to an existing output file 4. ステップ 3 で指定したファイルに情報を追加するには、a と入力 するか、Enter キーを押す。この情報を含む新規ファイルを作成す るには、c と入力します。 ヒント : ステップ 3 で既存のファイル名を入力して「Create」オプション を選択した場合、PERFORM は、「Output」オプションの実行時、以前のバー ジョンを上書きします。以前のファイルに格納されていたデータは、すべ て失われます。 PERFORM は、次のとおり「FORM OUTPUT FILE LIST」メニューを表示し ます。 FORM OUTPUT FILE LIST: Current-list Writes the Current List to the file One-page PERFORM 画面トランザクション プロセッサ 175 OUTPUT 5. 現行リスト内のすべての行を格納する場合は、c と入力するか、 Enter キーを押す。現在画面に表示されている行のみを格納する場 合は、o と入力します。 PERFORM から出力ファイルのフォーマットを要求するプロンプトが 出されます。 OUTPUT FORMAT: Unload-format Screen-format Writes the selected output in ascii format 6. 抽出した行を ASCII ファイル ( アンロード形式 ) で格納するには、 Enter キーを押すか、u と入力する。このファイルを ACE レポート で使用する予定がある場合、または別のアプリケーションの入力と して使用する予定がある場合はこのオプションを選択してくださ い。 抽出した行を、画面表示と同じ外観になるようフォーマット設定さ れたファイルに格納するには ( 画面形式 )、s と入力します。この ファイルには、データと追加のフィールド ラベル、ボックス、線、 またはその他の画面項目がすべて組み込まれます。 PERFORM が行をファイルへ書き込みます。出力行がファイルに書き 込まれるにつれ、画面の下部にあるカウンタがインクリメントして いきます。 Output record number 1 ステップ 5 で「Current-list」オプションを選択した場合、 PERFORM は、書き込む各行を表示しながらカウンタを更新していき ます。 176 IBM Informix SQL リファレンス マニュアル OUTPUT 使用法 Q 「OUTPUT FORMAT」メニューで「Screen-format」オプションを選択し た場合、PERFORM は、現行リストの各行のスクリーン フォームの 1 ページ分をコピーします。複数の画面に渡る行をコピーするには、 各画面ごとに単独で「Output」オプションを使用しなければなりま せん。 例えば、3 画面からなるフォームの全画面をコピーするには、次の 操作を実行します。 1. O、A、C、 および S と入力して、 「Output」、 「Append」、 「Current-List」、および「Screen-format」の各オプションを 順次選択し、現行リストの最初の画面をすべてファイルにコ ピーする。 2. 「Screen」オプションを選択して 2 番目の画面を表示する。 3. 同様に「Output」オプションを繰り返して、2 番目の画面をコ ピーする。 4. 「Screen」オプションを使用して 3 番目の画面を表示してか ら、O、A、C、 および S と入力して、3 番目の画面をファイル に追加する。 問合せの結果、複数行が抽出された場合、ファイルには、まずすべ ての最初の画面が含まれ、次にすべての 2 番目の画面が含まれ、 以下同様に続きます。 PERFORM 画面トランザクション プロセッサ 177 OUTPUT Q 「OUTPUT FORMAT」メニューの「Unload-format」オプションは、 フォームの画面数に関係なく、行全体をアンロード形式でコピーし ます。 Q 「OUTPUT FORMAT」メニューの「Unload-format」オプションは、行ご とに、フォーム仕様ファイルの ATTRIBUTES ( 属性 ) セクションに リストされているすべてのフィールドの値をコピーします。出力行 の各フィールドは、対応するフィールドが、フォーム仕様ファイル の ATTRIBUTES ( 属性 ) セクションにリストされている順序と同じ 順序で現れます。ルックアップ フィールドは行の末尾に追加され ます。 178 IBM Informix SQL リファレンス マニュアル PREVIOUS PREVIOUS 「Previous」オプションを使用して、現行リストの中の前の行を表示しま す。 「Previous」オプションは、次の手順に従って利用します。 1. 「Query」オプションを使用して、調査する必要がある行を現行リス トに書き込む。 2. n と入力して、次行を表示する。 3. p と入力して、 「Previous」オプションを使用する。PERFORM は、現 行リストの中の前行 ( このケースでは、最初の行 ) を表示します。 4. 現行リスト内の最初の行に達したら、p と入力する。PERFORM が次 のメッセージを表示します。 There are no more rows in the direction you are going. 5. 現行リストの中の前行を表示したいときはいつでも、「Previous」 オプションを使用できる。 使用法 一度に幾つか前の行へ戻るには、「Previous」オプションの前に数字を入力 します。例えば、10p と入力すると、10 行前へスキップします。 関連のオプション Query、Next PERFORM 画面トランザクション プロセッサ 179 QUERY QUERY 「Query」オプションは、スクリーン フォームの表示フィールドに直接入力 した検索値を基に、指定された値を持つデータベースの行および列を検索 するために使用します。検索条件には、6 つの関係演算子、2 つの範囲演 算子、2 つのワイルドカード演算子、および最高 / 最低値演算子を含む、 11 の異なる問合せ演算子を指定できます。PERFORM は、条件を満たすデー タベース行をすべて検索して、それらを現行リストに書き込みます。それ らを表示するには、「Next」と「Previous」の各オプションを使用できま す。 「Query」オプションは、次の手順に従って利用します。 1. q と入力して、 「Query」オプションを選択する。PERFORM は、すべ てのデータ ( ただし、QUERYCLEAR 属性を持たない結合フィールドの データは除く ) の実効表のフィールドをクリアして、カーソルを 最初のフィールドに配置します。 2. 181 ページで説明している構文を使用して、1 つ以上の表示フィー ルドに検索値を入力する。表内のすべての行を検索するには、検索 値を一切入力しません。 表示フィールドの長さが足りず、入力された検索値が収まりきらな い場合、PERFORM は画面の下部にワークスペースを作成します。 Enter キーが押された時点で、PERFORM はそのワークスペースを削 除します。表示フィールドに表示されるのはフィールドに収まる部 分のみですが、そこには、ワークスペースに入力された内容も含ま れています。 3. Esc キーを押して問合せを実行するか、または割込みキーを押して 問合せをキャンセルし、PERFORM メニューを再表示する。問合せを 実行すると、PERFORM は実効表を検索して、条件を満たす行をすべ て現行リストに書き込み、一致する最初の行を画面に表示します。 次のとおり、状態行のメッセージが示されます。 # row(s) found ここで、# は、指定された表示フィールドに指定された検索値が含 まれる行の数を表します。現行リスト内の行を調べるには、「Next」 と「Previous」の各オプションを使用できます。条件を満たす行が 存在しない場合、状態行のメッセージは次のようになります。 There are no rows satisfying the conditions 180 IBM Informix SQL リファレンス マニュアル QUERY 問合せの条件に使用できる記号は次のとおりです。 記号 名前 データ型 パターン = に等しい すべて =x > より大きい すべて >x < より小さい すべて <x >= 以上 すべて >=x <= 以下 すべて <=x <> 等しくない すべて <>x : 範囲 すべて x:y .. 範囲 DATETIME x..y INTERVAL * ワイルドカード CHAR *x, x*, *x* ? 単一文字ワイルドカード CHAR ?x, x?, ?x?, x?? | OR すべて a|b >> 最高値 すべて >> << 最低値 すべて << PERFORM 画面トランザクション プロセッサ 181 QUERY = デフォルトの問合せ演算子。別の演算子を入力しない場合、PERFORM は等号を使用します。 NULL の文字 (CHAR) 型列を含むデータベース行を検索するには、等号 を単独で入力します。アスタリスクを持つ列を含む行を検索するに は、=* と入力します。 x 検索フィールドのデータ型に合った任意の検索値。検索値は、前の テーブルで示した先頭から 6 つの問合せ演算子のうちのいずれか 1 つのすぐ後に続けて入力します。問合せ演算子と検索値の間に空白は 入れないでください。 > 文字 (CHAR) 型データの場合、より大きい の意味は、ASCII の順序で 後の方になることです (a>A>1)。日付 (DATE) 型または日時 (DATETIME) 型のデータの場合、より大きい は、遅い方を意味します。( 詳しく は、本書の『付録 E. ASCII 文字セット』を参照してください。) < 文字 (CHAR) 型データの場合、より小さい の意味は、ASCII の順序で 前の方になることです (1<A<a)。日付 (DATE) 型または日時 (DATETIME) 型のデータの場合、より小さい は、早い方を意味します。 y x より大きい値を持つ任意の検索値。 | OR を意味する検索演算子。例えば、顧客番号フィールドに 110|118|112 と指定すると、customer_num 列の値が 110、118、ま たは 112 の行が検索されます。 : 範囲を指定する検索演算子。範囲問合せの場合、検索演算子の前に下 限値を、演算子の後に上限値を指定しなければなりません。範囲演算 子を使う問合せの結果は包括的です。検索条件を 1:10 とした場合、 その列の値が 1 から 10 までの行が、包括的にすべて検索されます。 問合せ式に奇数個のコロン (:) が現れると、真ん中のものは問合せ 演算子として使用されます。問合せ式に奇数個のコロンが含まれ、そ れが有効な単一の日時 (DATETIME) 型または時間隔 (INTERVAL) 型の値で ない場合、INFORMIX- SQL はエラーを戻します。 .. 日時 (DATETIME) 型および時間隔 (INTERVAL) 型の範囲を指定する代替の 検索演算子。日時 (DATETIME) 型および時間隔 (INTERVAL) 型の定数には コロン (:) が含まれる場合があるため、.. 検索演算子を使用して、 あいまいさを避けます。 182 IBM Informix SQL リファレンス マニュアル QUERY ? ワイルドカード文字。単一文字を表します。?ick という検索値を orderform フォームの「店代表者の名」表示フィールドに指定する と、「Dick」、 「Rick」、「Nick」などが検索されます。 * ワイルドカード文字。ゼロを含め任意の個数の文字を表します。S* という検索値を orderform フォームの「店代表者の姓」表示フィー ルドに指定すると、 「Sadler」と「Sipes」が検索されます。検索値が *r の場合、 「Baxter」、「Jaeger」、 「Miller」、「Sadler」、および 「Vector」の 5 人が検索されます。 >> 最高値検索演算子。表示フィールドに ( 検索値を付けずに ) 入力し て、フィールドの最高値を検索します。 << 最低値検索演算子。表示フィールドに ( 検索値を付けずに ) 入力し て、フィールドの最低値を検索します。 使用法 Q コンピュータが浮動小数点数を格納する方法が原因で、入力したと おりの正確な値を問い合わせても、実数 (FLOAT) 型および小桁実数 (SMALLFLOAT) 型のデータを抽出できない場合があります。この問題 は、範囲問合せを使用することで解決できます。また、小数点の右 側に何桁か保持する FORMAT を FORMBUILD の ATTRIBUTES ( 属性 ) セ クションで指定することで解決できる場合もあります。 Q 表示フィールドに RIGHT 属性が指定されている場合、検索値の前に アスタリスクを付ける必要があるかもしれません。(RIGHT は、入力 された検索値の右寄せはしません。) Q PICTURE で指定したリテラルは、データの追加および更新時は画面 に表示されますが、問合せ時は画面に表示されません。間違った定 数値を入力すると、検索は成功しません。フォーム仕様ファイルに COMMENTS エントリを作成すると、このような問題の回避に役立ちま す。 GLS 文字の引数が含まれる、より小さい (<) およびより大きい (>) の各式の評 価は、GLS 設定に依存します。詳しくは、『付録 C. 広域言語サポート』お よび「Informix Guide to GLS Functionality」を参照してください。♦ 関連のオプション Next、Previous PERFORM 画面トランザクション プロセッサ 183 REMOVE REMOVE 「Remove」オプションを使用して、画面上の行を実効表から削除します。 「Remove」オプションは、次の手順に従って利用します。 1. 「Query」 、 「Next」、および「Previous」の各オプションを使用して、 削除する行を表示する。 2. r と入力して、 「Remove」オプションを選択する。 3. PERFORM が次の画面を表示する。 REMOVE: Yes No Removes this row from the active table. その行を削除する場合は y を、保持する場合は n を入力します。 どちらの場合も、次に PERFORM メニューが画面に表示されます。行 を削除すると、次のメッセージが画面の下部に表示されます。 Row deleted 使用法 照合結合の行を特定の表 ( 通常は、結合フィールドを検証する際の基準と なる主表 ) から削除するには、最初に、その行と結合している行をすべて その他の表 ( 通常は、主表に照らして検証される詳細表 ) から削除しなけ ればなりません。例えば、ORDERFORM フォームを使用した場合、items 表の 行は削除することができます。しかし、orders 表の行は、その行に結合し ている items 表の行をすべて削除してからでないと削除できません。なぜ なら、「注文番号」表示フィールドは照合結合だからです。 関連のオプション Add、Update 184 IBM Informix SQL リファレンス マニュアル SCREEN SCREEN 「Screen」オプションを使用して、フォームの画面ページを循環します。 「Screen」オプションは、次の手順に従って利用します。 1. s と入力して、 「Screen」オプションを実行する。 2. PERFORM はフォームの次の画面ページを表示する。最後の画面ペー ジに達したときに、s と入力すると再度、最初のページが表示され ます。 PERFORM 画面トランザクション プロセッサ 185 TABLE TABLE スクリーン フォームに複数の表が存在し、新たに実効表を選択する必要が ある場合、「Table」オプションを使用します。各表には、表の表示フィー ルド タグ ( 結合を含む ) がフォーム仕様ファイルの ATTRIBUTES ( 属性 ) セクションに最初に現れる順序に従って割り当てられる表番号が割り当て られています。この番号は、その表がアクティブになると画面の情報行の 表名または別名の横に表示されます。「Table」オプションは、実効表を初 めとして、表番号の順序に従って各表をステップスルーします。 「Table」オプションは、次の手順に従って利用します。 1. t と入力する。スクリーン フォームに複数の表のフィールドが組 み込まれている場合、PERFORM は、何ページ目かに関係なく、新し い実効表のフィールドを最も多く含んでいるスクリーン フォーム のページを自動的に選択して、それらのフィールドを区切り記号 ( 角かっこ ) で囲んで表示します。実効表以外の表に属するフィー ルドには区切り記号が付きません。 各表が別々の画面ページ上に存在する場合、PERFORM は新しい実効 表の画面ページを表示します。 2. 再度、t と入力する。PERFORM は、順次、次の表を表示します。最 後の表に達すると、PERFORM は、再度、最初の表を表示します。 使用法 次に表示したい表の番号が分かっている場合、中間の表を通過せずに、直 接その表へ移動することができます。例えば、使用中のフォームには 5 つ の表があり、現在、表番号 4 を表示しているとします。次に、表番号 2 を 表示する必要がある場合、2t と入力すると、PERFORM は表番号 2 を表示し ます。表番号 5 と 1 はスキップされます。 186 IBM Informix SQL リファレンス マニュアル UPDATE UPDATE 「Update」オプションを使用して、表示されている現行リストの行のデータ を変更します。 「Update」オプションは、次の手順に従って利用します。 1. 「Query」 、 「Next」、および「Previous」の各オプションを使用して、 変更する行を表示する。 2. u と入力して、 「Update」オプションを実行する。PERFORM はカーソ ルを最初のアクティブ フィールドに置きます。 3. 必要な表示フィールドをすべて修正して、データを編集する。 4. ESC キーを押して変更した行を格納するか、割込みキーを押して、 変更を無視して再度メニューを表示する。 使用法 Q 別の表の照合結合フィールドになっているフィールドを更新するに は、最初に、他の表で関連フィールドを更新しなければなりませ ん。 Q 「Update」オプションを選択した後で Esc キーを押すと、実際に何 か変更したかどうかにかかわらず、PERFORM は次のメッセージを表 示します。 This row has been changed. Q 小桁実数 (SMALLFLOAT) 型または実数 (FLOAT) 型フィールドにユーザ が数字を入力したとき、PERFORM がわずかな矛盾を生じさせること があります。例えば、1.11 と入力した後に Enter または Esc キー を押すと、1.11000001 と表示される場合があります。このような 矛盾が生じる理由は、コンピュータが内部で数字を格納する方法に よるものです。 PERFORM 画面トランザクション プロセッサ 187 VIEW VIEW 「View」オプションを使用して、フォームの PROGRAM 属性で参照しているテ キスト (TEXT) 型フィールドおよびバイト (BYTE) 型フィールドの内容を表示 します。BLOB ( バイナリ ラージ オブジェクト ) には、テキスト (TEXT) 型 およびバイト (BYTE) 型が含まれます。BLOB の内容は、表示のみが可能で す。BLOB を PERFORM フォームの中から変更することはできません。 「View」オプションが選択されると、INFORMIX- SQL はカーソルを、PROGRAM 属 性を使用する最初のテキスト (TEXT) 型フィールドまたは最初のバイト (BYTE) 型フィールドに位置付けます。BLOB を表示するには、感嘆符 (!) を 入力します。表示可能な次の BLOB フィールドにスキップするには、Enter、 Tab、または下矢印キーを押します。前の BLOB フィールドに戻るには、上 矢印キーを押します。Esc キーを押すと、「View」オプションを終了してメ インメニューを再表示します。 フォームに BLOB フィールドが含まれないときに「View」オプションが選択 されると、INFORMIX- SQL は次のエラー メッセージを表示します。 There are no BLOB fields to view. 188 IBM Informix SQL リファレンス マニュアル 章 ACE レポート ライタ 本章について . . . . 193 カスタム レポートの作成とコンパイル . . . . . . . . . メニューを使用したレポートの作成 . . . . . . . . . デフォルト レポートの生成 . . . . . . . . . . . カスタム レポートの作成 . . . . . . . . . . . コマンド行からのレポートの作成 . . . . . . . . . . コマンド行オプション . . . . . . . . . . . . 193 194 194 195 196 197 ACE の関連情報 . . . . . ACE ファイル名規則 . . . 所有者名の指定 . . . . レポート仕様における式の使用 ACE エラー メッセージ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198 198 199 199 201 サンプル レポート . . . . . . . . . . . . 201 レポート仕様ファイルの構造 . . . . . . . . . . . . 202 DATABASE セクション . . . . . . . . . . . . . . . 204 DEFINE セクション ASCII . . . PARAM . . . VARIABLE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205 206 208 209 INPUT セクション . PROMPT FOR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211 212 OUTPUT セクション REPORT TO . . LEFT MARGIN . RIGHT MARGIN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214 215 217 218 . . . . . . . . . . . . . 4 . . . TOP MARGIN . BOTTOM MARGIN PAGE LENGTH . TOP OF PAGE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . SELECT セクション . . . . . . . . . . . . . . . . 224 READ セクション . READ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227 . 228 FORMAT セクション . EVERY ROW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231 . 233 コントロール ブロック AFTER GROUP OF . BEFORE GROUP OF . FIRST PAGE HEADER ON EVERY ROW . . ON LAST ROW . . PAGE HEADER . . PAGE TRAILER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 文 . . . . . FOR . . . . IF THEN ELSE LET . . . NEED . . . PAUSE . . . PRINT . . . PRINT FILE . SKIP . . . SKIP TO TOP OF WHILE . . . 集計 . . . ASCII . . . CLIPPED . . COLUMN . . . CURRENT . . DATE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . PAGE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190 IBM Informix SQL リファレンス マニュアル 219 220 221 222 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236 . . . . . 237 . . . . . 240 . . . . . 243 . . . . . 245 . . . . . 247 . . . . . 248 . . . . . 250 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252 . . . . . 253 . . . . . 254 . . . . . 256 . . . . . 258 . . . . . 259 . . . . . 260 . . . . . 262 . . . . . 263 . . . . . 264 . . . . . 265 . . . . . 266 . . . . . 268 . . . . . 270 . . . . . 271 . . . . . 272 . . . . . 273 DAT() . . DAY( ) . LINENO . MDY( ) . MONTH( ) PAGENO . SPACES . TIME . . TODAY . . USING . . WEEKDAY( ) WORDWRAP . YEAR( ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274 275 276 277 278 279 280 281 282 283 293 294 295 ACE レポート ライタ 191 192 IBM Informix SQL リファレンス マニュアル 本章について ACE は、あるデータベースの表、または ASCII 入力ファイルのデータを基 にレポートを生成する汎用のリレーショナル レポート ライタです。ACE で は、レポートを設計する際、いくつかの表を使って指定されたリレーショ ンシップを基に複数のデータベース表から情報を引き出すことが可能です。 カスタム レポートの作成とコンパイル レポート仕様ファイルは、次の 2 つの内いずれかの方法で、1 つあるいは 複数のデータベース表を基に作成できます。 Q ISQL (INFORMIX- SQL) メインメニューの「Report」オプションを使用 する。 Q オペレーティング システムのコマンド行から該当するプログラム を使用して直接操作する。 いずれの方法も、レポートが情報を引き出す際のデータベースとすべての 表がすでに作成済みであることが必要です。次の 2 つのセクションでは、 これらの方法の手順を説明しています。ただし、これらのセクションでは、 レポート仕様ファイルを構成または修正するためのルールについての説明 はありません。それらのルールは、198 ページの『ACE の関連情報』で定 義されています。 また、コマンド行からのレポート作成については、『付録 G』にも記載され ています。このオプションは、入力ファイルからレポートのデータを取得 する場合に使用します。 ACE レポート ライタ 193 メニューを使用したレポートの作成 メニューを使用したレポートの作成 REPORT メニューからレポートを作成、コンパイル、および実行する手順を 次の 2 つのセクションで示します。『デフォルト レポートの生成』では、 デフォルト レポートの生成に使用する手順を説明します。『カスタム レ ポートの作成』では、カスタム レポートの生成に関する手順をステップ形 式で示します。各手順の更なる詳細については、「INFORMIX- SQL ユーザ ガ イド」に記載されています。 デフォルト レポートの生成 INFORMIX- SQL メニュー システムを使用してデフォルト レポートを作成する には、次のステップに従って操作します。 1. INFORMIX- SQL メインメニューの「Report」オプションを選択してか ら、 「REPORT」メニューの「Generate」オプションを選択します。 2. 現行のデータベースがない場合は、「CHOOSE DATABASE」画面が表示 されます。データベースを選択すると、「GENERATE REPORT」画面が 表示されます。レポートに割り当てる名前を入力します ( たとえ ば、newrpt)。ファイル名の拡張子 .ace は付加しないでくださ い。INFORMIX- SQL は、必要な拡張子を自動的に追加します。 3. INFORMIX- SQL により、デフォルト レポートの作成に使用する表の 名前を指定するようプロンプトが出されます。表の名前を入力する と、INFORMIX- SQL は自動的にレポート仕様をコンパイルし、 「REPORT」 メニューを表示します。これでレポートが使用可能になります。 4. 「REPORT」メニューの「Run」オプションを選択して、レポートを実 行します。 デフォルトのレポート仕様ファイルのレポート形式は、レポートにインク ルードされている表の列をすべてリストした形で設定されています。それ は、データの表示方法に関する特別な指示を ACE に提供することもなけれ ば、データ操作を実行するための指示も組み込まれていません。デフォル ト レポートに情報を提供しているのは、1 つの表だけです。 194 IBM Informix SQL リファレンス マニュアル メニューを使用したレポートの作成 カスタム レポートの作成 INFORMIX- SQL メニュー システムを使用してカスタマイズされた レポートを 作成するには、次のステップに従って操作します。 1. 前のセクション「デフォルト レポートの生成」で示されている手 順を実行します。 2. 「REPORT」メニューが画面に表示されます。 「REPORT」メニューで 「Modify」オプションを選択します。 3. 「MODIFY REPORT」画面が表示されます。作成されたばかりのデフォ ルト レポートの名前 (newrpt) を入力します。 4. セッションであらかじめエディタが指定されていない場合、あるい は、 『付録 B. 環境変数の設定』に記載されている DBEDIT 環境変数 が設定されていない場合は、INFORMIX- SQL により操作に使用するエ ディタの選択を促されます。画面の先頭行に名前が表示されている エディタをそのまま選択する場合は、Enter キーを押します。別の エディタで作業する場合は、そのエディタの名前を入力します。 INFORMIX- SQL は、そのエディタをデフォルトのレポート仕様ファイ ルと共に呼び出します。 必要なデータと希望する外観になるように仕様を修正します。エ ディタを終了します。 5. 「MODIFY REPORT」メニューが表示されます。 「Compile」オプション を選択します。 6. レポート仕様ファイルが正しくコンパイルされた場合は、その結果 を示すメッセージが表示され、ACE は、ファイル名拡張子 .arc の 付いたレポート ファイルを作成します ( たとえば、newrpt.arc)。 ステップ 8 に進みます。レポート仕様ファイルがエラーを含む場 合は、その結果を示すメッセージが表示され、ACE は、ファイル名 拡張子 .err の付いたレポート ファイルを作成します ( たとえば、 newrpt.err)。ステップ 7 へ進んでください。 7. 「COMPILE REPORT」メニューから「Correct」オプションを選択しま す。INFORMIX- SQL がシステム エディタ、およびコンパイラ エラー を含むレポート仕様ファイルを呼び出します。エラーを訂正する 際、エラー メッセージを削除する必要はありません。INFORMIX- SQL が実行してくれます。ステップ 5 に戻ります。 8. コンパイルが正常に行われたら、「MODIFY REPORT」メニューの 「Save-and-exit」オプションを選択します。「REPORT」メニューが 表示されます。これでレポートが使用可能になります。 ACE レポート ライタ 195 コマンド行からのレポートの作成 9. 「REPORT」メニューの「Run」オプションを選択して、レポートを実 行します。 「Generate」オプションを使用してデフォルトのレポート仕様を作成する代 わりに、「New」オプションを選択できます。INFORMIX- SQL がシステム エ ディタを呼び出すので、ユーザーはレポート仕様指示をすべて入力します。 コマンド行からのレポートの作成 カスタマイズされたレポート仕様をオペレーティング システムのコマンド 行から直接作成するには、次のステップに従って操作します。 1. システム エディタを使用してレポート仕様ファイルを作成します。 ファイル名に拡張子 .ace が追加されます。 2. ACEPREP プログラムを使用して仕様をコンパイルします。 saceprep と入力して ACEPREP を呼び出します。ACEPREP を呼び出す際、.ace ファイル名拡張子は省略できます。 たとえば、このコマンド行を使用して newrpt.ace 仕様ファイルを コンパイルする場合は、次のようになります。 saceprep newrpt 3. コンパイルが正常に行われると、ACE はコンパイル済みのレポート ファイル newrpt.arc を作成し、これでカスタマイズ レポートの 作成は完了となります。ステップ 5 に進みます。レポート仕様に エラーが検出された場合は、newrpt.err ファイルが作成されます。 ステップ 4 へ進んでください。 4. システム エディタを使用してこの仕様を編集します。仕様ファイ ルからすべてのエラー コメントを削除します。この訂正バージョ ンを使用してファイル newrpt.ace を上書きします。ステップ 2 に進みます。 5. newrpt.arc レポートを実行するために、ACEGO プログラムを使用し ます。sacego と入力して ACEGO を呼び出します。ACEGO を呼び出 す際、.arc ファイル名拡張子をインクルードしないでください。 たとえば、このコマンド行を使用して newrpt.arc レポートを実行 する場合は、次のようになります。 sacego newrpt コマンド行からのレポート作成については、『付録 G』でも説明していま す。 196 IBM Informix SQL リファレンス マニュアル コマンド行からのレポートの作成 コマンド行オプション 次の 4 つのコマンド行オプションが ACE で利用できます。 -o -o ( 出力 ) オプションは、ACEPREP がその出力ファイルを配置する ディレクトリを示す場合に、そのディレクトリのパス名の前に使用 します。このオプションを使用しない場合、ACEPREP はそのファイ ルを作業中の ( 現行 ) ディレクトリに配置します。 たとえば、NEWRPT 仕様のコンパイルから生成される出力ファイル を OUTPUT ディレクトリに配置するよう ACEPREP に指示する場合、 次のコマンド行を使用します。 saceprep -o output newrpt -s -s ( サイレント ) オプションは、主要でない画面メッセージをす べて抑制する場合に、ACEGO と ACEPREP の両方で使用します。たと えば、ACEPREP でプログラム バナーを抑制する場合はこのコマンド 行を使用します。 saceprep -s newrpt -ansi -ansi を使用してレポートをコンパイルすると、ACEPREP は、 Informix の拡張機能を SELECT 文に対して実行した場合、常に警告 を生成します。ACEPREP は、name.err ファイルにその警告を配置し ます。-ansi を使用して INFORMIX- SQL を起動すると、ACEPREP は自 動的に非 ANSI 構文を検査します。次のコマンドを使用します。 saceprep -ansi newrpt -d -d ( データベース ) オプションは ACEGO で使用するもので、レ ポート仕様の中で名前指定されたデータベースを置き換える場合 に、そのデータベースの名前の前に指定します。例えば、NEWRPT 仕様の中にインクルードされたデータベースの代わりに sales データベースを置き換える場合、このコマンド行を使用します。 sacego -d sales newrpt -ansi は、ACEGO では使用できません。 また、非 ANSI 構文の検査は、DBANSIWARN 環境変数を設定して行うこともで きます。DBANSIWARN の使用に関する詳細は、『付録 B』を参照してくださ い。 ACE レポート ライタ 197 ACE の関連情報 ACE の関連情報 レポートに使用されるレポート仕様ファイル、コンパイル済みレポート仕 様、およびデータベース ファイルは、作業中のディレクトリか、あるいは DBPATH 環境変数で名前指定されたディレクトリ内になければなりません。 入力ファイルがカレント ディレクトリにない場合は、完全パス名でその ファイルを参照する必要があります。 ACE ファイル名規則 ACE は、次のファイル命名規則を使用します。 Q レポート仕様ファイル名の長さは、拡張子を除いて 10 文字まで可 能です。このファイル名には、.ace ファイル名拡張子が必要です。 .ace ファイル名拡張子がないと、ACE コンパイラはファイルを識 別しません。 「REPORT」メニューで「New」または「Generate」オプションを使用 すると、INFORMIX- SQL は自動的に .ace 拡張子をファイル名に追加 するので、選択したファイル名に拡張子をインクルードしないよう にしてください。 Q レポート仕様をコンパイルする際、ファイル名拡張子は省略できま す。 Q ACE コンパイラが出力ファイルを生成する際の拡張子は、コンパイ ルが正常に行われたかどうかによって異なります。コンパイルが正 常に行われた場合、拡張子 .arc がファイル名に追加されます。コ ンパイルが失敗した場合は、拡張子 .err がファイル名に追加され ます。 .err ファイルはテキスト ファイルで、このファイルにはオリジナ ルの仕様ファイルと、ACE で検索された問題を記述および指摘する エラー メッセージが含まれます。 198 IBM Informix SQL リファレンス マニュアル 所有者名の指定 所有者名の指定 ANSI 標準準拠データベースでは、レポートが所有者以外のユーザによって 実行される場合に、プレフィックス owner. を表の名前の前に付ける必要 があります。プレフィックス owner. は、ANSI 標準準拠でないデータベー スにおいてはオプションです。ただし、owner. が文の中にインクルードさ れている場合、INFORMIX- SQL はその精度を検査します。 レポート仕様における式の使用 式は、シンプルな数字やアルファベット定数からさらに複雑な一連の列値、 関数、引用符付き文字列、演算子、キーワードなど、あらゆるものが使用 可能です。ACE は、レポート生成時に式を評価します。また、評価の結果 を表示したり、変数に割り当てたり、計算に使用したりすることもできま す。 ACE で式が評価される際、演算子によって別々に区切られている式のエレ メントが結合されます。エレメントの結合は、200 ページの図 15 で示し た順序で行われます。この順序は、括弧を使用することで変更できます。 本書で数値式 (num-expr) を示す際には、あらゆるタイプの式を当てはめ ることができ、ACE が数値として評価できれば、文字を含んだ式も可能で す。たとえば、文字列「123」は有効な数式ですが、「m23」は無効となりま す。 同様に、date-expr は、ACE が日付として評価できる式です。引用符付き文 字列 ("01012010" または "1-1-2010")、あるいは正当な日付型と評価でき る整数 (INTEGER) 型が使用できます。 引用符付き文字列は、引用符で囲まれた任意の文字列です。引用符付き文 字列は、ACE が文字 (CHAR) 型または可変長文字 (VARCHAR) 型の式を必要とす る箇所ならどこでも使用できます。 算術、集計、ブール (BOOLEAN) 式、または BEFORE GROUP OF や AFTER GROUP OF 節などにおいて、テキスト (TEXT) 型の列の名前を指定することはできま せん。 PRINT 文においては、テキスト (TEXT) 型の列の名前を指定できます。PRINT 文は、テキスト (TEXT) 型の項目をファイルとして使用することで、PRINT FILE 文のように扱われます。 ACE レポート ライタ 199 レポート仕様における式の使用 指数は整数として扱われます (10 進数値ではありません )。10 進数値が指 数として提供された場合、ACE はその数値を切り捨てて整数にします。た とえば、式 4 ** 3.4 は、4 ** 3 に切り捨てられた後で評価されます。 図 15 演算子優先順位 演算子 機能 優先順位 - 単項減算 1 ** 指数 2 * 乗算 3 / 除算 4 + 加算 4 - 減算 4 is [not] null 値の有 / 無 5 matches 文字列が等しい 5 = 等しい 5 != または <> 等しくない 5 > ~より大きい 5 < ~より小さい 5 >= ~以上 5 <= ~以下 5 not ~でない 6 and および 7 OR OR 8 演算子の優先順位 : 1 が最高、8 が最低となります。 単項減算は、値の代数記号を ( 正から負へ、あるいは負から正へと ) 示し たり変更したりします。これは、単一オペランドで作動します。 200 IBM Informix SQL リファレンス マニュアル ACE エラー メッセージ ACE エラー メッセージ すべての INFORMIX- SQL エラー メッセージおよび訂正の提案を示すテキスト は、応答オンラインの Informix エラー メッセージ集 に含まれています。 サンプル レポート この章のサンプル レポートは、次のリストから入手しています。デモンス トレーション データベースと共にインクルードされている追加レポート は、さらなる理解に有効なものです。これらのレポートは、ACE で利用で きるさまざまなコマンドについて説明しています。 mail1.ace メール ラベルを生成する簡単なレポート mail2.ace 1 列分のメール ラベルを生成する、より複雑なレポート mail3.ace 1 列から 3 列分のメール ラベルを生成する対話型レポート clist1.ace 顧客情報をリストしたレポート clist2.ace 対話型の顧客レポート ord1.ace ストアに出すオーダーのカスタム レポート ord2.ace 2 番目の顧客オーダー レポート ord3.ace 日々のオーダーをリストした対話型レポート 『付録 A. デモンストレーション データベースおよび例』に、各サンプル レポートの仕様についての全文が記載されています。 ACE レポート ライタ 201 レポート仕様ファイルの構造 レポート仕様ファイルの構造 レポート仕様ファイルには、レポートがインクルードしているデータの種 類やデータの表示形態を指示したものが含まれます。レポート仕様は、3 つの必須セクション (DATABASE、SELECT ( または READ)、および FORMAT) と 3 つのオプション セクション (DEFINE、INPUT、および OUTPUT) で構成され ます。次のダイヤグラムとリストは、レポート仕様の必須セクションとオ プション セクションを定義したものです。 DATABASE セクション P.204 DEFINE セクション P.205 INPUT セクション P.211 OUTPUT セクション P.214 SELECT セクション P.224 FORMAT セクション P.231 READ セクション P.227 ACE レポート仕様セクションの一般的順序は、次のようになります。 1. DATABASE セクション : 各レポート仕様は、まず DATABASE セクショ ンから始める必要があります。ここでは、レポートに使用するデー タベースを識別します。 2. DEFINE セクション : オプションの DEFINE セクションは、コマンド 行からレポートに対して適用できるパラメータだけでなく、そのレ ポートで使用される変数を宣言する際に使用されます。また、この セクションは、ASCII 入力ファイルの値のフィールド名とデータ型 を指定する場合にも使用されます。 3. INPUT セクション :INPUT セクションはオプションです。レポートに パラメータを渡す場合に使用されます。 4. OUTPUT セクション :OUTPUT セクションはオプションです。このセク ションは、ページ長およびマージン幅を制御する場合や、レポート からの出力をファイル、システム プリンタ、またはパイプなどに 送信する場合に使用されます。 202 IBM Informix SQL リファレンス マニュアル レポート仕様ファイルの構造 5. SELECT または READ セクション : Q SELECT セクション:データベース表からデータを抽出する場合、 SELECT セクションでレポートの基になる列および表を指定しま す。 Q READ セクション :ASCII ファイルからデータを抽出する場合、 READ セクションでレポートの基になる入力ファイルの名前を指 定します。 6. FORMAT セクション : 次に FORMAT セクションが表示されます。この セクションは、レポートにおけるデータの外観を判別するコマンド がインクルードされます。 ACE レポート仕様内では、あらゆる箇所にコメントをインクルードできま す。その場合は、単にコメントを中括弧 ( { } ) で囲むか、あるいはコメ ントの前にシャープ記号 ( # ) かダブル ダッシュ ( -- ) を付けます。 ACE レポート ライタ 203 DATABASE セクション DATABASE セクション DATABASE セクションは、あらゆるレポート仕様に必要です。DATABASE セク ションには、ACE がレポートの基本として使用するデータベースを指定し ます。このセクションで指定するデータベースを -d コマンド行オプショ ンで上書きすることができます。詳しくは、197 ページの『コマンド行オ プション』セクションを参照してください。 DATABASE セクションは、ACE レポート仕様の第 1 セクションでなければな りません。始めに DATABASE キーワードを置き、次にデータベースの名前、 そして最後に END キーワードを置きます。 READ 文を使用して ASCII ファイルからデータを取得する場合、ASCII ファ イルに基づくレポートがデータベースに関連付けられていなくても、やは り DATABASE セクションでデータベースを指定する必要があります。その場 合、既存のデータベースの名前を指定するか、あるいは ASCII キーワード を使用することができます。 次のダイヤグラムは、DATABASE セクションの構造を表したものです。 DATABASE セクション DATABASE databasename END ASCII database-name アクセスの対象になるデータベースの名前。 次の例は、clist1.ace レポートの DATABASE セクションです。 database stores7 end {use stores7 database} 次の例は、ASCII キーワードを使用したものです。 database ascii end {using the READ statement} 204 IBM Informix SQL リファレンス マニュアル DEFINE セクション DEFINE セクション ACE レポート仕様は、オプションで DEFINE セクションを含めることができ ます。DEFINE セクションは、レポート内で使用できる変数、およびコマン ド行からレポートに対して適用できるパラメータを宣言する場合に使用さ れます。READ 文を使用して入力ファイルから値を取得する場合は、DEFINE セクションで ASCII キーワードを使用して、そのファイル内にあるデータ のフィールド名とデータ型を指定する必要があります。 DEFINE セクションでは、始めに DEFINE キーワードを置き、これに対応する END キーワードを最後に置きます。変数定義リストはこれらのキーワード 間で表示され、1 つ以上の PARAM または VARIABLE 文、あるいは両方の組合 せで構成されます。単一の ASCII キーワードとフィールド リストは、 DEFINE と END キーワードの間で使用できます。 次のダイヤグラムは、DEFINE セクションの構造を表したものです。 DEFINE セクション DEFINE database-name ASCII 文 P.206 END PARAM 文 P.208 VARIABLE 文 P.209 FUNCTION 文 P.333 database-name アクセスの対象になるデータベースの名前。 次の 3 つのセクションで ASCII、PARAM、および VARIABLE 文について説明し ます。FUNCTION 文については、『第 6 章 ACE および PERFORM における関 数』で説明します。 ACE レポート ライタ 205 ASCII ASCII ASCII 文は、DEFINE セクション内で、ASCII 入力ファイル内にあるレコード のフィールド名とデータ型を指定する場合に使用します。ACE レポート ラ イタは、READ 文の中でこのファイルにアクセスします。 ASCII 文 , ASCII ASCII field-name data-type field-name data-type ASCII 入力を示す必須キーワード。 ファイル内のフィールドに必須の識別子。 有効な SQL データ型。 使用法 Q READ セクションで READ 文を使用する場合は、 DEFINE セクションに ASCII 文をインクルードする必要があります。 Q SELECT 文を使用して ASCII ファイルにアクセスしたり、READ 文を 使用してデータベース表にアクセスすることはできません。 Q ASCII データを基にしたレポートがデータベースに関連付けられて いなくても、DATABASE セクションにデータベースを指定する必要が あります。その場合、既存のデータベースの名前を指定するか、あ るいは ASCII キーワードを使用してください。 Q ASCII 文のフィールド数と ASCII ファイルのフィールド数は、一致 する必要があります。 Q 各 field-name は、データ型仕様の前に置く必要があります。ACE はデータ型の精度を検査しないため、データ型が間違って指定され た場合にランタイム エラーが発生する可能性があります。 Q 金額 (MONEY) 型のデータ型仕様は、キーワード MONEY 以外には許可 されていません。 Q SQL データ型については、 「Informix SQL ガイド : 参照 」を参照し てください。 206 IBM Informix SQL リファレンス マニュアル ASCII 次の ASCII 文は、ASCII ファイルのレコードを UNLOAD 形式で定義したもの です。 define ascii stock_num smallint, manu_code char(3), description char(15), unit_price money, unit char(4), unit_descr char(15) end この場合は、たまたまフィールド名が stores7 データベースの stock 表に ある列名と同じ名前で同じ順序になっています。PARAM または VARIABLE 文 の変数名のように、フィールド名は表の列名と一致する必要はありません。 フィールド名の数、順序、およびデータ型が一致していなければならない のは、ASCII ファイルのフィールドです。 関連するコマンド READ、UNLOAD ACE レポート ライタ 207 PARAM PARAM この文は、ACE レポートの実行時にコマンド行で指定された引数の使用を 可能にします。これは、初期値がコマンド行引数のものとなる変数を宣言 します。PARAM を使用するには、カスタム ユーザ メニュー (『第 5 章 ユーザ メニュー』を参照 ) か、あるいはコマンド行 (193 ページの『カス タム レポートの作成とコンパイル』を参照 ) から ACE を呼び出す必要があ ります。 PARAM 文 PARAM [ int ]var-name data-type PARAM int var-name data-type 必須キーワード。 コマンド行で引数の位置を示す必須の整数。最初の引数は、数字の 1 です。 宣言する変数の名前。レポートの実行時、コマンド行引数の初期値 となります。 有効な SQL データ型。 使用法 Q ACE レポート仕様で PARAM および VARIABLE 文を使用して、 合計 100 個の変数を定義できます。 Q レポート仕様に PARAM 文を使用していて、レポートの実行時にコマ ンド行で引数を指定しなかった場合、ACE はエラー メッセージを 表示します。 Q SELECT セクションで PARAM 文によって定義された変数を使用する 場合、その変数名の前にドル記号 ($) を付ける必要があります。 詳しくは、224 ページの『SELECT セクション』を参照してくださ い。 Q 変数のデータ型については、 「Informix SQL ガイド : 参照 」を参照 してください。 208 IBM Informix SQL リファレンス マニュアル VARIABLE VARIABLE この文は、ACE レポート仕様で利用できる変数を宣言します。 VARIABLE 文 VARIABLE var-name data-type VARIABLE var-name data-type 必須キーワード。 定義する変数の名前。 有効な SQL データ型。 使用法 Q ACE レポート仕様で PARAM および VARIABLE 文を使用して、 合計 100 個の変数を定義できます。 Q SELECT セクションで、 PARAM または VARIABLE 文中に宣言された変数 を使用する場合、その変数名の前にドル記号 ($) を付ける必要が あります。( 詳しくは、224 ページの『SELECT セクション』を参照 してください。) Q 金額 (MONEY) 型のデータ型仕様は、キーワード MONEY 以外には許可 されていません。 Q 式の中で可変長文字 (VARCHAR) 型 列および変数は、文字 (CHAR) 型列 および変数と同様に扱われます。レポート内で VARCHAR を定義する 際には、VARCHAR がデータベースに対して定義された最小領域の パ ラメータを指定しないようにしてください。逆に、印刷したい文字 数を示すようにしてください。 たとえば、employee 表で history が VARCHAR(255,10) として定義 されている場合、レポート内では VARCHAR(255) として定義します。 列の部分を出力するだけの場合は、VARCHAR(120) のように VARCHAR の長さをより短くして定義することができます。 Q 変数のデータ型については、 「Informix SQL ガイド : 参照 」を参照 してください。 ACE レポート ライタ 209 VARIABLE 次の例は、ord3.ace レポートのものです。 define variable begin_date date variable end_date date end 次の例は、VARCHAR データ型を使用したものです。 define variable history varchar(255) end ユーザは、プログラムの実行時に変数の値を入力します。このプロセスの 説明については、211 ページの『INPUT セクション』を参照してください。 210 IBM Informix SQL リファレンス マニュアル INPUT セクション INPUT セクション ACE レポは、オプションで INPUT セクションを含めることができます。 INPUT セクションでは、ACE がレポートを実行する際に入力のプロンプトを 出したり受け入れたりすることで、対話型の ACE レポートを生成すること が可能です。 INPUT セクションは、キーワード INPUT と END で構成され、間に 1 つ以上 の PROMPT FOR 文が入ります。次のダイヤグラムは、INPUT セクションの構 造を表したものです。 INPUT セクション INPUT PROMPT FOR 文 P.212 END ACE レポート ライタ 211 PROMPT FOR PROMPT FOR この文は、ACE がレポートを実行する際にプロンプトを出し、ユーザが入 力した値を変数に割り当てます。 PROMPT FOR 文 PROMPT FOR var-name USING PROMPT FOR var-name USING string "string" 必須キーワード。 入力を受け取る変数の名前。ACE レポート仕様の DEFINE セク ションでこの変数を宣言する必要があります。 必須キーワード。 ACE がプロンプトに使用する文字列。この文字列は、引用符で 囲む必要があります。 使用法 Q PROMPT FOR 文を使用してデータベース名のプロンプトを出したり受 け入れたりすることはできません。DATABASE セクション、および 197 ページの『コマンド行オプション』の -d オプションの説明を 参照してください。 Q PROMPT FOR 文を使用して出力ファイル名のプロンプトを出したり受 け入れたりすることはできません。 次の例は、ord3.ace レポートのものです。 input prompt for begin_date using "Enter beginning date for report: " end prompt for end_date using "Enter ending date for report: " 212 IBM Informix SQL リファレンス マニュアル PROMPT FOR ord3.ace レポートが実行されると、2 つの文字列 "Enter beginning date for report:" および "Enter ending date for report:" が画面 上にプロンプトとして表示されます。最初のプロンプトに対する応答は、 begin_date 変数の値として入力され、2 番目のプロンプトに対する応答 は、end_date 変数の値として入力されます。これら 2 つの変数は、 ord3.ace レポートの幾つかの箇所で使用されます。 ACE レポート ライタ 213 OUTPUT セクション OUTPUT セクション ACE レポート仕様は、オプションで OUTPUT セクションを含めることができ ます。OUTPUT セクションは、マージン幅やページの長さを制御します。ま た、OUTPUT セクションは、ACE レポートの出力をファイルまたはプリンタ に送信することが可能です。 OUTPUT セクションでは、始めに OUTPUT キーワード、そしてこれに対応する END キーワードを最後に置いて、その間に 1 つ以上の文が入ります。次の ダイヤグラムは、OUTPUT セクションの構造を表したものです。 OUTPUT セクション OUTPUT REPORT TO 文 P.215 LEFT MARGIN 文 P.217 RIGHT MARGIN 文 P.218 TOP MARGIN 文 P.219 BOTTOM MARGIN 文 P.220 PAGE LENGTH 文 P.221 TOP OF PAGE 文 P.222 214 IBM Informix SQL リファレンス マニュアル END REPORT TO REPORT TO この文は、ACE レポートの出力をファイルまたはプリンタに送信します。 REPORT TO 文 REPORT TO "filename" PRINTER REPORT TO filename PRINTER program "program" 必須キーワード。 レポートを受け取るシステム ファイルの名前。ファイル名は、引 用符で囲む必要があります。 プリンタにレポートを送信するキーワード。 システム コマンドの名前。 ACE レポート ライタ 215 REPORT TO 使用法 Q REPORT TO 文を使用しない場合、ACE はレポートを画面に送信しま す。 Q レポート仕様で複数の REPORT TO 文を使用することはできません。 Q TO PRINTER キーワードを使用すると、ACE は、DBPRINT 環境変数で名 前指定されたプログラムにレポートを送信します。この環境変数が 定義されていない場合、ACE は lp プログラムにレポートを送信し ます。 Q レポートをシステム プリンタ以外のプリンタに送信する場合は、 REPORT TO filename 文を使用して出力をファイルに送信してから、 そのファイルを希望するプリンタに送信できます。 Q REPORT TO filename 文を既存のファイル名で作成した場合、その ファイルは新しい出力によって置き換えられます。また、REPORT TO PIPE 文を使用して、該当するプリンタに送信するプログラムへ出 力を送信することもできます。 次の例は、出力を labels ファイルに送信したものです。 output report to "labels" end 216 IBM Informix SQL リファレンス マニュアル LEFT MARGIN LEFT MARGIN この文は、レポートの左マージンを設定します。 LEFT MARGIN 文 LEFT MARGIN integer LEFT MARGIN integer 必須キーワード。 左マージンの幅をスペースで示した整数。 使用法 デフォルトの左マージンは、5 スペースです。 次の例は、mail2.ace レポートのものです。ACE は、レポートの左側をでき るだけ左端にして印刷します。 output top margin 0 bottom margin 0 left margin 0 page length 9 report to "labels" end ACE レポート ライタ 217 RIGHT MARGIN RIGHT MARGIN この文は、レポートの右マージンを設定します。 RIGHT MARGIN 文 RIGHT MARGIN integer RIGHT MARGIN integer 必須キーワード。 ページのテキスト幅を文字数で示した整数。 使用法 Q RIGHT MARGIN は、ページの幅を文字数で指定することで右マージン を決定します。これは、LEFT MARGIN によって決まるものではあり ませんが、常にページの左端 ( スペース 0) からカウントを開始し ます。 Q RIGHT MARGIN は、FORMAT セクションに EVERY ROW 文が含まれる場合 のみ有効です。 Q デフォルトの右マージンは 132 文字です。 次の例のレポート仕様は、RIGHT MARGIN 文を使用したものです。ACE はレ ポートの右マージンを 70 文字に設定しています。 database stores7 end output right margin 70 end select * from customer end format every row end 218 IBM Informix SQL リファレンス マニュアル TOP MARGIN TOP MARGIN この文は、レポートの上端マージンを設定します。 TOP MARGIN 文 TOP MARGIN integer TOP MARGIN integer 必須キーワード。 ACE で各ページの上部にある空白行の数を示した整数。 使用法 Q デフォルトの上端マージンは 3 行です。 Q 上端マージンは、ユーザが指定したページ ヘッダの上部にありま す。 例 次の例は、mail2.ace レポートのものです。ACE は、各ページの上部で印刷 を開始します。 output top margin 0 bottom margin 0 left margin 0 page length 9 report to "labels" end ACE レポート ライタ 219 BOTTOM MARGIN BOTTOM MARGIN この文は、レポートの下端マージンを設定します。 BOTTOM MARGIN 文 BOTTOM MARGIN integer BOTTOM MARGIN integer 必須キーワード。 ACE で各ページの下部にある空白行の数を示した整数。 使用法 Q デフォルトの下端マージンは 3 行です。 Q 下端マージンは、ページ トレイラの下部にあります。 次の例では、各ページの下部まで印刷が実行されていくことを示していま す。 output top margin 0 bottom margin 0 end 220 IBM Informix SQL リファレンス マニュアル PAGE LENGTH PAGE LENGTH この文は、レポートの各ページの行数を設定します。 PAGE LENGTH 文 PAGE LENGTH integer PAGE LENGTH integer 必須キーワード。 ページの長さを行数で示した整数。 使用法 Q デフォルトのページ長は 66 行です。 Q PAGE LENGTH には、TOP MARGIN と BOTTOM MARGIN が含まれます。 次の例は、PAGE LENGTH 文を使用したものです。ACE は、各ページを 22 行 で印刷します。 output {This length works on std 24-line crt} page length 22 top margin 0 bottom margin 0 end ACE レポート ライタ 221 TOP OF PAGE TOP OF PAGE この文は、ご使用のプリンタが改ページを行う元となる文字列を指定しま す。 TOP OF PAGE 文 TOP OF PAGE TOP OF PAGE char-string "char-string" 必須キーワード。 ご使用のプリンタが改ページを行う元となる 1 文字または 2 文字の文字列。 使用法 Q ほとんどのプリンタの場合、char-string は「^L」(ASCII 書式送り 文字 ) となります。ACE では、最初の文字列が ^ 文字である場合 を除いて、その文字を TOP OF PAGE 文字として使用します。最初の 文字が ^ 文字の場合、ACE は 2 番目の文字を制御文字としてデ コードします。( ご使用のプリンタに指定されている文字列が不明 の場合は、そのプリンタに提供されている資料を参照してくださ い。) Q プログラムによって新しいページがセット アップされる場合は常 に、ACE が次のページに進むための文字列をレポート内に配置しま す。次の事柄のいずれかが起こると、新規ページを開始できます。 T 次の印刷行が下端マージンになる。 T SKIP TO TOP OF PAGE 文が実行されている。 T SKIP n LINES 文のスキップする行数が、現行のページで可能な 行数を超えている。 T NEEDS 文の指定する行数が、現行のページで可能な行数を超え ている。 Q TOP OF PAGE 文を指定すると、ACE は改行の代わりに新しいページの セット アップを示す改ページ文字を使用します。 222 IBM Informix SQL リファレンス マニュアル TOP OF PAGE Q TOP OF PAGE 文を省略すると、ACE は、新しいページのセット アッ プ時に現行ページの残りの行を改行にします。 次の例は、CONTROL-L を改ページ文字として設定したものです。 output top of page "^L" report to "r_out" end select * from customer end format on every row end ACE レポート ライタ 223 SELECT セクション SELECT セクション レポート仕様には、それぞれ SELECT セクションか READ セクションが必要 です。SELECT セクションでは、データをデータベースから取得する場合に、 レポートの基となる列または表 ( あるいは両方 ) を指定します。READ セク ションでは、データを ASCII ファイルから取得する場合に、レポートの基 となる入力ファイルを指定します。ACE レポートにおける ASCII ファイル の使用方法についての詳細は、227 ページの『READ セクション』を参照し てください。 SELECT セクションは、特定の列の内容を基にして行を選択および順序付け する基準の指定に使用できます。FORMAT セクションは、SELECT セクション で指定された順序に基づいて、レポートの行をグループ化できます。 SELECT セクションは、1 つ以上の SELECT 文を含みます。これらの文は、 「Informix SQL ガイド : 構文」で説明されている SELECT 文と同一のもので す。本章は、SELECT 文の定義についてではなく、それを ACE レポート仕様 に取り込む方法について説明しています。 SELECT セクションは、最初に SELECT キーワードから始めます。このキー ワードは、SELECT セクションと最初の SELECT 文の両方を引き出します。他 の SELECT 文を最初の文に続けることができますが、それぞれ始めに SELECT キーワードが必要です。すべての SELECT 文は、最後の文を除いて、終わり にセミコロン (;) が必要です。(SELECT 文が 1 つしかない場合には、セミ コロンは不要です。)SELECT セクションの終わりには、END キーワードを付 けます。最後の SELECT 文以外はすべて、INTO TEMP 節が必要です。 SELECT セクションで ORDER BY 節を使用する場合、整数、または表プレ フィックス (table.column) の付いた列を使用してソート列を示すことは できません。列名が固有のものでないか、あるいは数式であるために、そ の列名を単独で使用できない場合は、選択リストに表示ラベルを定義して、 これを AFTER および BEFORE GROUP OF コントロール ブロックの ORDER BY 節 および FORMAT セクションの両方で使用します。表示ラベルの使用について は、本セクションの 2 番目の例で説明します。 SELECT セクションで ACE 変数を使用する場合は、変数名の前にドル記号 ($) が必要です。変数名の使用については、本セクションの 3 番目の例で 説明します。 224 IBM Informix SQL リファレンス マニュアル SELECT セクション 次のダイヤグラムは、SELECT セクションの構造を表したものです。 SELECT セクション SELECT 文 SQL ガイド : 構文 ; END 次の例は、mail1.ace レポートのものです。ACE は customer 表からすべて の行を選択し、それらをまず郵便番号の順にしてから、姓の順にしていま す。 select * from customer order by zipcode, lname end 次の例は、ord1.ace レポートのものです。 select orders.order_num number, order_date, customer_num, po_num, ship_date, ship_charge, paid_date, items.order_num, stock_num, manu_code, quantity, total_price from orders, items where orders.order_num = items.order_num end order by number ACE は、orders および items 表から示された列を選択しています。orders 表の order_num 列に表示ラベル number が指定されており、items 表の order_num 列に加えられています。ACE は、行を number 列の値の順に配列 しています。 ACE レポート ライタ 225 SELECT セクション 次の例は、clist2.ace レポートのものです。 select customer_num, fname, lname, company, city, state, zipcode, phone from customer where state matches $thisstate order by zipcode, lname end ACE は、customer 表から示された列を選択しています。WHERE 節による指 示で、ACE は state 列の値と変数 thisstate の値が一致する行だけを選択 しています。ACE は、これらの行をまず zipcode 列の値の順にしてから lname の順にしています。 226 IBM Informix SQL リファレンス マニュアル READ セクション READ セクション SELECT セクションの代わりに、READ 文を含んだ READ セクションをインク ルードできます。行を入手するためにデータベースを照会する SELECT 文と は異なり、READ 文は ASCII 入力ファイルから行を取得します。レポート仕 様には、それぞれ READ セクションか SELECT セクションが必要です。 READ 文は、SQL の UNLOAD 文または PERFORM の Output オプションで生成さ れた ASCII ファイルからのデータ取得を可能にします。さらに、他のソフ トウェア製品で作成または編集された ASCII ファイルからのレポート生成 も可能です。 ASCII ファイルからデータを読み取るには、次の条件を満たしている必要 があります。 Q ASCII データ ファイルの完全なパス名を確認しておくこと。さら に、そのファイルの 1 レコードにおけるフィールドの数、区切り 記号、および各フィールドごとの順序とデータ型も確認しておく必 要があります。 Q レポート仕様の DEFINE セクションに、ASCII ファイルでのレコー ド形式を示す ASCII 文を使用すること。ASCII キーワードに続い て、ASCII ファイルのフィールド名とデータ型の配列リストが示さ れます。ASCII 文の使用に関する詳細は、205 ページの『DEFINE セ クション』を参照してください。 Q ASCII データを基にしたレポートがデータベースに関連付けられて いなくても、レポート仕様には DATABASE セクションをインクルー ドする必要があります。その場合、既存のデータベースを指定する か、あるいは ASCII キーワードを使用することができます。ASCII キーワードの使用に関する詳細は、204 ページの『DATABASE セク ション』を参照してください。 次のダイヤグラムは、READ セクションの構造を表したものです。 READ セクション READ 文 P.228 END ACE レポート ライタ 227 READ READ READ セクションの READ 文を使用すると、ASCII 入力ファイルからのデータ をアンロード形式で取得します。READ セクションでは、入力ファイルの名 前、デフォルトでない区切り記号、およびオプションでのソート仕様を指 定します。DEFINE セクションで ASCII 文を使用すると、入力ファイルにお ける各レコードごとのフィールドが示されます。 READ 文 READ "filename" DELIMITER "symbol" , ORDER BY EXTERNAL READ filename DELIMITER symbol ORDER BY EXTERNAL fieldname ASC DESC ASCII 入力を示す必須キーワード。 引用符で囲んだ ASCII ファイルの名前。このファイルがカレント ディレクトリにない場合は、完全パス名をインクルードしてくだ さい。 フィールド分離記号がデフォルトの区切り記号 ( | ) でない場合 に使用される、オプションのキーワード。 filename におけるレコードのフィールド間で使用される、引用符 で囲まれた文字。 入力ファイルからのレコードが、1 つ以上のフィールドの値に 従ってレポート内でソートされる場合に必要な、オプションの キーワード。 入力ファイルのレコードがすでにソート済みであることを示す、 オプションのキーワード。 228 IBM Informix SQL リファレンス マニュアル READ fieldname ASC DESC DEFINE セクションの ASCII 文に定義された、入力ファイルのレ コード内にあるフィールドの名前。ソート キーとして使用され る。 fieldname フィールドの値が、昇順 ( 最小値が先にくる順 ) でレ コードのソートに使用されることを示すオプションのキーワード。 fieldname フィールドの値が、降順 ( 最大値が先にくる順 ) でレ コードのソートに使用されることを示すオプションのキーワード。 使用法 Q READ 文は、DEFINE セクションに ASCII 文が必要です。SELECT 文を 使用して ASCII ファイルにアクセスしたり、READ 文を使用して データベース表にアクセスすることはできません。 Q デフォルトの区切り記号は、縦棒 (| = ASCII 124) です。 DBDELIMITER 環境変数を使用して別のデフォルト区切り記号を指定 する方法については、『付録 B. 環境変数の設定』を参照してくだ さい。 Q DBDELIMITER 環境変数が設定されているかどうかに関わらず、ACE は、READ 文で指定された区切り文字をフィールド分離記号として 使用します。 Q READ 文の ORDER BY 節は、8 個までのフィールド名をソート キーと してリストできます。これらの名前は、ASCII 文で指定された フィールド名と一致する必要があります。ORDER BY 節を使用する場 合は、ASCII キーワードを使用せずに既存のデータベースを指定し てください。 Q ORDER BY 節で複数のソート キーが指定された場合は、1 番目の キーが最初のフィールド、2 番目のキーは 2 番目のフィールド、 というように ORDER BY リストに示されます。 Q READ 文に指定された ASCII ファイルがすでにソート済みで、 FORMAT セクションの 2 つ以上のフィールドに BEFORE GROUP OF または AFTER GROUP OF コントロール ブロックが含まれている場合は、その 順序の階層を ORDER EXTERNAL BY 節で指定する必要があります。 Q ACE では、スペースまたは二重引用符 ( " ) を ASCII ファイルの 区切り記号として使用することはできません。 ACE レポート ライタ 229 READ 次の READ 文は、stores7 データベースの stock 表に対応する ASCII ファ イルを ( アンロード形式で ) 指定したものです。 read "stock1" delimiter ":" order by unit_price desc, description end この READ 文は、ACE が、コロン (:) を区切り記号として使用した STOCK1 という ASCII ファイルのレコードを読み取り、フィールド unit_price の 値に従ってそのレコードを降順でソートするよう示しています。 description フィールドが 2 番目のソート キーになっているので、 unit_price の値が同じレコードは、description フィールドのラベルに 従って昇順のアルファベット順で表示されます。 次の例は、前のソート キー順序と逆にして、単価をデフォルト順序 ( 昇 順 ) でソートしたものです。 read "stock1" delimiter ":" order external by description, unit_price end . . . format . . . after group of description . . . after group of unit_price . . . ORDER EXTERNAL BY 節は、stock1 ファイルがすでにソート済みであることを 示します。AFTER GROUP OF コントロール ブロックで指定された総計または 小計は、その行グループが ORDER BY 節のソート指示に従って印刷された後 で印刷されます。 関連するコマンド ASCII、ORDER BY (SELECT のオプション )、OUTPUT (PERFORM のオプション )、 UNLOAD (SQL 文 ) 230 IBM Informix SQL リファレンス マニュアル FORMAT セクション FORMAT セクション ACE レポート仕様には、FORMAT セクションが必要です。FORMAT セクション は、レポートの外観を決定します。このセクションは、SELECT セクション の最後の ( または唯一の ) SELECT 文で制限されたデータ、あるいは READ セクションの READ 文で参照される ASCII ファイルの内容に作用します。 FORMAT セクションでは、次のダイヤグラムに示すように、始めに FORMAT キーワードを置き、これに対応する END キーワードを最後に置きます。 FORMAT セクション FORMAT EVERY ROW 文 P.233 END PAGE HEADER コントロール ブロック P.248 PAGE TRAILER コントロール ブロック P.250 FIRST PAGE HEADER コントロール ブロック P.243 ON EVERY ROW コントロール ブロック P.245 ON LAST ROW コントロール ブロック P.247 BEFORE GROUP OF コントロール ブロック P.240 AFTER GROUP OF コントロール ブロック P.237 CALL 文 P.335 ACE レポート ライタ 231 FORMAT セクション 最もシンプルな FORMAT セクションの場合、FORMAT および END キーワード 間には EVERY ROW 文のみが含まれます。EVERY ROW 文を使用すると、FORMAT セクションにその他の文またはコントロール ブロックを使用することはで きません。次の例は、このタイプの FORMAT セクションの構造を表したもの です。 FORMAT EVERY ROW statement END より複雑な FORMAT セクションの場合、ON EVERY ROW および BEFORE GROUP OF などのコントロール ブロックを含むことができます。これらのコントロー ル ブロックには、それぞれ PRINT または SKIP n LINES などの文が少なく とも 1 つ必要です。FORMAT セクションでは、表名をプレフィックスとして 使用した列 (table.column) を参照することはできません。EVERY ROW 文を 使用しない場合は、必要に応じた数のコントロール ブロックを結合できま す。また、FORMAT セクション内では、コントロール ブロックの順序を自由 に配置できます。 232 IBM Informix SQL リファレンス マニュアル EVERY ROW EVERY ROW EVERY ROW 文により、ACE は、SELECT または READ セクションで取得される あらゆる行を出力します。ここでは、デフォルト フォームが使用されま す。 EVERY ROW 文 EVERY ROW 使用法 Q この文は、デフォルト フォームを使用して手早くレポートを開発 したい場合に役立ちます。このレポートは、ASCII 文の中で割り当 てられた表名またはフィールド名を作成する際に、ユーザが割り当 てた列名を列見出しとして使用します。EVERY ROW 文にはコント ロール ブロックもその他の文も含むことができないため、デフォ ルト フォームを変更してカスタム レポートを作成することはでき ません。 Q EVERY ROW 文は単独で示されます。この文を、252 ページの『文』 にリストされた文を使用して変更することはできません。 Q EVERY ROW 文を使用すると、FORMAT セクションでコントロール ブ ロックを使用することはできません。 Q EVERY ROW 文で生成されたレポートは、表の作成時に割り当てられ た列名を使用します。 Q SELECT セクションで指定された列、あるいは READ セクションで取 得された値が 1 行に収まる場合、ACE は各ページの上部に列または フィールド名を表示してレポートを生成します。そうでない場合、 ACE はページの左側に列またはフィールド名を下方向へ表示してレ ポートを生成します。 Q OUTPUT セクションで RIGHT MARGIN 文を使用すると、EVERY ROW 文を 使用したレポートの幅を制御できます。 ACE レポート ライタ 233 EVERY ROW Q デフォルト フォーマット以外のフォーマットであらゆる行を表示 する場合は、ON EVERY ROW コントロール ブロックを使用してくださ い。(245 ページの『ON EVERY ROW』の説明を参照してください。) 次の例は、EVERY ROW 文を使用した最小限の ACE レポート仕様を表したもの です。 database stores7 end select * from customer end format every row end 次の例は、前述の仕様からの出力部分を表したものです。 customer_num fname lname company address1 address2 city state zipcode phone 101 Ludwig Pauli All Sports Supplies 213 Erstwild Court customer_num fname lname company address1 address2 city state zipcode phone 102 Carole Sadler Sports Spot 785 Geary St customer_num fname lname . . . 103 Philip Currie Sunnyvale CA 94086 408-791-8075 San Francisco CA 94117 415-822-1291 234 IBM Informix SQL リファレンス マニュアル EVERY ROW 次の例は、EVERY ROW 文を使用したもう 一つの簡単なレポート仕様例です。 database stores7 end select order_num, customer_num, order_date from orders end format every row end 次の例は、前述の仕様からの出力を表したものです。 order_num customer_num order_date 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 104 101 104 106 116 112 117 110 111 115 104 117 104 106 110 01/20/1991 06/01/1991 10/12/1991 04/12/1991 12/04/1991 09/19/1991 03/25/1991 11/17/1991 02/14/1991 05/29/1991 03/23/1991 06/05/1991 09/01/1991 05/01/1991 07/10/1991 ACE レポート ライタ 235 コントロール ブロック コントロール ブロック コントロール ブロックは、カスタム レポートの構造を提供します。FORMAT セクションで使用できるコントロール ブロックは、次のとおりです。 Q AFTER GROUP OF Q BEFORE GROUP OF Q FIRST PAGE HEADER Q ON EVERY ROW Q ON LAST ROW Q PAGE HEADER Q PAGE TRAILER コントロール ブロックはそれぞれオプションですが、EVERY ROW 文を使用 しない場合は、少なくとも 1 つのコントロール ブロックをレポート仕様 にインクルードする必要があります。 各コントロール ブロックには、少なくとも 1 つの文をインクルードする 必要があります。(252 ページの『文』を参照。)INFORMIX- ESQL/C がある場 合は、コントロール ブロック内から C 関数を呼び出すこともできます。 詳細については、 「INFORMIX-ESQL/C Programmer ユ s Manual」および『第 6 章 ACE および PERFORM における関数』を参照してください。 ACE レポート仕様の SELECT または READ セクションで ORDER BY 節を使用す ると、FORMAT セクションで BEFORE GROUP OF および AFTER GROUP OF コント ロール ブロックを使用できます。単一のレポート仕様で BEFORE GROUP OF、 AFTER GROUP OF、および ON EVERY ROW コントロール ブロックを使用すると、 ACE は、図 16 で示された順にコントロール ブロックを処理します。( こ の図は、SELECT または READ セクションが列 a、b、および c の順に配置さ れていることを想定しています。) 図 16 グループ化処理の順序 before group of a before group of b before group of c on every row after group of c after group of b after group of a 236 IBM Informix SQL リファレンス マニュアル AFTER GROUP OF AFTER GROUP OF AFTER GROUP OF コントロール ブロックは、あるグループの行を処理した後 で ACE がとるアクションを示します。グループ化は、SELECT または READ セクションの ORDER BY 節によって決定します。 AFTER GROUP OF コントロール ブロック AFTER GROUP OF column-name statement [ ] ,int AFTER GROUP OF column-name int1,int2 statement 必須キーワード。 SELECT または READ セクションの ORDER BY 節で指定され た列または識別子のいずれかの名前。 文字 (CHAR) 型の列で使用できるオプションの部分文字列。 文字位置 int1 で始まり、文字位置 int2 で終わる列のサ ブセットを参照します。int2 が指定されていない場合は、 列の終わりが使用されます。 1 つ以上の文または複合文のリスト。 使用法 Q 行グループの行は、指定された列の値がすべて同じです。レポート 仕様の SELECT または READ セクションで ORDER BY 節を使用すると、 ACE は自動的に行をグループ化します ( すなわち、リストを順序付 けするといくつかのグループが形成されます )。 ORDER BY 節で複数の列を指定すると、ACE は、まず最初に指定され た ( 最も重要な ) 列を基に行の順序付けを実行し、次に 2 番目に 指定された列を基に実行する、というように、最後に指定された ( 重要度の最も低い ) 列まで順次実行していきます。 ACE は、指定された列の値が変更される度、より重要度の高い列の 値が変更される度に、レポートの終了時に AFTER GROUP OF コント ロール ブロックの文を処理します。(236 ページの図 16 を参照。) ACE レポート ライタ 237 AFTER GROUP OF Q SELECT または READ セクションの ORDER BY 節で指定された列には、 それぞれ 1 つの AFTER GROUP OF コントロール ブロックが含まれま す。 Q AFTER GROUP OF コントロール ブロックが複数ある場合、FORMAT セ クション内にあるそれらの順序は意味を持ちません。ACE は、 SELECT または READ セクションの ORDER BY 節で指定されたものと 逆の順序で AFTER GROUP OF コントロール ブロックを処理します。 (236 ページの図 16 を参照。) Q ACE は、レポートの生成を終了すると、AFTER GROUP OF コントロー ル ブロックの文をすべて実行した後で、ON LAST ROW コントロール ブロックの文を実行します。 Q AFTER GROUP OF 節で表の名前を使用した column-name を参照するこ とはできません (table.column 構造は許可されません )。名前が固 有でない、または式である、などの理由で列名を単独で使用できな い場合は、SELECT セクションの選択リストで表示ラベルを定義し、 それを AFTER GROUP OF 節で使用してください。 Q グループ化を実行する基となる選択リストの列に整数を使用するこ とはできません。 Q グループ集計を使用できるのは、AFTER GROUP OF コントロール ブ ロック内のみです。その他のコントロール ブロック内でグループ 集計を使用することはできません。 Q SELECT または READ セクションの ORDER BY 節で文字 (CHAR) 型列の サブ文字列を指定する場合には、AFTER GROUP OF コントロール ブ ロックの column-name と同じサブ文字列仕様にする必要がありま す。 Q AFTER GROUP OF コントロール ブロックに SKIP TO TOP OF PAGE 文を 使用すると、各グループの後に新規ページを開始することができま す。 Q ACE が AFTER GROUP OF コントロール ブロックの文を処理する際、 レ ポートが処理する列には、グループの最終行の値がそのまま保持さ れます。この観点から、AFTER GROUP OF コントロール ブロックは、 「on last row of group」コントロール ブロックと呼ぶこともでき ます。 238 IBM Informix SQL リファレンス マニュアル AFTER GROUP OF 次の例は、ord2.ace レポートのものです。 after group of number skip 1 line print 4 spaces, "Shipping charges for the order: ship_charge using "$$$$.&&" skip 1 line print 5 spaces, "Total amount for the order: ship_charge + group total of total_price using "$$,$$$,$$$.&&" skip 3 lines ", ", after group of custnum skip 2 lines ACE レポート ライタ 239 BEFORE GROUP OF BEFORE GROUP OF BEFORE GROUP OF コントロール ブロックは、あるグループの行を処理する前 に ACE がとるアクションを示します。グループ化は、SELECT または READ セクションの ORDER BY 節によって決定します。 BEFORE GROUP OF コントロール ブロック statement BEFORE GROUP OF column-name [int1 ] ,int2 BEFORE GROUP OF column-name int1,int2 statement 必須キーワード。 SELECT または READ セクションの ORDER BY 節で指定さ れた列または識別子のいずれかの名前。 文字 (CHAR) 型の列で使用できるオプションの部分文字 列。文字位置 int1 で始まり、文字位置 int2 で終わる列 のサブセットを参照します。int2 が指定されていない場 合は、列の終わりが使用されます。 1 つ以上の文または複合文のリスト。 使用法 Q 行グループ の行は、指定された列の値がすべて同じです。レポー ト仕様の SELECT または READ セクションで ORDER BY 節を使用する と、ACE は自動的に行をグループ化します ( すなわち、リストを順 序付けするといくつかのグループが形成されます )。 ORDER BY 節で複数の列を指定すると、ACE は、まず最初に指定され た ( 最も重要な ) 列を基に行の順序付けを実行し、次に 2 番目に 指定された列を基に実行する、というように、最後に指定された ( 重要度の最も低い ) 列まで順次実行していきます。 ACE は、指定された列の値が変更される度、より重要度の高い列の 値が変更される度に、レポートの開始時に BEFORE GROUP OF コント ロール ブロックの文を処理します。(236 ページの図 16 を参照。) 240 IBM Informix SQL リファレンス マニュアル BEFORE GROUP OF Q SELECT または READ セクションの ORDER BY 節で指定された列には、 それぞれ 1 つの BEFORE GROUP OF コントロール ブロックが含まれ ます。 Q BEFORE GROUP OF コントロール ブロックが複数ある場合、FORMAT セ クション内にあるそれらの順序は意味を持ちません。ACE は、 SELECT または READ セクションの ORDER BY 節で指定されたものと 逆の順序で BEFORE GROUP OF コントロール ブロックを処理します。 (236 ページの図 16 を参照。) Q ACE は、レポートの生成を開始する際、BEFORE GROUP OF コントロー ル ブロックの文をすべて実行した後で、ON EVERY ROW コントロール ブロックの文を実行します。 Q BEFORE GROUP OF 節で表の名前を使用した column-name を参照する ことはできません (table.column 構造は許可されません )。名前が 固有でない、または式である、などの理由で列名を単独で使用でき ない場合は、SELECT セクションの選択リストで表示ラベルを定義 し、それを BEFORE GROUP OF 節で使用してください。 Q グループ化を実行する基となる選択リストの列に整数を示すことは できません。 Q SELECT または READ セクションの ORDER BY 節で文字 (CHAR) 型列の サブ文字列を指定する場合には、BEFORE GROUP OF コントロール ブ ロックの column-name と同じサブ文字列仕様にする必要がありま す。 Q BEFORE GROUP OF コントロール ブロックに SKIP TO TOP OF PAGE 文 を使用すると、各グループの後に新規ページを開始することができ ます。 Q ACE が BEFORE GROUP OF コントロール ブロックの文を処理する際、 レポートが処理する列には、行グループの最初の行の値が保持され ます。この観点から、BEFORE GROUP OF コントロール ブロックは、 「on first row of group」コントロール ブロックと呼ぶこともでき ます。 Q BEFORE GROUP OF または AFTER GROUP OF 節でテキスト (TEXT) 型の列 の名前を指定することはできません。 ACE レポート ライタ 241 BEFORE GROUP OF 次の例は、ord1.ace レポートのものです。 before group of ordnum print "Order number: ", ordnum using "#####", " for customer number: ", customer_num using "#####" print "Customer P.O. : ", po_num, " Date ordered: ", order_date skip 1 line print "Stockno", column 20, x "Mfcode", column 28, "Qty", column 38, "Price" 242 IBM Informix SQL リファレンス マニュアル FIRST PAGE HEADER FIRST PAGE HEADER FIRST PAGE HEADER コントロール ブロックは、レポートの最初のページの上 部に表示される情報を示します。 FIRST PAGE HEADER コントロール ブロック FIRST PAGE HEADER FIRST PAGE HEADER statement statement 必須キーワード。 1 つ以上の文または複合文のリスト。 使用法 Q 最初のページ ヘッダの縦サイズは、FIRST PAGE HEADER コントロー ル ブロックで指定された行数と同じです。TOP MARGIN (OUTPUT セク ション内 ) は、ACE がページ ヘッダをページ上部にどの程度近づ けて表示するかによって変わります。 Q FIRST PAGE HEADER コントロール ブロックは、レポートの最初の ページで PAGE HEADER コントロール ブロックを上書きします。 Q FIRST PAGE HEADER コントロール ブロックで SKIP TO TOP OF PAGE 文 を使用することはできません。 Q FIRST PAGE HEADER コントロール ブロックで IF THEN ELSE 文を使用 した場合、THEN キーワードに続いて PRINT および SKIP 文が表示す る行数は、ELSE キーワードに続いて PRINT および SKIP 文が表示す る行数と同じでなければなりません。 Q PRINT FILE 文を使用して FIRST PAGE HEADER コントロール ブロック のファイルからテキストを読み取り、表示することはできません。 Q FIRST PAGE HEADER コントロール ブロックは、列見出しだけでなく タイトル ページも生成できます。 ACE レポート ライタ 243 FIRST PAGE HEADER 次の例は、mail3.ace レポートのものです。 first page header let i = 1 let l_size = 72/count1 let white = 8/count1 FIRST PAGE HEADER には情報は表示されません。 ACE は、 出力を生成する前に FIRST PAGE HEADER コントロール ブロックを実行するため、このコントロー ル ブロックを ( 例で示すとおりに ) 使用して、FORMAT セクションで使用 する変数を初期化することができます。 244 IBM Informix SQL リファレンス マニュアル ON EVERY ROW ON EVERY ROW ON EVERY ROW コントロール ブロックは、SELECT セクションが行を限定した 後、あるいは READ セクションが行を取得した後に、ACE がとるアクション を指定します。 ON EVERY ROW コントロール ブロック ON EVERY ROW ON EVERY ROW statement statement 必須キーワード。 1 つ以上の文または複合文のリスト。 使用法 Q ACE は、新規の行がそれぞれフォーマットされる場合に ON EVERY ROW コントロール ブロックの文を処理します。 Q BEFORE GROUP OF コントロール ブロックが列値の変更によって起動 される場合、すべての BEFORE GROUP OF コントロール ブロックは、 ON EVERY ROW コントロール ブロックが実行される前に ( 重要度の 順に ) 実行されます。 Q AFTER GROUP OF コントロール ブロックが列値の変更によってトリガ される場合、すべての AFTER GROUP OF コントロール ブロックは、 ON EVERY ROW コントロール ブロックが実行される前に ( 重要度の 順に ) 実行されます。 Q BEFORE GROUP OF または AFTER GROUP OF 節でテキスト (TEXT) 型の列 の名前を指定することはできません。 ACE レポート ライタ 245 ON EVERY ROW 次の例は、clist1.ace レポートのものです。 on every row print customer_num using "####", column 9, fname clipped, 1 space, lname clipped, column 32, city clipped, ", " , state, column 54, zipcode, column 62, phone 次の例は、mail2.ace レポートのものです。 on every row if (city is not null) and (state is not null) then begin print fname clipped, 1 space, lname print company print address1 if (address2 is not null) then print address2 print city clipped, ", " , state, 2 spaces, zipcode skip to top of page end 246 IBM Informix SQL リファレンス マニュアル ON LAST ROW ON LAST ROW ON LAST ROW コントロール ブロックは、SELECT セクションで限定された最 終行、あるいは READ セクションで取得された最終行の処理後に ACE がと るアクションを指定します。 ON LAST ROW コントロール ブロック ON LAST ROW ON LAST ROW statement statement 必須キーワード。 1 つ以上の文または複合文のリスト。 使用法 Q ACE は、ON EVERY ROW および AFTER GROUP OF コントロール ブロッ クの文を実行後に ON LAST ROW コントロール ブロックの文を実行 します。 Q ON LAST ROW コントロール ブロックは、レポートの合計を表示する 場合に使用できます。 Q ACE が ON LAST ROW コントロール ブロックの文を処理する際、 SELECT 文で戻された最終行、または READ 文で取得された最終行の 値が現行のものであり、使用可能です。 次の例は、clist1.ace レポートのものです。 on last row skip 1 line print "TOTAL NUMBER OF CUSTOMERS:", column 30, count using "##" ACE レポート ライタ 247 PAGE HEADER PAGE HEADER PAGE HEADER コントロール ブロックは、レポートの各ページの上部に表示 される情報を示します。 PAGE HEADER コントロール ブロック PAGE HEADER PAGE HEADER statement statement 必須キーワード。 1 つ以上の文または複合文のリスト。 使用法 Q ページ ヘッダの縦サイズは、PAGE HEADER コントロール ブロックで 指定された行数と同じです。TOP MARGIN (OUTPUT セクション内 ) は、 ACE がページ ヘッダをページ上部にどの程度近づけて表示するか によって変わります。 Q FIRST PAGE HEADER コントロール ブロックは、レポートの最初の ページで PAGE HEADER コントロール ブロックを上書きします。 Q PAGE HEADER コントロール ブロックで SKIP TO TOP OF PAGE 文を使 用することはできません。 Q PAGE HEADER コントロール ブロックで IF THEN ELSE 文を使用した場 合、THEN キーワードに続いて PRINT および SKIP 文が表示する行数 は、ELSE キーワードに続いて PRINT および SKIP 文が表示する行数 と同じでなければなりません。 Q PAGE HEADER コントロール ブロック内で PRINT 文を含んだ FOR ま たは WHILE 文を使用した場合は、PRINT 文の終わりにセミコロン (;) を置く必要があります。このセミコロンは、ループ内の NEWLINE (RETURN) 文字を抑制し、ページごとのヘッダ定数の行数を 保持します。 Q PRINT FILE 文を使用して PAGE HEADER コントロール ブロックのファ イルからテキストを読み取り、表示することはできません。 248 IBM Informix SQL リファレンス マニュアル PAGE HEADER Q PAGE HEADER コントロール ブロックは、レポート内に列見出しを表 示する場合に使用できます。 Q PAGE HEADER コントロール ブロック内の PRINT 文に PAGENO 式を使 用すると、ページ番号を全ページの上部に自動的に表示できます。 Q PAGE HEADER コントロール ブロックで印刷されるグループ列の値 が、ON EVERY ROW コントロール ブロックで印刷される列の値と同じ であることを保証するために、ACE は、最初の PRINT、SKIP、また は NEED 文まで PAGE HEADER コントロール ブロックの処理を遅らせ ます。 次の例は、clist1.ace レポートのものです。 page header print "NUMBER", column 9, "NAME", column 32, "LOCATION", column 54, "ZIP", column 62, "PHONE" skip 1 line ACE レポート ライタ 249 PAGE TRAILER PAGE TRAILER PAGE TRAILER コントロール ブロックは、レポートの各ページの下部に表示 される情報を示します。 PAGE TRAILER コントロール ブロック PAGE TRAILER PAGE TRAILER statement statement 必須キーワード。 1 つ以上の文または複合文のリスト。 使用法 Q ページ トレイラの縦サイズは、PAGE TRAILER コントロール ブロッ クで指定された行数と同じです。BOTTOM MARGIN (OUTPUT セクション 内 ) は、ACE がページ トレイラをページ下部にどの程度近づけて 表示するかによって変わります。 Q PAGE TRAILER コントロール ブロックで SKIP TO TOP OF PAGE 文を使 用することはできません。 Q PAGE TRAILER コントロール ブロックで IF THEN ELSE 文を使用した 場合、THEN キーワードに続いて PRINT および SKIP 文が表示する行 数は、ELSE キーワードに続いて PRINT および SKIP 文が表示する行 数と同じでなければなりません。 Q PAGE TRAILER コントロール ブロック内で PRINT 文を含んだ FOR ま たは WHILE 文を使用した場合は、PRINT 文の終わりにセミコロン (;) を置く必要があります。このセミコロンは、ループ内の NEWLINE (RETURN) 文字を抑制し、ページごとのトレイラ定数の行数 を保持します。 250 IBM Informix SQL リファレンス マニュアル PAGE TRAILER Q PRINT FILE 文を使用して PAGE TRAILER コントロール ブロックの ファイルからテキストを読み取り、表示することはできません。 Q PAGE TRAILER コントロール ブロック内の PRINT 文に PAGENO 式を使 用すると、ページ番号を全ページの下部に自動的に表示できます。 次の例は、ord3.ace レポートのものです。 page trailer print column 28, pageno using "page <<<<" ACE レポート ライタ 251 文 文 フォーマット コントロール ブロックは、ACE がいつアクションをとるかを 決定するのに対して、文は、ACE がどんな アクションをとるかを決定しま す。 文はキーワードと式で構成されており、詳しくはそれぞれの文のところで 説明されているとおりです。 文には、単一文または複合文があります。複合文とは 1 つ以上の文 ( 他の 複合文も含む ) で、始めに BEGIN キーワード、終わりに END キーワードが あります。 252 IBM Informix SQL リファレンス マニュアル FOR FOR FOR 文は、ループを定義します。この文は、単一または複合文を繰り返し 実行するもので、それぞれの文がループを通過する前にループ指標をイン クリメントします。制御は、最初の文に渡された後、終了条件が満たされ た時にループの終わりに渡されます。 FOR loop-index = expr1 TO expr2 DO statement STEP expr3 FOR 必須キーワード。 loop-index DEFINE セクションで宣言された変数の名前。FOR 文はこの変数を = expr1 TO expr2 STEP expr3 DO statement ループ指標として使用し、ループを通過するたびにその値を変更し ていきます。 必須キーワード。 ループ指標の開始値を示す、必須の式。 必須キーワード。 ループ指標の終了値を示す、必須の式。この式は、ループの終了条 件を示します。 オプションのキーワード。 ループを通過するたびに FOR 文がループ指標をインクリメントする 量を示す、オプションの式。STEP および expr3 を指定しない場合、 FOR 文のインクリメント値は 1 と判断されます。 必須キーワード。 単一文または複合文。 使用法 Q デクリメント ループは不可です。expr3 の値は正の数でなければ なりません。 Q DO キーワードの後に続いて複合文がある場合は、その複合文の前 に BEGIN キーワード、後ろに END が必要です。 ACE レポート ライタ 253 IF THEN ELSE IF THEN ELSE この文は、条件付き分岐を定義します。この文は式を評価し、その評価の 結果に基づいて特定の文を実行します。 IF expr THEN statement1 ELSE statement2 IF expr THEN statement1 ELSE statement2 必須キーワード。 IF が実行する文 ( 複数ある場合はそのいずれか ) を決定する、必 須の式。 必須キーワード。 expr が true ( ゼロでない ) として評価された場合に IF が実行す る必須の単一文または複合文。 オプションのキーワード。 expr が false ( ゼロである ) として評価された場合に IF が実行 するオプションの単一文または複合文。 使用法 Q THEN または ELSE キーワードの後に複合文がある場合は、その複合 文の前に BEGIN キーワード、後ろに END が必要です。 Q IF THEN ELSE 文は、128 レベルまで入れ子にすることができます。 次の例は、mail3.ace レポートのものです。 if i = count1 then begin print array1 clipped print array2 clipped print array3 clipped skip 1 line let array1 = " " let array2 = " " let array3 = " " 254 IBM Informix SQL リファレンス マニュアル IF THEN ELSE end let i = 1 else let i = i + 1 ACE レポート ライタ 255 LET LET LET 文は宣言された変数に値を割り当てます。 , = LET variable [ num-expr expr ] num-expr LET variable num-expr = expr 必須キーワード。 必須の変数名 ( すなわち、直前の DEFINE セクションで宣言された変 数 )。 オプションの数式、あるいは 1 つまたは 2 つの数式のリスト。これ らは、LET が値を割り当てる先の文字 (CHAR) 型変数のサブ文字列を 指定します。1 つの num-expr が指定された場合、サブ文字列とは、 変数内の最初の文字から文字列の終わりまでをいいます。2 つの num-expr が存在する場合、サブ文字列は、最初の num-expr から 2 番目のものまでとなります。 これらのサブ文字列操作に使用できるのは、文字 (CHAR) 型の変数だ けです。部分文字列は、括弧 ( [ ] ) で囲む必要があります。 必須キーワード。 1 つ以上の式をカンマで区切った必須リスト。LET はこのリストの値 を variable に割り当てます。 リストに複数の式がある場合、variable の型は文字 (CHAR) 型でな ければなりません。LET は、式リストのすべての式を連結して生成さ れた文字列の値を変数に割り当てます。ACE が変数に割り当てた結 果、同様の式リストが PRINT 文を使用して表示された場合と同じ フォームが取得されます。LET は、PRINT で適用されたすべての式 (USING、CLIPPED、ASCII、COLUMN、およびサブスクリプト付き文字式 を含む ) を適用します。 256 IBM Informix SQL リファレンス マニュアル LET 使用法 Q 小数部分のある値を整数 (INTEGER) 型または小桁整数 (SMALLINT) 型 の変数に割り当てると、ACE は小数部分を切り捨てます。 Q 型の変換について、詳しくは、268 ページから始まる、式の説明を 参照してください。 次の例は、mail3.ace レポートの FORMAT セクションからのものです。 let i = 1 let l_size = 72/count1 let white = 8/count1 GLS LET 文を使用して通貨値または数値を文字列に変換すると、GLS 設定を使用 可能にしても、ロケール特有のフォーマットを含む文字列になってしまい ます。デフォルトの変換でも、また USING 節を使用した変換でもそのよう になります。『付録 C. 広域言語サポート』および「Informix Guide to GLS Functionality」を参照してください。 ACE レポート ライタ 257 NEED NEED この文は、指定された行数を現行ページに配置できない場合、次の表示が 次ページに開始されるようにします。 NEED num-expr LINES NEED num-expr LINES 必須キーワード。 必要な行数を指定して数字を求める式。 必須キーワード。 使用法 NEED 文は、単一ページにまとめたいレポートのある部分を ACE が別々に分 けないようにする場合に使用します。 258 IBM Informix SQL リファレンス マニュアル PAUSE PAUSE この文は、ユーザが Enter キーを押すまで端末への出力を一時停止させま す。 PAUSE "string" PAUSE string 必須キーワード。 PAUSE が表示するオプションのメッセージ。メッセージを指定しない 場合、PAUSE はメッセージを表示しません。 使用法 OUTPUT セクションで REPORT TO filename または REPORT TO PRINTER 文を使 用すると、PAUSE 文は無効となります。 次の例は、ACE がレポートの実行中に一時停止したものです。 after group of item_num . . . skip to top of page pause "Press RETURN to continue" ACE レポート ライタ 259 PRINT PRINT この文は、画面上の情報、あるいは OUTPUT セクションに指定されている情 報を表示します。 PRINT , ; expr PRINT 必須キーワード。 カンマで区切った 1 つ以上の式のオプション リスト。 行の終わりで NEWLINE (RETURN) を抑制するオプションのキーワード。 expr ; 使用法 Q オプションの WORDWRAP キーワードを使用する場合を除いて、レ ポート仕様の中でその文の占めている行が何行であっても、出力は 1 つの PRINT 文につき 1 つの行に表示されます。 Q 式の後に続いてキーワード CLIPPED または USING を使用する場合を 除いて、ACE は、あらかじめ決定されているスペース数が保持され るように式を表示します。 Q PRINT 文においては、テキスト (TEXT) 型の列の名前を指定できます。 PRINT 文は、テキスト (TEXT) 型の項目をファイルとして使用するこ とで、PRINT FILE 文のように扱われます。 図 17 デフォルト表示幅 列 デフォルト サイズ CHAR 宣言されたサイズ 日付 (DATE) 型 10 実数 (FLOAT) 型 14 ( 符号および小数点を含む ) 小桁整数 (SMALLINT) 型 6 ( 符号を含む ) (1 / 2) 260 IBM Informix SQL リファレンス マニュアル PRINT 列 デフォルト サイズ 整数 (INTEGER) 型 11 ( 符号を含む ) 小桁実数 (SMALLFLOAT) 型 14 ( 符号および小数点を含む ) 10 進数 (DECIMAL) 型 数字部分の桁に 2 桁 ( 符号と小数点の分 ) を加えた 桁数 シリアル (SERIAL) 型 11 金額 (MONEY) 型 数字部分の桁に 3 桁 ( 符号、小数点、およびドル記 号 ($) の分 ) を加えた桁数 DATETIME 精度による INTERVAL 精度による (2 / 2) 次の例は、clist2.ace レポートのものです。 first page header print column 32, "CUSTOMER LIST" print column 32, "-------------" skip 2 lines print "Listings for the State of ", thisstate skip 2 lines print "NUMBER", column 9, "NAME", column 32, "LOCATION", column 54, "ZIP", column 62, "PHONE" skip 1 line page header print "NUMBER", column 9, "NAME", column 32, "LOCATION", column 54, "ZIP", column 62, "PHONE" skip 1 line on every row print customer_num using "####", column 9, fname clipped, 1 space, lname clipped, column 32, city clipped, ", " , state, column 54, zipcode, column 62, phone ACE レポート ライタ 261 PRINT FILE PRINT FILE この文は、テキスト ファイルの内容をレポートに表示します。 PRINT FILE "filemane" PRINT FILE filename 必須キーワード。 必須のファイル名。パス名も可能です。ファイル名は、引用符で 囲む必要があります。 使用法 PRINT FILE 文は、カスタム文字を生成するフォーム文字の本体をレポート にインクルードする場合に使用できます。 262 IBM Informix SQL リファレンス マニュアル SKIP SKIP この文は、レポート内で行をスキップします。 SKIP int LINES SKIP int LINES 必須キーワード。 スキップする行数を示す整数。 必須キーワード。必要に応じて、LINES の代わりに LINE キーワードを 使用できます。 次の例は、mail1.ace レポートのものです。 format on every row print fname, lname print company print address1 print address2 print city, ", " , state, 2 spaces, zipcode skip 2 lines ACE レポート ライタ 263 SKIP TO TOP OF PAGE SKIP TO TOP OF PAGE この文は、後続の印刷が次ページの先頭から開始されるようにします。 SKIP TO TOP OF PAGE 使用法 SKIP TO TOP OF PAGE 文を FIRST PAGE HEADER、PAGE HEADER、または PAGE TRAILER コントロール ブロック内で使用することはできません。 次の例は、mail2.ace レポートのものです。 format on every row if (city is not null) and (state is not null) then begin print fname clipped, 1 space, lname print company print address1 if (address2 is not null) then print address2 print city clipped, ", " , state, 2 spaces, zipcode skip to top of page end end 264 IBM Informix SQL リファレンス マニュアル WHILE WHILE WHILE 文は、式が true の場合、その間に単一文または複合文を繰り返し実 行するループを定義します。制御は、最初の文に渡された後、その式が false と評価された時のループに渡されます。 WHILE expression DO statement WHILE 必須キーワード。 expression 必須の式。この式が true と評価された場合、その間 WHILE がルー DO statement プを実行します。この式が false と評価されると、最初の文からそ のループへと制御が渡されます。 必須キーワード。 単一文または複合文。 使用法 DO キーワードの後に複数の文がある場合は、それらの文の前に BEGIN キー ワード、後ろに END を置いて複合文にする必要があります。 ACE レポート ライタ 265 集計 集計 集計は、レポート内の情報の要約を可能にします。 COUNT GROUP PERCENT TOTAL WHERE expr2 OF expr1 AVERAGE AVG MIN MAX GROUP COUNT PERCENT TOTAL AVERAGE/AVG MIN オプションのキーワード。これにより、特定のグループのみにつ いての集計が行われ、その情報が反映されます。このグループは、 レポート仕様の SELECT または READ セクションにある ORDER BY 節で指定する必要があります。このキーワードを使用できるのは、 AFTER GROUP OF コントロール ブロック内のみです。 SELECT セクションで修飾または READ セクションで取得された行 数の合計として評価されるキーワード。集計文の中で表示可能な オプションの式 WHERE expr2 によって修飾されます。 COUNT を、SELECT セクションで修飾または READ セクションで取 得された行数の合計のパーセントとして評価するキーワード。集 計文の中で表示可能なオプションの式 WHERE expr2 によって修飾 されます。 SELECT セクションで修飾または READ セクションで取得された行 における expr1 の合計として評価され、集計文の中で表示可能な オプションの式 WHERE expr2 によって修飾される。 SELECT セクションで修飾または READ セクションで取得された行 における expr1 の平均として評価され、集計文の中で表示可能な オプションの式 WHERE expr2 によって修飾される。 SELECT セクションで修飾または READ セクションで取得された行 における expr1 の最小値として評価され、集計文の中で表示可能 なオプションの式 WHERE expr2 によって修飾される。 266 IBM Informix SQL リファレンス マニュアル 集計 MAX SELECT セクションで修飾または READ セクションで取得された行 における expr1 の最大値として評価され、集計文の中で表示可能 なオプションの式 WHERE expr2 によって修飾される。 キーワード。 TOTAL、AVERAGE、MIN、および MAX が評価する式。通常、数値型 列を含んだ列または数値式となります。 キーワード。 集計を修飾する論理式。 OF EXPR1 WHERE EXPR2 使用法 Q 集計文の WHERE 部分は、SELECT セクションがすでに修飾した、あ るいは READ 文がすでに取得した行をさらに修飾します。WHERE で は、SELECT セクションで修飾されていない、あるいは READ セク ションで取得されていない行を選択することはできません。 Q expr1 または expr2 にユーザ定義の変数が含まれる場合、集計に 不定な結果が生じます。(208 ページの『PARAM』および 209 ペー ジの『VARIABLE』を参照してください。) 次の例は、ord2.ace レポートのものです。 on every row print snum using "###", column 10, manu_code, column 18, description clipped, column 38, quantity using "###", column 43, unit_price using "$$$$.&&", column 55, total_price using "$$,$$$,$$$.&&" after group of number skip 1 line print 4 spaces, "Shipping charges for the order: ship_charge using "$$$$.&&" ", skip 1 line print 5 spaces, "Total amount for the order: ship_charge + group total of total_price using "$$,$$$,$$$.&&" ", ACE レポート ライタ 267 ASCII ASCII ACE は、この式を、文字として使用可能な値として評価します。この式を 使用すると、制御文字を表示できます。 ASCII num-expr ASCII num-expr 必須キーワード。 数値式。 使用法 このキーワードを、DEFINE セクションで使用する ASCII キーワード ( 入力 ファイルの識別子とデータ値を示すもの ) と混同しないでください。 次の PRINT 文は、ご使用のコンピュータに適用できます (ASCII 値が 7)。 print ascii 7 次のレポート仕様セグメントは、プリンタまたはコンピュータの特殊機能 を実装する方法を示したものです。そこでは、プリンタが、一連の ASCII 文字で 9、11、および 1 を受信したときは赤色で印刷を開始し、9、11、 および 0 を受信したときは黒色の印刷に戻ることが想定されています。例 で使用される値は仮定的なものです。ご使用のプリンタまたは端末に関す る情報については、そのプリンタまたは端末の資料を参照してください。 この仕様では、他のコントロール ブロックで使用された変数を初期化する ために FIRST PAGE HEADER コントロール ブロックを使用します。 . . define variable red_on char(3) variable red_off char(3) end . . format first page header let red_on = ascii 9, ascii 11, ascii 1 let red_off = ascii 9, ascii 11, ascii 0 268 IBM Informix SQL リファレンス マニュアル ASCII on every row . . print red_on, "Your bill is overdue.", red_off . . ヒント : ACE は、印刷可能な ASCII 文字とそうでないものを区別すること はできません。COLUMN 式を使用してページをフォーマットする際には必ず、 印刷されない文字を考慮してください。各種デバイスで制御文字スペース の印刷様式はさまざまであるため、制御文字を印刷する際は、列を整列さ せるために試行錯誤が必要になるかもしれません。 ACE レポート ライタ 269 CLIPPED CLIPPED この式は、その式の前に後続の空白文字のない文字 (CHAR) 型フィールド を表示します。 char-expr CLIPPED char-expr CLIPPED 必須の文字式。 必須キーワード。 使用法 通常、PRINT 文では CLIPPED は column-name の後に使用します。 次の例は、mail2.ace レポートのものです。 format on every row if (city is not null) and (state is not null) then begin print fname clipped, 1 space, lname print company print address1 if (address2 is not null) then print address2 print city clipped, ", " , state, 2 spaces, zipcode skip to top of page end end 270 IBM Informix SQL リファレンス マニュアル COLUMN COLUMN この式は、指定された列に次項目を位置付けるのに十分な長さの空白を求 めます。 COLUMN num-expr COLUMN num-expr 必須キーワード。 次項目を印刷するために列位置を指定する、必須の数値式。 使用法 Q ユーザが OUTPUT セクションで設定した左マージンの数字を増やす と、ACE は列番号を計算します。 Q ACE がすでに num-expr で指定された列を過ぎて印刷してしまった 場合、ACE は COLUMN 式を無視します。 次の例は、clist2.ace レポートのものです。 page header print "NUMBER", column 9, "NAME", column 32, "LOCATION", column 54, "ZIP", column 62, "PHONE" skip 1 line ACE レポート ライタ 271 CURRENT CURRENT この式は、オペレーティング システムで提供されている現在の日時の値を 使用した文字列として評価します。 CURRENT first TO last CURRENT first TO last 必須キーワード。 最初のフィールドに戻されるように指定するオプションの修飾子。 first および last 修飾子をインクルードした場合に必須のキー ワード。 最後のフィールドに戻されるように指定するオプションの修飾子。 次の例は、現在の日時を MINUTE の精度で印刷したものです。 print current year to minute 272 IBM Informix SQL リファレンス マニュアル DATE DATE この式は、今日の日付の値を使用した文字列として、「Thu Feb 17 1999」 の形式で評価します。 DATE DATE は文字 (CHAR) 型として評価するため、曜日、月、日、年などを表す部 分文字列と共に使用できます。たとえば、 print "Today is ", date[1,3] は、曜日を 3 文字の省略形で表示します。 Today is Mon GLS サブディレクトリ $INFORMIXDIR/msg にメッセージ ファイルをインストール し、次に環境変数 DBLANG を使用してそのサブディレクトリを参照した場 合、DATE で戻された文字列の部分である月と曜日は、言語に固有の月名と 曜日の省略形になります。たとえば、ロケ - ルがスペインの場合、 Saturday ( 土曜日 ) は曜日の省略形 Sab に変換されます。これは、Sabado ( 土曜日を示すスペイン語 ) を意味します。♦ ACE レポート ライタ 273 DAT() DAT() DATE 関数は、ユーザが呼び出す式を日付 (DATE) 型に変換します。 DATE DATE date-expr (date-expr) 必須キーワード。 日付 (DATE) 型の値を求めるための、任意の型の必須式。 使用法 Q DATE 関数は、通常、日付文字列を日付 (DATE) 型に変換するために 使用されます。 Q 適切にフォーマットされた日付文字列が必要です。デフォルト フォーマットは mm/dd/yy ですが、これは環境変数 DBDATE を使用 して変更できます。 274 IBM Informix SQL リファレンス マニュアル DAY( ) DAY( ) DAY 関数は、日付 (DATE) または日時 (DATETIME) 型の式を使用して呼び出し た時の月日を戻します。 DAY ( date-expr DAY ) 必須キーワード。 date-expr 日付 (DATE) または日時 (DATETIME) 型の値を求める、必須の式。 ACE レポート ライタ 275 LINENO LINENO この式は、ACE が現在表示している行の行番号値を保持します。ACE は、 ページの先頭から行数を計算して行番号を算出します。 LINENO 使用法 LINENO は、ページ ヘッダまたはページ トレイラ内には使用できません。 LINENO は、最初のページ ヘッダには作用しますが、以降のページには作用 しません。 276 IBM Informix SQL リファレンス マニュアル MDY( ) MDY( ) MDY 関数は、月、日、年を表す整数を求める 3 つの式を使用して呼び出す 際に、日付 (DATE) 型の値を戻します。 MDY ( num-expr1 , num-expr2 , num-expr3 ) MDY num-expr1 num-expr2 num-expr3 必須キーワード。 月を示す整数 (1-12) を求める式。 その月の日数を表す整数 ( その月に応じて 1-28、29、30、または 31) を求める式。 年を表す 4 桁の整数を求める式。 ACE レポート ライタ 277 MONTH( ) MONTH( ) MONTH 関数は、日付 (DATE) または日時 (DATETIME) 型の引数を持つ月に対応 する整数 (1-12) を戻します。 MONTH ( date-expr MONTH date-expr ) 必須キーワード。 日付 (DATE) または日時 (DATETIME) 型の値を求める、必須の式。 278 IBM Informix SQL リファレンス マニュアル PAGENO PAGENO この式は、ACE が現在表示しているページのページ番号の値を保持します。 PAGENO 使用法 PAGE HEADER または PAGE TRAILER コントロール ブロックの PRINT 文で PAGENO を使用して、レポートのページに番号を付けます。(PAGENO は、他 のコントロール ブロックにも使用できます。) 次の例は、ord3.ace レポートのものです。 page trailer print column 28, pageno using "page <<<<" ACE レポート ライタ 279 SPACES SPACES この式は、空白文字列を求めます。これは、引用符付きの空白文字列と同 じものです。 num-expr SPACE SPACES num-expr SPACE[S] スペース数を指定する数値式。 必須キーワード。SPACE または SPACES キーワードのいずれかを使用 できます。 次の例は、mail1.ace レポートのものです。 format on every row print fname, lname print company print address1 print address2 print city, ", " , state, 2 spaces, zipcode skip 2 lines end 280 IBM Informix SQL リファレンス マニュアル TIME TIME この式は、現在時刻の値を使用した文字列を hh:mm:ss 形式で求めます。 TIME ACE レポート ライタ 281 TODAY TODAY この式は、オペレーティング システムで提供されている現在の日付の値を 日付 (DATE) 型で求めます。 TODAY 次の例は、ord3.ace レポートのものです。 skip 1 line print column 15, "FROM: ", begin_date using "mm/dd/yy", column 35, "TO: ", end_date using "mm/dd/yy" print column 15, "Report run date: ", today using "mmm dd, yyyy" skip 2 lines print column 2, "ORDER DATE", column 15, "COMPANY", column 35, "NAME", column 57, "NUMBER", column 65, "AMOUNT" 282 IBM Informix SQL リファレンス マニュアル USING USING この式は、数値式または日付式のフォーマットを可能にします。数値式の 場合、USING を使用すると小数点での整列、数値の右端または左端揃え、負 の数を括弧で囲むなど、他にもいろいろなフォーマット機能を実行できま す。日付式の場合、USING は日付をさまざまなフォーマットに変換します。 expr1 USING expr2 expr1 USING がフォーマットする対象として示す、必須の式。 必須キーワード。 USING が expr1 をフォーマットする方法を示す、必須のフォーマット 文字列。 USING expr2 使用法 Q フォーマット文字列は、引用符で囲んで表示する必要があります。 Q USING は通常 PRINT 文の一部として使用されますが、LET と共に使 用することもできます。 Q 表示フィールドに過大な数値を表示しようとすると、ACE はその フィールドを、オーバーフローを示すアスタリスクで埋めます。 ACE レポート ライタ 283 USING 数値式のフォーマット フォーマット文字列は、文字 * & # < , . - + ( ) $ の組み合わせで構成 されます。文字 - + ( ) $ は、浮動です。文字が浮動する際、ACE はその 文字を複数先行表示します。それらの文字は、それぞれ一文字として、数 値の表示を妨げることなくできるだけ右側に表示されます。次のリストを 参照してください。 * この文字は、通常空白となる表示フィールドのあらゆる位置をアス タリスクで満たします。 & この文字は、通常空白となる表示フィールドの位置をゼロで満たし ます。 # この文字は、表示フィールドの空白位置を変更しません。この文字 を使用すると、フィールドの最大幅が示されます。 < この文字で、表示フィールド中の数字が左寄せになります。 , この文字は、3 桁区切り記号の位置指定子です。デフォルトの 3 桁 区切り記号は、カンマ (,) です。3 桁区切り記号は、環境変数 DBFORMAT、DBMONEY、および LANG で決定されます。 . この文字は、小数点記号の位置指定子です。デフォルトの小数点記 号は、ピリオド (.) です。小数点記号は、環境変数 DBFORMAT、 DBMONEY、および LANG で決定されます。 - この文字はリテラルです。USING は、expr1 がゼロより小さい場合の 負符号として表示します。いくつか続けて表示すると、単一の負符 号が数値の印刷を妨げない右端の位置に浮動します。 + この文字はリテラルです。USING は、expr1 がゼロ以上の場合は正符 号として表示し、ゼロより小さい場合は負符号として表示します。 いくつか続けて表示すると、単一の正符号が数値の印刷を妨げない 右端の位置に浮動します。 ( この文字はリテラルです。USING は、負の数値の前の左括弧として表 示します。これは、負の数値を示す負符号の代わりに使用される会 計学上の括弧です。いくつか続けて表示すると、単一の左括弧が、数 値の印刷を妨げない右端の位置に浮動します。 284 IBM Informix SQL リファレンス マニュアル USING ) これは、負の数値を示す負符号の代わりに使用される会計学上の括 弧です。一般にこれらの文字は、単独で、左括弧で始まるフォーマッ ト文字列を閉じるものです。 $ この文字は、先行の通貨記号の位置指定子です。デフォルトの先行 の通貨記号は、ドル記号 ($) です。先行の通貨記号は、環境変数 DBFORMAT、DBMONEY、および LANG で決定されます。いくつか続けて表 示すると、単一のドル記号 ($) ( または先行指定の通貨記号 ) が、 数値の印刷を妨げない右端の位置に浮動します。 @ この文字は、後書きの通貨記号の位置指定子です。デフォルトの後 書き通貨記号は、NULL になっています。後書きの通貨記号は、環境 変数 DBFORMAT、DBMONEY、および LANG で決定されます。いくつか続け て表示すると、単一のアットマーク ( またはロケール指定の後書き 通貨記号 ) が、数値の印刷を妨げない左端の位置に浮動します。 数値式のフォーマット例については、287 ページの『サンプルのフォー マット文字列』を参照してください。 日付式のフォーマット フォーマット文字列は、文字 m、d、および y の組み合わせで構成され、 図 18 のようになります。 図 18 日付書式文字の組み合わせ サブ文字列の フォーマット フォーマット結果 dd 月の日数を 2 桁で (01-31) ddd 曜日を 3 文字の省略形で (Sun から Sat) mm 月を 2 桁で (01-12) mmm 月を 3 文字の省略形で (Jan から Dec) yy 1900 年代の年を 2 桁で (00-99) yyyy 年を 4 桁で (01-9999) ACE レポート ライタ 285 USING 図 19 は、サンプルとして 1999 年 12 月 25 日を変換したものです。 図 19 日付書式文字列の結果 GLS フォーマット文字列 フォーマット結果 "mmddyy" 122599 "mmddyy" 251299 "mmddyy" 991225 "yy/mm/dd" 99/12/25 "yy/mm/dd" 99 12 25 "yy/mm/dd" 99-12-25 "mmm. dd, yyyy" Dec. 25, 1999 "mmm dd yyyy" Dec 25 1999 "yyyy dd mm" 1999 25 12 "mmm dd yyyy" Dec 25 1999 "ddd, mmm. dd, yyyy" Tue, Dec. 25, 1999 "(ddd) mmm. dd, yyyy" (Tue) Dec. 25, 1999 GLS 設定は、USING 式のフォーマット文字列が数値および通貨データとして 解釈される方法に影響します。フォーマット文字列において、ピリオド記 号 (.) はリテラル文字でなく、環境変数によって指定される小数点記号の 位置指定子となります。同様に、カンマ記号 (,) は、環境変数で指定され る 3 桁区切り記号の位置指定子です。$ 記号は、先行通貨記号の位置指定 子です。@ 記号は、後書きの通貨記号の位置指定子です。このように、 フォーマット文字列 $$#,###.## は、値 1234.56 を US 英語ロケールでは $1,234.56 として、ドイツ語ロケールでは DM1.234,56 としてフォーマット します。DBFORMAT または DBMONEY 環境変数を設定すると、LC 変数で行った 設定値は上書きされるので注意が必要です。『付録 C. 広域言語サポート』 および「Informix Guide to GLS Functionality」を参照してください。 286 IBM Informix SQL リファレンス マニュアル USING $INFORMIXDIR/msg のサブディレクトリにあるロケ - ル ファイルをインス トールし、続いて DBLANG 環境変数を通してそのサブディレクトリを参照 すると、その結果、mmm および ddd 指定子 ( フォーマット文字列 ) は、ロ ケ - ル固有の月名と曜日の省略形をフォーム上に表示します。たとえば、 ddd. 指定子は、スペイン語ロケ - ルで曜日 Saturday を曜日の省略形 Sab. に変換します。これは、Sabado (Saturday を示すスペイン語 ) を意味しま す。♦ 次の例は、$9,999,999.99 まで正しくフォーマットすることが可能な フォーマット文字列を使用して、収支フィールドを印刷したものです。 print "The current balance is ", 23485.23 using "$#,###,##&.&&" 値 23,485.23 を使用してこの PRINT 文を実行した結果は、次のようになり ます。 The current balance is $ 23,485.23 この例では、ドル記号 ($) を固定しています。ドル記号 ($) が # 文字に 代わって使用された場合、そのドル記号は数値のサイズに合わせて浮動す ることになります。また、この例では、# および & 充てん文字も共に使用 しています。# 文字は未使用の文字位置に空白を充てんするのに対し、& 文字はゼロを充てんします。このフォーマットは、たとえ数値がゼロで あっても、& 文字でマークされた位置には空白ではなく必ずゼロと表示さ れることを示します。 次のページの表は、データと USING フォーマット文字列のさまざまな組み 合わせの結果を表したものです。 サンプルのフォーマット文字列 フォーマット文字列 データ値 フォーマット結果 "#####" 0 bbbbb "&&&&&" 0 00000 "$$$$$" 0 bbbb$ "*****" 0 ***** ここで、文字 b は、ブランクまたはスペースを表します。 (1 / 6) ACE レポート ライタ 287 USING フォーマット文字列 データ値 フォーマット結果 "<<<<<" 0 (NULL 文字列 ) "<<<,<<<" 12345 12,345 "<<<,<<<" 1234 1,234 "<<<,<<<" 123 123 "<<<,<<<" 12 12 "##,###" 12345 12,345 "##,###" 1234 b1,234 "##,###" 123 bbb123 "##,###" 12 bbbb12 "##,###" 1 bbbbb1 "##,###" -1 bbbbb1 "##,###" 0 bbbbbb "&&,&&&" 12345 12,345 "&&,&&&" 1234 01,234 "&&,&&&" 123 000123 "&&,&&&" 12 000012 "&&,&&&" 1 000001 "&&,&&&" -1 000001 "&&,&&&" 0 000000 "&&,&&&.&&" 12345.67 12,345.67 "&&,&&&.&&" 1234.56 01,234.56 "&&,&&&.&&" 123.45 000123.45 "&&,&&&.&&" 0.01 000000.01 ここで、文字 b は、ブランクまたはスペースを表します。 (2 / 6) 288 IBM Informix SQL リファレンス マニュアル USING フォーマット文字列 データ値 フォーマット結果 "$$,$$$" 12345 ****** ( オーバーフロー ) "$$,$$$" 1234 $1,234 "$$,$$$" 123 bb$123 "$$,$$$" 12 bbb$12 "$$,$$$" 1 bbbb$1 "$$,$$$" 0 bbbbb$ "**,***" 12345 12,345 "**,***" 1234 *1,234 "**,***" 123 ***123 "**,***" 12 ****12 "**,***" 1 *****1 "**,***" 0 ****** "##,###.##" 12345.67 12,345.67 "##,###.##" 1234.56 b1,234.56 "##,###.##" 123.45 bbb123.45 "##,###.##" 12.34 bbbb12.34 "##,###.##" 1.23 bbbbb1.23 "##,###.##" 0.12 bbbbb0.12 "##,###.##" 0.01 bbbbbb.01 "##,###.##" -0.01 bbbbbb.01 "##,###.##" -1 bbbbb1.00 "$$,$$$.$$" 12345.67 ********* ( オーバーフロー ) "$$,$$$.$$" 1234.56 $1,234.56 ここで、文字 b は、ブランクまたはスペースを表します。 (3 / 6) ACE レポート ライタ 289 USING フォーマット文字列 データ値 フォーマット結果 "$$,$$$.##" 0.00 $.00 "$$,$$$.##" 1234.00 $1,234.00 "$$,$$$.&&" 0.00 $.00 "$$,$$$.&&" 1234.00 $1,234.00 "-$$$,$$$.&&" -12345.67 -$12,345.67 "-$$$,$$$.&&" -1234.56 -b$1,234.56 "-$$$,$$$.&&" -123.45 -bbb$123.45 "--$$,$$$.&&" -12345.67 -$12,345.67 "--$$,$$$.&&" -1234.56 -$1,234.56 "--$$,$$$.&&" -123.45 -bb$123.45 "--$$,$$$.&&" -12.34 -bbb$12.34 "--$$,$$$.&&" -1.23 -bbbb$1.23 "-##,###.##" -12345.67 -12,345.67 "-##,###.##" -123.45 -bbb123.45 "-##,###.##" -12.34 -bbbb12.34 "--#,###.##" -12.34 -bbb12.34 "---,###.##" -12.34 -bb12.34 "---,-##.##" -12.34 -12.34 "---,--#.##" -1.00 -1.00 "-##,###.##" 12345.67 12,345.67 "-##,###.##" 1234.56 1,234.56 "-##,###.##" 123.45 123.45 "-##,###.##" 12.34 12.34 ここで、文字 b は、ブランクまたはスペースを表します。 (4 / 6) 290 IBM Informix SQL リファレンス マニュアル USING フォーマット文字列 データ値 フォーマット結果 "--#,###.##" 12.34 12.34 "---,###.##" 12.34 12.34 "---,-##.##" 12.34 12.34 "---,---.##" 1.00 1.00 "---,---.--" -.01 -.01 "---,---.&&" -.01 -.01 "----,--$.&&" -12345.67 -$12,345.67 "----,--$.&&" -1234.56 -$1,234.56 "----,--$.&&" -123.45 -$123.45 "----,--$.&&" -12.34 -$12.34 "----,--$.&&" -1.23 -$1.23 "----,--$.&&" -.12 -$.12 "$***,***.&&" 12345.67 $*12,345.67 "$***,***.&&" 1234.56 $**1,234.56 "$***,***.&&" 123.45 $****123.45 "$***,***.&&" 12.34 $*****12.34 "$***,***.&&" 1.23 $******1.23 "$***,***.&&" .12 $*******.12 "($$$,$$$.&&)" -12345.67 ($12,345.67) "($$$,$$$.&&)" -1234.56 (b$1,234.56) "($$$,$$$.&&)" -123.45 (bbb$123.45) "(($$,$$$.&&)" -12345.67 ($12,345.67) "(($$,$$$.&&)" -1234.56 ($1,234.56) ここで、文字 b は、ブランクまたはスペースを表します。 (5 / 6) ACE レポート ライタ 291 USING フォーマット文字列 データ値 フォーマット結果 "(($$,$$$.&&)" -123.45 (bb$123.45) "(($$,$$$.&&)" -12.34 (bbb$12.34) "(($$,$$$.&&)" -1.23 (bbbb$1.23) "((((,(($.&&)" -12345.67 ($12,345.67) "((((,(($.&&)" -1234.56 ($1,234.56) "((((,(($.&&)" -123.45 ($123.45) "((((,(($.&&)" -12.34 ($12.34) "((((,(($.&&)" -1.23 ($1.23) "((((,(($.&&)" -.12 ($.12) "($$$,$$$.&&)" 12345.67 $12,345.67 "($$$,$$$.&&)" 1234.56 $1,234.56 "($$$,$$$.&&)" 123.45 $123.45 "(($$,$$$.&&)" 12345.67 $12,345.67 "(($$,$$$.&&)" 1234.56 $1,234.56 "(($$,$$$.&&)" 123.45 $123.45 "(($$,$$$.&&)" 12.34 $12.34 "(($$,$$$.&&)" 1.23 $1.23 "((((,(($.&&)" 12345.67 $12,345.67 "((((,(($.&&)" 1234.56 $1,234.56 "((((,(($.&&)" 123.45 $123.45 "((((,(($.&&)" 12.34 $12.34 "((((,(($.&&)" 1.23 $1.23 "((((,(($.&&)" .12 $.12 ここで、文字 b は、ブランクまたはスペースを表します。 (6 / 6) 292 IBM Informix SQL リファレンス マニュアル WEEKDAY( ) WEEKDAY( ) WEEKDAY 関数は、日付 (DATE) または日時 (DATETIME) 型の式を使用して呼び 出した時の曜日を表す整数を戻します。 WEEKDAY ( date-expr WEEKDAY date-expr ) 必須キーワード。 日付 (DATE) または日時 (DATETIME) 型の値を求める、必須の式。 WEEKDAY は、0 から 6 の範囲の整数を戻します。0 は日曜日を示し、1 は 月曜日、という風に続きます。 ACE レポート ライタ 293 WORDWRAP WORDWRAP この式は、その式の前にある文字フィールドを、一時的な左マージンから 右マージンまでの語で改行して複数行に表示します。 char-expr WORDWRAP RIGHT MARGIN column char-expr WORDWRAP RIGHT MARGIN column 文字 (CHAR) 型の値を使用した式。 必須キーワード。 レポートの右マージンを上書きする一時的な右マージンを導入 するもの。 一時的な右マージンの列番号を指定する。 使用法 Q 一時的な左マージンとは、現行の印刷列です。char-expr の内容 は、一時的左マージンから一時的右マージンの間で任意の行数で表 示されます。 Q 改行は、語が途中で切れる可能性のある箇所でそれを回避するため に位置付けられます。 Q 改行は、データに改行 (LF)(ASCII 10)、復帰 (CR)(ASCII 13)、また はその 2 つの組み合わせが含まれる箇所に強制的に行われます。 次の例は、一時的な右マージンの列 70 で WORDWRAP を起動したものです。 print column 10, textcol wordwrap right margin 70 294 IBM Informix SQL リファレンス マニュアル YEAR( ) YEAR( ) YEAR 関数は、日付 (DATE) または日時 (DATETIME) 型の式を使用して呼び出し た時の年を表す整数を戻します。 YEAR YEAR date-expr ( date-expr ) 必須キーワード。 日付 (DATE) または日時 (DATETIME) 型の値を求める、必須の式。 ACE レポート ライタ 295 YEAR( ) 296 IBM Informix SQL リファレンス マニュアル 章 ユーザ メニュー 本章について . . . . . . . . . . . 299 メニューへのアクセス . . . . . . INFORMIX-SQL 内でのメニューの使用 . . . . . . . . . . . . . . . . . 300 300 メニューの設計 . . . . . . . . 302 メニューの作成 . . . . . . . . . . PERFORM (menuform フォーム ) へのアクセス メニュー データの入力 . . . . . . . 独自のデータを入力するための手順 . . . . . . . . . . . . . . . . . . . . . . . . . . . 304 304 306 310 メニューの修正 . . . . . . . . . . . . . . 5 . . . . . . . . . . . . . . . . 312 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312 313 314 315 317 319 320 スクリプト メニューの作成 . . . . . . . . . . . . 322 メニュー表示フィールド MENU NAME . . . MENU TITLE . . . SELECTION NUMBER SELECTION TYPE . SELECTION TEXT . SELECTION ACTION . . 298 IBM Informix SQL リファレンス マニュアル 本章について 「User-menu」オプションは、カスタム メニューの作成と実行を可能にしま す。「User-menu」のオプションで、次の項目を呼び出すことができます。 Q サブメニュー Q INFORMIX- SQL プログラム ( たとえば、PERFORM) Q ソフトウェア ライブラリにあるその他のプログラムまたはプログ ラム セット Q オペレーティング システム ユーティリティ Q フォームまたはレポート 特殊な PERFORM スクリーン フォームは、メニュー構造を作成または変更す る場合に使用します。2 つの特殊な表には、そのメニュー構造における各 メニュー オプションごとのメニュー、テキスト、およびコマンド参照が保 持されます。 ユーザ メニューは、各データベースごとに 1 つ作成できます。データベー スを指定せずにユーザ メニューを作成することはできません。ただし、 ユーザ メニューのオプションについては、特にデータベースを参照する必 要はありません。 ユーザ メニューは、データベースと切り離して終了することはできませ ん。作業中のデータベースとユーザ メニューを別々にしておく場合は、メ ニュー データのみを含むデータベースを作成してください。 本章には 6 つのセクションがあります。 Q メニューへのアクセス Q メニューの設計 Q メニューの作成 Q メニューの修正 Q メニュー表示フィールド Q スクリプト メニューの作成 ユーザ メニュー 299 メニューへのアクセス メニューへのアクセス メニューは、INFORMIX- SQL メイン メニューまたはオペレーティング システ ムのコマンド行からアクセスできます。次のセクションでは、INFORMIX- SQL メイン メニューの「User-menu」オプションの使用について説明します。 また「付録 G」では、オペレーティング システムのコマンド行から直接 ユーザ メニューにアクセスする方法を説明します。 INFORMIX-SQL 内でのメニューの使用 stores7 デモンストレーション データベースにインクルードされたユーザ メニューにアクセスするには、次の手順に従って操作します。 1. INFORMIX- SQL メイン メニューの「Database」オプションを使用し て、stores7 データベースを現行のデータベースにする。 2. INFORMIX- SQL メイン メニューの「User-menu」オプションを選択す る。「USER-MENU」メニューが表示されます ( 図 20)。 図 20 「USER-MENU」メニュー USER-MENU: Run Modify Exit Run the user-menu for the current database. ------------------- stores7 -----------------------Press CONTROL-W for Help ----- 3. 「USER-MENU」メニューの「Run」オプションを選択する。stores7 データベース用ユーザ メニュー のメイン メニューが表示されます (301 ページの図 21)。 300 IBM Informix SQL リファレンス マニュアル INFORMIX-SQL 内でのメニューの使用 図 21 stores7 ユーザ メニューのメイン メニュー WEST COAST WHOLESALERS, INC. 1. FORMS 2. REPORTS 3. QUERIES 4. TABLE DEFINITIONS 5. UTILITIES Use space bar, arrow keys, or type number to make selection. Enter &srq;e&srq; to return to previous menu or exit. Enter carriage return to execute selection: 1 4. 希望するメニュー オプションの左にある番号を入力するか、矢印 キーでそのオプションを強調表示して選択する。Enter キーを押す と、INFORMIX- SQL がその選択オプションを実行します。 5. e を入力して、メニューを終了する。デモンストレーション デー タベース メニューから e を入力した場合は、「INFORMIX- SQL USERMENU」メニューが表示されます。 ユーザ メニュー 301 メニューの設計 メニューの設計 ユーザ メニュー構造において、メニューは 19 レベルまで、各メニューに つき 28 オプションまで設定できます。 単一メニューにおけるオプションの総数は、次の 2 つの要因により異なり ます。 Q 画面中に保持できる行数 Q メニュー タイトルの長さ ほとんどの画面で供給可能なメニュー行数は、シングル スペースで 14 行 です。各メニュー行に表示できるオプション数は 2 つで、各オプションに つき 33 文字までのテキストを表示できます。メニューの各オプションご とのテキストが 33 文字を超えない場合は、ダブル スペースで 14 メ ニュー オプション (1 行あたり 2 オプション ) まで、またはシングル ス ペースで 28 メニュー オプション (1 行あたり 2 オプション ) まで表示 可能です。1 オプションのテキストが 33 文字を超える場合は、行全体が必 要となるので、そのメニューに使用可能なオプションの総数が減ることに なります。 シンプル メニューの例として、stores7 デモンストレーション データ ベースのユーザ メニューについて説明します。このメニューには、上部 ( メイン ) のレベルに次の 5 つのオプションがあります。 Q FORMS Q REPORTS Q QUERIES Q TABLE DEFINITIONS Q UTILITIES 302 IBM Informix SQL リファレンス マニュアル メニューの設計 メイン メニューの各オプションがメニューを呼び出し、( 呼び出された ) メニューの各オプションがアクションを実行します。stores7 データベー スにインクルードされたユーザ メニューの設計概要は次のようになりま す。 WEST COAST WHOLESALERS, INC. 1. USE 1. 2. 3. 4. DATA ENTRY FORMS CUSTOMER ENTRY/QUERY FORM ORDER ENTRY/QUERY FORM DISPLAY CUSTOMER FORM SPECIFICATION DISPLAY ORDER FORM SPECIFICATION 2. RUN 1. 2. 3. 4. 5. 6. 7. 8. REPORTS RUN CUSTOMER REPORT RUN REPORT ON CUSTOMER BY DESIGNATED STATE RUN CUSTOMER MAILING LABELS RUN MATRIX REPORT ON MONTHLY SALES DISPLAY REPORT 1 SPECIFICATION DISPLAY REPORT 2 SPECIFICATION DISPLAY REPORT 3 SPECIFICATION DISPLAY REPORT 4 SPECIFICATION 3. EXECUTE DATABASE QUERIES 1. DISPLAY CUSTOMER INFORMATION BASED ON PARTIAL NAME MATCH 2. INSERT, UPDATE, SELECT, AND DELETE NEW CUSTOMER ROW 3. DISPLAY ALL CURRENTLY UNPAID ORDERS 4. DISPLAY INFORMATION BASED ON A VIEW 5. DISPLAY CUSTOMERS PLUS OUTSTANDING ORDERS (NO OUTER JOIN) 4. DISPLAY DATABASE TABLE DEFINITIONS 1. TABLE "CUSTOMER" 2. TABLE "ITEMS" 3. TABLE "MANUFACT" 4. TABLE "ORDERS" 5. TABLE "STOCK" 6. TABLE "STATE" 7. TABLE "CUST_CALLS" 5. UTILITY MENU 1. DISPLAY DATE AND TIME 2. CHECK CUSTOMER TABLE 3. UNLOAD CUSTOMER TABLE ユーザ メニュー 303 メニューの作成 メニューの作成 メニューを作成するには、まず最初に PERFORM プログラム (menuform スク リーン フォーム ) にアクセスします。次に、このスクリーン フォームに データを入力します。 menuform フォームは、ユーザ メニューを作成または修正する場合のみに 使用する特殊な PERFORM スクリーン フォームです。このフォームではメ ニュー情報を入力、変更、および削除できますが、このスクリーン フォー ム自体のアピアランスを変更することはできず、このフォーム上で FORMBUILD を実行することもできません。 PERFORM (menuform フォーム ) へのアクセス INFORMIX- SQL メイン メニューの「User-menu」オプションを選択します。現 行のデータベースがない場合は、「CHOOSE DATABASE」画面が表示されます。 データベースを選択すると、「USER-MENU」画面が表示されます。「Modify」 オプションを選択すると、INFORMIX- SQL は PERFORM メニュー (menuform フォーム ) を表示します ( 図 22 を参照してください )。 図 22 PERFORM メニュー (menuform エントリ フォーム ) PERFORM: Query Next Previous View Searches the active database table. Add Update Remove Table . . . ** 1: sysmenus table** ===========================MENU ENTRY FORM================================= Menu Name: [ ] Menu Title: [ ] --------------------------SELECTION SECTION-------------------------------Selection Number: Selection Text: Selection Action: 304 IBM Informix SQL リファレンス マニュアル Selection Type: PERFORM (menuform フォーム ) へのアクセス menuform フォームでは、次の 2 つの表にアクセスできます。 Q sysmenus 表。ユーザ メニューの各メニューに関する情報を格納し ます。この情報には、メニュー名 ( メニューを識別するために INFORMIX- SQL で使用される )、およびメニュー タイトル ( メ ニュー表示の際に示されるテキスト ) があります。 Q sysmenuitems 表。各メニューごとのオプションに関する情報を格 納します。この情報には、次のようなものがあります。 T オプション番号 T オプション タイプ ( プログラム、レポート、フォーム、 INFORMIX- SQL コマンド ファイル、スクリプト メニュー、また はメニュー ) T オプション タイトル ( 画面上に示されるテキスト ) T オプションが示すアクション ( プログラム、レポート、フォー ム、またはスクリプト メニューの実行、INFORMIX- SQL コマンド ファイルまたはメニューの呼び出し )。スクリプト メニュー は、ユーザが単一の項目に対して複数のアクションを順次実行 できるようにするものです。スクリプト メニューについては、 322 ページの『スクリプト メニューの作成』に説明がありま す。 sysmenus 表は、sysmenuitems 表のマスターです。 「USER-MENU」メニューから最初に「Modify」を押した人が、両表を作成する ことになります。また、sysmenus および sysmenuitems 表の作成者は、こ れらの表の所有者でもあります。ユーザ メニューはだれでも実行できます が、メニュー項目を修正できるのは表の所有者だけであるため、ANSI 準拠 のデータベースを作成する場合、この所有権は重要になります。その他の ユーザがメニュー項目を修正しようとすると、エラー メッセージが表示さ れます。 ユーザ メニュー 305 メニュー データの入力 メニュー データの入力 メニュー データの入力は、2 つの手順で行います。まず、スクリーン フォームの上部にある 2 つのフィールドに、メニューについてのデータを 入力します ( これらのフィールドは、sysmenus 表に関連付けられていま す )。たとえば、stores7 データベースのメイン メニュー用の sysmenus 表にある記入項目がこの画面に示されます。 PERFORM: Query Next Previous View Searches the active database table. Add Update Remove Table . . . ** 2: sysmenus table** ==========================MENU ENTRY FORM================================= Menu Name: [main ] Menu Title: [WEST COAST WHOLESALERS, INC. ] -------------------------SELECTION SECTION-------------------------------Selection Number: Selection Type: Selection Text: Selection Action: 次の表は、メイン メニューとそのオプションの情報を示したもので、これ らは stores7 データベースの sysmenus 表に格納されています。 Menu Name Menu Title main WEST COAST WHOLESALERS, INC. forms FORMS reports REPORTS queries DATABASE QUERIES tables DATABASE TABLE DEFINITIONS utilities UTILITIES 306 IBM Informix SQL リファレンス マニュアル メニュー データの入力 2 番目に、画面の下半分にあるフィールドに各メニューのオプションごと のデータを入力します ( これらのフィールドは、sysmenuitems 表に関連付 けられています )。 sysmenuitems 表でメニュー オプションについての入力を行う前に、 sysmenus 表での入力を行う必要があります。INFORMIX- SQL は、 sysmenuitems 表にデータが入力された際、その表に引用されているメ ニューが sysmenus 表にあるかどうかを確認するための検査を行うため、 この手順は必要になります。 たとえば、メイン メニューのオプション 1 について入力したものがこの 画面に示されています。 PERFORM: Query Next Previous View Searches the active database table. Add Update Remove Table . . . ** 2: sysmenuitems table** ==========================MENU ENTRY FORM================================= Menu Name: Menu Title: [main ] WEST COAST WHOLESALERS, INC. -------------------------SELECTION SECTION-------------------------------Selection Number: [1 ] Selection Type: [M] Selection Text: [FORMS ] Selection Action: [forms ] この場合、Selection Action (forms) は、メニューの名前になります (Selection Type M に対応 )。「FORMS」メニューに関する情報は、オプショ ン 1 についての入力が行われる前に sysmenus 表に入力される必要があり ます。 stores7 データベースの sysmenuitems 表に格納されている情報は、308 ページの図 23 に示されています。 ユーザ メニュー 307 メニュー データの入力 図 23 sysmenuitems 表のデータ Menu Name Option Selection Text Type Action main 1 FORMS M forms main 2 REPORTS M reports main 3 QUERIES M queries main 4 TABLE DEFINITIONS M tables main 5 UTILITIES M utilities forms 1 CUSTOMER ENTRY/QUERY FORM F customer forms 2 ORDER ENTRY/QUERY FORM F orders forms 3 DISPLAY CUSTOMER FORM SPECIFICATION P type customer.per forms 4 DISPLAY ORDER FORM SPECIFICATION P type orders.per reports 1 RUN CUSTOMER REPORT R clist1 reports 2 RUN REPORT ON CUSTOMER BY DESIGNATED STATE R clist2 reports 3 RUN CUSTOMER MAILING LABELS S mailinglabels reports 4 RUN MATRIX REPORT ON MONTHLY SALES R months reports 5 DISPLAY REPORT1 SPECIFICATION P type clist1.ace reports 6 DISPLAY REPORT2 SPECIFICATION P type clist2.ace reports 7 DISPLAY REPORT3 SPECIFICATION P type mail.ace reports 8 DISPLAY REPORT4 SPECIFICATION P type months.ace mailinglabels 1 run mailing labels report R mail mailinglabels 2 display output file from mailing labels report P type mail.out queries 1 DISPLAY CUSTOMER INFORMATION BASED ON PARTIAL NAME MATCH S query1 queries 2 INSERT, UPDATE, SELECT, AND DELETE NEW CUSTOMER ROW S query2 (1 / 3) 308 IBM Informix SQL リファレンス マニュアル メニュー データの入力 Menu Name Option Selection Text Type Action queries 3 DISPLAY ALL CURRENTLY UNPAID ORDERS S query3 queries 4 DISPLAY INFORMATION BASED ON A VIEW S query4 queries 5 DISPLAY CUSTOMERS PLUS OUTSTANDING ORDERS S query5 query1 1 display SQL syntax for query menu choice 1 P type cust_nme.sql query1 2 run query menu choice 1 Q cust_nme query2 1 display SQL syntax for query menu choice 2 P type cust_row.sql query2 2 run query menu choice 2 Q cust_row query3 1 display SQL syntax for query menu choice 3 P type unpaid.sql query3 2 run query menu choice 3 Q unpaid query4 1 display SQL syntax for query menu choice 4 P type view_c.sql; type view_s.sql; type view_d.sql query4 2 run query menu choice 4 Q view_s query5 1 display SQL syntax for query menu choice 5 P type orders1.sql; type orders2.sql query5 2 run query menu choice 5 Q orders1 query5 3 run query menu choice 5 Q orders2 tables 1 TABLE “CUSTOMER” P type c_custom.sql tables 2 TABLE “ITEMS” P type c_items.sql tables 3 TABLE “MANUFACT” P type c_manuf.sql tables 4 TABLE “ORDERS” P type c_orders.sql tables 5 TABLE “STOCK” P type c_stock.sql tables 6 TABLE “STATE” P type c_state.sql tables 7 TABLE “CUST_CALLS” P type c_custcl.sq1 utilities 1 DISPLAY DATE AND TIME P date (2 / 3) ユーザ メニュー 309 独自のデータを入力するための手順 Menu Name Option Selection Text Type Action utilities 2 CHECK CUSTOMER TABLE Q ch_cust utilities 3 UNLOAD CUSTOMER TABLE S utility3 utility3 1 display SQL syntax for utility menu choice 3 P type u_cust.sql utility3 2 run utility menu choice 3 Q u_cust utility3 3 display output of utility menu choice 3 P type customer.unl (3 / 3) 独自のデータを入力するための手順 次の手順は、ユーザ独自のメニューとオプションのデータを入力するプロ シジャを示したものです。各表示フィールドごとに入力するデータの種類 について詳しくは、312 ページの『メニュー表示フィールド』の表示 フィールドのリストを参照してください。 1. INFORMIX- SQL メイン メニューの「User-menu」オプションを選択し ます。 2. 「USER-MENU」メニューの「Modify」オプションを選択します。 「MENUFORM」スクリーン フォームが表示されます。 3. 「a」と入力して、 「Add」オプションを選択します。 4. 最初のメニューのメニュー名とメニュー タイトルを入力します。 最初のメニュー名は、「main」でなければならないので、注意して ください。終了したら、「Esc キー」を押します。 5. 同様に、2 番目のメニューについてのデータを入力します。終了し たら、「Esc キー」を押します。 6. ユーザ メニューの全メニューのメニュー名とメニュー タイトルを 入力したら、そのフォームの SELECTION SECTION 内へのデータ入力 が可能になります。ここでは、メイン メニューの全オプションに 関する情報を入力していきます。「Query」オプションを選択し、 「Menu Name」フィールドに「main」と入力して、「Esc キー」を押 します。 310 IBM Informix SQL リファレンス マニュアル 独自のデータを入力するための手順 7. 「d」と入力し、詳細表 (sysmenuitems) をアクティブにしま す。INFORMIX- SQL は、次のメッセージを表示します。 There are no rows satisfying the conditions. sysmenuitems 表には、「main」記入項目と「Menu Name」フィール ドを結合する行はありません。 8. 「Add」オプションを選択します。メイン メニューの最初のオプ ションについて、Selection Number、Selection Type、Selection Text、および Selection Action のデータを入力します。最初のメ ニュー オプションに関するデータの入力が終了したら、 「Esc キー」 を押します。メイン メニューに 2 番目のオプションがある場合は、 「Add」を選択してそのオプションに関するデータを入力します。終 了したら、「Esc キー」を押します。 メイン メニューの各オプションごとのデータ入力が完了するまで、 この手順を繰り返します。 9. 「m」と入力して、主表を再度呼び出します。「Query」オプション を使用して、次のメニューの「Menu Name」および「Menu Title」 データを指定し、表示します。「d」と入力して、主表の現行行に 結合されている詳細表を表示します。 10. このメニューの最初のオプションについて、「Selection Number」、 「Selection Type」、 「Selection Text」、および「Selection Action」のデータを入力します。データ入力が終了したら、「Esc キー」を押します。このメニューの各オプションごとに、この手順 を繰り返します。 11. 手順 9 と 10 を繰り返して、残りのメニュー オプションについて のデータを入力します。各メニューのオプションすべてのデータを 入力したら、メニューは完了です。「Exit」オプションを選択して PERFORM を終了し、 「USER-MENU」メニューに戻ります。 12. 「USER-MENU」メニューの「Run」オプションを選択して、新しいメ ニューを実行します。 ユーザ メニュー 311 メニューの修正 メニューの修正 独自に作成したメニューの変更は、作成する場合と同様です。INFORMIX- SQL メイン メニューから「User-menu」オプションを選択します。次に、 「USERMENU」メニューの「Modify」オプションを選択します。PERFORM のオプショ ンを使用して、MENUFORM スクリーン フォームでメニュー項目を修正しま す。 PERFORM については、 『第 3 章 PERFORM 画面トランザクション プロセッサ』 を参照してください。 メニュー表示フィールド このセクションは、MENUFORM 画面の各フィールドごとに入力できる情報の 種類について説明します。 312 IBM Informix SQL リファレンス マニュアル MENU NAME MENU NAME INFORMIX- SQL は、ユーザの希望するメニューを検索して次のメニューを呼 び出す場合に「Menu Name」フィールドの記入項目を使用します。このメ ニュー名は、INFORMIX- SQL のみに使用され、画面上には表示されません。 使用法 Q メニュー名は、標準の識別子ルールに従って指定する必要がありま す。長さは 1 から 18 文字まで指定可能です。最初の文字はアル ファベット文字でなければならず、それ以降は数字、アルファベッ ト文字、およびアンダースコア (_) が使用可能です。 Q 上位レベルのメニューの名前には、すべて小文字の main を指定す る必要があります。 メイン メニューの「Menu Name」記入項目は、次の画面で示すとおり main となります。 PERFORM: Query Next Previous View Searches the active database table. Add Update Remove Table . . . ** 1: sysmenus table** ==========================MENU ENTRY FORM================================= Menu Name: [main ] Menu Title: [ ] -------------------------SELECTION SECTION-------------------------------Selection Number: Selection Type: Selection Text: Selection Action: ユーザ メニュー 313 MENU TITLE MENU TITLE このフィールドは、INFORMIX- SQL がメニューの上部に表示するテキストの入 力に使用します。 使用法 画面上の大括弧の幅は、テキストの最大長です。大括弧内に収まる単語数 なら何文字でも可能です。 メイン メニューの「Menu Title」記入項目は、次のとおりです。 PERFORM: Query Next Previous View Searches the active database table. Add Update Remove Table . . . ** 1: sysmenus table** ==========================MENU ENTRY FORM================================= Menu Name: [main ] Menu Title: [WEST COAST WHOLESALERS, INC. ] -------------------------SELECTION SECTION-------------------------------Selection Number: Selection Text: Selection Action: 314 IBM Informix SQL リファレンス マニュアル Selection Type: SELECTION NUMBER SELECTION NUMBER 「Selection Number」フィールドは、画面上の各メニュー項目の左側に表示 するオプション番号の入力に使用します。 使用法 Q INFORMIX- SQL は、指定された番号順にメニュー項目を表示します。 ユーザは、番号で項目を選択します。 Q 1 メニューに保持できるオプションの総数は、次の 2 つの要因に より異なります。それは、使用中の画面で保持できる行数と、ユー ザが入力したメニュー タイトルの長さです。ほとんどの画面で供 給可能なメニュー行数は、シングル スペースで 14 行です。各メ ニュー行につき 2 つのオプション ( 最大 33 文字まで ) を表示で きます。メニューの各オプションごとのテキストが 33 文字を超え ない場合は、ダブル スペースで 14 メニュー オプション (1 行あ たり 2 オプション ) まで、またはシングル スペースで 28 メ ニュー オプション (1 行あたり 2 オプション) まで表示可能です。 1 オプションのテキストが 33 文字を超える場合は、行全体が必要 となるので、そのメニューに使用可能なオプションの総数が減るこ とになります。 ユーザ メニュー 315 SELECTION NUMBER 「REPORTS」メニューのオプションについて、「Selection Number」の記入項 目は次のようになります。 PERFORM: Query Next Previous View Searches the active database table. Add Update Remove Table . . . ** 2: sysmenuitems table** ==========================MENU ENTRY FORM================================= Menu Name: Menu Title: [reports ] REPORTS -------------------------SELECTION SECTION-------------------------------Selection Number: [3 ] Selection Type: [S] Selection Text: [RUN CUSTOMER MAILING LABELS ] Selection Action: [mailinglabels ] 316 IBM Informix SQL リファレンス マニュアル SELECTION TYPE SELECTION TYPE 「Selection Type」フィールドは、あるオプションが実行するアクションの タイプを指定する場合に使用します。オプションについて、フォームまた はレポートを実行する、メニューを呼び出す、INFORMIX- SQL コマンド ファ イル、プログラム、オペレーティング システムを実行する、あるいはスク リプト メニューを起動する、などを指定できます。 次のオプションが「Selection Type」フィールドで利用可能です。 オプション 目的 F フォームの実行 R レポートの実行 M メニューの呼び出し Q INFORMIX- SQL コマンド ファイルの実行 P プログラムまたはオペレーティング システム コマンドの実行 S スクリプト メニューの実行 使用法 Q 「Selection Type」フィールドの記入項目と「Selection Action」 フィールドの記入項目は、一致している必要があります。たとえ ば、「Selection Type」が R の場合は、「Selection Action」には コンパイルされるレポートの名前が表示されていなければなりませ ん。 Q 「Selection Type」オプションの入力は、大文字小文字のいずれで も可能です。INFORMIX- SQL は、自動的に大文字で画面上に表示しま す。 ユーザ メニュー 317 SELECTION TYPE clist2 レポートを実行する場合の「Selection Type」の記入項目は、次の ようになります。 PERFORM: Query Next Previous View Searches the active database table Add Update Remove Table . . . ** 2: sysmenuitems table** ==========================MENU ENTRY FORM================================= Menu Name: Menu Title: [reports ] REPORTS -------------------------SELECTION SECTION-------------------------------Selection Number: [2 ] Selection Type: [R] Selection Text: [RUN REPORT ON CUSTOMER BY DESIGNATED STATE ] Selection Action: [clist2 ] customer 入力フォームを実行する場合の「Selection Type」の記入項目 は、次のようになります。 PERFORM: Query Next Previous View Searches the active database table Add Update Remove Table . . . ** 2: sysmenuitems table** ==========================MENU ENTRY FORM================================= Menu Name: Menu Title: [forms ] FORMS -------------------------SELECTION SECTION-------------------------------Selection Number: [1 ] Selection Type: [F] Selection Text: [CUSTOMER ENTRY/QUERY FORM ] Selection Action: [customer ] 318 IBM Informix SQL リファレンス マニュアル SELECTION TEXT SELECTION TEXT 「Selection Text」フィールドは、画面上のオプション番号の右側に表示す るテキストの入力に使用します。 使用法 Q 画面上の大括弧の幅は、このフィールドで指定可能なテキストの最 大長です。 Q 選択テキストの長さにより、単一メニューにインクルードできるオ プションの総数が異なります。詳しくは、315 ページの「使用法」 セクションを参照してください。 「REPORTS」メニューのオプションについて、「Selection Text」の記入項目 は次のようになります。 PERFORM: Query Next Previous View Searches the active database table. Add Update Remove Table . . . ** 2: sysmenuitems table** ==========================MENU ENTRY FORM================================= Menu Name: Menu Title: [reports ] REPORTS -------------------------SELECTION SECTION-------------------------------Selection Number: [3 ] Selection Type: [S] Selection Text: [RUN CUSTOMER MAILING LABELS ] Selection Action: [mailinglabels ] ユーザ メニュー 319 SELECTION ACTION SELECTION ACTION 「Selection Action」フィールドは、ユーザが「Selection Type」フィール ドに示されているオプションを選択した場合に実行されるアクション名の 指定に使用します。入力可能なものは、コンパイル済みのフォームまたは レポート仕様、INFORMIX- SQL コマンド ファイル、メニュー、オペレーティ ング システム コマンド、プログラム、スクリプト メニューなどです。 使用法 Q Q 「Selection Action」フィールドの記入項目と「Selection Type」 フィールドの記入項目は、次の表で示すように一致している必要が あります。 Selection Type Selection Action M メニューのメニュー名 ( メニュー タイトルではあ りません ) を入力します。sysmenus 表の「Menu Name」フィールドに存在しないメニュー名を入力 することはできません。例 : reports P プログラム名またはオペレーティング システム コ マンドを入力します。例 : date F フォーム名を入力します。.frm 拡張子を付ける必 要はありません。例 : customer PR レポート名を入力します。.arc 拡張子を付ける必 要はありません。例 : clist1 Q SQL コマンド ファイル名を入力します。.sql 拡張 子を付ける必要はありません。例 : cust_city S スクリプト メニュー名を入力します。例 : mailing label ユーザは「Selection Type」フィールドに Q と入力できますが、 「Selection Action」フィールドには入力できません。ユーザがそ のオプションを選択すると、INFORMIX- SQL は INFORMIX- SQL メイン メ ニューの「Query-language」オプションを呼び出します。それか ら、ユーザは 1 つ以上の SQL 文を入力できるようになります。 320 IBM Informix SQL リファレンス マニュアル SELECTION ACTION Q ユーザは「Selection Type」フィールドに R または F と入力でき ますが、 「Selection Action」フィールドには何も入力できません。 ユーザがこのオプションを選択すると、INFORMIX- SQL は INFORMIX- SQL メイン メニューの「Report」または「Form」オプ ションを個々に呼び出します。 Q 「Query-language」、 「Report」、または「Form」オプションの使用が 終了したら、「E」オプションを選択して終了します。これで、 INFORMIX- SQL は「USER- MENU」メニューに戻します。 デモンストレーション データベースで、clist1 レポートの実行に使用さ れる「Selection Action」記入項目は、次のとおりです。 PERFORM: Query Next Previous View Searches the active database table. Add Update Remove Table . . . ** 2: sysmenuitems table** ==========================MENU ENTRY FORM================================= Menu Name: Menu Title: [reports ] REPORTS -------------------------SELECTION SECTION-------------------------------Selection Number: [1 ] Selection Type: [R] Selection Text: [RUN CUSTOMER REPORT ] Selection Action: [clist1 ] 「Selection Type」の R は、レポートの実行を示します。「Selection Action」は、実行するレポートの名前として clist1 を指定しています。 ユーザ メニュー 321 スクリプト メニューの作成 スクリプト メニューの作成 スクリプト メニューには、単一のメニュー項目につき複数のアクションが インクルードされています。該当するメニュー オプションを選択すると、 これらのアクションは順次実行され、その間、画面上にメニューは表示さ れません。「Selection Type」フィールドに S を指定すると、 「Selection Action」フィールドにスクリプト メニュー名の入力が必要となります。 次のリストは、デモンストレーションのユーザ メニューにインクルードさ れた mailinglabels スクリプトを作成するためのプロシジャです。このス クリプトは、カスタマ メール ラベルを実行および表示するものです。 「REPORTS」メニューの「Selection Number」は 3 になっています。ユーザ が「REPORTS」メニューでオプション 3 を選択すると、メール ラベル レ ポートが実行され、出力ファイルが画面上に表示されます。 1. 「USER-MENU」メニューの「Modify」オプションを選択する。(304 ページの『メニューの作成』セクションを参照してください。) 2. 「a」と入力して、 「Add」オプションを選択する。 3. 「Menu Name」フィールドに 「reports」と入力する。スクリプト が、「REPORTS」メニューのオプションになります。 4. 「Menu Title」フィールドに「REPORTS」と入力する。 5. 終了したら、「Esc キー」を押す。 322 IBM Informix SQL リファレンス マニュアル スクリプト メニューの作成 前の手順は、sysmenus 表に必要な情報を入力する方法を示したものです。 次に、PERFORM 画面がこの時点でどのように表示されるかを示します。 PERFORM: Query Next Previous View Add Added a row to the active database table. Update Remove Table . . . ** 1: sysmenus table** ==========================MENU ENTRY FORM================================= Menu Name: [reports ] Menu Title: [REPORTS ] -------------------------SELECTION SECTION-------------------------------Selection Number: Selection Type: Selection Text: Selection Action: Row Added 次の手順は、画面の下半分 (sysmenuitems 表のフィールド ) にデータを入 力する方法を示します。 1. 「d」と入力して、詳細表をアクティブにする。 2. データを追加するため「a」と入力する。 3. 「Selection Number」フィールドに「3」と入力する。スクリプト が、「REPORTS」メニューの 3 番目の選択項目になります。 4. 「Selection Type」フィールドに「S」と入力する。これは、ユーザ がスクリプト メニューを実行することを示します。 5. 「Selection Text」フィールドに次のテキストを入力する。 RUN CUSTOMER MAILING LABELS このテキストは、画面上のオプション番号の右側に表示されます。 6. 「Selection Action」フィールドに「mailinglabels」と入力する。 これは、実行するスクリプト メニューの名前です。 7. 終了したら、「Esc キー」を押す。 ユーザ メニュー 323 スクリプト メニューの作成 次の画面は、この時点で表示される PERFORM 画面です。 PERFORM: Query Next Previous View Add Added a row to the active database table. Update Remove Table . . . ** 2: sysmenuitems table** ==========================MENU ENTRY FORM================================= Menu Name: [reports Menu Title: ] REPORTS -------------------------SELECTION SECTION-------------------------------Selection Number: [3 ] Selection Type: [S] Selection Text: [RUN CUSTOMER MAILING LABELS ] Selection Action: [mailinglabels ] Row added ここで、次のようにして、スクリプトを実行させるためのアクションとそ れらを実行する順序を入力します。 1. 「m」(Master を表す ) と入力して、sysmenus 表をアクティブにす る。 2. 「a」と入力して、 「Add」オプションを選択する。 3. 「Menu Name」フィールドに 「mailinglabels」と入力する。これ は、スクリプト メニューの名前です。 4. 「Menu Title」フィールドに次のテキストを入力する。 run report menu selection 3 and display the output file その他すべてのユーザ メニューのメニューとは異なり、スクリプ ト メニューについては、「Menu Title」フィールドの記入項目は画 面に表示されません。このフィールドは、スクリプト メニューを 構成する一連のアクションをリストしたコメント行として使用でき ます。 5. 終了したら、「Esc キー」を押す。 324 IBM Informix SQL リファレンス マニュアル スクリプト メニューの作成 前の手順は、sysmenus 表に必要な情報を入力する方法を示したものです。 次の画面で、PERFORM 画面がこの時点でどのように表示されるかを示しま す。 PERFORM: Query Next Previous View Add Adds a row to the active database table. Update Remove Table . . . ** 1: sysmenus table** ==========================MENU ENTRY FORM================================= Menu Name: [mailinglabels ] Menu Title: [run report menu selection 3 and display the output file ] -------------------------SELECTION SECTION-------------------------------Selection Number: Selection Type: Selection Text: Selection Action: Row added 次の手順は、画面の下半分 (sysmenuitems 表のフィールド ) にメニューの 各オプションごとのデータを入力する方法を示します。 1. 「d」と入力して、詳細表をアクティブにする。 2. 「Add」オプションを選択する。 3. 「Selection Number」フィールドに「1」と入力する。INFORMIX- SQL は、このアクションを最初に実行します。 4. 「Selection Type」フィールドに「R」と入力する。これは、レポー トを実行します。 5. 「Selection Text」フィールドに次のテキストを入力する。 run mailing labels report その他のユーザ メニューのメニューとは異なり、スクリプト メ ニューについては、「Selection Text」フィールドの記入項目は画 面に表示されません。このフィールドは、「Selection Type」 フィールドの記入項目により示されたアクションを表すためのコメ ント行として使用できます。 ユーザ メニュー 325 スクリプト メニューの作成 6. 「Selection Action」フィールドに「mail」と入力する。これは、 そのアクションで指定されるコンパイル済みレポートの名前です。 7. 終了したら、「Esc キー」を押す。 次の画面は、この時点で表示される PERFORM 画面です。 PERFORM: Query Next Previous View Add Adds a row to the active database table. Update Remove Table . . . ** 2: sysmenuitems table** ==========================MENU ENTRY FORM================================= Menu Name: [mailinglabels Menu Title: ] run report menu selection 3 and display the output file -------------------------SELECTION SECTION-------------------------------Selection Number: [1 ] Selection Type: [R] Selection Text: [run mailing labels report ] Selection Action: [mail ] Row added mailinglabels スクリプトの 2 番目のアクションの入力についても、最初 のアクションをセット アップした場合と同様、次のようにします。 1. 「a」(Add を表す ) と入力する。 2. 「Selection Number」フィールドに「2」と入力する。INFORMIX- SQL は、このアクションを 2 番目に実行します。 3. 「Selection Type」フィールドに「P」と入力する。これは、プログ ラムを実行します。 4. 「Selection Text」フィールドに次のテキストを入力する。 display output file from mailing labels report 5. 「Selection Action」フィールドに「type mail.out」と入力する。 これは、実行するオペレーティング システム プログラムの名前で す。 6. 終了したら、「Esc キー」を押す。 326 IBM Informix SQL リファレンス マニュアル スクリプト メニューの作成 次の画面は、この時点で表示される PERFORM の入力完了画面です。 PERFORM: Query Next Previous View Add Adds a row to the active database table. Update Remove Table . . . ** 2: sysmenuitems table** ==========================MENU ENTRY FORM================================= Menu Name: Menu Title: [mailinglabels ] run report menu selection 3 and display the output file -------------------------SELECTION SECTION-------------------------------Selection Number: [2 ] Selection Type: Selection Text: [display output file from mailing labels report Selection Action: [type mail.out [P] ] ] Row added これで、レポートの実行、出力ファイルの表示、という 2 つのアクション が mailinglabels スクリプト メニューの詳細として入力されました。ユー ザが「REPORTS」メニューでオプション 3 を選択すると、mailinglabels ス クリプト メニューが選択され、メール ラベル レポートが実行されて、出 力ファイルが画面上に表示されるようになります。 「Selection Type」の「S」は、単一のメニュー項目につき複数のアクショ ンを実行する際に使用してください。 ユーザ メニュー 327 スクリプト メニューの作成 328 IBM Informix SQL リファレンス マニュアル 章 ACE および PERFORM に おける関数 本章について . . . . . . . . . . . . . . 331 ACE からの C 関数の呼出し . FUNCTION . . . . . CALL (ACE において ). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332 333 335 PERFORM からの C 関数の呼出し . . . . . . . . . . . CALL (PERFORM において ) . . . . . . . . . . . . ON BEGINNING および ON ENDING . . . . . . . . . . 337 338 340 C プログラムを書く . . . . . . C プログラムを編成する . . . . C 関数に値を渡す . . . . . . データ型を検査する . . . . データ型を変換する . . . . ACE および PERFORM に値を戻す . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341 342 344 345 347 348 PEFORM ライブラリ関数 . PF_GETTYPE() . . . PF_GETVAL() . . . PF_PUTVAL () . . . PF_NXFIELD () . . . PF_MSG() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349 350 352 355 358 360 レポートとフォームのコンパイル、リンク、および実行 cace および cperf プログラムの構文 . . . . . cace および cperf の使用 . . . . . . . . . . . . . . . . . . . . 361 361 362 例 . . . . . . . . . . . . . . . . 362 363 365 367 . . . ACE 例 1 ACE 例 2 PERFORM 例 . . . . . . . . . . . . . . . 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330 IBM Informix SQL リファレンス マニュアル 本章について この章では、ACE および PERFORM からの C 関数の呼出しについて説明して います。ACE および PERFORM は通常、修正を行わなくても、データベース レポートや画面に関するさまざまな要求を処理することができますが、必 要な機能を追加しなければならない場合もあります。例えば、ACE から呼び 出される C 関数で、レポートで表示するためにデータに統計的な計算を行 い、これらをレポートに追加します。PERFORM では C 関数を呼び出して、 データの妥当性を調べたり、レコードを更新する際のデータ、時刻、およ び更新者の名前を記録したり、またはデータベースの更新を行ったりしま す。 C 関数には、以下のものが含まれます。 Q ご使用のシステムの C 開発のマニュアルに記載されている算術関 数または C サブルーチン Q PERFORM を使用する場合、349 ページ以降に記載されている関数 Q INFORMIX- ESQL/C を使用する場合、 「INFORMIX-ESQL/C Programme’s Manual」に記載されているライブラリ ルーチンおよ び INFORMIX- ESQL/C 文 この章では、以下のトピックについて説明します。 Q ACE からの C 関数の呼出し Q PERFORM からの C 関数の呼出し Q C プログラムを書く Q PERFORM ライブラリ関数の使用 Q カスタマイズした ACE および PERFORM のコンパイル、リンク、およ び実行 この章の終わりに、いくつか例を取り上げています。 ACE および PERFORM における関数 331 ACE からの C 関数の呼出し ACE からの C 関数の呼出し ACE レポート仕様ファイルの一般形式には、次の 7 つのセクションがあり ます。 Q DATABASE セクション ( 必須 ) Q DEFINE セクション Q INPUT セクション Q OUTPUT セクション Q SELECT セクション (SELECT または READ が必須 ) Q READ セクション (SELECT または READ が必須 ) Q FORMAT セクション ( 必須 ) レポート仕様ファイルから C 関数を呼び出すには、DEFINE セクションで関 数名を宣言し、FORMAT セクションで関数を使用します。その後に、ACEPREP を使用してレポート仕様ファイルをコンパイルします。 332 IBM Informix SQL リファレンス マニュアル FUNCTION FUNCTION レポート仕様ファイルの DEFINE セクションで FUNCTION 文を使用して、C 関数を宣言します。 FUNCTION 文 FUNCTION userfunc FUNCTION userfunc 必須キーワードです。 C 関数を仕様ファイルで参照するときの名前です。userfunc は、 ACE 識別子の条件を満たさなければなりません。 使用法 キーワード FUNCTION の後に次の関数名を続けることにより、一度に複数の 関数を宣言できます。関数名の後に括弧を使用しないでください。 DEFINE セクションで、FUNCTION 文の他に PARAM、VARIABLE、および ASCII 文 を指定することもできます。 ACE および PERFORM における関数 333 FUNCTION C 関数の呼出し レポート仕様ファイルの FORMAT セクションには、いつ ACE を実行するかを 決定する、以下の制御ブロックが 1 つ以上含まれます。 Q PAGE HEADER 制御ブロック Q PAGE TRAILER 制御ブロック Q FIRST PAGE HEADER 制御ブロック Q ON EVERY ROW 制御ブロック Q ON LAST ROW 制御ブロック Q BEFORE GROUP OF 制御ブロック Q AFTER GROUP OF 制御ブロック 各制御ブロックには、ACE が実行するアクションを示す 1 つ以上の文が含 まれます。ACE で使用できる文について詳しくは、第 4 章を参照してくだ さい。第 4 章に記載されている文の他にも、335 ページに示されている構 文を用いて、C 関数を使用できます。 334 IBM Informix SQL リファレンス マニュアル CALL (ACE において ) CALL (ACE において ) CALL 文 ) userfunc CALL expression CALL userfunc expression オプションのキーワードで、C 関数が値を戻さない場合に必須です。 CALL キーワードを省略する場合は、userfunc が値を戻す必要があ ります。 DEFINE セクションで事前に宣言済みの C 関数の名前です。 カンマで分離された、1 から 10 までの式です。 使用法 式には、以下の項目を含むことができます。 Q 数値または文字定数 Q 列名 Q ACE 変数 Q ACE パラメータ Q ACE 関数 ( 集計関数や日付型関数など ) Q 引用符付きストリング Q 算術および論理演算子 Q キーワード ACE 文は、キーワードおよび式から構成されます。定数を使用できる任意の 場所で C 関数を使用できます。このようにして関数を使用する場合、CALL キーワードを使用する必要はありませんが、必ず関数が値を戻すようにし てください。 IDS Informix Dynamic Server に接続している場合、タイプが VARCHAR、TEXT、 または BYTE の列を渡すことができます。ただし、TEXT または BYTE の値を C 関数から戻すことはできません。♦ ACE および PERFORM における関数 335 CALL (ACE において ) 次の制御ブロックでは、C 関数 stat を呼び出し、order_num の注文に対応 する行のデータの統計を計算しています。 after group of order_num call stat(order_num) 次の制御ブロックでは、注文番号と、各注文の合計額とその注文の未処理 期間の対応付けを示す値を印刷します。ここでは、対数を計算する C 関数 を呼び出します。 on every row print order_num, logarithm((total of total_price)/(today - order_date)) 次の制御ブロックは、363 ページの『ACE 例 1』から取り上げています。レ ポートの最初のページの先頭に、システム日時を印刷します。関数 to_unix は、文字列引き数を UNIX に送信します。 first page header call to_unix("date") レポート仕様のコンパイル ACEPREP を使用して、呼出しを行わないレポートをコンパイルするのと同様 に、C 関数の呼出しを含むレポート仕様をコンパイルします。レポート仕 様ファイルを含むファイルに名前を付けるときは、.ace 拡張子を割り当て ます。例えば、ファイル名を specfile.ace とします。このファイルを用い て ACEPREP を呼び出すには、コマンド行で次の文を入力します。 saceprep specfilefs saceprep コマンドでレポート仕様ファイルを表すときは、.ace 拡張子の 指定はオプションです。 レポート仕様ファイルのコンパイルについて詳しくは、『第 4 章 ACE レ ポート ライタ』を参照してください。 336 IBM Informix SQL リファレンス マニュアル PERFORM からの C 関数の呼出し PERFORM からの C 関数の呼出し PERFORM フォーム仕様ファイルの一般形式には、次の 5 つのセクションが あります。 Q DATABASE セクション ( 必須 ) Q SCREEN セクション ( 必須 ) Q TABLES セクション ( 必須 ) Q ATTRIBUTES セクション ( 必須 ) Q INSTRUCTIONS セクション ( オプション ) フォーム仕様ファイルの INSTRUCTIONS セクションの制御ブロックで C 関数 を使用できます。INSTRUCTIONS セクション内の関数呼出しと一緒に ON BEGINNING および ON ENDING 制御ブロックを使用することもできます。 INSTRUCTIONS セクションにおける C 関数の呼出し 制御ブロックで、式を使用できる場所、または関数を単体で使用できる場 所で、C 関数を使用できます。式または単純な関数呼出しには CALL 文を使 用します。CALL 文の構文については、338 ページに記載されています。 ACE および PERFORM における関数 337 CALL (PERFORM において ) CALL (PERFORM において ) C 関数を実行したり、C 関数からの値を検索したりするには、PERFORM の CALL 文を使用します。 CALL 文 ) userfunc CALL expression CALL userfunc expression IDS オプションのキーワードで、C 関数が値を戻さない場合に必須です。 CALL キーワードを省略する場合は、userfunc が値を戻す必要があ ります。 C 関数を PERFORM 仕様で参照するときの名前です。 1 から 10 までの式のリストです。式の定義には、次のものが使用さ れます。 ■ フィールド タグ ■ 定数値 ■ 集合値 ■ C 関数 ■ キーワード TODAY ■ キーワード CURRENT ■ 算術演算子 +、-、*、および / を使用して結合された、上記項目 の組み合わせ。 Informix Dynamic Server に接続している場合、タイプが VARCHAR、TEXT、 または BYTE の列を渡すことができます。ただし、TEXT または BYTE の値を C 関数から戻すことはできません。♦ 338 IBM Informix SQL リファレンス マニュアル CALL (PERFORM において ) 次の例は、C 関数の呼出しのメソッドをいくつか表しています。 after editadd of proj_num let f001 = userfunc(f002) fs before editupdate of paid_date if boolfunc(f003) then let f004 = 15 else let f004 = 10 after add update remove of customer call userfunc() ON BEGINNING および ON ENDING 制御ブロック ON BEGINNING および ON ENDING 制御ファイルは C 関数への呼出しを用いて のみ使用できます。これらの制御ブロックをフォーム仕様ファイルの INSTRUCTIONS セクションで指定します。ON BEGINNING は PERFORM を呼び出し た直後に実行され、ON ENDING は EXIT コマンドの直後に実行されます。 例えば、次のような処理を行うときに ON BEGINNING を使用します。 Q 指示を与える Q 特殊なパスワードを要求する Q トランザクション レコードのバッチを保持するための一時的な作 業ファイルを初期化する 例えば、次のような処理を行うときに ON ENDING を使用します。 Q PERFORM セッションが終了した直後に、セッション中にデータベー スで行われた変更を集計する計算を実行する Q 追加されたレコードの要約を印刷する Q 作業ファイルを削除する INSTRUCTIONS セクションに複数の ON BEGINNING または ON ENDING 制御ブロッ クを含めることができます。ただし、各制御ブロックには CALL 文を 1 つ だけ組み込めます。 ACE および PERFORM における関数 339 ON BEGINNING および ON ENDING ON BEGINNING および ON ENDING ON BEGINNING を指定すると、PERFORM を呼び出した直後に C 関数呼出しが実 行されます。ON ENDING を指定すると、EXIT コマンドの直後に C 関数呼出 しが実行されます。 ON BEGINNING ブロック ON BEGINNING CALL userfunc ( ) expression ON ENDING ブロック ON ENDING CALL userfunc ) ( expression ON BEGINNING ON ENDING CALL userfunc expression ON BEGINNING 制御ブロックを開始する必須キーワードです。 ON ENDING 制御ブロックを開始する必須キーワードです。 必須キーワードです。 C 関数を PERFORM 仕様で参照するときの名前です。 1 から 10 までの式のリストです。式の定義には、以下のいずれ かの項目が使用されます。 ■ フィールド タグ ■ 定数値 ■ 集合値 ■ C 関数 ■ キーワード TODAY ■ キーワード CURRENT ■ 算術演算子 +、-、*、および / を使用して結合された、上記 項目の組み合わせ。 340 IBM Informix SQL リファレンス マニュアル C プログラムを書く フォーム仕様のコンパイル Use FORMBUILD を使用すると、C 関数への呼出しがないレポートをコンパイ ルするのと同様に、C 関数への呼出しを含むフォーム仕様ファイルをコン パイルできます。フォーム仕様ファイルに名前を付けるときは、.per 拡張 子を割り当てます。例えば、ファイル名を specfile.per とします。この ファイルを用いて FORMBUILD を呼び出すには、コマンド行で次の文を入力 します。 sformbld specfile sformbld コマンドでフォーム仕様ファイルを表すときは、.per 拡張子の 指定はオプションです。 フォーム仕様ファイルのコンパイルについて詳しくは、『第 2 章 FORMBUILD トランザクション フォーム生成プログラム』を参照してくださ い。 C プログラムを書く C プログラムでは、C 関数と同様、適切なヘッダ ファイルと構造の宣言を 組み込む必要があります。このセクションでは、以下のトピックについて 説明しています。 Q C プログラムを編成する Q C プログラムに値を渡す Q ACE および PERFORM に値を戻す ACE および PERFORM における関数 341 C プログラムを編成する C プログラムを編成する 関数を組み込んだ ACE または PERFORM のカスタム バージョンを作成するに は、適切な宣言を含む C プログラムを書く必要があります。プログラムに 1 つ以上の関数を含めることができます。また、プログラムの内部で使用 する他の関数を定義することができます。次の例は、2 つのユーザ定義関 数を含む C プログラムの一般構造を示します。 #include "ctools.h" /* add other includes as desired */ valueptr funct1(); valueptr funct2(); struct ufunc userfuncs[] = { "myfunct1", funct1, "myfunct2", funct2, 0,0 }; /* add other global declarations */ valueptr funct1() { . . . /* funct1 takes no arguments and returns a character string . . . strreturn(s, len); } valueptr funct2(arg1, arg2) valueptr arg1, arg2; { . . . /* funct2 takes two arguments and returns no value */ . . . } 342 IBM Informix SQL リファレンス マニュアル */ C プログラムを編成する 次のステップでは、C プログラムの編成方法について説明します。 1. ctools.h ヘッダ ファイルをプログラムの先頭に置きます。 #include "ctools.h" アプリケーションに、math.h および stdio.h など、その他のヘッ ダ ファイルを組み込みたい場合があります。INFORMIX- ESQL/C を使 用している場合は、sqlca.h およびその他のヘッダ ファイルを組 み込むことができます。 ctools.h ヘッダ ファイルを組み込むと、次のヘッダ ファイルが 自動的に組み込まれます。 2. ■ value.h ■ datetime.h ■ sqltypes.h 必要な ufunc 構造の配列を初期化する前に、関数を宣言する必要 があります。次の例に示されるように、ctools.h には、value 構 造の定義と構造へのポインタが含まれています。 typedef struct value *valueptr; typedef struct value *acevalue; typedef struct value *perfvalue; 最後の 2 つのポインタは、前のバージョンの ACE および PERFORM と互換性を保つために組み込まれています。関数のタイプはすべ て、valueptr でなければなりません。funct1( ) および funct2(arg1, arg2) という関数の場合、次のように宣言します。 valueptr funct1(); valueptr funct2(); ACE および PERFORM における関数 343 C 関数に値を渡す 3. userfuncs[ ] の宣言および初期化の構造を、プログラムの次のセ クションに作成します。この構造は、実行時に ACE および PERFORM から関数を呼び出すために必要となります。 struct ufunc userfuncs[] = { "myfunct1", funct1, "myfunct2", funct2, 0,0 }; 引用符で囲まれた文字列「myfunct1」 および「myfunct2」 は、仕 様ファイルで使われている関数名にする必要があります。funct1 および funct2 ( それぞれ「myfunct1」 および「myfunct2」 に対 応 ) は、C プログラム内で定義されている関数へのポインタです。 C 関数では、仕様ファイルで使用する名前と同じにする必要はない ことに注意してください。userfuncs 配列は、これら 2 つの名前 を関連付けるために使用されます。配列の最後に、終了を表す 2 つのゼロが必要です。 4. C プログラムの最後のセクションは、関数のコーディングです。前 述の通り、ACE または PERFORM で呼び出す関数はすべて、value 構 造へのポインタを戻すよう宣言する必要があります。また、関数の すべての引き数をタイプ valueptr として宣言する必要がありま す。 タイプ valueptr の値を戻すために、いくつかのマクロを組み込ん で使用できます。これらのマクロやその他の変換ルーチンについて は、344 ページの『C 関数に値を渡す』で記載されています。 C 関数に値を渡す ctools.h ヘッダ ファイルを組み込むことにより、ACE および PERFORM から 値を C 関数に渡すことができます。値を C 関数に渡す場合、C 関数が、渡 されるデータの型を判別できるようにする必要があります。C 関数には、 データ型を判別する 2 つの方法があります。 Q データ型を検査する Q データ型を変換する 344 IBM Informix SQL リファレンス マニュアル C 関数に値を渡す データ型を検査する 以下の定義を用いて、C 関数に渡されるデータ型を検査することができま す。例えば、C 関数に渡されるパラメータが arg である場合、以下の定義 を用いて、arg のデータ型を検出し、arg の値を抽出することができます。 定義 戻り値 arg->v_charp 文字列へのポインタ arg->v_len 文字列の長さ arg->v_int 整数 (integer) 値 arg->v_long 長整数 (long) 値 arg->v_float 実数 (float) 値 arg->v_double 実数 (double) 値 arg->v_decimal 10 進数 (decimal)、金額 (money)、日時 (datetime)、また は時間隔 (interval) 値 arg->v_type データ型 arg->v_ind NULL 標識 arg->v_prec 日時 / 時間隔の修飾子 sqltypes.h で定義されている一連の整定数に対する arg->v_type を確認 することにより、arg のデータ型を判別することができます。 v_type SQL 型 C 型 SQLCHAR CHAR charstringfixchar SQLSMINT SMALLINT short SQLINT INTEGER long SQLFLOAT FLOAT double SQLSMFLOAT SMALLFLOAT float SQLDECIMAL DECIMAL dec_t (1 / 2) ACE および PERFORM における関数 345 C 関数に値を渡す v_type SQL 型 C 型 SQLSERIAL SERIAL long SQLDATE DATE long SQLMONEY MONEY dec_t SQLDTIME DATETIME dtime_t SQLINTERVAL INTERVAL intrvl_t (2 / 2) arg->v_type が SQLCHAR の場合、arg->v_charp の文字列へのポインタを 利用でき、文字列の文字数 ( 長さ ) は、arg->v_len の文字数を利用でき ます。文字列はヌル終了にはなりません。 arg の値が NULL の場合は arg->v_ind は負の値に設定され、それ以外の 場合は arg->v_ind はゼロに設定されます。 IDS Informix Dynamic Server に接続している場合、VARCHAR データ型も使用で きます。sqltypes.h の次のものについて、arg->v_type を確認してくださ い。 v_type SQL 型 C 型 SQLVCHAR VARCHAR char TEXT または BYTE の値を渡すことはできません。♦ 346 IBM Informix SQL リファレンス マニュアル C 関数に値を渡す データ型を変換する ctools.h ヘッダ ファイルを使用すると、ACE または PERFORM から渡される パラメータの型を、別の方法で検査することができます。次の表にリスト されているいくつかの関数を使用すると、指定した C データ型に value 構 造へのポインタとして渡されるパラメータを強制的に変換することができ ます。 関数 戻り値 toint int tolong long tofloat double todouble double todate long todecimal dec_t todatetime dtime_t tointerval intrvl_t これらの関数はすべて、value 型の構造へのポインタを必要とし、指定さ れた型の値を戻します。todecimal、todatetime、および tointerval 関数 はそれぞれ、次の表で示されるように、2 番目の引き数を必要とします。 関数 2 番目の引き数 todecimal dec_t 構造へのポインタ todatetime dtime_t 構造へのポインタ tointerval intrvl_t 構造へのポインタ 型の変換に失敗した場合は、グローバル整数 toerrno は負の値に設定され ます。変換に成功した場合は、toerrno はゼロに設定されます。 ACE および PERFORM における関数 347 ACE および PERFORM に値を戻す ACE および PERFORM に値を戻す 関数から ACE または PERFORM に値を戻す場合、value 型の構造の値を挿入 し、その構造へのポインタを戻す必要があります。ctools.h ヘッダ ファ イルには、それらの手順を実行してくれる以下のマクロが含まれています。 マクロ 戻り値 intreturn(i) 整数 i を戻す lngreturn(l) 長整数 1 を戻す floreturn(f) 実数 f を戻す dubreturn(d) 実数 d を戻す strreturn(s,c) 長さ c の文字列 s を戻す (short) decreturn(d) 10 進数 d を戻す ( 型 dec_t) dtimereturn(d) 日時 d を戻す ( 型 dtime_t) invreturn(i) 時間隔 i を戻す ( 型 intrvl_t) エラー状況を戻したい場合であっても、適切なマクロを使用するようにし てください。単に return のみを使用しないでください。 strreturn(s,c) は文字列 s へのポインタを戻すため、s を静的変数または 外部変数として定義することに注意してください。 IDS Informix Dynamic Server に接続している場合、次のマクロを使用して VARCHAR 値を戻すことができます。 マクロ 戻り値 vcharreturn 長さ c の文字列 s を戻す (short) (s,c) TEXT または BYTE の値を戻すことはできません。♦ 348 IBM Informix SQL リファレンス マニュアル PEFORM ライブラリ関数 PEFORM ライブラリ関数 次の 5 つの C 関数は、C 関数で PERFORM 画面を制御するために使用され ます。 関数 目的 pf_gettype() 表示フィールドの型および長さを判別する pf_getval() 表示フィールドの値を読み取る pf_putval() 表示フィールドへ値を書き込む pf_nxfield() カーソルを指定されたフィールドへ移動する pf_msg() 画面の下部にメッセージを表示する これらの関数については、次のページ以降で詳細を記載しています。これ らの関数が正常に実行されると、0 が戻されます。失敗すると、ゼロ以外 のエラー コードが戻されます。 ACE および PERFORM における関数 349 PF_GETTYPE() PF_GETTYPE() pf_gettype() 関数は、 指定されたフィールド タグの表示フィールドの SQL データ型と長さを戻します。 pf_gettype( tagname, type, len) char * tagname; short * type, * len; tagname 表示フィールドを指定するフィールド タグを含む文字列です。 type 表示フィールド tagname のデータ型を示す短整数へのポインタ です。 len PERFORM 画面の表示フィールド tagname の長さである短整数へ のポインタです。 使用法 type のオプションは次の通りです。 型 SQL 型 SQLCHAR CHARACTER SQLSMINT SMALLINT SQLINT INTEGER SQLFLOAT FLOAT SQLSMFLOAT SMALLFLOAT SQLDECIMAL DECIMAL SQLSERIAL SERIAL SQLDATE DATE SQLMONEY MONEY SQLDTIME DATETIME SQLINTERVAL INTERVAL 350 IBM Informix SQL リファレンス マニュアル PF_GETTYPE() IDS Informix Dynamic Server に接続している場合、次のデータ型を指定する こともできます。 型 SQL 型 SQLVCHAR VARCHAR SQLTEXT TEXT SQLBYTE BYTE これらの型はすべて、sqltypes.h ヘッダ ファイルで定義されます。♦ 戻りコード 0 操作は正常に終了し、表示フィールドが見つかりました。 3759 フォームに該当するフィールド タグが見つかりません。 ACE および PERFORM における関数 351 PF_GETVAL() PF_GETVAL() 表示フィールドが文字フィールドの場合、pf_getval() は、表示フィール ドの値と、値の長さを取得します。 pf_getval( tagname, retvalue, valtype, vallen) char * tagname, * retvalue; short valtype, vallen; tagname 表示フィールドを指定するフィールド タグを含む文字列です。 retvalue pf_getval() から戻される string、short、long、float、 double、decimal、datetime、または interval 構造へのポイン タです。 valtype retvalue が指す値の型を示す短整数です。 vallen valtype が CCHARTYPE の場合に、retvalue で戻される文字列の 長さ (終了の NULL バイト用に 1 を加える) を示す短整数です。 valtype がその他の値の場合、vallen は無視されます。 使用法 parameter retvalue は値を含む変数へのポインタでなければなりません。 よくあるプログラミング エラーとして、変数そのものが使用されるケース があります。その結果、実行時システム エラーが発生し、コンパイラに よって検出されません。 valtype のオプションは次の通りです。 valtype SQL 型 CCHARTYPE CFIXCHARTYPE CHARACTER CSTRINGTYPE CINTTYPE INTEGER CSHORTTYPE SMALLINT (1 / 2) 352 IBM Informix SQL リファレンス マニュアル PF_GETVAL() valtype SQL 型 CLONGTYPE INTEGER、DATE、SERIAL CFLOATTYPE SMALLFLOAT CDOUBLETYPE FLOAT CDECIMALTYPE DECIMAL、MONEY CDATETIME DATETIME CINTERVAL INTERVAL (2 / 2) パラメータ valtype で指定されている値により、retvalue の型が決定し ます。パラメータ valtype は表示フィールドのデータ型と正確に一致する 必要はありませんが、PERFORM で正しく型の変換を行えるように、どちらも 数値か文字列の 1 文字でなければなりません。 valtype が数値型フィールドで、表示フィールドが文字フィールドの場 合、 INFORMIX- SQL は valtype のデータ型の変換を試みます。変換に失敗した 場合、retvalue はゼロを指します。valtype が文字で、表示フィールドが 数値型フィールドの場合、文字列への変換が行われます。文字列が vallen で指定されている長さに合わない場合は、NULL 終端子が付き、長さが切り 捨てられた文字列が retvalue に入ります。 IDS Informix Dynamic Server に接続している場合、valtype に次のデータ型を 指定することもできます。 valtype SQL 型 CVCHARTYPE SQLVCHAR CLOCATORTYPE SQLTEXT SQLBYTES VARCHAR 値の場合、vallen は、値バッファが保持できるバイト数を含んで いなければなりません。TEXT および BYTE 値の場合は、retvalue が loc_t 構造を指すようにしていると、PERFORM は loc_t の内部ロケータを構造に コピーします。♦ ACE および PERFORM における関数 353 PF_GETVAL() 戻りコード 0 操作は正常に終了し、表示フィールドが見つかりました。 3700 ユーザにフィールドを読み取る許可がありません。 3759 フォームに該当するフィールド タグが見つかりません。 354 IBM Informix SQL リファレンス マニュアル PF_PUTVAL () PF_PUTVAL () pf_putval() 関数は、PERFORM 画面の指定された表示フィールドに値を入れ ます。ユーザは、必要な出力先フィールドで、更新、データの入力を行う 許可が必要です。 pf_putval( pvalue, valtype, tagname) char * pvalue; short valtype; char * tagname; pvalue tagname で指定されている表示フィールドに挿入される string、 short、integer、long、float、double、decimal、datetime、 または interval 構造へのポインタです。 valtype pvalue が指す値の型を示す短整数です。 tagname 表示フィールドを指定するフィールド タグを含む文字列です。 表示フィールドには、pvalue によって示される情報が入りま す。 使用法 pvalue パラメータは値を含む変数へのポインタでなければなりません。よ くあるプログラミング エラーとして、変数そのものが使用されるケースが あります。その結果、実行時システム エラーが発生し、コンパイラによっ て検出されません。 valtype のオプションは次の通りです。 valtype SQL 型 CCHARTYPE CFIXCHARTYPE CHARACTER CSTRINGTYPE CINTTYPE INTEGER CSHORTTYPE SMALLINT (1 / 2) ACE および PERFORM における関数 355 PF_PUTVAL () valtype SQL 型 CLONGTYPE INTEGER、DATE CFLOATTYPE SMALLFLOAT CDOUBLETYPE FLOAT CDECIMALTYPE DECIMAL、MONEY CDATETIME DATETIME CINTERVAL INTERVAL (2 / 2) valtype が文字型のいずれかで、表示フィールドが数値型フィールドであ る場合、PERFORM は valtype の変換を試みます。変換に失敗した場合、 PERFORM は表示フィールドに 0 を入力します。 指定された型が数値型フィールドで、表示フィールドが文字型である場合、 文字列への変換が行われます。文字列が表示フィールドに合わない場合は、 PERFORM は表示フィールドを切り捨てます。 数値が数値型表示フィールドに合わない場合は、PERFORM はフィールドをア スタリスクで埋めます。 IDS Informix Dynamic Server に接続している場合、valtype に次のデータ型を 指定することもできます。 valtype SQL 型 CVCHARTYPE SQLVCHAR CLOCATORTYPE SQLTEXT SQLBYTES この関数を、CHARACTER 値と一緒に使用するのと同じように、VARCHAR 値と 一緒に使用してください。 356 IBM Informix SQL リファレンス マニュアル PF_PUTVAL () この関数を TEXT または BYTE データ型と一緒に使用する場合、pvalue は loc_t 構造を指していなければなりません。PERFORM では、loc_t 構造に、 tagname に対応する loc_t 構造と正確に一致する情報が含まれている必要 があります。このため、ロケータのコピーに対して変更を行わないように してください。PERFORM が一時ファイルに格納している、TEXT または BYTE データ型の実際の値を変更するのに、ロケータを使用できます。♦ 戻りコード 0 操作は正常に終了し、表示フィールドが見つかりました。 3710 ユーザにフィールドを更新する許可がありません。 3720 ユーザにフィールドに追加する許可がありません。 3756 表示フィールドが現在の表にありません。 3759 フォームに該当するフィールド タグが見つかりません。 ACE および PERFORM における関数 357 PF_NXFIELD () PF_NXFIELD () pf_nxfield() 関数は、新規レコードを追加したり、古いレコードを更新し たりする場合に、PERFORM 画面上のカーソルの配置を制御します。 pf_nxfield( tagname) char * tagname; tagname カーソルが移動する PERFORM 画面上の表示フィールドのフィー ルド タグを含む文字列です。 使用法 pf_nxfield を呼び出すと、次のような状態が起こります。 Q 表の BEFORE EDITADD または BEFORE EDITUPDATE に呼び出されると、 最初に編集する表示フィールドを制御します。 Q 表の AFTER EDITADD または AFTER EDITUPDATE に呼び出されると、 PERFORM はレコードを更新せず、これから編集する指定された表示 フィールド tagname にカーソルを移動します。 Q 列の EDITADD または EDITUPDATE の BEFORE または AFTER に呼び出 されると、編集する次のフィールドを決定します。 Q AFTER ADD または AFTER UPDATE に呼び出されると、レコードはすで に更新されているため、操作不能です。 tagname が EXITNOW と同じ値に設定されると、pf_nxfield は、追加または 更新中の行において、追加、更新操作を即座に終了します。このオプショ ンは、 「Esc キー」を押してトランザクションを完了するのと同じことです。 358 IBM Informix SQL リファレンス マニュアル PF_NXFIELD () 戻りコード 0 操作は正常に終了し、表示フィールドが見つかりました。 3710 ユーザにフィールドを更新する許可がありません。 3720 ユーザにフィールドに追加する許可がありません。 3755 この表示フィールドは表示専用です。 3756 表示フィールドが現在の表にありません。 3759 フォームに該当するフィールド タグが見つかりません。 ACE および PERFORM における関数 359 PF_MSG() PF_MSG() pf_msg() 関数は、画面の下部にメッセージを表示します。 pf_msg( msgstr, reverseflag, bellflag) char * msgstr; short reverseflag, bellflag; msgstr 画面の下部に表示するメッセージを含む文字列です。 reverseflag メッセージを反転表示するかどうかを示す短整数です。0 は 標準表示で、1 は反転表示を示します。 bellflag メッセージを表示するときに端末のベルを鳴らすかどうかを 示す短整数です。0 はベルを鳴らさず、1 はベルを鳴らすこ とを示します。 使用法 いくつかの条件が並行して起きたときに、pf_msg の呼出しが同時にいくつ か起動された場合、最後に表示するメッセージのみがユーザに見えます。 標準表示においては、msgstr は 80 文字まで表示できます。反転表示にお いては、最大文字数は 80 文字よりも少なくなります。これは、モニタで 反転表示制御文字として 1 つ以上のスペースを必要とするためです。 360 IBM Informix SQL リファレンス マニュアル レポートとフォームのコンパイル、リンク、および実行 レポートとフォームのコンパイル、リンク、お よび実行 C 関数を含むファイルを作成したら、ファイルをコンパイルし、必要なラ イブラリ関数にリンクして、sacego または sperform のカスタム バージョ ンを作成します。 INFORMIX- SQL では、コンパイルおよびリンク処理を容易に行うためのプロ グラムを提供しています。特殊な ACE または PERFORM ライブラリの名前や、 プログラムと関連するインクルード ファイルの場所を知らなくても、cace および cperf プログラムがこれらのファイルを自動的に組み込んでくれま す。 cace および cperf プログラムの構文 cace -pm cprogram.c cperf -m cprogram.ec cace cperf cprogram .C .EC -m -pm -o custprog other-C-list -o custprog other-C- sacego のカスタム バージョンを作成するプログラムです。 sperform のカスタム バージョンを作成するプログラムです。 前のセクションで説明したように、使用する関数を含む C プログ ラムの名前です。 cprogram に C 文のみが含まれる場合に使用する拡張子です。 INFORMIX- ESQL/C および cprogram に INFORMIX- ESQL/C 文が含ま れる場合に使用する拡張子です。 実モード アプリケーションのみをコンパイル - ミディアム モデ ルのみ 保護モード アプリケーションのみを作成 - ラージ モデルのみ 出力ファイル名を指定します。 sacego または sperform のカスタム バージョンの名前です。 標準 cc プログラムに渡すその他の引き数です。 ACE および PERFORM における関数 361 cace および cperf の使用 cace および cperf の使用 複数の C プログラムを同時にコンパイルできます。 sacego または sperform のカスタム バージョンをコンパイルした後、次の コマンド行を用いて、レポートやフォームを実行できます。 custprog specfile ここで custprog は、cace または cperf コマンドの出力ファイルであり、 specfile は、ACEPREP または FORMBUILD を使用してコンパイルしたレポー トまたはフォーム仕様ファイルの名前です。sacego を使用する場合、.arc 接頭部を specfile に指定し、sperform を使用する場合、.frm 接頭部を specfile に指定します。 例 このセクションは、ACE アプリケーションおよび PERFORM アプリケーション の両方の例を含んでいます。同様に ACE C 関数を PERFORM と一緒に使用す ることもできます。これらのサンプル プログラムは、デモンストレーショ ン データベースと一緒に配布されています。 362 IBM Informix SQL リファレンス マニュアル ACE 例 1 ACE 例 1 次の仕様ファイルでは、ユーザ関数を呼び出して、システム コマンドを実 行しています。デモンストレーション データベース内のプログラムの名前 は a_ex1.ace です。 database stores end define function to_unix end select * from customer end format first page header call to_unix("date") skip 1 line on every row print customer_num, 3 spaces, fname clipped, 1 space, lname end ACE および PERFORM における関数 363 ACE 例 1 関数 to_unix.c は次の通りです。 #include "ctools.h" valueptr to_unix(); struct ufunc userfuncs[] = { "to_unix", to_unix, 0,0 }; valueptr to_unix(string) valueptr string; { char savearea[80]; /*copy bytes from string to savearea*/ bycopy(string->v_charp, savearea, string->v_len); /*put null on end*/ savearea[string->v_len]=0; system(savearea); } この例を実行するには、次の手順に従います。 1. 次のコマンドを実行して、レポートをコンパイルします。 saceprep a_ex1.ace 2. 次のコマンドを実行して、sacego のカスタム バージョンを作成し ます。 cace to_unix.c -o output_file ここで output_file は、sacego のカスタム バージョンを含む ファイルの名前です。 3. 次のコマンドを実行して、プログラムを実行します。 output_file a_ex1.ace ここで output_file は、sacego のカスタム バージョンを含む ファイルの名前です。 364 IBM Informix SQL リファレンス マニュアル ACE 例 2 ACE 例 2 次の ACE プログラムでは、stores7 デモンストレーション データベースの すべての注文の合計額の平均と標準の偏差を計算しています。デモンスト レーション データベース内のプログラムの名前は a_ex2.ace です。 database stores end define function decsqroot end select o.order_num, sum(total_price) t_cost from orders o, items i where o.order_num = i.order_num group by o.order_num end format on every row print order_num, t_cost on last row skip 1 line print "The average total order is : ", (total of t_cost)/count using "$#####.##" print "Standard deviation is : ", decsqroot((total of t_cost*t_cost)/count - ((total of t_cost)/count)**2) using "$#####.##" end ACE および PERFORM における関数 365 ACE 例 2 関数 decsqrt.c は次の通りです。 #include "ctools.h" #include <math.h> valueptr squareroot(); struct ufunc userfuncs[] = { "decsqroot", squareroot, 0, 0 }; valueptr squareroot(pnum) valueptr pnum; { double dub; dec_t dec; /* convert decimal to double */ dectodbl(&pnum->v_decimal, &dub); dub = sqrt(dub); /* convert double to decimal */ deccvdbl(dub, &dec); /* return decimal */ decreturn(dec); } この例を実行するには、次の手順に従います。 1. 次のコマンドを実行して、レポートをコンパイルします。 saceprep a_ex2.ace 2. 次のコマンドを実行して、sacego のカスタム バージョンを作成し ます。 cace decsqrt.c -o output_file -lm ここで output_file は、sacego のカスタム バージョンを含む ファイルの名前です。算術ライブラリを組み込むには、-lm を指定 します。 3. 次のコマンドを実行して、プログラムを実行します。 output_file a_ex2.ace ここで output_file は、sacego のカスタム バージョンを含む ファイルの名前です。 366 IBM Informix SQL リファレンス マニュアル PERFORM 例 PERFORM 例 この例では、UNIX から次のデータにアクセスし、これらを表示していま す。 Q 現行のユーザ ログイン Q ユーザがデータを入力した時刻 サンプル プログラムでは、次にフォーム上にデータを表示します。 次のフォーム仕様ファイルでは customer 表を使用して、新規の顧客を stores7 データベースに入力しています。フォームには、入力従業員 (Entry Clerk) の名前と入力時刻 (Time Entered) を表示する 2 つの表示 専用 フィールドもあります。( 入力従業員の名前と入力時刻をデータベー スに組み込むには、表示専用フィールドを使用せずに、それらの列を customer 表に追加する必要があります。) カーソルは、ATTRIBUTES セクションにリストされているフィールドの順序 で、顧客データを左上から移動します。Telephone フィールドの後、カー ソルは Owner Name フィールドに移動します。入力従業員が処理を完了して 「Esc キー」 を押すと、PERFORM は C 関数 stamptime() を呼び出します。 ACE および PERFORM における関数 367 PERFORM 例 デモンストレーション データベース内のフォームは p_ex1.per です。 stamp.c には関数 stamptime() が含まれます。 database stores7 screen { ************************************************************** * Customer Form * *============================================================* * Number :[f000 ] * * Owner Name :[f001 ][f002 ] * * Company :[f003 ] * * Address :[f004 ] * * [f005 ] * * City :[f006 ] State:[a0] Zipcode:[f007 ] * * Telephone :[f008 ] * ************************************************************** * Entry Clerk :[f009 ] Time Entered :[f010 ] * ************************************************************** } tables customer attributes f000 = customer.customer_num, noentry; f001 = customer.fname; f002 = customer.lname; f003 = customer.company; f004 = customer.address1; f005 = customer.address2; f006 = customer.city; a0 = customer.state, default="CA", upshift, autonext; f007 = customer.zipcode, autonext; f008 = customer.phone; f009 = displayonly type char; f010 = displayonly type char; instructions after editadd editupdate of phone nextfield = f001 after editadd editupdate of customer call stamptime() end 368 IBM Informix SQL リファレンス マニュアル PERFORM 例 入力従業員が処理を完了して 「Esc キー」 を押したときにフォーム仕様 ファイルによって呼び出される関数 stamptime() が続きます。前のセク ションで説明された関数 pf_putval() に加えて、stamptime() ではシステ ム関数 time()、localtime()、および getlogin() を使用しています。注文 を取った人のログイン名は、文字列関数 getlogin() から取得され、画面 の Entry Clerk フィールドに表示されます。 システム時刻は時と分に分解され、画面の Time Entered フィールドに表 示される文字列変数に再構成されます。その後、PERFORM は画面のデータを 使用して、レコードを customer 表に書き込みます。 #include <stdio.h> #include <time.h> #include "ctools.h" valueptr stamptime(); struct ufunc userfuncs[] = { "stamptime", stamptime, 0,0 }; valueptr stamptime() { long seconds, time(); char usertime[10], *getlogin(); struct tm *timerec, *localtime(); seconds = time((long *) 0); timerec = localtime(&seconds); pf_putval(getlogin(), CCHARTYPE, "f009"); sprintf(usertime, "%02d:%02d", timerec->tm_hour, timerec->tm_min); pf_putval(usertime, CCHARTYPE, "f010"); } ACE および PERFORM における関数 369 PERFORM 例 この例を実行するには、次の手順に従います。 1. 次のコマンドを実行して、フォームをコンパイルします。 sformbld p_ex1.per 2. 次のコマンドを実行して、sperform のカスタム バージョンを作成 します。 cperf stamp.c -o output_file ここで output_file は、sperform のカスタム バージョンを含む ファイルの名前です。 3. 次のコマンドを実行して、プログラムを実行します。 output_file p_ex1.frm ここで output_file は、sperform のカスタム バージョンを含む ファイルの名前です。 370 IBM Informix SQL リファレンス マニュアル 付録 デモンストレーション データベースおよび例 stores7 デモンストレーション データベースには、架空のビ ジネスに関する表のセットが含まれています。本書に記載され ているサンプル プログラムや、その他の Informix 製品の資料 にリストされているアプリケーション プログラムを使用して、 stores7 デモンストレーション データベースのデータにアク セスできます。stores7 デモンストレーション データベースは MODE ANSI ではありません。 stores7 データベースの表およびデータの説明については、 「Informix SQL ガイド : 参照」を参照してください。 この付録には、次のセクションが含まれています。 Q デモンストレーション データベースおよび例を作成す るための指示 Q 本書および「INFORMIX- SQL ユーザ ガイド」で使用さ れているフォームおよびレポートの例のリスト デモンストレーション データベースの 作成 デモンストレーション データベースおよび例を使用するため に、それらをコピーする必要があります。そのためには、まず データベースと例を保管するディレクトリを作成し、現在の作 業ディレクトリとします。次に、オペレーティング システム のコマンド行から、次のように入力します。 isqldemo A デモンストレーション データベースの作成 isqldemo プログラムにより、stores7 デモンストレーション データベー ス ファイルが現行ディレクトリに配置されます。また、サンプル レポー ト、サンプル フォーム、サンプル コマンド ファイルもすべて、現行ディ レクトリにコピーされます。 SE 現行ディレクトリの内容をリストすると、次のようなファイル名を参照で きます。(INFORMIX- SE サーバを使用している場合、サンプル データベース のファイルを含む stores.dbs という名前のディレクトリもあります。 ) ♦ c_index.sql sample.frm mail2.ace ex9.sql c_custom.sql clist1.ace mail2.arc ex10.sql c_items.sql clist2.arc mail3.ace ex11.sql c_orders.sql clist2.ace mail3.arc ex12.sql c_manuf.sql clist2.arc ex1.sql ex13.sql c_state.sql ord1.ace ex2.sql ex14.sql c_stock.sql ord1.arc ex3.sql ex15.sql c_stores.sql ord2.ace ex4.sql ex16.sql customer.per ord2.arc ex5.sql ex17.sql customer.frm ord3.ace ex6.sql ex18.sql orderform.per ord3.arc ex7.sql ex19.sql orderform.frm maill.ace ex8.sql sample.per mail1.arc 本書の例には記載されていない、その他のフォーム、レポート、コマンド ファイルも含まれています。デモンストレーション データベースおよび例 について学んだ後に、さらに学習できるよう、これらのファイルが提供さ れています。 372 IBM Informix SQL リファレンス マニュアル デモンストレーション データベースの復元 デモンストレーション データベースの復元 デモンストレーション データベースのコピーで作業している際に、変更を 行うことにより、画面に本書の例のようには表示されなくなることがあり ます。これは、stores7 デモンストレーション データベースに莫大な新規 情報を入力したり、データベースの情報を削除したり、または表、ファー ム、レポート、コマンド ファイルの構成が大幅に変更された場合などに起 こります。 isqldemo コマンドを使用してデータベースを再作成することにより、デモ ンストレーション データベースを ( 例のベースとなっている ) 元の状態 に復元することができます。 例えば、新しい章に移るたびに、デモンストレーション データベースを新 しくコピーすることができます。デモンストレーション データベースを構 成しているファイルは、そのオリジナルに変更を加えることができないよ う、保護されています。 デモンストレーション データベースおよび例 373 customer 仕様 サンプル PERFORM フォーム仕様 このセクションでは、ソフトウェアに組み込まれているすべてのサンプル フォーム仕様の一覧を提供しています。 customer 仕様 database stores7 screen { _ CUSTOMERS Customer Number: [f000 Company : First Name: [f001 [f002 Address : [f004 [f005 City : [f006 Telephone : [f008 ] ] Last Name: ] [f003 ] ] ] ] State : [a0] Zip : [f007 ] ] } end tables customer attributes f000 f001 f002 f003 f004 f005 f006 a0 = = = = = = = = customer_num; company, reverse; fname, comments = "Please enter first name if available"; lname; address1; address2; city; state, upshift, autonext, include = ("CA", "OR", "NV", "WA"); comments = "Legal states are CA, OR, NV, or WA"; f007 = zipcode, autonext; f008 = phone, picture = "###-###-####XXXXXX"; end 374 IBM Informix SQL リファレンス マニュアル orderform 仕様 orderform 仕様 database stores7 screen { =============================================================================== CUSTOMER INFORMATION: Customer Number: [c1 ] Telephone: [c10 ] Company: [c4 ] First Name: [c2 ] Last Name: [c3 ] Address: [c5 ] [c6 ] City: [c7 ] State: [c8] Zip: [c9 ] =============================================================================== ORDER INFORMATION: Order Number: [o11 ] Order Date: [o12 ] Stock Number: [i13 ]Manufacturer: [i16] [manu_name ] Quantity: [i18 ] Total Price: [i19 ] SHIPPING INFORMATION: Customer P.O.: [o20 ] Ship Date: [o21 } ] Date Paid: [o22 ] end tables customer orders items manufact attributes c1 = *customer.customer_num = orders.customer_num; c2 = fname, comments = "Please enter initial if available "; c3 = lname; c4 = company; c5 = address1; c6 = address2; c7 = city; c8 = state, upshift, autonext, include = ("CA","OR","NV","WA"); c9 = zipcode; c10 = phone, picture = "###-###-####x#####"; o11 = *orders.order_num = items.order_num; o12 = order_date, default = today; i13 = items.stock_num; i16 = items.manu_code , lookup manu_name = manufact.manu_name, joining *manufact.manu_code, upshift; i18 i19 o20 o21 o22 = = = = = quantity, include = (1 to 100); total_price; po_num; ship_date; paid_date; デモンストレーション データベースおよび例 375 orderform 仕様 instructions customer master of orders; orders master of items; end 376 IBM Informix SQL リファレンス マニュアル sample 仕様 sample 仕様 database stores7 screen { ======================================================================== ======================================================================== CUSTOMER INFORMATION: Customer Number: [c1 ] Company: [c4 First Name: [c2 ] ] Address: [c5 [c6 Last Name: [c3 ] ] ] City: [c7 Telephone: [c10 ] State: [c8] ] Zip: [c9 ] ======================================================================== ======================================================================== } screen { ======================================================================== CUSTOMER NUMBER: [c1 ] COMPANY: [c4 ] ORDER INFORMATION: Order Number: [o11 ] Stock Number: [i13 Description: [s14 Unit: [s16 SHIPPING INFORMATION: Customer P.O.: [o20 Backlog: Ship Date: Date Paid: Instructions: [a] [o21 [o22 [o23 ] ] ] ] Order Date: [o12 ] ] ] Manufacturer: [i16] [m17 Quantity: [i18 Unitprice: [s15 Total Price: [i19 ] ] Ship Charge: [d1 ] Total Order Amount: [d2 ] ] ] ] } end tables customer items stock orders manufact attributes c1 = *customer.customer_num = orders.customer_num; デモンストレーション データベースおよび例 377 sample 仕様 c2 = fname, comments = "Please enter initial if available"; c3 = lname; c4 = company, reverse; c5 = address1; c6 = address2; c7 = city; c8 = state, upshift, autonext, include = ("CA","OR","NV","WA"), default = "CA" ; c9 = zipcode, autonext; c10 = phone, picture = "###-###-####x####"; o11 = *orders.order_num = items.order_num; o12 = order_date, default = today, format = "mm/dd/yyyy"; i13 = items.stock_num; = *stock.stock_num, noentry, noupdate, queryclear; i16 = items.manu_code, lookup m17 = manufact.manu_name joining *manufact.manu_code, upshift, autonext; = *stock.manu_code, noentry, noupdate, upshift, autonext, queryclear; s14 = stock.description, noentry, noupdate; s16 = stock.unit_descr, noentry, noupdate; s15 = stock.unit_price, noentry, noupdate; i18 = items.quantity, include = (1 to 50), comments = "Acceptable values are 1 through 50" ; i19 = items.total_price; o20 = po_num, required, comments = "If no P.O. Number enter name of caller" ; a = backlog, autonext; o21 = ship_date, default = today, format = "mm/dd/yyyy"; o22 = paid_date, format = "mm/dd/yyyy"; o23 = ship_instruct; d1 = displayonly type money; d2 = displayonly type money; instructions customer master of orders; orders master of items; composites <items.stock_num, items.manu_code> *<stock.stock_num, stock.manu_code> before editadd editupdate of orders nextfield = o20 before editadd editupdate of items nextfield = i13 after editadd editupdate of quantity let i19 = i18 * s15 nextfield = o11 after add update query of items if (total of i19) <= 100 then let d1 = 7.50 else let d1 = (total of i19) * .04 let d2 = (total of i19) + d1 378 IBM Informix SQL リファレンス マニュアル sample 仕様 after display of orders let d1 = 0 let d2 = 0 end デモンストレーション データベースおよび例 379 clist1 仕様 サンプル ACE レポート仕様 clist1 仕様 { File: clist1.ace - Customer List Specification 1} database stores7 end output end left margin 2 select end customer_num, fname, lname, company, city, state, zipcode, phone from customer order by city format first page header print column 32, "CUSTOMER LIST" print column 32, "-------------" skip 2 lines print "NUMBER", column 9, "NAME", column 32, "LOCATION", column 54, "ZIP", column 62, "PHONE" skip 1 line page header print "NUMBER", column 9, "NAME", column 32, "LOCATION", column 54, "ZIP", column 62, "PHONE" skip 1 line on every row print customer_num using "####", column 9, fname clipped, 1 space, lname clipped, column 32, city clipped, ", " , state, column 54, zipcode, column 62, phone 380 IBM Informix SQL リファレンス マニュアル clist1 仕様 on last row skip 1 line print "TOTAL NUMBER OF CUSTOMERS:", column 30, count using "##" end デモンストレーション データベースおよび例 381 clist2 仕様 clist2 仕様 { File: clist2.ace - Customer List Specification 2 } database stores7 end define variable thisstate char(2) end input prompt for thisstate using "Enter state (use UPPER CASE) for which you wish a customer list: end output left margin 0 end select end customer_num, fname, lname, company, city, state, zipcode, phone from customer where state matches $thisstate order by zipcode, lname format first page header print column 32, "CUSTOMER LIST" print column 32, "-------------" skip 2 lines print "Listings for the State of ", thisstate skip 2 lines print "NUMBER", column 9, "NAME", column 32, "LOCATION", column 54, "ZIP", column 62, "PHONE" skip 1 line page header print "NUMBER", column 9, "NAME", column 32, "LOCATION", column 54, "ZIP", column 62, "PHONE" 382 IBM Informix SQL リファレンス マニュアル " clist2 仕様 skip 1 line on every row print customer_num using "####", column 9, fname clipped, 1 space, lname clipped, column 32, city clipped, ", " , state, column 54, zipcode, column 62, phone on last row skip 2 lines print "Number of customers in ",thisstate, " is ", count using "<<<<&" end デモンストレーション データベースおよび例 383 mail1 仕様 mail1 仕様 {file mail1.ace Mailing Label Specification - 1 } {Customized report to print mailing labels. The report will be sorted by zip code and last name. The use of PRINT commands in the FORMAT section allow specific columns to be printed on a line. Blank lines will appear where data is absent, and spaces appear next to city field as not clipped as in mail2.ace specification } database stores7 end select * from customer order by zipcode, lname end format on every row print fname, lname print company print address1 print address2 print city, ", " , state, 2 spaces, zipcode skip 2 lines end 384 IBM Informix SQL リファレンス マニュアル mail2 仕様 mail2 仕様 {mail2.ace file Mailing Label Specification - 2 } {This improved report has an OUTPUT section added, and uses nested IF statements. } database stores7 end output top margin 0 bottom margin 0 left margin 0 page length 9 report to "labels" end select fname, lname, company, address1, address2, city, state, zipcode from customer order by zipcode, lname end format on every row if (city is not null) and (state is not null) then begin print fname clipped, 1 space, lname print company print address1 if (address2 is not null) then print address2 print city clipped, ", " , state, 2 spaces, zipcode skip to top of page end end デモンストレーション データベースおよび例 385 mail3 仕様 mail3 仕様 {file mail3.ace Mailing Label Specification - 3 } {This report prints 1-3 mailing labels across a page. It stores the labels in character strings (array1, array2, and array3) as it reads each row, and prints the labels when it has read the proper number of rows. At run time, you specify the number of labels (1-3) that you want ACE to print across the page. } database stores7 end define variable variable variable variable variable variable variable variable variable variable variable end name cstzp array1 array2 array3 start finish l_size white count1 i char(75) char(75) char(80) char(80) char(80) smallint smallint smallint smallint smallint smallint {holds first and last names} {holds city, state, and zip} {Array for name line} {Array for street line} {Array for city, state, and zipcode} {start of current label in array} {end of current label in array} {label width} {spaces between each label} {number of labels across page} {label counter} input prompt for count1 using "Number of labels across page? [1-3] " end output top margin 0 bottom margin 0 left margin 0 report to "labels.out" end select * from customer order by zipcode end format first page header let i = 1 let l_size = 72/count1 386 IBM Informix SQL リファレンス マニュアル {Nothing is displayed in this control block. It just initializes variables that are used in the ON EVERY ROW control block.} {Initialize label counter.} {Determine label width (allow mail3 仕様 eight spaces total between labels).} {Divide the eight spaces between the number of labels across the page.} let white = 8/count1 on every row let name = fname clipped, 1 space, lname let cstzp = city clipped, ", ", state, 2 spaces, zipcode let finish = (i * l_size) + white {This section assigns names, } let start = finish - l_size {addresses, and zip codes to } let array1[start, finish] = name {arrays 1, 2, 3 until } let array2[start, finish] = address1 {i = the number of labels } let array3[start, finish] = cstzp {across a page. } if i = count1 then begin print array1 clipped {Print the stored addresses.} print array2 clipped {Use clipped to remove trailing} print array3 clipped {spaces for quicker printing.} skip 1 line let array1 = " " let array2 = " " let array3 = " " {Reset the arrays to spaces.} let i = 1 end else let i = i + 1 on last row if i > 1 then begin print array1 clipped print array2 clipped print array3 clipped end end {Print the last set of addresses} {if there were any left.} デモンストレーション データベースおよび例 387 ord1 仕様 ord1 仕様 {file ord1.ace Order Specification - 1 } database stores7 end output report to "ordlist1" end select orders.order_num ordnum, order_date, customer_num, po_num, ship_date, ship_charge, paid_date, items.order_num, stock_num, manu_code, quantity, total_price from orders, items where orders.order_num = items.order_num order by ordnum end format before group of ordnum print "Order number: ", ordnum using "#####", " for customer number: ", customer_num using "#####" print "Customer P.O. : ", po_num, " Date ordered: ", order_date skip 1 line print "Stockno", column 20, "Mfcode", column 28, "Qty", column 38, "Price" on every row print stock_num using "###", column 20, manu_code, column 28, quantity using "###", column 38, total_price using "$$$,$$$.&&" after group of ordnum skip 1 line print 5 spaces, "Total amount for the order: ", group total of total_price using "$$,$$$,$$$.&&" skip 3 lines end 388 IBM Informix SQL リファレンス マニュアル ord2 仕様 ord2 仕様 {file ord2.ace Order Specification - 2 } database stores7 end output left margin 0 report to "ordlist2" end select customer.customer_num custnum, fname, lname, company, orders.order_num ordnum, order_date, orders.customer_num, po_num, ship_date, ship_charge, paid_date, items.order_num, items.stock_num snum, items.manu_code, quantity, total_price, stock.stock_num, stock.manu_code, description, unit_price from customer, orders, items, stock where customer.customer_num = orders.customer_num and orders.order_num = items.order_num and items.stock_num = stock.stock_num and items.manu_code = stock.manu_code order by custnum, ordnum, snum end format before group of custnum print "Orders for: ", fname clipped, 1 space, lname print 13 spaces, company skip 1 line before group of ordnum print "Order number: ", ordnum using "#####" print "Customer P.O. : ", po_num, " Date ordered: ", order_date skip 1 line print "Stockno", column 10, "Mfcode", column 18, "Description", column 38, "Qty", column 43, "Unit price" , column 55, "Total for item" on every row print snum using "###", column 10, manu_code, column 18, description clipped, column 38, quantity using "###", column 43, デモンストレーション データベースおよび例 389 ord2 仕様 unit_price using "$$$$.&&", column 55, total_price using "$$,$$$,$$$.&&" after group of ordnum skip 1 line print 4 spaces, "Shipping charges for the order: ship_charge using "$$$$.&&" skip 1 line ", print 5 spaces, "Total amount for the order: ship_charge + group total of total_price using "$$,$$$,$$$.&&" skip 3 lines after group of custnum skip 2 lines end 390 IBM Informix SQL リファレンス マニュアル ", ord3 仕様 ord3 仕様 {file ord3.ace Order Specification - 3 } database stores7 end define variable begin_date date variable end_date date end input prompt for begin_date using "Enter beginning date for report: prompt for end_date using "Enter ending date for report: " end " output left margin 0 report to "ordlist3" end select customer.customer_num, fname, lname, company, orders.order_num ordnum, orders.customer_num, order_date, month(order_date) months, day(order_date) days, year(order_date) years, items.order_num, quantity, total_price from customer, orders, items where customer.customer_num = orders.customer_num and orders.order_num = items.order_num and order_date between $begin_date and $end_date order by years, months, days, company, ordnum end format first page header print column 10, "========================================================" print column 10, " DAILY ORDER REPORT" print column 10, "========================================================" skip 1 line print column 15, "FROM: ", begin_date using "mm/dd/yy", column 35, "TO: ", end_date using "mm/dd/yy" print column 15, "Report run date: ", today using "mmm dd, yyyy" skip 2 lines デモンストレーション データベースおよび例 391 ord3 仕様 print column 2, "ORDER DATE", column 15, "COMPANY", column 35, "NAME", column 57, "NUMBER", column 65, "AMOUNT" before group of days skip 2 lines after group of ordnum print column 2, order_date, column 15, company clipped, column 35, fname clipped, 1 space, lname clipped, column 55, ordnum using "####", column 60, group total of total_price using "$$,$$$,$$$.&&" after group of days skip 1 line print column 21, "Total amount ordered for the day: ", group total of total_price using "$$$$,$$$,$$$.&&" skip 1 line print column 15, "======================================================" on last row skip 1 line print column 15, "======================================================" skip 2 lines print "Total Amount of orders: ", total of total_price using "$$$$,$$$,$$$.&&" page trailer print column 28, pageno using “page <<<<“ end 392 IBM Informix SQL リファレンス マニュアル 付録 環境変数の設定 さまざまな環境変数 が Informix 製品の機能に影響します。端 末を識別、ソフトウェアがインストールされている場所を指 定、またその他の環境パラメータを定義する環境変数を設定で きます。 環境変数には、設定する必要があるものと、オプションのもの があります。例えば、特定の UNIX 環境変数には、値を設定す るか、またはデフォルト設定を適用する必要があります。 特定の環境変数については、「Informix SQL ガイド : 参照」を 参照してください。変数および広域言語サポート (GLS) の設定 について詳しくは、「Informix Guide to GLS Functionality」 を参照してください。この章では、これらのマニュアルには記 載されていない、次の 2 つの特有の変数についてのみ説明し ます。 Q DBFORM (INFORMIX- SQL に特有 ): メニュー フォーム ファ イルを格納するディレクトリを指定します。 SE Q DBFORMAT (Informix ツールに特有 ): ユーザが数値およ び金額のデータ型を入力、表示、印刷するときに使用 するデフォルトの形式を指定します。 Q DBTEMP (INFORMIX- SE サーバに特有 ): INFORMIX- SE の一 時ファイルを置くディレクトリのフルパス名を指定し ます。♦ B 環境変数を設定する場所 環境変数を設定する場所 次のようにして、Informix および UNIX 環境変数を設定できます。 Q コマンド行のシステム プロンプトから設定 システム プロンプトから環境変数を設定する場合、次にシステム にログインする場合に再度その変数を割り当てる必要があります。 Q 以下の特殊なシェル ファイル内で設定 : .login または .cshrc C シェルの場合 .profile Bourne シェルまたは Korn シェルの場合 ご使用の .login、.cshrc、または .profile ファイルで環境変数 を設定する場合は、その環境変数はシステムにログインするたびに 自動的に割り当てられます。 重要 : 異なった環境変数を .login および .cshrc C シェル ファイルで設 定していないことを確認してください。 Q 環境構成ファイル内で設定 この環境構成ファイルは Informix 製品で使用する環境変数をすべ て定義できる共通または専用ファイルです。構成ファイルを使用す ると、コマンド行やシェル ファイルで設定する必要がある環境変 数の数を減らすことができます。 環境構成ファイル内の 1 つ以上のエントリを後から上書きするに は、ENVIGNORE 環境変数を使用します。環境変数ファイルの内容を チェックするには、次の Informix chkenv ユーティリティを使用 します。ファイル内の環境変数の記述が間違っていたり、ファイル が大きすぎたりする場合、エラー メッセージが戻されます。 chkenv filename chkenv ユーティリティについては、 「Informix SQL ガイド : 参照」 で説明されています。 共通 ( 共用 ) 環境構成ファイルは、$INFORMIXDIR/etc/informix.rc にあります。この共用ファイルの権限は、644 に設定する必要があ ります。専用の環境構成ファイルは、ユーザのホーム ディレクト リに、.informix という名前で格納し、また、ユーザにとって読取 り可能に設定する必要があります。 394 IBM Informix SQL リファレンス マニュアル 環境変数の設定方法 ヒント : シェル ファイル、または環境構成ファイルに初めて環境変数を 設定する場合、Informix 製品を使用する前に、ログアウトしてからログイ ンし、ファイルを「ソースします」(C シェルの場合 )。または、「.」を使 用して環境構成ファイルを実行します (Bourne シェルまたは Korn シェル の場合 )。これで、プロセスでエントリを読むことが可能になります。 環境変数の設定方法 Informix 製品で識別できる 1 つ以上の環境変数を設定し、デフォルト設 定の変更、新規設定の追加を行うことができます。すでに Informix 製品 を使用している場合、適切な環境変数の一部または全部が設定されている 場合があります。 1 つ以上の Informix 製品をインストールした後に現在の環境設定を確認 するには、システム プロンプトに次のコマンドを入力します。 BSD UNIX: env UNIX System V: printenv 標準の UNIX コマンドを使用して環境変数を設定します。図 24 に、使用す るシェルの種類によって架空の ABCD 環境変数に value をどう設定するか を示します。 図 24 異なるシェルで環境変数を設定 C シェル : setenv ABCD value Bourne シェル ABCD=valueexport ABCD または Korn シェル : Korn シェル : export ABCD=value 本章において、Bourne シェルの設定例が示されている場合、Korn シェル (Bourne シェルのスーパーセット ) でも同様に設定できることを意味しま す。Korn シェルの構文では、図 24 で示されるように、ショートカットを 使用できます。 ヒント : 環境変数は、大文字と小文字を区別します。 環境変数の設定 395 環境変数のデフォルト設定値 次のダイアグラムは、環境変数を設定する構文の本章での表記方法を示し ています。これらのダイアグラムで、C シェルでの設定方法を示していま す。Bourne シェルと Korn シェルについては、図 24 の構文に従います。 setenv ABCD value 構文ダイアグラムの読み方について詳しくは、序を参照してください。 本章で示されている環境変数を解除するには、次のコマンドを入力します。 C シェル : unsetenv ABCD Bourne シェル unset ABCD または Korn シェル : 環境変数のデフォルト設定値 次のリストは、Informix 製品を使用する際の、環境に関する主なデフォル ト解釈について記載しています。特殊なデフォルト値を変更するのに使用 される環境変数は、括弧で囲んであります。その他の製品固有のデフォル ト値は、本章の該当箇所で記載されています。 IDS Q 製品のプログラム、コンパイラ、プリプロセッサ、その他の関連す るファイルやライブラリは、/usr/informix ディレクトリにインス トールされています。 Q Informix Dynamic Server または INFORMIX- SE データベース サーバ へのデフォルトの明示的または暗黙的な接続は、 $INFORMIXDIR/etc/sqlhosts ファイル エントリを介して行います。 (INFORMIXSERVER)。♦ Q メッセージ ファイルのデフォルト ディレクトリは、 $INFORMIXDIR/msg です (DBLANG unset および LANG unset)。 Q INFORMIX- SE を使用している場合、ターゲット データベースまたは 現行データベースは、現行ディレクトリにあります (DBPATH)。 Q INFORMIX- SE の一時ファイルは、/tmp ディレクトリに格納されてい ます (DBTEMP)。♦ SE SE 396 IBM Informix SQL リファレンス マニュアル 優先順位のルール Q 端末に依存するキーボードや画面のデフォルトの機能は、 $INFORMIXDIR/etc ディレクトリの termcap ファイルに定義されて います。(INFORMIXTERM) Q エディタを使用する製品の場合、デフォルトのエディタはオペレー ティング システムでよく使われるエディタであり、通常は vi で す。(DBEDIT) Q 印刷機能をサポートする製品の場合、通常、次のプログラムを使用 してファイルをプリンタに送信します。 lp UNIX System V の場合 lpr BSD およびその他の UNIX システム (DBPRINT) Q 金額型値のデフォルト形式は、$000.00 です。(DBMONEY では $ を 設定 ) Q 日付のデフォルト形式は、MM/DD/YYYY です。(DBDATE では MDY4/ を 設定 ) Q アンロードされるデータ ファイルのフィールド区切り記号は、縦 棒 (|=ASCII 124) です。(DBDELIMITER では | を設定 ) 優先順位のルール Informix 製品が環境変数にアクセスする場合、通常、次の優先順位が適用 されます。 1. 最も高い優先順位は、環境 ( シェル ) で定義される値です。 2. 2 番目に高い優先順位は、ユーザのホーム ディレクトリ (~/.informix) の専用の環境構成ファイルで定義された値です。 3. 次に高い優先順位は、共通の環境構成ファイル ($INFORMIXDIR/etc/informix.rc) で定義された値です。 4. 最も低い優先順位は、デフォルト値です。 環境変数の設定 397 環境変数 環境変数 重要 : 必要なほとんどの環境変数について、「Informix SQL ガイド : 参 照」および「Informix Guide to GLS Functionality」で説明されています。 この付録では、これらのマニュアルに記載されていない環境変数について のみ説明します。 DBFORM DBFORM 環境変数は、 現行のアクティブな言語が存在するメニュー フォーム ファイルのある $INFORMIXDIR のサブディレクトリ ( またはフルパス名 ) を 「環境変数 INFORMIXDIR で参照するディレク 指定します。($INFORMIXDIR は、 トリ名」です )。メニュー フォーム ファイルは、標準の INFORMIX- SQL メ ニューと置き換えるための、各国語に翻訳されたメニュー セットを提供し ています。メニュー フォーム ファイルには、接尾部 .frm が付いていま す。メニュー フォーム ファイルは各国語のサプリメントに組み込まれて おり、ファイルをインストールする場所や、DBFORM 設定の指定方法に関す る説明も含まれています。 setenv DBFORM pathname pathname $INFORMIXDIR のサブディレクトリまたはメッセージ ファイルを含 んでいるディレクトリのフルパス名を指定します。 使用法 DBFORM が設定されていない場合のメニュー フォーム ファイルのデフォル ト ディレクトリは、$INFORMIXDIR/forms です。メニュー フォーム ファイル は、 $INFORMIXDIR の下の forms サブディレクトリにインストールする必要が あります。例えば、フランス語のメニュー ファイルを $INFORMIXDIR/forms/french または $INFORMIXDIR/forms/fr.88591 にインス トールできます。英語版は通常、$INFORMIXDIR/forms または $INFORMIXDIR/forms/english にインストールされます。通常、英語ファイ ルが置かれるこれらの場所に、英語以外のメニュー フォーム ファイルを インストールしないでください。 398 IBM Informix SQL リファレンス マニュアル DBFORM 図 25 は、DBFORM 環境変数が $DBFORM に設定されている場合に、特定の言 語のメッセージ ファイルを検索するときに使用される検索方法を示してい ます。 $INFORMIXDIR/forms/$DBFORM/ 図 25 $DBFORM を 設定時のディレ クトリ検索順序 $INFORMIXDIR/$DBFORM/ 検索 順序 $INFORMIXDIR/forms/ $INFORMIXDIR/forms/english/ 環境変数の設定 399 DBFORM LANG 変数が設定され、DBFORM が設定されていない場合、図 26 で示される 検索順序となります。 $INFORMIXDIR/forms/$LANG/ 図 26 $LANG を設 定時のディレク トリ検索順序 $INFORMIXDIR/$LANG/ 検索 順序 $INFORMIXDIR/forms/ $INFORMIXDIR/forms/english/ DBFORM および LANG の両方が設定されている場合、検索順序を決定すると きに LANG の検索方法は無視されます。 メニュー フォーム ディレクトリを指定するには、次のようにします。 1. mkdir コマンドを使用して、適切なサブディレクトリを $INFORMIXDIR/forms の下に作成します。 2. サブディレクトリの所有者とグループを informix とし、このディ レクトリへのアクセス権を 755 に設定します。 3. DBFORM 環境変数を新規サブディレクトリに設定します。この際、 サブディレクトリのみを指定し、フルパス名は指定しません。 4. .frm ファイルを $INFORMIXDIR/forms/$DBFORM という新規メニュー フォーム ディレクトリにコピーします。メニュー フォーム ディレ クトリにあるすべてのファイルの所有者とグループが informix と なり、アクセス権は 644 となります。 5. プログラムを実行するか、あるいは製品で引き続き作業を行ってく ださい。 400 IBM Informix SQL リファレンス マニュアル DBFORMAT 例えば、フランス語のメニュー フォーム ファイルのセットを、次のよう に $INFORMIXDIR/forms/french に格納します。 setenv DBFORM french DBFORMAT Informix で定義した DBFORMAT 環境変数は、ユーザが次に示されるデータ 型の値を入力、表示、印刷するときのデフォルト形式を指定します。 Q DECIMAL Q FLOAT Q SMALLFLOAT Q INTEGER Q SMALLINT Q MONEY DBFORMAT で指定されるデフォルト形式は、次のような場合の数値および金 額の値に影響します。 Q 画面で表示、入力する Q 印刷する Q LOAD および UNLOAD を使用して、ASCII ファイルに入力、または ASCII ファイルから出力する DBFORMAT は、先行または後書きの通貨記号を指定したり ( 金額値内でのデ フォルトの位置は指定しません )、また、小数点および 3 桁区切り記号を 指定したりするのに使用します。DBFORMAT で定義される小数点および 3 桁 区切り記号は、金額データと数値データの両方に適用され、GLS の設定に よる区切り記号のセットを上書きします。このため、金額と数値で異なる 形式の規則を用いる国は、GLS 設定を使用し、DBFORMAT は使用しないように します。GLS について詳しくは、『付録 C. 広域言語サポート』および 「Informix Guide to GLS Functionality」を参照してください。 DBFORMAT の設定は、次の INFORMIX- SQL キーワードに影響します。 Q USING 式 (ACE において ) Q FORMAT 属性 (PERFORM において ) Q PRINT 文 (ACE において ) Q LET 文 (ACE において、文字列が金額または数値を受け取ったとき ) 環境変数の設定 401 DBFORMAT DBFORMAT 設定の構文は次のとおりです。. : setenv DBFORMAT front front thousands : thousands : decimal back 先行の通貨記号です。front 値はオプションです。「*」で表される NULL 文字列を使用すると、先行の通貨記号は適用されません。 3 桁区切り記号として使用可能な 1 つ以上の文字のリストです。 ユーザは値を入力すると、指定した文字のいずれかを 3 桁区切り記 号として使用できます。 リスト内の値はスペースやその他の文字で 区切りません。INFORMIX- SQL は、出力の値を表示するときに、最初に 指定されている値を 3 桁区切り記号として使用します。 以下の文字を除く任意の文字を、3 桁区切り記号として指定できま す。 Q 数字 Q <, >, |, ?, !, =, [, ] アスタリスク (*) 文字を指定すると、INFORMIX- SQL は 3 桁区切り記 号を省略します。thousands 値はオプションです。デフォルト値は * です。このため、ロケールによっては、3 桁区切り記号として空白を 使用する場合があります。 バージョン 6.0 以前は、コロン (:) 記号を 3 桁区切り記号として使 用できませんでした。バージョン 6.0 では、コロン記号を使用でき るようになりましたが、仕様 :\::.:DM ではバックスラッシュ (\) 記 号を前に付ける必要があります。 (1 / 2) 402 IBM Informix SQL リファレンス マニュアル DBFORMAT decimal 小数点記号として使用可能な 1 つ以上の文字のリストです。 ユーザ は値を入力すると、指定した文字のいずれかを小数点記号として使用 できます。INFORMIX- SQL は、出力の値を表示するときに、最初に指定 されている値を小数点記号として使用します。 以下の文字を除く任意の文字を、小数点記号として指定できます。 Q 数字 Q <, >, |, ?, !, =, [, ] Q thousands 値に指定した文字 decimal 値はオプションです。小数点位置にアスタリスク記号を指定 すると、小数点記号を使用せずに値が表示されます。 コロン記号を小数点として使用できますが、DBFORMAT 仕様ではバッ クスラッシュ (\) 記号を前に付ける必要があります。 back 後書きの通貨記号を決定する値です。back 値はオプションです。 (2 / 2) 構文には、3 つのコロンをすべて指定する必要があります。シェルが DBFORMAT 仕様の文字を解釈しないように、これらの文字を一重引用符のペ アで囲むことを推奨します。 使用法 DBFORMAT の設定を使用して、先行と後書きの通貨記号、および数値と小数 点記号を直接指定します。これにより、通貨記号が追加され、画面の金額 フィールドまたは数値フィールドで表示される区切り記号や、PRINT 文のデ フォルト形式の区切り記号が変更されます。例えば、DBFORMAT を次のよう に設定します。 *:.:,:DM すると、値 1234.56 は次のように印刷または表示されます。 1234,56DM DM はドイツ マルクを表します。スクリーン形式では、この DBFORMAT 文字 列が指定されると、ユーザが入力した値は、小数点記号としてピリオドで はなくカンマを含みます。 環境変数の設定 403 DBFORMAT DBFORMAT の設定は、ACE および PERFORM の USING 文を解釈する FORMAT 属性 のフォーマット文字列にも影響します。これらのフォーマット文字列では、 ピリオド記号 (.) はリテラル文字ではなく、DBFORMAT で指定される小数点 記号の位置指定子です。さらに、カンマ記号 ( , ) は DBFORMAT で指定さ れる 3 桁区切り記号の位置指定子です。ドル記号は先行の通貨記号の位置 指定子です。アットマーク (@) 記号は後書きの通貨記号の位置指定子で す。図 27 は、同じ値で異なる DBFORMAT 設定とフォーマット文字列の組み 合わせを使用した場合の結果を表しています。 図 27 異なる DBFORMAT 設定およびフォーマット文字列の結果の表 値 フォーマット 文字列 DBFORMAT 設定 表示結果 1234.56 $$#,###.## $:,:.: $1,234.56 1234.56 $$#,###.## :.:,:DM 1.234,56 1234.56 #,###.##@@ $:,:.: 1,234.56 1234.56 #,###.##@@ :.:,:DM 1.234,56DM ユーザが値を入力すると、INFORMIX- SQL は次のように処理します。 Q ユーザが入力する通貨記号 (先頭または末尾) および 3 桁区切り記 号を無視します。 Q DBFORMAT で小数点記号として定義されている記号が入力されると、 入力値において小数点記号として解釈されます。 INFORMIX- SQL が値を表示または印刷する場合、次のように処理します。 Q DBFORMAT で定義した先行または後書きの通貨記号が金額 (MONEY) 型 値に表示されます。 Q 先行または後書きの通貨記号が金額 (MONEY) 型 以外のデータ型で FORMAT 属性により指定された場合、その記号が表示されます。 Q 3 桁区切り記号が FORMAT 属性または USING 演算子に組み込まれて いる場合を除き、3 桁区切り記号は表示されません。 Q 小数点記号が DBFORMAT で NULL ( * ) として定義されているか、ま たはデータ型が整数型 (INT または SMALLINT) の場合を除き、小数 点記号は表示されます。 404 IBM Informix SQL リファレンス マニュアル DBTEMP ACE で LET 文を使用して金額の値が文字ストリングに変換されると、デ フォルトの変換および USING 節を用いた変換により、DBFORMAT で定義した 区切り文字と通貨記号が追加されて、文字が作成されます。 DBFORMAT は DBMONEY と同様、 数値と金額の両方のデータ形式を要求します。 ポルトガルおよびイタリアを含むいくつかの国では、小数点と 3 桁区切り 記号の使い方が、数値データと金額データで異なります。これらの国では、 GLS 構成ファイル設定で、個別に定義された数値と金額の形式を提供してい ます。ここが DBFORMAT と DBMONEY で異なります。 DBTEMP DBTEMP 環境変数を設定して、INFORMIX- SE の一時ファイルを置くディレクト リのフルパス名を指定します。デフォルトの /tmp を使用する場合は、 DBTEMP を設定する必要はありません。 setenv DBTEMP pathname pathname 一時ファイル用のディレクトリのフルパス名です。 パス名 usr/magda/mytemp を指定するには、次のように DBTEMP 環境変数を 設定します。 C シェル : setenv DBTEMP usr/magda/mytemp Bourne シェル : DBTEMP=usr/magda/mytemp export DBTEMP DBTEMP が設定されていない場合は、データベースのディレクトリ ( つま り、.dbs ディレクトリ ) に一時表が作成されます。 環境変数の設定 405 DBTEMP 406 IBM Informix SQL リファレンス マニュアル 付録 広域言語サポート この付録では、INFORMIX- SQL に実装されている広域言語サポー ト (GLS) に関する基本的な用語や概念、およびサポートされる 機能について説明します。 ここでカバーされる情報のほとんどが、主にデータベース サーバの観点から「Informix Guide to GLS Functionality」で さらに詳しく説明されています。GLS に関する知識がない場合 は、この付録をご利用になる前に、上記マニュアルを読んでく ださい。 INFORMIX- SQL では、以下のさまざまな場所で GLS を実装してい ます。 Q 英語以外の文字の入力、表示、編集 Q 英語以外の文字を含む SQL 識別子の参照 Q 英語以外の記号を含む文字列の照合 Q 英語以外の数値、通貨、および時刻の値の形式 C 広域言語サポート用語 広域言語サポート用語 GLS は、ローマン体以外のアルファベット、発音区別記号などを使用可能 にする機能セットです。GLS の要件を理解するためには、このセクションで 記載している用語に慣れておく必要があります。 GLS は、米国英語 (U.S. English) 以外の言語を使用するための機能セット です。GLS には、日付、通貨の値、および数値のローカライズされた表示が 含まれています。INFORMIX- SQL は、いくつかの東アジアの言語 ( 日本語や中 国語など ) のマルチバイト文字の入力、検索、および表示をサポートして います。 コード セットおよび論理文字 特定の言語において、コード セットは、文字セットの各論理エレメント ( 論理文字 またはコード ポイントと呼ばれる ) と、その文字を一意的に エンコードするビット パターンの間の 1 対 1 の対応関係を指定します。 例えば米国英語 (U.S. English) では、ASCII 文字がコード セットを構成 しています。 コード セットは論理文字に基づいており、表示装置が特定の文字を表示す るのに使用するフォントとは関係ありません。INFORMIX- SQL が特定の文字 を表示するためのサイズとフォントは、コード セットとは関係のない要因 で決定されます。( しかしながら、例えば中国語において「星」の表示を 含まないフォントを選択すると、この文字に代わって空白が表示されます。 この文字をサポートしているフォントを指定しない限り、正しく表示され ません。) 照合順序 照合順序 は、文字列をソートする順序です。データベース サーバは、コー ド セット順序 ( コード ポイントの順序 ) または ローカライズ順序 ( そ の他の定義済みの順序 ) のいずれかを用いて照合を行います。ローカライ ズ照合について詳しくは、 「Informix Guide to GLS Functionality」を参照 してください。 408 IBM Informix SQL リファレンス マニュアル シングルバイト文字およびマルチバイト文字 INFORMIX- SQL は、コード セット順序のみをサポートしています。データ ベースの各国語文字 (NCHAR) 型または 各国語可変長文字 (NVARCHAR) 型列の データ値についてローカライズ照合を行うには、INFORMIX- SQL ではなくデー タベース サーバでソートを実行する必要があります。 シングルバイト文字およびマルチバイト文字 ほとんどのアルファベットに基づく言語 ( 英語、ギリシャ語、タガログ語 など ) の場合、シングルバイトを表示するための必要なコード ポイントの 数は 256 以下です。このため、これらの言語の文字データの処理に関する 局面は簡単なものとなります。例えば、ASCII 文字列が必要とするストレー ジのバイト数は、文字列内の文字数と線形関係にあります。 一方、アルファベット以外の言語の場合、文字数は 256 文字より大幅に大 きくなります。中国語、日本語、韓国語などの言語には、何千という異な る文字が含まれ、多くの場合、ある 1 つの論理文字を格納するのに 2 バイ ト以上を必要とします。ストレージを 2 バイト以上必要とする文字をマル チバイト文字 と呼びます。 ロケール INFORMIX- SQL ( および Informix データベース サーバやコネクティビティ 製品 ) の場合、ロケール は、ソフトウェアの実行時にユーザが表示したい 言語や文化上の習慣を指定するファイルのセットです。ロケールで次のも のを指定できます。 Q コード セットの名前 Q 文字列データの照合順序 Q その他のデータ型の文化的差異に基づいた表示形式 Q 大文字と小文字間の対応 Q 文字が印刷可能であるか、印刷不可であるかの決定 「Informix Guide to GLS Functionality」では、数値、通貨、および時刻の 値の形式について詳しく記載しています。ロケールが指定されない場合の デフォルト値は米国英語 (U.S. English) で、UNIX システムでは en_us.8859-1 です。 広域言語サポート 409 INFORMIX-SQL でサポートされる GLS 機能 INFORMIX- SQL では en_us.0333 ロケールが必要です。このロケールは、クラ イアント ロケールの形式のデータ値を含む任意のソース ファイルを、入 力として受け入れます。 INFORMIX-SQL でサポートされる GLS 機能 INFORMIX- SQL でサポートされる GLS 機能は、次のとおりです。 Q 各国語ロケールのルールに従った文字データのソートおよび比較。 Q ユーザ定義の名前 ( データベース名、表名、列名など ) として許可 される拡張 ASCII 文字の使用。 Q レポート、スクリーン フォーム、データ割当てステートメントに おける各国語化された金額および数値の 10 進数 (DECIMAL) 型形 式。 Q データベース データと各国語固有のキーボードや画面の間の文字 変換。 Q 異なるユーザが、同じデータベース サーバに、異なるロケール設 定を用いて同時にアクセス可能。 410 IBM Informix SQL リファレンス マニュアル データ型およびメニュー オプション データ型およびメニュー オプション 図 28 および図 29 は、影響を受けるデータ型、INFORMIX- SQL メニュー オプ ションおよびキーワードを表しています。( ロケール ファイルおよびロ ケール カテゴリについては、「Informix Guide to GLS Functionality」を 参照してください。) 図 28 データ型への GLS サポートの影響 データ型 影響 文字 (CHAR) 型 透過的に各国語文字 (NCHAR) 型にマップされます。 可変長文字 (VARCHAR) 型 透過的に各国語可変長文字 (NVARCHAR) 型にマップされます。 各国語文字 (NCHAR) 型 ユーザ ロケールの順序でソートします。SQL CREATE TABLE を使用してのみ有効 です。 各国語可変長文字 (NVARCHAR) 型 ユーザ ロケールの順序でソートします。SQL CREATE TABLE を使用してのみ有効 です。 10 進数 (DECIMAL) 型 DBFORMAT、DBMONEY、NUMERIC カテゴリの値に基づいて表示します ( 優先順位の 高い順に ) 小桁実数 (SMALLFLOAT) 型 DBFORMAT、DBMONEY、NUMERIC カテゴリの値に基づいて表示します ( 優先順位の 高い順に ) 実数 (FLOAT) 型 DBFORMAT、DBMONEY、NUMERIC カテゴリの値に基づいて表示します ( 優先順位の 高い順に ) 金額 (MONEY) 型 DBFORMAT、DBMONEY、MONETARY カテゴリの値に基づいて表示します ( 優先順位 の高い順に ) 日付 (DATE) 型 DBDATE の値に基づく月、日、年の分離記号および順序。言語固有の月および日 の名前の表示は、DBLANG で示される場所にあるメッセージ ファイルに基づきま す。 日時 (DATETIME) 型 言語固有の月および日の名前の表示は、DBLANG で示される場所にあるメッセー ジ ファイルに基づきます。 広域言語サポート 411 データ型およびメニュー オプション 図 29 メニュー オプションおよびキーワードにおける GLS サポートの影響 メニュー オプションまたは キーワード 影響 LOAD LOAD 文は、受信テキスト ファイルが、GLS および Informix のロケー ル設定と環境変数によって指定されている形式であることを期待しま す。 UNLOAD UNLOAD によって生成されるテキスト ファイルは、GLS および Informix のロケール設定と環境変数によって指定されている形式の出 力ですが、3 桁区切り記号がありません。 USING フォーマット文字列の解釈は、DBFORMAT、DBMONEY、DBDATE、および NUMERIC、MONETARY カテゴリの設定によって決まります。 CREATE TABLE、ALTER TABLE 英語以外のロケールで定義されている文字 (CHAR) 型列および可変長 文字 (VARCHAR) 型列は、各国語文字 (NCHAR) 型および各国語可変長 文字 (NVARCHAR) 型として作成されます。これらの環境で文字 (CHAR) 型および可変長文字 (VARCHAR) 型として動作する文字 (CHAR) 型列お よび可変長文字 (VARCHAR) 型列は、SQL CREATE TABLE 文および ALTER TABLE 文を使用してのみ作成できます。 FORMAT FORMAT では通貨記号をサポートしないという点を除き、USING と同じ です。 ORDER BY、MATCHES、WHILE、 INCLUDE、および IF 文字値の照合は、COLLATE カテゴリで定義される照合順序に基づきま す。 LET 文字と数値、金額、日付の値の間での変換は、DBFORMAT、DBMONEY、 DBDATE、および NUMERIC、MONETARY カテゴリの設定によって決まりま す。 UPSHIFT および DOWNSHIFT 大文字と小文字間の変換は、CTYPE カテゴリで指定されます。 ASCII (ACE) 特殊な ASCII 値から生成される文字は、CTYPE カテゴリで指定される 文字セットによって決定します。 DATE 表示される日付には、DBLANG で示されるメッセージ ファイルで指定 されている月および日の名前が含まれます。 MENU NAME メニュー名には、ロケール固有の文字を含むことができます。 CALL (C 関数に対する ) 呼び出される C 関数の識別子内に、C コンパイラがサポートするロ ケール固有の文字を含めることができます。 412 IBM Informix SQL リファレンス マニュアル 文字セット 日付、時刻、および通貨の形式 ローカライズされた形式の日付、時刻、金額の値を使用するには、 Informix の環境変数 DBFORMAT、DBMONEY、および DBDATE を設定します。一 部の東アジアのロケールの形式規則では、GL_DATE または GL_DATETIME 環境 変数を設定する必要があります。これらの環境変数や、その他の環境変数 について詳しくは、 「Informix Guide to GLS Functionality」を参照してく ださい。 Informix システムのエラー メッセージ集 Informix では、エラー メッセージをさまざまな言語に翻訳して提供して います。翻訳されたメッセージを含むメッセージ ディレクトリを指定する には、DBLANG 環境変数を使用します。使用可能な言語翻訳のリストについ ては、お近くの Informix 営業担当者に連絡してください。 文字セット INFORMIX- SQL では、クライアント ロケールで有効な以下の英語以外の文字 を処理できます。 Q 識別子の名前 Q 文字 (CHAR) 型および可変長文字 (VARCHAR) 型の変数と仮引き数の値 Q テキスト (TEXT) 型 BLOB 内の文字 Q メッセージ テキスト、引用符付き文字列、および関数から戻され る値 Q コメント、フォーム、メニュー、およびレポートからの出力内のテ キスト 名前付きエンティティには、変数、関数、カーソル、仮引き数、ラベル、 レポート、および PREPARE 文で処理されたオブジェクトが含まれます。 INFORMIX- SQL では、これらの名前の長さの制限は 50 バイトです。 広域言語サポート 413 文字セット INFORMIX- SQL のデフォルト環境は、 『付録 E. ASCII 文字セット』にリスト されている 128 文字の ASCII コード セットに基づきます。これらのエン コードされた値 ( またはコード ポイント ) はそれぞれ、ASCII の文字、数 字、句読点、その他の論理文字を表す 0 から 127 の各値を格納するのに、 1 バイト中の 7 ビットを必要とします。各 ASCII 文字はシングルバイト内 に格納できるため、ASCII はシングルバイト文字セットと呼ばれます。 INFORMIX- SQL でサポートするその他すべての文字セットで、ASCII をサブ セットとして組み込む必要があります。 英語以外のロケールで、CLIENT_LOCALE で指定するロケールのコード セット で文字が定義されている場合、INFORMIX- SQL は ASCII 以外の文字を識別子内 に組み込むことができます。書込みの書式がアルファベットに基づいてい ない言語をサポートし、マルチバイト文字を使用する東アジアのロケール では、識別子を文字で開始する必要はありませんが、ストレージの長さが 50 バイトを超えてはいけません。( 例えば、50 個の論理文字を含む中国語 の識別子においては、識別子内の論理文字のいずれかが 2 バイト以上のス トレージを必要とする場合、この制限を超えてしまいます。) INFORMIX- SQL で、クライアント ロケールのコード セットの有効な文字を入 力、編集、および表示できます。指定された英語以外のコード セットの文 字が印刷可能 であるか、または印刷不可 であるかは、クライアント ロ ケールによって決まります。 PERFORM 画面トランザクション プロセッサは、クライアント ロケールで 有効な、英語以外の文字を含むフォーム仕様を処理できます。クライアン ト ロケールの文字を表示できるコンパイル済みのフォームを生成すること もでき、それらの文字をユーザーが入力として使用できます。 クライアントとサーバのロケールが同じであれば、英語以外の文字を含む 値を INFORMIX- SQL とデータベース サーバ間で渡すことができます。クライ アント ロケールに適切なコード セット変換表があれば、ロケールが異な る場合でも、クライアントとデータベース サーバ間でデータを転送できま す。ロケールの設定、およびロケール間のコード セット変換については、 423 ページの『言語環境の構成』または「Informix Guide to GLS Functionality」を参照してください。本書の付録の 429 ページの『コード セット変換処理』も参照してください。 414 IBM Informix SQL リファレンス マニュアル 文字セット SQL 識別子 SQL 識別子は、表名、列名、索引、制約などの、データベース エンティ ティの名前です。最初の文字は、ロケールで定義される英字か、またはア ンダスコア (= ASCII 95) 記号でなければなりません。残りの SQL 識別子に は、英数字とアンダスコア (_) を使用できます。ほとんどの SQL 識別子の 長さは 18 バイトまで可能です。SQL 識別子で有効な文字は、データベース サーバのロケールによって決まります (422 ページの『クライアント ロ ケールおよびサーバ ロケール』を参照してください )。シングルバイトま たはマルチバイトのいずれの空白も、SQL 識別子で表示できません。 INFORMIX- SE データベース サーバの場合、英語以外の文字をデータベース UNIX SE や表、またはログ ファイルの名前に使用できるかどうかは、オペレーティ ング システムがそれらの文字をファイル名で許可しているかどうかで決ま ります。♦ INFORMIX- SQL のユーザ インターフェースは英語です。編集フィールドにマ ルチバイト文字が含まれていても、検査は行われず、結果は予測できませ ん。SQL 文では、いくつかのデータベース エンティティに英語以外の有効 な識別子を使用できます。次の表は、識別子として英語以外の文字を使用 できるインスタンスを示しています。 SQL 識別子 英語以外の文字を許可 ? 列名 制約名 データベース名 はい はい はい (INFORMIX-SE に対するオペレーティング システ ムの制限有り ) はい はい (INFORMIX-SE に対するオペレーティング システ ムの制限有り ) はい はい はい (INFORMIX-SE に対するオペレーティング システ ムの制限有り ) はい 索引名 ログ ファイル名 ストアド プロシジャ名 シノニム 表名 ビュー名 入力ファイル名および出力ファイル名をローカライズすることはできませ ん。入力と出力のパス名またはファイル名には、ASCII 文字のみを使用でき ます。 広域言語サポート 415 文字セット 照合順序 照合 ( ソート ) 順序は、クライアント ロケールを定義しているファイル 内のコード- セット順が使用されます。( クライアント ロケールの COLLATE カテゴリで指定されている照合は、すべて無視されます。) SQL を実行時の 照合 ( データベース サーバが独自の照合順序を用いる場合 ) では、デー タ型およびサーバ ロケール ( 照合のローカライズ順序を指定可能 ) に よって順序が決定します。INFORMIX- SQL およびデータベース サーバで異な る照合順序を使用したり、または INFORMIX- SQL で、異なる照合順序を使用 する複数のサーバと接続したりすることができます。照合順序は、照会や レポートで関係演算子および行のソート順を使用するブール式の値に影響 する場合があります。 416 IBM Informix SQL リファレンス マニュアル 東アジア言語サポート 東アジア言語サポート INFORMIX- SQL では、マルチバイト コード セットを用いるアジア言語を使用 できます。次の機能が、マルチバイト ロケールでサポートされています。 Q 各国語のメニュー項目、識別子、およびテキスト ラベル Q 部分文字の作成を回避する機能 Q 英語以外のデータ Q 日付、時刻、通貨、数値、ローカライズ照合を含む、文化上の慣習 Q ワードラップ時の、日本語テキストの禁則処理 Q 自動的に必要なローカライズを行うテキスト幾何学 Q ロケールで暗黙的に定義している比較規則と照合順序を取り入れた 比較 (SQL の比較および照合は、データベース サーバによって決定 します。) INFORMIX- SQL のこのバージョンでは、タイ語をサポートするコード セット などで必要な複合文字はサポートしていません。 次のような場合に、文字列の値に、クライアント ロケールでサポートされ ているマルチバイト文字を含めることができます。 Q 文字式および複数値の文字式 Q 引用符付きストリング内の定数値 Q データ型が文字 (CHAR) 型、可変長文字 (VARCHAR) 型、テキスト (TEXT) 型である変数、仮引き数、および戻り値 415 ページの『SQL 識別子』の表にリストされているデータベース オブ シェクトの SQL 識別子のいずれかを指定しているユーザ定義の照会基準で も、マルチバイト文字を使用できます。ただし、INFORMIX- SQL では、マルチ バイト文字を、通貨記号または区切り記号として、DBDATE または DBFORMAT 環境変数で指定される表示形式で使用することはできません。 広域言語サポート 417 東アジア言語サポート 論理文字 シングルバイト ロケールでは、文字列の値の中にある各データの文字は、 1 バイトのメモリ域と、文字モードの装置で表示するための 1 つの文字位 置のみを必要とします。 データ文字、表示幅、ストレージ間での文字列操作における、この単純な 1 対 1 の関係は、マルチバイト文字をサポートする東アジアのロケールで は存在しません。マルチバイト文字をサポートするロケールでは、シング ル論理文字が、シングルバイトに対応したり、複数バイトに対応したりし ます。このようなロケールでは、文字列内の論理文字 の中で、表示やレ ポート出力に使用するグリフ ( 絵文字 ) に対応する表示幅 と、文字列を 保持するために割り当てる必要のあるメモリー域のバイト 数を区別する必 要があります。 マルチバイト文字をサポートするロケールでは、文字列値を処理する組込 み関数や演算子の中には、バイトではなく論理文字を操作するものもあり ます。このため、マルチバイト文字を使用するコード セットにおいて、 INFORMIX- SQL 6.x ( およびそれ以前 ) のリリースのいくつかの機能のバイト に基づいた動作が修正されました。1 つの論理文字は、画面表示やレポー トの出力において 1 つ以上の文字位置を使用し、少なくとも 1 バイトのス トレージを必要とします。 変数、仮引き数、戻り値で文字 (CHAR) 型または可変長文字 (VARCHAR) 型の データ型を宣言する場合は、バイト に基づきます。ただし、一部の文字列 の実行時処理は、マルチバイト ロケールにおいて 論理文字 に基づいて行 われます。 部分文字 論理文字とそれらの構成要素のバイトを区別することの最大の目的は、部 分文字を回避することです。部分文字は、マルチバイト文字の断片です。 データベースに部分文字が書き込まれると、データベースが破壊し、デー タベース サーバに障害が生じるリスクがあります。 部分文字は、マルチバイト文字が切り捨てられたり、あるいはマルチバイ ト文字が元のバイトのシーケンスを保持できないような方法で分割された りした場合に作成されます。部分文字は、次のような操作を行っている間 に作成されることがあります。 Q サブストリング操作 Q SQL の INSERT および UPDATE 操作 418 IBM Informix SQL リファレンス マニュアル 東アジア言語サポート Q レポートおよび画面表示におけるワードラップ Q バッファからバッファへのコピー INFORMIX- SQL は部分文字を受け入れず、次のように処理します。 Q 切り捨てられたマルチバイト文字をシングルバイトの空白に置き換 える Q レポートおよび画面表示で、確実にこれ以上部分文字が作成されな い方法で単語を折り返す Q 確実にこれ以上部分文字が作成されない方法でコード セット変換 を行う 例えば、次の SQL の SELECT 文を実行するとします。 SELECT col1[3,5] FROM tab1 3 つのデータの値を col1 から取得します ( ここで、col1 は 文字 (CHAR) 型、各国語文字 (NCHAR) 型、各国語可変長文字 (NVARCHAR) 型、または可変長文 字 (VARCHAR) 型の列です )。ここで、最初の行はデータ値ではなく、サブス トリング内のバイトの配置を示します。 AA 2BB 2AA ABA 2C 2AA A 2B 2CABC は次のようになります : は次のようになります : は次のようになります : " s1B s1" "A 2s1" "B 2C" ここで、表記 s1 はシングルバイトの空白を表します。上付き文字 ( 2 ) の 前の大文字は、マルチバイトのストレージ幅を持つ東アジアの文字を意味 します。この例では、簡単にするために、マルチバイト文字に対して 2 バ イトのストレージ要件があると仮定しています。最初の例では、A2 はサブ ストリング内の部分文字であり、これがシングルバイトの空白に置き換え られています。同じサブストリングで、B2 はその後のバイトを失ってお り、同様の置き換えが行われています。 広域言語サポート 419 英語以外のロケールでの INFORMIX-SQL のインストール 英語以外のロケールでの INFORMIX-SQL のイン ストール このセクションでは、英語以外のロケールで INFORMIX- SQL をインストール する場合の一般的な要件について説明します。「英語以外」とは、 en_us.8859-1 以外のすべてのロケールを指しているため、英語を話す世界 中の国々のほとんどのロケールが「英語以外」であり、その他の国々につ いても同様です。 Informix GLS 製品のディレクトリ構造を図 30 に示します。 図 30 GLS 製品の ディレクトリ構 造 *.cv cv9 *.cv *.cm gls cm3 *.cm *.lc en_us lc11 *.lc --- en_us 0333 msg $INFORMIXDIR etc *.ie --(msg サブディレクトリと同じ ) forms (msg サブディレクトリと同じ ) releas (msg サブディレクトリと同じ ) en_us sql demo ----- 420 IBM Informix SQL リファレンス マニュアル 0333 * 各国語のサプリメント 各国語のサプリメント INFORMIX- SQL を英語以外の言語を用いて使用するには、その国や言語の規 則に固有の Informix 各国語のサプリメントを必要とする場合があります。 例えば、Informix データベース サーバで次の東アジア言語をサポートす るのに、現在各国語のサプリメントが必要です。 国または言語 Informix 各国語のサプリメント 中国語 ( 簡体字 ) Language Supplement ZHCN 7.20 中国語 ( 繁体字 ) Language Supplement ZHTW 7.20 日本語 Language Supplement JA 7.20 韓国語 Language Supplement KO 7.20 タイ語 ( 簡体字 ) Language Supplement TH 7.20 これらの東アジア言語用の各国語のサプリメントには、ロケール ファイ ル、翻訳されたメッセージ ファイル、および翻訳されたメニュー ファイ ルが含まれています。東アジアのロケールのローカライズされたバージョ ンの INFORMIX- SQL ( 例えば、日本語の INFORMIX- SQL) には、これらの関連 ファイルが含まれています。追加情報については、リリース ノートを参照 してください。 対応する各国語サプリメント (International Language Supplement) には、 ほとんどのヨーロッパ言語のロケール ファイルとコード セット変換ファ イルが含まれています。これらのファイルのほとんどは、INFORMIX- SQL と一 緒に提供される Client SDK ソフトウェアに含まれているため、必要なロ ケールが INFORMIX- SQL に含まれていない場合を除いては、INFORMIX- SQL のお 客様がこのサプリメントを購入する必要はありません。 Informix データベース サーバを英語以外のヨーロッパ言語に基づいたロ ケールにインストールする場合、デフォルト ( 英語 ) のデータベース サーバと各国語サプリメント (International Language Supplement) の両 方をインストールする必要があります。 INFORMIX- SQL をインストールする場合、ロケール ファイルもインストール する必要があります。特定のロケールが現在サポートされているか知りた い場合は、Informix の営業担当者に連絡してください。 広域言語サポート 421 INFORMIX-SQL がサポートするロケール INFORMIX-SQL がサポートするロケール ロケール は、指定された言語または文化の規則を定義する環境を扱いま す。例えば、時刻、金額の値をフォーマットしたり、文字の分類、変換、 照合を行ったりします。Informix GLS ロケール定義は、X/Open CAE 仕様と 似ています。 INFORMIX- SQL がサポートする言語には、次のものがあります。 Q 中国語 ( 簡体字 ) Q 中国語 ( 繁体字 ) Q 日本語 Q 韓国語 Q 東ヨーロッパ ( ラテン語 ) Q 東ヨーロッパ ( キリル文字 ) Q 西ヨーロッパ ( ラテン語 ) Q ギリシャ語 Q トルコ語 「ラテン語」とは、米国英語 (U.S. English) において「ローマ」アルファ ベットとも呼ばれます。どのロケールであっても、INFORMIX- SQL では、コー ド セットをサポートするフォントを少なくとも 1 つは必要とします。 INFORMIX- SQL は、TH 7.20 で提供されるタイ語のサポートを、複合文字以外 のタイ語に制限しています。(INFORMIX- SQL は複合文字のタイ語をサポート しません。) クライアント ロケールおよびサーバ ロケール INFORMIX- SQL が稼働するシステムのロケールは、クライアント ロケールと 呼ばれます。データベース サーバのロケールは、サーバ ロケールと呼ば れます。429 ページの『コード セット変換処理』では、クライアント ロ ケールとサーバ ロケールが同じでない場合に必要な特殊な手順を説明して います。 422 IBM Informix SQL リファレンス マニュアル 言語環境の構成 ロケールの指定 INFORMIX- SQL では、データベース サーバをサポートする UNIX システムで、 環境変数およびロケール ファイルの設定を用いてロケールを指定する必要 があります。 UNIX システムで広域言語サポートを構成する方法、および英語以外のロ ケール ファイルの例について詳しくは、「Informix Guide to GLS Functionality」を参照してください。環境変数の設定に関する追加情報に ついては、423 ページの『言語環境の構成』も参照してください。 言語環境の構成 INFORMIX- SQL の GLS 機能を Informix データベース サーバと一緒に使用す る場合、互換性に関する考慮事項がいくつかあります。 Q 英語版のサーバは ASCII データを用いて英語のデータベースを作成 します。このため、INFORMIX- SQL がサーバにアクセスするには、 DB_LOCALE を en_us.8859-1 に設定する必要があります。 Q Informix サーバの 5.x ALS バージョンでは、DB_LOCALE および DBCONNECT の代わりに、それぞれ DBCODESET および DBCSOVERRIDE な どの変数を使用できます。 Q 5.xALS バージョンでは、4.x ASCII サーバをエミュレートするのに DBASCIIBC を使用します。このような動作を要求するときは、この 環境変数を設定する必要があります。 Q SERVER_LOCALE 環境変数は、INFORMIX- SQL クライアントではなく、 データベース サーバで設定されます。この環境変数は、データ ベース サーバがオペレーティング システム ファイルの読取りま たは書込みに使用するロケールを指定します。これが設定されてい ない場合のデフォルトは、米国英語 (U.S. English) (en_us.88591) です。 設定が指定されていない場合、INFORMIX- SQL は英語のロケールを使用しま す。 広域言語サポート 423 GLS をサポートする環境変数 製品の各国対応されていない部分は、デフォルトの米国英語 (U.S. English) ロケールで初期化されます。つまり、CLIENT_LOCALE および DB_LOCALE (en_us.8859-1) は両方共英語に設定されます。各国対応されて いるコンポーネントと、されていないコンポーネント間で、多くの共通の 機能が共有されるため、この初期化が必要となります。 重要 : 後続のセクションで記載されている DBFORMAT を除くすべての環境 変数を、Informix データベース サーバに適用できます。 次の考慮事項に注意してください。 Q INFORMIX- SQL では、異なるロケールのデータベースに同時に接続す る機能 ( 例えば、拡張結合など ) をサポートしていません。 Q ここで説明している環境変数は、サーバに渡される DB_LOCALE につ いて述べたものです。 Q 実行中に CLIENT_LOCALE を動的に変更することはできません。 Q 直前の事項については、例外が 1 つあります。CLIENT_LOCALE は常 時、英語に設定されます ( 英語がすべてのロケールのサブセット であるためです )。 GLS、NLS、または ALS ( アジア言語サポート ) データベースに接続する場 合、DB_LOCALE コード セットはデータベースの DB_LOCALE コード セットと 一致する必要があります。サーバによるコード セットの互換性の妥当性検 査は行われないため、これらのコード セットが一致しないと、データベー スが破壊する可能性があります。コード セットが一致しない場合に ALS サーバは接続を拒否することができますが、NLS サーバは拒否できません。 GLS をサポートする環境変数 このセクションでは、INFORMIX- SQL の GLS 機能をサポートする以下の環境変 数について検証します。 Q DBDATE は日付の表示形式を定義します。 Q DBMONEY は金額の表示形式を定義します。 Q DBFORMAT は数値および金額の表示形式を定義し、DBMONEY より多く のオプションがあります。 INFORMIX- SQL はまた、以下の GLS 環境変数もサポートします。 Q DB_APICODE はマッピング ファイルを持つコード セットを指定しま す。 424 IBM Informix SQL リファレンス マニュアル GLS をサポートする環境変数 Q DB_LOCALE は INFORMIX- SQL が接続しているデータベースのロケール です。 Q CLIENT_LOCALE は INFORMIX- SQL を実行するシステムのロケールです。 Q DBLANG は Informix エラー メッセージ集のあるディレクトリを指 します。 Q Q GL_DATE は東アジアの形式を含む日付表示を定義します。 GL_DATETIME は東アジアの形式を含む日付および時刻の表示を定義 します。 Q SERVER_LOCALE はファイル入出力を行うデータベース サーバのロ ケールです。 INFORMIX- SQL が直接 DB_LOCALE を使用するわけではありません。 DBLANG と同 様に、この DB_LOCALE 変数は、Client SDK の GLS バージョンによって使用さ れます。 DBLANG、DB_LOCALE、GL_DATE、および GL_DATETIME の設定方法につい て詳しくは、「Informix Guide to GLS Functionality」を参照してくださ い。その他の Informix 環境変数については、『付録 B. 環境変数の設定』 を参照してください。 DBAPICODE この環境変数は、文字セットがデータベース サーバの文字セットと異なる 周辺装置 ( 例えば、キーボード、表示端末、プリンタなど ) のマッピング ファイルの名前を指定します。 DB_LOCALE この環境変数は、INFORMIX- SQL が接続しているデータベースのロケールを指 定します。DB_LOCALE の設定形式は、DB_LOCALE=<locale> です。 DB_LOCALE に関して以下の点に注意してください。 Q データベースのロケールは、DB_LOCALE で指定されている値と一致 する必要があります。一致しないと、サーバのバージョンによって は、(DBCSOVERRIDE が 1 に設定されていない場合に ) データベース 接続が拒否される場合があります。 Q データベースが作成されると、新規データベースの値は DB_LOCALE で指定されている値になります。 Q 形式が正しくないか、または存在しないロケールを指定したために DB_LOCALE が無効な場合は、エラーが発生します。 広域言語サポート 425 GLS をサポートする環境変数 Q DB_LOCALE で示されるコード セットが CLIENT_LOCALE で指定されて いるコード セットに変換できない場合、またはその逆の変換がで きない場合は、エラーが発生します。 Q DB_LOCALE が指定されていない場合のデフォルト値はありません。 この場合、Client SDK の GLS バージョンは、変換が必要ないもの として動作します。 CLIENT_LOCALE この環境変数は、( 入力 ) ソース コードおよび ( 生成された ) コンパイル 済みのコードのロケールを指定します。エラー ファイルが存在する場合 は、エラー ファイルと中間ファイルのロケールもこれと同じです。 CLIENT_LOCALE の形式は DB_LOCALE の形式と同じです。 Q (ASCII 文字以外の ) ユーザ インターフェースにおよぶ文字は CLIENT_LOCALE になければなりません。 Q 形式が正しくないか、または存在しないロケールを指定したために DB_LOCALE が無効な場合は、エラーが発生します。 Q DB_LOCALE および CLIENT_LOCALE の設定の互換性を保つために、こ れらの間のコード セット変換が正しく行われる必要があります。 互換性がないと、エラーが生成されます。 Q 照合は CLIENT_LOCALE のコード セットの順序に従います。ただし、 ( データベース サーバが独自の照合順序を用いる ) SQL 文 の場合 を除きます。COLLATE 仕様はすべて無視されます。 DBLANG DBLANG の値は、必要なメッセージ、ヘルプ、およびデモ ファイルを含む ディレクトリのパス名を指定するのに使用します。DBLANG の形式は DB_LOCALE の形式と同じです。 DBLANG が指定されていない場合のデフォルトは CLIENT_LOCALE で設定して いる値になります。 「Informix Guide to GLS Functionality」の DBLANG の説明も参照してくだ さい。 426 IBM Informix SQL リファレンス マニュアル GLS をサポートする環境変数 DBDATE DBDATE 環境変数は、 年号に基づいた日付 ( 日本語および中国語 ( 繁体字 )) をサポートするよう変更されました。( ロケール フォームにおける ) 年の 週および月の日数がロケール ファイルに格納されます。この環境変数が設 定されると、その他で指定されている日付形式が上書きされる可能性があ ります。 DBMONEY この環境変数は、マルチバイトの通貨記号を使用できるよう変更されまし た。INFORMIX- SQL は DBMONEY ( または DBFORMAT) の値を読み取り、マルチバ イト文字を通貨記号として正しく処理する必要があります。DBMONEY が設定 されると、その他で指定されている通貨形式が上書きされる可能性があり ます。 DBFORMAT この環境変数は、マルチバイトの通貨記号を使用できるよう変更されまし た。英語版の製品の DBFORMAT とは異なり、INFORMIX- SQL において小数点の表 示は必須ではなくオプションです。 DBFORMAT が設定されると、その他で指定されている数値または金額の形式 が上書きされる可能性があります。 付録 B および「Informix SQL ガイド : 参照」の DBDATE、DBFORMAT、および DBMONEY の説明も参照してください。 glfiles ユーティリティについては、「Informix Guide to GLS Functionality」で説明されています。このユーティリティを使用して、以 下のファイルを生成できます。 Q システムで有効な GLS ロケール Q 有効な Informix コード セット変換ファイル Q 有効な Informix コード セット ファイル デフォルトの GLS 環境設定 このセクションでは、(ALS 環境の値とは異なる ) INFORMIX- SQL で提供され るデフォルト値について説明します。 広域言語サポート 427 システム環境変数 次の表は、いくつか必要なロケールの値を定義した場合に INFORMIX- SQL で 提供される値を示しています。 ( 次の例では、ja-jp.ujis の値を前提とし、また、CL は CLIENT_LOCALE、 DL は DB_LOCALE を意味します。 ) ユーザが定義 CL で定義 CL の値 DB で 定義 製品の値 DL の値 CL の値 DL の値 -- いいえ -- en_us.8859 en_us.8859 はい ja_jp.ujis いいえ -- ja_jp.ujis ja_jp.ujis はい ja_jp.ujis はい ja_jp.ujis ja_jp.ujis ja_jp.ujis -- はい ja_jp.ujis en_us.8859 ja_jp.ujis いいえ いいえ DBLANG 環境変数を設定しないと、CLIENT_LOCALE の値が設定されます。 システム環境変数 X/Open で定義されている LANG 環境変数の値により言語環境が指定されま す。システム間における標準 LANG ロケール値はありません。ロケール変数 を指定する正確な値は、システムに固有で、システムにインストールされ ている各国語のサプリメントによっても異なります。 LANG 環境変数について詳しくは、 「Informix SQL ガイド : 参照」を参照し てください。 428 IBM Informix SQL リファレンス マニュアル コード セット変換処理 コード セット変換処理 INFORMIX- SQL が稼働しているロケールの文字をデータベース サーバのロ ケールの文字に変換する処理 ( またはその逆 ) はコード セット変換 と呼 ばれます。INFORMIX- SQL が、異なる文字セットをエンコードするコン ピュータで稼働する場合、コード セット変換を行わなければならない場合 があります。このセクションでは、その背景と詳細について説明します。 コード セット変換は Client SDK により実行されます。INFORMIX- SQL による 明示的なコード セット変換は行われません。図 31 は、INFORMIX- SQL、 Client SDK、およびデータベースの関係を示しています。 図 31 プロセスおよびロケール CLIENT_LOCALE INFORMIX-SQL DB_LOCALE INFORMIX-CSDK データベース CLIENT_LOCALE のコード セットを DB_LOCALE と異なるコード セットに設定 できます。 コード セット変換は、コード セット変換ファイルを用いて行われます。 CLIENT_LOCALE および DB_LOCALE 間のコード セット変換用のファイルがクラ イアント上に必要です。変換を行うためには、変換ファイルが $INFORMIXDIR/gls/cv ディレクトリになければなりません。 クライアントとサーバのコード セット間の変換について詳しくは、後続の セクションを参照してください。「Informix Guide to GLS Functionality」 もまた参照してください。 広域言語サポート 429 コード セット変換とは コード セット変換とは 異なるオペレーティング システムで同じ文字を異なる方法でエンコードす ることがあります。例えば、文字 a ( 曲折アクセント記号付き ) は次のよ うにエンコードされます。 Q Windows コード ページ 1252 で 16 進数 0xE2 として Q IBM CCSID 437 で 16 進数 0x83 として Windows システムにおける a ( 曲折アクセント記号付き ) のエンコードは 変更されずに IBM システムに送信され、ギリシャ語のガンマとして印刷さ れます。これは、IBM システムではガンマが 0xE2 としてエンコードされて いるためです。 よって、異なる文字セット エンコーディングを使用する 2 つのコン ピュータ間で文字データ ストリングが渡される場合、異なるエンコード間 での変換が必要となります。この変換を行わないと、あるコンピュータに ある元の文字データが、他のコンピュータで正しく表示または処理されま せん。 この付録では、コード セット という用語を、Windows の資料で文字セッ ト またはコード ページ という用語として用いているのと同様の意味で使 用しています。 あるエンコード スキーマの文字データを別のンコード スキーマの文字 データに変換することをコード セット変換 と呼びます。コード セット変 換は、コンピュータ A からコンピュータ B への変換、およびコンピュータ B からコンピュータ A への変換で必要です。明示的にコード セット変換を 有効にする必要があります。デフォルトではコード セット変換は行われま せん。 コード セット変換で行わない機能 コード セット変換はセマンティックな翻訳ではありません。つまり、異な る言語間の単語を変換するわけではありません。例えば、英語の yes とフ ランス語の oui を変換するのではありません。単に、文字のエンコード方 法に関係なく、各文字を同じ様に処理し、印刷する機能です。 430 IBM Informix SQL リファレンス マニュアル コード セット変換とは コード セット変換では、文字がソースのコード セットのみに存在する場 合、ターゲットのコード セットにはこれらの文字は作成されません。例え ば、文字 a ( 曲折アクセント記号付き ) が、a ( 曲折アクセント記号付き ) の文字を含まないコード セットのコンピュータに渡されると、ターゲッ ト コンピュータは a ( 曲折アクセント記号付き ) 文字を正しく処理した り、印刷したりすることができません。これについては、432 ページの 『不一致の処理』で詳細に説明します。 コード セット変換が必要ない場合 次のような場合、コード セット変換を行う必要はありません。 Q クライアントとサーバが同じコンピュータにある。 Q クライアントと、接続するデータベースのコード セットがすべて 同じである。 Q クライアントとサーバ間で送信される文字のサブセットが全く同様 にエンコードされている。例えば、クライアントとサーバ間で英語 のみを送信する場合、英語の各文字は両方のコンピュータで同じエ ンコード方式であるため、コード セット変換は必要ありません。 この場合、英語以外の文字は、異なるエンコード方式を用いる可能 性があります。 Q 文字列データの値がクライアントからサーバのストレージに渡され るだけで、サーバでは処理したり、印刷したりしない。例えば、ク ライアントの状況が次のような場合、コード セット変換は必要あ りまぜん。 T 文字列データをサーバに渡す。 T サーバ コンピュータでデータを処理または印刷しない。 T データベースを構築しているクライアントと同じコード セッ トを使用するコンピュータで、クライアントと同じデータを処 理または印刷するために取得する。 ただし、ORDER BY 文を使用してデータをソートしたり、または LIKE や MATCHES 節を使用してデータを検索する場合、ソートする前にデータ文字列 の変換を行わないと、間違った結果が生成される可能性があります。 広域言語サポート 431 変換するデータ値 変換するデータ値 コード セット変換が有効になると、Client SDK によって、データ値が INFORMIX- SQL クライアントからデータベース サーバへ、サーバからクライ アントへと変換されます。文字 (CHAR) 型、可変長文字 (VARCHAR) 型、および テキスト (TEXT) 型の BLOB データ型が、列名、表名、データベース名、SQL コマンド テキストとして変換されます。 不一致の処理 両方のコード セットが全く同じ文字をエンコードしている場合、不一致の 処理は不要です。ただし、ターゲットのコード セットにない文字がソース のコード セットに含まれている場合は、変換において、不一致の文字を ターゲットのコード セットにどのようにマップするか定義する必要があり ます。 コード セット変換で不一致の処理を行う 4 つの方法を、以下に示します。 Q ラウンド トリップ変換。この変換では、ソース コードの不一致文 字をそれぞれ、ターゲットのコード セットの固有の文字にマップ します。文字を返す場合は、また元の文字にマップされます。これ により、両方向の変換で情報が失われることはありませんが、一方 向のみの変換においては、ターゲット コンピュータで処理や印刷 を行うときに問題が起きる場合があります。 Q 置換変換。この変換では、サーバで不一致文字を強調表示するため に、ソースのコード セットのすべての不一致文字が、ターゲット のコード セットで単一の特定の文字にマップされます。これによ り、一方向の変換では不一致文字を明確に表示できますが、両方向 の変換では、不一致文字が転送される場合に情報が失われてしまい ます。 Q グラフィック置換変換。この変換では、ソース コードの各不一致 文字を、ソース文字と似ているターゲットのコード セットの文字 にマップします ( これには、1 文字の合字を、対応する 2 文字に マップする変換も含まれます )。これにより、ターゲット コン ピュータで印刷するときに問題が起きる場合があります。ラウンド トリップ変換では、グラフィック置換変換をできる限り多く含んで いなければなりません。 Q 置換およびグラフィック置換。この変換では、できる限り多くの不 一致文字をグラフィック置換にマップし、残りの不一致文字を置換 文字にマップします。 432 IBM Informix SQL リファレンス マニュアル コード セット変換の使用可能化 Informix で提供しているコード セット変換のソース ファイルのヘッダ に、使用する方式を示すコメントがあります。 コード セット変換の使用可能化 UNIX でのコード セット変換は、UNIX 環境変数によって処理されます。 コード セット変換を設定するには、次のようにします。 1. クライアントで使用するコード セットを決定します。 2. 上記クライアントでシングル接続時に接続するすべてのデータベー スで使用するコード セットを決定します。 3. 変換ファイル名を指定します。 オペレーティング システムごとに、使用するコード セットを宣言する独 自の方法があるため、UNIX オペレーティング システムの資料や、またはシ ステム管理者に連絡して、クライアント コンピュータで使用するコード セットを決定してください。 システム管理者は、データベースで使用されているコード セットについて も知っている必要があります。 DBAPICODE 環境変数を使用して、メッセージ ディレクトリ $INFORMIXDIR/msg ( あるいは、LANG または DBLANG 値で指定されているディ レクトリ ) のマッピング ファイルを持つコード セットを指定します。 Informix crtcmap ユーティリティが、マッピング ファイルを作成するの に役立ちます。 DBAPICODE および crtcmap ユーティリティについて詳しくは、 「Informix SQL ガイド : 参照」を参照してください。♦ 広域言語サポート 433 コード セット変換の使用可能化 434 IBM Informix SQL リファレンス マニュアル 付録 termcap および terminfo の変更 PERFORM スクリーン フォームにカラーとグラフィックス文字を 組み込むことができます。これらの文字の効力は、端末に依存 します。端末に依存する特性を決定するのに、INFORMIX- SQL は termcap ファイルまたは terminfo ディレクトリにある情報を 使用します。INFORMIX- SQL は INFORMIXTERM 環境変数を用いて、 termcap を使用するか、または terminfo を使用するかを決定 します。INFORMIXTERM について詳しくは、付録の『環境変数』 か、または序に記載されている環境変数の説明をお読みくださ い。 INFORMIX- SQL と一緒に、Informix は termcap ファイルを配布 しています。termcap ファイルには、多くの共通の端末に関す る追加機能 (Wyse 50 や Televideo 950 など ) が含まれます。 この付録では、これらの機能と、termcap エントリおよび terminfo エントリの一般形式について説明します。 terminfo はカラーをサポートしていないため、INFORMIX- SQL の カラー機能は、termcap を用いてのみ使用できます。 INFORMIX- SQL スクリーン フォームでカラーを使用するには、 INFORMIXTERM を termcap に設定する必要があります。 ご使用の端末のマニュアルに記載されている情報と併せてこの 付録の情報をご覧になり、termcap ファイルまたは terminfo ファイルの内容を変更してください。この付録は、termcap と terminfo の 2 つのメイン セクションから構成されます。どち らのファイルを使用するかによって、該当するセクションをお 読みください。 D termcap termcap INFORMIX- SQL がシステムにインストールされると、termcap ファイルが $INFORMIXDIR の etc サブディレクトリに置かれます。このファイルは、オ ペレーティング システムの termcap ファイルのスーパセットです。 Informix termcap ファイルには、多数の端末の追加機能が含まれます。次 のような場合に、さらにこのファイルを変更したいかもしれません。 Q 端末のエントリが、カラー変更と強調変更の機能を組み込むよう変 更されていない。 Q 枠に使用するグラフィックス文字を指定または変更したい。 ヒント : 一部の端末では、カラーやグラフィックス文字をサポートしてい ません。この付録と、ご使用の端末と一緒に配布されるユーザ ガイドを読 んでから、この付録に記載されている変更がご使用の端末に適用されるか どうかを判断するようお勧めします。 termcap エントリの形式 このセクションでは、termcap エントリの一般形式について説明します。 termcap について詳しくは、ご使用のオペレーティング システムの資料を 参照してください。 termcap エントリには、端末の名前のリストが含まれ、その後に端末の機 能のリストが続きます。3 つの機能の型は次のとおりです。 Q ブール Q 数値 Q 文字列 termcap エントリはすべて、次の形式からなります。 Q エスケープ (ESCAPE) は円記号 (\) とそれに続く文字 E で指定され、 制御 (CONTROL) はキャレット (^) で指定されます。termcap エント リ内のエスケープ シーケンスまたは制御文字を指定するのに、エ スケープ キーまたは制御キーを使用しないでください。 Q 最後のエントリを含め、各機能の後にはコロン (:) が付きます。 Q エントリは、単一論理行に定義する必要があります。次の行に折り 返す行の最後には、円記号 (\) を使用します。 436 IBM Informix SQL リファレンス マニュアル termcap エントリの形式 図 32 は、Wyse 50 端末の基本的な termcap エントリを示しています。 # Entry for Wyse 50: w5|wy50|wyse50:\ :if=/usr/lib/tabset/std:\ :al=\EE:am:bs:ce=\Et:cm=\E=%+ %+ :cl=\E*:co#80:\ :dc=\EW:dl=\ER:ho=^^:ei=:kh=^^:im=:ic=\EQ:in:li#24:\ :nd=^L:pt:se=\EG0:so=\EG4:sg#1:ug#1:\ :up=^K:ku=^K:kd=^J:kl=^H:kr=^L:kb=:\ :k0=^A@^M:k1=^AA^M:k2=^AB^M:k3=^AC^M:k4=^AD^M:\ :k5=^AE^M:k6=^AF^M:k7=^AG^M:\ :HI=^|:Po=^R:Pe=^T: 図 32 Wyse 50 termcap エント リ ヒント : コメント行はポンド記号 (#) で始まります。 端末名 termcap エントリは 1 つ以上の端末の名前で始まり、端末ごとに縦棒 (|) で区切られます。例えば、Wyse 50 端末の termcap エントリは、次の行で 始まります。 w5|wy50|wyse50:\ これらの名前のいずれかを用いて、termcap エントリにアクセスできます。 ブール機能 ブール機能は、端末に特定の機能があるかどうかを示す 2 文字コードで す。ブール機能が termcap エントリに存在する場合、端末はその特定の機 能をサポートします。図 33 は、Wyse 50 端末のブール機能の一部を示し ています。 図 33 Wyse 50 の ブール機能 bs:am: # # bs am backspace with CTRL-H automatic margins termcap および terminfo の変更 437 termcap エントリの形式 数値機能 数値機能は 2 文字コードで、その後にポンド記号 (#) と値が続きます。 図 34 は、Wyse 50 端末における、列数および行数の数値機能を示してい ます。 :co#80:li#24: # # co li 図 34 Wyse 50 の 数値機能 number of columns in a line number of lines on the screen 同様に、sg は画面で反転表示用に必要な文字位置の数を示します。エント リ :sg#1: は、反転表示がオンとオフで切り替わるときに、端末で追加の 文字位置が 1 つ必要であることを示します。特定の数値機能を組み込まな い場合は、INFORMIX- SQL では値をゼロに設定します。 文字列機能 文字列機能は、端末操作を実行するのに使用するシーケンスを指定します。 文字列機能は 2 文字コードで、その後に等号 (=) と、区切り文字 (:) で 終わる文字列が続きます。 438 IBM Informix SQL リファレンス マニュアル スクリーン フォームでのグラフィックス文字の指定 ほとんどの termcap エントリには、画面の消去、カーソル移動、矢印 キー、下線、ファンクション キーなどの文字列機能が含まれています。 図 35 は、Wyse 50 端末のいくつかの文字列機能を示しています。 :ce=\Et:cl=\E*:\ :nd=^L:up=^K:\ :so=\EG4:se=\EG0:\ :ku=^K:kd=^J:kr=^L:kl=^H:\ :k0=^A@^M:k1=^AA^M:k2=^AB^M:k3=^AC^M: # # # # # # # # # # # # # # # # # 図 35 Wyse 50 の 文字列機能 ce=\Et clear to end of line cl=\E* clear the screen nd=^L non-destructive cursor right up=^K up one line so=\EG4 start stand-out se=\EG0 end stand-out ku=^K up arrow key kd=^J down arrow key kr=^L right arrow key kl=^H left arrow key k0=^A@^M function k1=^AA^M function k2=^AB^M function k3=^AC^M function key key key key F1 F2 F3 F4 スクリーン フォームでのグラフィックス文字の指定 INFORMIX- SQL は termcap ファイルで定義されている文字を使用して、スク リーン フォームで表示するボックス枠やその他の長方形を描きます。 termcap ファイルにこれらの文字が定義されていない場合は、INFORMIX- SQL は水平方向の線にはハイフン (-) を、垂直方向の線には縦棒 (|) を、隅に はプラス符号 (+) を使用します。 INFORMIX- SQL で提供されている termcap ファイルには、多くの共通端末用 の枠文字の定義が含まれています。termcap ファイルを調べて、ご使用の 端末のエントリがこれらの定義を組み込むように変更されているかどうか を確認することができます。ご使用の端末エントリに枠文字の定義が含ま れていない場合、または別の枠文字を指定したい場合は、ユーザまたはシ ステム管理者により、termcap ファイルを変更することができます。 termcap および terminfo の変更 439 スクリーン フォームでのグラフィックス文字の指定 termcap ファイルで端末タイプの定義を変更するには、次のステップを 行ってください。 1. グラフィックス モードのオン、オフを切り替えるためのエスケープ シーケンスを決定します。これに関する情報は、ご使用の端末と一 緒に配布されているマニュアルに記載されています。例えば、Wyse 50 端末では、グラフィックス モードに切り替えるエスケープ シーケンスは ESC H^B で、グラフィックス モードを解除するエス ケープ シーケンスは ESC H^C です。 ヒント : グラフィックス モードのない端末では、エスケープ シーケンス を使用しません。グラフィックスを使用しない端末で代替の枠文字を指定 する手順については、このセクションの最後で説明します。 2. 枠を描くのに INFORMIX- SQL で必要な 6 つのグラフィックス文字用 の、ASCII と等価な入力を確認します。( グラフィックス文字の ASCII と等価な入力とは、指定された文字を取得するのにグラ フィックス モードで押すキーのことです。) 図 36 は、Wyse 50 端末のグラフィックス文字および ASCII と等価 な入力を示しています。 図 36 Wyse 50 での枠グラフィックス文字の ASCII と等価な入力 ウィンドウ枠位置 グラフィックス 文字 ASCII に等価 左上隅 2 左下隅 1 右上隅 3 右下隅 5 水平方向 - z 垂直方向 6 前述のとおり、これに関する情報は、ご使用の端末と一緒に配布さ れているマニュアルに記載されています。 3. ご使用の端末用に termcap エントリを編集します。 440 IBM Informix SQL リファレンス マニュアル スクリーン フォームでのグラフィックス文字の指定 ヒント : termcap ファイルを編集する前に、このファイルをコピーしたい 場合があります。TERMCAP 環境変数を使用して、アクセスしたい termcap ファイルのコピーを指示するよう設定できます。 次のように指定します。 termcap- capability= value 上記形式を使用して、以下の termcap 機能の値を入力します。 gs グラフィックス モードに切り替えるエスケープ シーケンス です。termcap ファイルでは、エスケープ (ESCAPE) は円記号 (\) とそれに続く文字 E で表され、制御 (CONTROL) はキャ レット (^) で表されます。例えば、Wyse 50 のエスケープ シーケンス ESCAPE-H CONTROL-B は、\EH^B と表します。 ge グラフィックス モードを解除するエスケープ シーケンスで す。例えば、Wyse 50 のエスケープ シーケンス ESCAPE-H CONTROL-C は、\EH^C と表します。 gb 6 つのグラフィックス文字の ASCII と等価な入力が連結され た順序リストが、枠を描くのに使用されます。次の順序を使 用します。左上隅、左下隅、右上隅、右下隅、並行方向の線、 垂直方向の線。 termcap エントリに情報を追加する場合は、次のガイドラインに 従ってください。 Q コロン (:) を用いてエントリを区切る。 Q 各改行の最後に円記号 (\) を用いる。 Q コロンを用いて最後の行を終了する。 例えば、Wyse 50 端末を使用する場合、Wyse 50 の termcap エン トリに次のように情報を追加します。 :gs=\EH^B:\ # sets gs to ESC H CTRL B :ge=\EH^C:\ # sets ge to ESC H CTRL C :gb=2135z6:\ # sets gb to the ASCII equivalents # of graphics characters for upper # left, lower left, upper right, # lower right, horizontal, # and vertical 次のように、この情報を単一行で入力することもできます。 :gs= \EH^B:ge= \EH^C:gb=2135z6: \ termcap および terminfo の変更 441 カラーおよび強調の追加 グラフィック機能のない端末 グラフィック機能のない端末の場合、gs 機能および ge 機能に空白の値を 入力する必要があります。gb の場合は、INFORMIX- SQL がウィンドウ枠に使用 する文字を入力できます。 次の例は、グラフィック機能のない端末のエントリで、gs、ge、および gb に使用できる値を示しています。この例では、ウィンドウ枠を描くのに、 並行方向の線には下線 (_) を、垂直方向の線には縦棒 (|) を、上部の隅に はピリオド (.) を、下部の隅には縦棒 (|) を使用しています。 :gs=:ge=:gb=.|.|_|: PERFORM 画面で画面枠を指定するときに、INFORMIX- SQL は termcap ファイル のグラフィックス文字を使用します。 カラーおよび強調の追加 Informix termcap ファイル ($INFORMIXDIR の下の etc サブディレクトリ ) のほとんどの端末エントリが、カラー機能または強調機能、あるいはその 両方を組み込むよう変更されました。termcap ファイルを表示して、ご使 用の端末タイプのエントリがこれらの機能を組み込んでいるかを判別する ことができます。端末エントリに ZA 機能が組み込まれている場合、その端 末はカラーまたは強調、あるいはその両方が設定されています。組み込ま れていない場合は、このセクションの情報に従って、カラー機能または強 調機能を追加できます。次のトピックは、このセクションの概要です。 Q カラーおよび強調 Q ZA 機能 Q スタック操作 Q 例 ご使用の端末エントリを変更する前に、これらのトピックをお読みくださ い。 カラー属性と強調属性 PERFORM 画面をモノクロ端末またはカラー端末のいずれかで表示できます。 ここで記載されているように termcap ファイルを設定すると、カラー属性 と強調属性が図 37 で示されるように関連付けられます。 442 IBM Informix SQL リファレンス マニュアル カラーおよび強調の追加 図 37 カラーとモノクロの対応関係 番号 カラー端末 モノクロ端末 0 WHITE ( 白 ) NORMAL ( 標準 ) 1 YELLOW ( 黄 ) BOLD ( 太字 ) 2 MAGENTA ( マジェン BOLD ( 太字 ) タ) 3 RED ( 赤 ) BOLD† ( 太字 ) 4 CYAN ( シアン ) DIM ( 低輝度 ) 5 GREEN ( 緑 ) DIM ( 低輝度 ) 6 BLUE ( 青 ) DIM&134; ( 低輝度 ) 7 BLACK ( 黒 ) INVISIBLE ( 不可視 ) カラーの背景は常に BLACK ( 黒 ) です。図 37 の † は、キーワード BOLD が 属性として指定されると、カラー端末ではフィールドが RED になり、キー ワード DIM が属性として指定されると、カラー端末ではフィールドが BLUE になるよう、色分けしています。 カラーまたはモノクロのいずれのモードでも、REVERSE ( 反転 ) 属性、BLINK ( 点滅 ) 属性、または UNDERLINE ( 下線 ) 属性を端末でサポートしている場 合、これらの属性を追加できます。これらの 3 つの属性の 1 つのみを選択 できます。 ZA 文字列機能 INFORMIX- SQL では、パラメータのある文字列機能 ZA を termcap ファイル で使用し、カラーの割当てを決定します。ASCII 文字のリテラル シーケン スに対応して設定するその他の termcap 文字列機能と異なり、ZA は次の 4 つのパラメータに基づく関数文字列です。 パラメータ 1 (p1) カラー番号 0 ~ 7 ( 図 37 を参照 ) パラメータ 2 (p2) 0 = 標準 ; 1 = 反転 termcap および terminfo の変更 443 カラーおよび強調の追加 パラメータ 3 (p3) 0 = 点滅なし ; 1 = 点滅 パラメータ 4 (p4) 0 = 下線なし ; 1 = 下線 ZA ではこれらの 4 つのパラメータの値とスタック マシンを使用して、端 末に送信する文字を決定します。PERFORM の実行中にカラー属性仕様が実行 されると、ZA 関数が呼び出され、これらのパラメータが評価されます。ご 使用の端末用に ZA パラメータの値を正しく設定するには、端末のマニュ アルに記載されている情報を参照してください。 端末の ZA 文字列を定義するには、スタック操作 を使用して、値をスタッ ク にプッシュしたり、スタックからポップしたりします。次のセクション では、いくつかのスタック操作について説明します。端末の文字列の定義 方法を理解するのに、これらの説明や後続の例を参照してください。 スタック操作 ZA 文字列はスタック操作を使用して、値をスタックにプッシュするか、ま たは値をスタックからポップします。通常、ZA 文字列の指示は、パラメー タをスタックにプッシュし、1 つ以上の定数と比較し、適切な文字シーケ ンスを端末に送信します。もっと複雑な操作が必要な場合も多くあり、表 示属性を (a から z の名前が付いている ) 静的スタック マシン レジスタ に格納することにより、端末固有の最適化を行うことができます。 記述を行うときに使用できる、さまざまなスタック演算子の要約について 後述します。スタック演算子について詳しくは、ご使用のオペレーティン グ システムの資料を調べてください。 444 IBM Informix SQL リファレンス マニュアル カラーおよび強調の追加 文字を端末に送信する演算子 %d スタックから数値をポップし、最大 3 桁を端末に送信します。 例えば、スタックの先頭の値が 145 の場合、%d はその値をス タックからポップし、ASCII 表示の 1、4、および 5 を端末に送 信します。スタックの先頭の値が 2005 の場合、%d はその値を スタックからポップし、ASCII 表示の 5 を端末に送信します。 %2d スタックから数値をポップし、最大 2 桁を端末に送信して、2 つの場所に埋め込みます。例えば、スタックの先頭の値が 145 の場合、%2d はその値をスタックからポップし、ASCII 表示の 4 および 5 を端末に送信します。スタックの先頭の値が 5 の場 合、%2d はその値をスタックからポップし、ASCII 表示の 0 およ び 5 を端末に送信します。 %3d スタックから数値をポップし、最大 3 桁を端末に送信して、3 つの場所に埋め込みます。例えば、スタックの先頭の値が 7 の 場合、%3d はその値をスタックからポップし、ASCII 表示の 0、 0、および 7 を端末に送信します。 %c スタックから単一文字をポップし、これを端末に送信します。 スタックを操作する演算子 %p[1-9] 指定されたパラメータの値をスタックにプッシュします。パラ メータの表記は p1, p2, ... p9 となります。例えば、p1 の値 が 3 の場合、%p1 は 3 をスタックにプッシュします。 %P[a-z] スタックから値をポップし、その値を指定されている変数に格 納します。変数の表記は Pa, Pb, ... Pz となります。例えば、 スタックの先頭の値が 45 の場合、%Pb はスタックから 45 を ポップし、これを変数 Pb に格納します。 %g[a-z] 対応する変数 (P[a-z]) に格納されている値を取得し、これをス タックにプッシュします。例えば、変数 Pb に格納されている値 が 45 の場合、%gb は Pb から 45 を取得し、これをスタックに プッシュします。 %'c’ 単一文字をスタックにプッシュします。例えば、%'k’は k をス タックにプッシュします。 termcap および terminfo の変更 445 カラーおよび強調の追加 %{n} 整定数をスタックにプッシュします。整数の長さの制限はなく、 正、負のいずれも使用できます。例えば、%{0} は値 0 をスタッ クにプッシュします。 %S[a-z] スタックから値をポップし、その値を指定されている静的変数 に格納します。( 静的ストレージは、格納されている値が、ある 属性から次の属性へと存続するため、不揮発性です。) 静的変 数の表記は Sa, Sb, ... Sz です。例えば、スタックの先頭の値 が 45 の場合、%Sb はスタックから 45 をポップし、これを静的 変数 Sb に格納します。この値は、INFORMIX- SQL プログラムが存 続している間、アクセス可能です。 %G[a-z] 対応する静的変数 (S[a-z]) に格納されている値を取得し、これ をスタックにプッシュします。例えば、変数 Sb に格納されてい る値が 45 の場合、%Gb は Sb から 45 を取得し、これをスタッ クにプッシュします。 算術演算子 算術演算子はそれぞれ、スタックから先頭の 2 つの値をポップし、操作を 実行し、結果をスタックにプッシュします。 %+ 加算。例えば、%{2}%{3}%+ は 2+3 と同等です。 %- 減算。例えば、%{7}%{3}%- は 7-3 と同等です。 %* 乗算。例えば、%{6}%{3}%* は 6*3 と同等です。 %/ 整数除算。例えば、%{7}%{3}%/ は 7/3 と同等で、結果は 2 と なります。 %m モジュラス ( 剰余 )。例えば、%{7}%{3}%m は (7 mod 3) と同等 で、結果は 1 となります。 446 IBM Informix SQL リファレンス マニュアル カラーおよび強調の追加 ビット演算子 以下のビット演算子は、スタックから先頭の 2 つの値をポップし、操作を 実行し、結果をスタックにプッシュします。 %& ビット AND。例えば、%{12}%{21}%& は (12 AND 21) と同等で、 結果は 4 となります。 Binary Decimal 0 1 1 0 0 = 12 1 0 1 0 1 = 21 ---------------------- and 0 %| 0 1 0 0 = 4 ビット OR。例えば、%{12}%{21}%| は (12 OR 21) と同等で、結 果は 29 となります。 Binary Decimal 0 1 1 0 0 = 12 1 0 1 0 1 = 21 ---------------------- or 1 %^ 1 1 0 1 = 29 排他的 OR。例えば、%{12}%{21}%^ は (12 排他的 OR 21) と同 等で、結果は 25 となります。 Binary Decimal 0 1 1 0 0 = 12 1 0 1 0 1 = 21 ---------------------- exclusive or 1 1 0 0 1 = 25 termcap および terminfo の変更 447 カラーおよび強調の追加 以下の単項演算子は、スタックから先頭の値をポップし、操作を実行し、 結果をスタックにプッシュします。 %~ ビット単位の補数。例えば、%{25}%~ の結果は、次に示されるよう に - 26 の値となります。 Binary 0 0 0 1 1 Decimal 0 0 1 = 25 ------------------------------------1 1 1 0 0 1 1 0 = Complement -26 論理演算子 以下の論理演算子は、スタックから先頭の 2 つの値をポップし、操作を実 行し、論理結果 (false の 0 または true の 1) をスタックにプッシュし ます。 %= 等しい。例えば、パラメータ p1 の値が 3 の場合、式 %p1%{2}%= は 3=2 と同等で、結果は 0(false) となります。 %> より大。例えば、パラメータ p1 の値が 3 の場合、式 %p1%{0}%> は 3>0 と同等で、結果は 1(true) となります。 %< より小。例えば、パラメータ p1 の値が 3 の場合、式 %p1%{4}%< は 3<4 と同等で、結果は 1(true) となります。 以下の単項演算子は、スタックから先頭の値をポップし、操作を実行し、 論理結果 (0 または 1) をスタックにプッシュします。 %! 論理否定。この演算子は、ゼロ以外の数値をすべてゼロの値にし、 ゼロを 1 の値にします。例えば、%{2}%! の結果は 0 の値となり、 %{0}%! の結果は 1 の値となります。 448 IBM Informix SQL リファレンス マニュアル カラーおよび強調の追加 条件文。 条件文 IF-THEN-ELSE の形式は次のとおりです。 %? expr %t thenpart %e elsepart %; %e elsepart はオプションです。thenpart または elsepart の条件文をネ ストすることができます。 INFORMIX- SQL が条件文を評価する場合、スタックから先頭の値をポップし、 この値を true または false のいずれかで評価します。値が true の場 合、INFORMIX- SQL は %t に続く操作を実行します。true でない場合は、( 存 在する場合 ) %e に続く操作を実行します。 例えば、次のような式の場合 : %?%p1%{3}%=%t;31%; 次と同等です。 if p1 = 3 then print ";31" p1 の値が 3 であると想定すると、INFORMIX- SQL は次の手順を実行します。 Q %? は操作を実行しませんが、条件文を読みやすくするために組み 込まれています。 Q %p1 は p1 の値をスタックにプッシュします。 Q %{3} は値 3 をスタックにプッシュします。 Q %= は p1 の値と値 3 をスタックからポップし、ブール式 p1=3 を 評価し、結果の値 1(true) をスタックにプッシュします。 Q %t は値をスタックからポップし、1(true) と評価し、%t に続く操 作を実行します。(";31" はスタック マシン操作ではないた め、INFORMIX- SQL は ";31" を端末に印刷します。) Q %; は条件文を終了します。 termcap および terminfo の変更 449 カラーおよび強調の追加 演算子の要約 図 38 は、使用できる操作を要約したものです。 図 38 スタック操作 操作 説明 %d pop() を 10 進数形式で書きます。 %2d pop() を 10 進数形式で 2 つの場所に書きます。 %3d pop() を 10 進数形式で 3 つの場所に書きます。 %c pop() を単一文字として書きます。 %p[1-9] ith パラメータをプッシュします。 %P[a-z] 変数をポップおよび格納します。 %g[a-z] 変数を取得し、スタックにプッシュします。 %'c' 文字定数をプッシュします。 %{n} 整定数をプッシュします。 %S[a-z] 静的変数をポップおよび格納します。 %G[a-z] 静的変数を取得し、プッシュします。 %+ 追加。push(pop() 演算子 pop()) %- 減算。push(pop() 演算子 pop()) %* 乗算。push(pop() 演算子 pop()) %/ 整数除算。push(pop() 演算子 pop()) %m モジュラス。push(pop() 演算子 pop()) %& ビット AND。push(pop() 演算子 pop()) %| ビット OR。push(pop() 演算子 pop()) %^ ビット排他的 OR。push(pop() 演算子 pop()) %~ ビット単位の補数。push( 演算子 pop()) %= 等しい。push(pop() 演算子 pop()) (1 / 2) 450 IBM Informix SQL リファレンス マニュアル カラーおよび強調の追加 操作 説明 %> より大。push(pop() 演算子 pop()) %< より小。push(pop() 演算子 pop()) %! 論理否定。push( 演算子 pop()) %? expr %t then if-then-else; %e elsepart はオプション。else-if も part %e elsepart %; 使用可能 (c は条件 ):%? c1 %t...%e c2 %t...%e c3 %t...%e...%; ネスト可能。 その他の文字はすべて、端末に出力されます。'%' と書き出すには、'%%' と指定 してください。 (2 / 2) 例 モノクロの Wyse 端末を例に取り上げて説明します。図 39 はさまざまな 表示特性のシーケンスを示しています。 図 39 Wyse エス ケープ シーケン ス ESCAPE G 0 Normal ESCAPE G 1 Blank(invisible) ESCAPE G 2 Blink ESCAPE G 4 Reverse ESCAPE G 5 Reverse and blank ESCAPE G 6 Reverse and blink ESCAPE G 8 Underscore ESCAPE G 9 Underscore and blank ESCAPE G : Underscore and blink ESCAPE G < Underscore and reverse ESCAPE G = Underscore, reverse, and blank ESCAPE G > Underscore, reverse, and blink G の後の文字は、文字 0 ( ゼロ ) から ? までの ASCII シーケンスを構成 しています。0 で開始し、空白は 1、点滅は 2、反転は 4、下線は 8 とい うように追加して、文字を生成することができます。 termcap および terminfo の変更 451 カラーおよび強調の追加 以下に示されるように、段階的に termcap エントリを作成することができ ます。%pi は ith パラメータをスタックにプッシュすることを意味します。 出力先は \E です。INFORMIX- SQL で REVERSE ( 反転 ) や BOLD ( 太字 ) など のモノクロ属性を正しく機能させるために、Wyse 端末の termcap エント リに、以下の ZA エントリを組み込む必要があります。 ZA = \EG #print \EG %’0’#push ’0’ (normal) on the stack %?%p1%{7}%=%t%{1}%|#if p1 = 7 (invisible), set #the 1 bit (blank); %e%p1%{3}%> #if p1 > 3 and < 7, set the 64 flag (dim); %p1%{7}%<%&%t%{64}%|# %;%;# %?%p2%t%{4}%|%;#if p2 is set, set the 4 bit (reverse) %?%p3%t%{2}%|%;#if p3 is set, set the 2 bit (blink) %?%p4%t%{8}%|%;#if p4 is set, set the 8 bit (underline) %c: #print whatever character # is on top of the stack 次にこれらの行を、1 つのコロンを用いて終了する、改行を含まない単一 文字列として連結します。Wyse 50 端末の実際の ZA エントリは次のように なります。 ZA = \EG%’0’%?%p1%{7}%=%t%{1}%|%e%p1%{3}%>%p1%{7}%<%&%t%{64} %|%;%;%?%p2%t%{4}%|%;%?%p3%t%{2}%|%;%?%p4%t%{8}%|%;%c: 452 IBM Informix SQL リファレンス マニュアル カラーおよび強調の追加 以下は、ID Systems Corporation のカラー端末 ID231 の例です。この端末 でカラーやその他の特性を設定するには、先行シーケンス (ESCAPE [ 0) と終了文字 (m) で文字シーケンスを囲む必要があります。シーケンスの先 頭は 2 桁の数値で、割り当てるカラーが背景 (30) であるか、または前景 (40) であるかを決定します。その次の 2 桁の数値 (30 または 40 以外 ) は、カラー番号の分だけ増分されます。これらの文字は、点滅の場合 5 と なり、下線の場合 4 となります。図 40 のコードは、すべてのエスケープ シーケンスを設定しています。 ZA = \E[0;#print lead-in %?%p1%{0}%=%t%{7}#encode color number (translate %e%p1%{1}%=%t%{3}# from 図 37 to the number %e%p1%{2}%=%t%{5}# for the ID231) %e%p1%{3}%=%t%{1}# %e%p1%{4}%=%t%{6}# %e%p1%{5}%=%t%{2}# %e%p1%{6}%=%t%{4}# %e%p1%{7}%=%t%{0}%;# %?%p2%t30;%{40}%+%2d#if p2 is set, print ’30’ and # ’40’ + color number (reverse) %e40;%{30}%+%2d%;# else print ’40’ and # ’30’ + color number (normal) %?%p3%t;5%;#if p3 is set, print 5 (blink) %?%p4%t;4%;#if p4 is set, print 4 (underline) m #print ’m’ to end character # sequence 図 40 ID231 のサ ンプル ZA 文字列 これらの文字列を連結すると、termcap エントリは図 41 のようになりま す。 ZA =\E[0;%?%p1%{0}%=%t%{7}%e%p1%{1}%=%t%{3}%e%p1%{2}%= %t%{5}%e%p1%{3}%=%t%{1}%e%p1%{4}%=%t%{6}%e%p1%{5}%=%t% {2}%e%p1%{6}%=%t%{4}%e%p1%{7}%=%t%{0}%;%?%p2%t30;%{40} %+%2d%e40;%{30}%+%2d%;%?%p3%t;5%;%?%p4%t;4%;m 図 41 連結され た ID231 の ZA 文字列 ZA 機能の他にも、使用できる termcap 機能があります。ZG は、ZA 属性で 使用する画面上の文字位置の数です。sg 数値機能と同様、表示属性用に追 加の文字位置が必要なければ、ZG も必要ありません。通常、ZG エントリの 値は sg エントリの値と同じです。 termcap および terminfo の変更 453 terminfo terminfo INFORMIXTERM 環境変数を terminfo に設定すると、 INFORMIX- SQL は terminfo ディレクトリにある TERMINFO 環境変数を使用します (TERMINFO が設定され ていない場合は /usr/lib/terminfo にあります )。INFORMIX- SQL は terminfo の情報を用いて、枠を描いたり、特定の強調属性を使用して表示 したりします。 スクリーン フォームで枠に使用するグラフィックス文字を指定または変更 するのに、terminfo ディレクトリのファイルを変更したい場合がありま す。 ヒント : (termcap を使用せずに terminfo を使用する場合 )、INFORMIX- SQL ではカラー属性や特定の強調属性を使用することができません。 INFORMIX- SQL でカラー属性を使用するには、termcap を使用する必要があ ります。 一部の端末は、グラフィックス文字をサポートしていません。この付録と、 ご使用の端末と一緒に配布されるユーザ ガイドを読んでから、この付録に 記載されている変更がご使用の端末に適用されるかどうかを判断するよう お勧めします。 terminfo ファイルを変更するには、以下の作業に慣れておく必要がありま す。 Q terminfo エントリの形式 Q infocmp プログラム Q tic プログラム この付録にこれらの情報の要約を記載していますが、ご使用のオペーレー ティング システムの資料で詳しい内容を参照するようにしてください。 454 IBM Informix SQL リファレンス マニュアル terminfo エントリの形式 terminfo エントリの形式 terminfo は、定義されている各端末名のファイルを含むディレクトリで す。各ファイルには、各端末用のコンパイル済みの terminfo エントリが 含まれています。このセクションでは、terminfo エントリの一般形式につ いて説明します。terminfo について詳しくは、ご使用のオペレーティング システムの資料を参照してください。 terminfo エントリには、端末の名前のリストが含まれ、その後に端末の機 能のリストが続きます。3 つの機能の型は次のとおりです。 Q ブール Q 数値 Q 文字列 terminfo エントリはすべて、次の形式からなります。 Q エスケープ (ESCAPE) は円記号 (\) とそれに続く文字 E で指定され、 制御 (CONTROL) はキャレット (^) で指定されます。terminfo エン トリ内のエスケープ シーケンスまたは制御文字を指定するのに、 エスケープ キーまたは制御キーを使用しないでください。 Q 最後のエントリを含め、各機能の後にはカンマ (,) が付きます。 図 42 は、Wyse 50 端末の基本的な terminfo エントリを示しています。 . Entry for Wyse 50: w5|wy50|wyse50, am, cols#80, lines#24, cuul=^K, clear=^Z, home=^^, cuf1=^L, cup=\E=%p1%’\s’%+%c%p2%’\s’%+%c, bw, ul, bel=^G, cr=\r, cud1=\n, cub1=\b, kpb=\b, kcud1=\n, kdub1=\b, nel=\r\n, ind=\n, xmc#1, cbt=\EI, 図 42 Wyse 50 terminfo エント リ ヒント : コメント行はピリオド (.) で始まります。 端末名 terminfo エントリは 1 つ以上の端末の名前で始まり、端末ごとに縦棒 (|) で区切られます。例えば、Wyse 50 端末の terminfo エントリは、次の行で 始まります。 w5|wy50|wyse50, termcap および terminfo の変更 455 terminfo エントリの形式 これらの名前のいずれかを用いて、terminfo エントリにアクセスできま す。 ブール機能 ブール機能は、端末に特定の機能があるかどうかを示す 2 文字コードから 5 文字コードまでの文字コードです。ブール機能が terminfo エントリに存 在する場合、端末はその特定の機能をサポートします。 図 43 は、Wyse 50 端末のブール機能の一部を示しています。 bw,am, . . 図 43 Wyse 50 の ブール機能 bw backward wrap am automatic margins 数値機能 数値機能は 2 文字コードから 5 文字コードの文字コードで、その後にポン ド記号 (#) と値が続きます。図 44 は、Wyse 50 端末における、列数およ び行数の数値機能を示しています。 cols#80,lines#24, . . 図 44 Wyse 50 の 数値機能 cols number of columns in a line lines number of lines on the screen 文字列機能 文字列機能は、端末操作を実行するのに使用するシーケンスを指定します。 文字列機能は 2 文字コードから 5 文字コードの文字コードで、その後に等 号 (=) と、区切り文字 (,) で終わる文字列が続きます。 456 IBM Informix SQL リファレンス マニュアル スクリーン フォームでのグラフィックス文字の指定 ほとんどの terminfo エントリには、画面の消去、カーソル移動、矢印 キー、下線、ファンクション キーなどの文字列機能が含まれています。 図 45 は、Wyse 50 端末のいくつかの文字列機能を示しています。 el=\ET,clear=\E*, cuf1=^L,cuu1=^K, smso=\EG4,rmso=\EG0, kcuu1=^K,kcud1=^J,kcuf1=^L,kcub1=^H, kf0=^A@^M,kf1=^AA^M,kf2=^AB^M,kf3=^AC^M, . . . . el=\Et clear to end of line clear=\E* clear the screen cuf1=^L non-destructive cursor right cuu1=^K up one line . . smso=\EG4 start stand-out rmso=\EG0 end stand-out . . . . kcuu1=^K up arrow key kcud1=^J down arrow key kcuf1=^L right arrow key kcub1=^H left arrow key . . . . kf0=^A@^M function kf1=^AA^M function kf2=^AB^M function kf3=^AC^M function key key key key 図 45 Wys e 50 の文 字列機能 F1 F2 F3 F4 スクリーン フォームでのグラフィックス文字の指定 INFORMIX- SQL は terminfo ファイルで定義されている文字を使用して、スク リーン フォームで表示するボックス枠やその他の長方形を描きます。 terminfo ファイルにこれらの文字が定義されていない場合は、INFORMIX- SQL は水平方向の線にはハイフン (-) を、垂直方向の線には縦棒 (|) を、隅に はプラス符号 (+) を使用します。 (infocmp を使用して ) terminfo ソース ファイルを調べて、ご使用の端末 のエントリにこれらの定義が含まれているかを確認してください ( このセ クションで後述する acsc 機能を参照 )。ファイルに、ご使用の端末タイプ の枠文字の定義が含まれていない場合、または別の枠文字を指定したい場 合は、ユーザまたはシステム管理者により、terminfo ソース ファイルを 変更することができます。infocmp プログラムを使用して terminfo エント リをデコンパイルする方法については、ご使用のオペレーティング システ ムの資料を参照してください。 termcap および terminfo の変更 457 スクリーン フォームでのグラフィックス文字の指定 端末用に terminfo ソース ファイルで枠文字を指定する方法 1. グラフィックス モードのオンとオフを切り替えるためのエスケー プ シーケンスを決定します。 これに関する情報は、ご使用の端末と一緒に配布されているマニュ アルに記載されています。例えば、Wyse 50 端末では、グラフィッ クス モードに切り替えるエスケープ シーケンスは ESC H^B で、グ ラフィックス モードを解除するエスケープ シーケンスは ESC H^C です。 ヒント : グラフィックス モードのない端末では、エスケープ シーケンス を使用しません。グラフィックスを使用しない端末で代替の枠文字を指定 する手順については、このセクションの最後で説明しています。 2. 枠を描くのに INFORMIX- SQL で必要な 6 つのグラフィックス文字用 の、ASCII と等価な入力を確認します。 グラフィックス文字の ASCII と等価な入力とは、指定された文字を 取得するのにグラフィックス モードで押すキーのことです。 図 46 は、Wyse 50 端末のグラフィックス文字および ASCII と等価 な入力を示しています。 図 46 Wyse 50 での枠グラフィックス文字の ASCII と等価な入力 ウィンドウ枠位置 グラフィックス 文字 ASCII に等価 左上隅 2 左下隅 1 右上隅 3 右下隅 5 水平方向 - z 垂直方向 6 前述のとおり、これに関する情報は、ご使用の端末と一緒に配布さ れているマニュアルに記載されています。 3. terminfo ソース ファイルをご使用の端末用に編集します ( ファイ ルにリダイレクトされている infocmp を使用して、ソース ファイ ルをデコンパイルすることができます )。 458 IBM Informix SQL リファレンス マニュアル スクリーン フォームでのグラフィックス文字の指定 ヒント : ファイルを編集する前に、terminfo ディレクトリをコピーした い場合があります。TERMINFO 環境変数を使用して、アクセスしたい terminfo ディレクトリのコピーを指示するよう設定できます。 次のように指定します。 terminfo- capability= value 上記形式を使用して、以下の terminfo 機能の値を入力します。 smacs グラフィックス モードに切り替えるエスケープ シーケン スです。terminfo ファイルでは、エスケープ (ESCAPE) は円 記号 (\) とそれに続く文字 E で表され、制御 (CONTROL) は キャレット (^) で表されます。例えば、Wyse 50 のエス ケープ シーケンス ESCAPE-H CONTROL-B は、\EH^B と表しま す。 rmacs グラフィックス モードを解除するエスケープ シーケンス です。例えば、Wyse 50 のエスケープ シーケンス ESCAPEH CONTROL-C は、\EH^C と表します。 acsc 6 つのグラフィックス文字の ASCII と等価な入力が連結さ れた対のリストが、枠を描くのに使用されます。文字をど のような順序でも指定できますが、次のシステム デフォ ルト文字を用いて、ご使用の端末用の ASCII と等価な入力 と対にする必要があります。 termcap および terminfo の変更 459 スクリーン フォームでのグラフィックス文字の指定 図 47 枠の位置のシステム デフォルト文字 位置 システム デフォルト文字 左上隅 l 左下隅 m 右上隅 k 右下隅 j 水平方向 q 垂直方向 x acsc 値を指定するには、次の形式を使用します。 defnewdefnew . . . ここで、def は特定の枠文字のデフォルト文字で、new は同じ枠文 字の端末用の等価な値です。 例えば、Wyse 50 端末で、図 46 で示されている ASCII と等価な入 力と、図 47 のシステム デフォルト文字を用いると、acsc 機能は 図 48 のように設定されます。 acsc=l2m1k3j5qzx6 4. 図 48 Wyse 50 の acsc 設定 tic を使用して、変更した terminfo ファイルを再コンパイルしま す。tic プログラムについて詳しくは、ご使用のオペレーティング システムの資料を参照してください。 次の例は、Wyse 50 で代替枠文字を指定する場合の完全な設定を示します。 smacs=\EH^B, rmacs=\EH^C, acsc=l2m1k3j5qzx6, . . . . . . . sets smacs to ESC H CTRL B sets rmacs to ESC H CTRL C sets acsc to the ASCII equivalents of graphics characters for upper left (l), lower left (m), upper right (k), lower right (j), horizontal (q), and vertical (x) 次のように、この情報を単一行で入力することもできます。 smacs=\EH^B,rmacs=\EH^C,acsc=l2m1k3j5qzx6, 460 IBM Informix SQL リファレンス マニュアル カラーおよび強調 グラフィック機能のない端末 グラフィック機能のない端末の場合、smacs 機能および rmacs 機能に空白 の値を入力する必要があります。acsc の場合は、INFORMIX- SQL がウィンドウ 枠に使用する文字を入力できます。 次の例は、グラフィック機能のない端末のエントリで、smacs、rmacs、お よび acsc に使用できる値を示しています。この例では、ウィンドウ枠を 描くのに、並行方向の線には下線 (_) を、垂直方向の線には縦棒 (|) を、 上部の隅にはピリオド (.) を、下部の隅には縦棒 (|) を使用しています。 smacs=,rmacs=,acsc=l.m|k.j|q_x|, PERFORM 画面で画面枠を指定するときに、 INFORMIX- SQL は terminfo ファイル のグラフィックス文字を使用します。 カラーおよび強調 terminfo を使用する場合、PERFORM の COLOR ( カラー ) 属性を用いて、カ ラー属性、または BOLD ( 太字 ) や BLINK ( 点滅 ) の強調属性を使用するこ とはできません。これらの属性を指定しても、無視されます。 ただし、ご使用の端末の terminfo エントリに ul 属性および so 属性が含 まれる場合、UNDERLINE ( 下線 ) および REVERSE ( 反転 ) の強調属性を使用で きます。infocmp プログラムを使用して、terminfo エントリにこれらの機 能が組み込まれているかどうかを調べることができます。infocmp につい ては、ご使用のオペーレーティング システムの資料を参照してください。 INFORMIX- SQL スクリーン フォームでカラーおよび強調を使用するには、 termcap を使用する必要があります (INFORMIXTERM 環境変数を termcap に 設定し、TERMCAP 環境変数を $INFORMIXDIR/etc/termcap に設定します )。詳 しくは、付録の『環境変数』および序章を参照してください。 termcap および terminfo の変更 461 カラーおよび強調 462 IBM Informix SQL リファレンス マニュアル 付録 ASCII 文字セット 次の表の ^ は、制御キーを表します。 E 番号 文字 番号 文字 番号 文字 0 ^@ 43 + 86 V 1 ^A 44 , 87 W 2 ^B 45 - 88 X 3 ^C 46 . 89 Y 4 ^D 47 / 90 Z 5 ^E 48 0 91 [ 6 ^F 49 1 92 \ 7 ^G 50 2 93 ] 8 ^H 51 3 94 ^ 9 ^I 52 4 95 _ 10 ^J 53 5 96 ‘ 11 ^K 54 6 97 a 12 ^L 55 7 98 b 13 ^M 56 8 99 c 14 ^N 57 9 100 d 15 ^O 58 : 101 e 16 ^P 59 ; 102 f 17 ^Q 60 < 103 g 18 ^R 61 = 104 h 19 ^S 62 > 105 i 20 ^T 63 ? 106 j 21 ^U 64 @ 107 k 22 ^V 65 A 108 l (1 / 2) 464 IBM Informix SQL リファレンス マニュアル 番号 文字 番号 文字 番号 文字 23 ^W 66 B 109 m 24 ^X 67 C 110 n 25 ^Y 68 D 111 o 26 ^Z 69 E 112 p 27 esc 70 F 113 q 28 ^\ 71 G 114 r 29 ^] 72 H 115 s 30 ^^ 73 I 116 t 31 ^_ 74 J 117 u 75 K 118 v 32 33 ! 76 L 119 w 34 " 77 M 120 x 35 # 78 N 121 y 36 $ 79 O 122 z 37 % 80 P 123 { 38 & 81 Q 124 | 39 ' 82 R 125 } 40 ( 83 S 126 ~ 41 ) 84 T 127 del 42 * 85 U (2 / 2) ASCII 文字セット 465 466 IBM Informix SQL リファレンス マニュアル 付録 予約語 本リリースの INFORMIX- SQL では、予約語の数はごくわずかで す。前のリリースの INFORMIX- SQL で予約語となっていた単語 を、識別子として使用できます。例えば、次のような文を実行 できます。 CREATE TABLE table (column INTEGER, date DATE, char CHAR(20)) ただし、一部の以前の予約語を使用することにより、 INFORMIX- SQL 文であいまいさが発生する可能性があります。あ いまいさは、INFORMIX- SQL で、以下の原因となります。 Q 意図したとおりに文が処理されない。 Q エラーが発生する。 このセクションでは、これらの潜在的なあいまいさと構文エ ラーについて説明します。 ANSI 準拠の表を使用する場合、さらにいくつかの単語が予約さ れています。ANSI 予約語のリストについては、474 ページの 『ANSI 予約語の使用の回避』というタイトルのセクションを参 照してください。 F 潜在的なあいまいさおよび構文エラー 潜在的なあいまいさおよび構文エラー 現在、以前の予約語のほとんどを識別子として INFORMIX- SQL 文で使用でき ますが、構文上のあいまいさが生じることがあります。あいまいさにより、 期待した結果が生成されない可能性があります。このセクションでは、以 下を説明します。 Q 列名としての関数の使用 Q 列名としてのキーワードの使用 Q 表名としてのキーワードの使用 Q キーワード AS を使用した対処方法 列名としての関数の使用 組込み関数名を列名として使用すると、データベース サーバでは列名が関 数として解釈されます。例えば、次の文では avg という名前の列を指定し ています。データベース サーバでは avg が列名ではなく集計関数として解 釈されるため、この文は失敗します。 SELECT avg FROM mytab 次の例のように、列名とともに表名を指定することによって、あいまいさ を回避することができます。 SELECT mytab.avg FROM mytab このあいまいさは、集計関数 (AVG、COUNT、MAX、MIN、SUM)、長さ関数、日付 関数 (DATE、DAY、MDY、MONTH、WEEKDAY、YEAR)、および日時関数 EXTEND でも 生じます。これらの関数の概説については、「Informix SQL ガイド : チュートリアル」を参照してください。 次の例のようにキーワード TODAY、CURRENT、USER を列名として使用しても、 あいまいさが生じることがあります。 CREATE TABLE mytab (user CHAR(10), current DATETIME HOUR TO SECOND,today DATE) INSERT INTO mytab VALUES("josh","11:30:30","1/22/89") SELECT user,current,today FROM mytab 468 IBM Informix SQL リファレンス マニュアル 列名としてのキーワードの使用 データベース サーバでは SELECT 文中の user、current、today が関数 USER、CURRENT、TODAY として解釈されます。したがって、この SELECT 文に よって戻されるのは、josh, 11:30:30,1/22/89 ではなく、現行ユーザ名、 現在時刻、現在日付です。 実際の表の列を選択する場合、次のどちらかの方法で SELECT 文を書く必要 があります。 SELECT mytab.user, mytab.current, mytab.today FROM mytab または SELECT * FROM mytab TODAY 関数、CURRENT 関数、USER 関数の概説については、 「Informix SQL ガ イド : チュートリアル」を参照してください。 列名としてのキーワードの使用 INFORMIX- SQL では、INFORMIX- SQL 文で以前の予約キーワードを列名として使 用する場合、特定の対処方法を使用することができます。INFORMIX- SQL で 複数の対処方法を使用できることもあります。このセクションでは、以下 を説明します。 Q 列名としての ALL の使用 Q 列名としての UNIQUE または DISTINCT の使用 Q 列名としての INTERVAL または DATETIME の使用 Q 列名としての rowid の使用 列名としての ALL の使用 列名として all を使用すると、データベース サーバでは all が列名では なくキーワードとして解釈されるので、次の SELECT 文は失敗します。 SELECT all FROM mytab all を列名として SELECT 文に組み込むためには、次の例のように、列名 all の前にキーワード ALL を使用することができます。 SELECT ALL all FROM mytab 予約語 469 列名としての UNIQUE または DISTINCT の使用 また、列名の前に表名を指定することもできます。例えば、次のように指 定します。 SELECT mytab.all FROM mytab 列名としての UNIQUE または DISTINCT の使用 列名として unique または distinct を使用すると、データベース サーバ では unique が列名ではなくキーワードとして解釈されるので、CREATE TABLE 文は失敗します。 CREATE TABLE mytab (unique INTEGER) ここで、列名 unique を使用するために、2 つの文を使用することができ ます。次の例では、最初の文によって列 mycol が作成され、2 番目の文に よって列名 mycol が unique に変更されています。 CREATE TABLE mytab (mycol INTEGER) RENAME COLUMN mytab.mycol TO unique 列名としての INTERVAL または DATETIME の使用 列名として interval を使用すると、データベース サーバでは interval がキーワードとして解釈され、その後に必要な時間隔 (INTERVAL) 型修飾子 がないので、次の SELECT 文は失敗します。 SELECT interval FROM mytab interval を列名として SELECT 文に組み込むためには、次の例のように、 列名の前に表名を指定する必要があります。 SELECT mytab.interval FROM mytab 次のように、表名とともに、所有者名も指定できます。 SELECT josh.mytab.interval FROM josh.mytab 470 IBM Informix SQL リファレンス マニュアル 列名としての rowid の使用 列名としての rowid の使用 Informix データベース表にはどれも rowid という名前の仮想列が含まれ ます。この列には、表中の各行と関連したレコード番号が含まれます。あ いまいさを避ける必要があるので、rowid を列名として使用することはで きません。次のアクションを実行するとエラーが発生します。 Q rowid という名前の列が含まれる表またはビューの作成 Q rowid という名前の列を追加する表の変更 Q rowid という列名への変更 ただし、表名として rowid という語を使用することはできます。 CREATE TABLE rowid (column INTEGER, date DATE, char CHAR(20)) 表名としてのキーワードの使用 以前の予約語を表の名前として使用すると、SQL 文であいまいさが生じる 可能性があります。表名の前に所有者名を指定することで、あいまいな文 を回避できます。 例えば、statistics を表名として使用すると、データベース サーバでは UPDATE 文中の表名ではなく UPDATE STATISTICS 構文の一部として解釈される ので、次の UPDATE 文は失敗します。 UPDATE statistics SET mycol = 10 次の例のように、表名とともに所有者名を指定することによって、 statistics を表名として UPDATE 文に組み込むことができます。 UPDATE josh.statistics SET mycol = 10 outer を表名として使用すると、データベース サーバでは outer が外部 結合を実行するキーワードとして解釈されるので、次の SELECT 文は失敗し ます。 SELECT mycol FROM outer ここでも、次の例のように、表名とともに所有者名を指定することで、あ いまいさを回避でき、正しく実行される SELECT 文を作成できます。 SELECT mycol FROM josh.outer 予約語 471 キーワード AS を使用する対処方法 キーワード AS を使用する対処方法 一部の以前の予約語は、列ラベルまたは表の別名として使用できません。 対処方法として、INFORMIX- SQL では、列ラベルと表の別名として使用する キーワード AS を使用できます。 AS キーワードの構文は ANSI SQL2 標準で提案されている一部ですが、ANSI SQL89 標準には含まれていないため、AS キーワードを使用し、以下のいず れかを行っていると、データベース サーバにより ANSI 警告が生成されま す。 Q DBANSIWARN 環境変数を設定している。 Q INFORMIX- SQL を呼び出すときに -ansi フラグを指定している。 列ラベルとともに AS を使用する構文は次のとおりです。 column-name AS display-label FROM table-name 表の別名とともに AS を使用する構文は次のとおりです。 SELECT select-list FROM table-name AS table-alias これらの両方のオプションについて、次に説明します。 列ラベルの前の AS の使用 列ラベルとして次のキーワードをのいずれかを使用するには、AS キーワー ドを使用する必要があります。 Q AS Q FROM Q UNITS Q YEAR Q MONTH Q DAY Q HOUR Q MINUTE Q SECOND Q FRACTION 472 IBM Informix SQL リファレンス マニュアル 表の別名の前の AS の使用 例えば、データベース サーバでは units が列 mycol の日時 (DATETIME) 型 修飾子として解釈されるので、次の文は失敗します。 SELECT mycol units FROM mytab 次の例のように、キーワード AS を使用すると、あいまいさを回避できま す。 SELECT mycol AS units FROM mytab 列ラベル as または from を使用するときも、AS キーワードを使用する必 要があります。例えば、次の INFORMIX- SQL の文は、必要な FROM 節がない ので失敗します。INFORMIX- SQL では、列ラベル as がキーワード AS として 解釈されます。そして INFORMIX- SQL では、キーワード FROM が mycol に割 り当てられる列ラベルとして解釈されます。 SELECT mycol as FROM mytab 次の例のように、キーワード AS を使用すると、あいまいさを回避できま す。 SELECT mycol AS as FROM mytab 次の文は、最初の from の後に必要な表名がないので、失敗します。 SELECT mycol from FROM mytab 次の例のように、キーワード AS を使用すると、最初の from が列ラベルと して識別されます。 SELECT mycol AS from FROM mytab 表の別名の前の AS の使用 表の別名として次のキーワードをのいずれかを使用するには、AS キーワー ドを使用する必要があります。 Q ORDER Q FOR Q GROUP Q HAVING Q INTO Q UNION Q WHERE 予約語 473 ANSI 予約語の使用の回避 例えば、データベース サーバでは order が ORDER BY 節の一部として解釈 されるので、次の文は失敗します。 SELECT * FROM mytab order キーワード AS を使用すると、order が表の別名として識別されます。 SELECT * FROM mytab AS order WITH、CREATE、または GRANT を表の別名として使用する場合も、キーワード AS を使用する必要があります。例えば、 データベース サーバでは with が WITH CHECK OPTION 構文の一部として解釈されるので、次の文は失敗します。 SELECT * FROM mytab with 次の例のように、キーワード AS を使用すると、with が表の別名として識 別されます。 SELECT * FROM mytab AS with データベース サーバではキーワード create が表、シノニム、ビューなど のエンティティを作成する構文の一部として解釈されるので、次の文は失 敗します。 SELECT * FROM mytab create 次の例のように、キーワード AS を使用すると、create が表の別名として 識別されます。 SELECT * FROM mytab AS create ANSI 予約語の使用の回避 ANSI 準拠の表を使用する場合、いくつかの語が予約されています。ANSI 予 約語を文中の識別子として使用し、次のいずれか、または両方を行ってい ると、INFORMIX- SQL により警告が生成されます。 Q DBANSIWARN 環境変数を設定している。 Q INFORMIX- SQL を呼び出すときに -ansi フラグを指定している。 474 IBM Informix SQL リファレンス マニュアル ANSI 予約語の使用の回避 ANSI 予約語は次のとおりです。 all cursor goto of smallint and dec grant on some any decimal group open sql as declare having option sqlcode asc delete in or sqlerror avg desc indicator order sum begin distinct insert pascal table between double int pli to by end integer precision union char escape into privileges unique character exec is procedure update check exists language public user close fetch like real values cobol float max rollback view commit for min schema whenever continue fortran module section where count found not select with create from null set work current go numeric 予約語 475 ANSI 予約語の使用の回避 476 IBM Informix SQL リファレンス マニュアル 付録 オペレーティング シス テムからプログラムへの アクセス 次の 3 つの方法を用いて、INFORMIX- SQL を構成するモジュール にアクセスできます。 Q INFORMIX- SQL メインメニューを使用する Q オペレーティング システムのコマンド行から直接、モ ジュール名を指定する Q オペレーティング システムのコマンド行から直 接、INFORMIX- SQL メインメニュー オプションへの ショートカットを使用する メインメニューまたは User-menu オプションのいずれかを使 用してプログラムにアクセスし、メモリ不足というエラー メッセージを受け取った場合は、プログラムを終了してコマン ド行に戻ってください。このアクションによりメモリがクリア されます。次に、コマンド行から isql と入力すると、操作を 再開できます。 各 INFORMIX- SQL モジュールにアクセスするためのコマンド行の 構文については、この付録で後述します。コマンド行から INFORMIX- SQL メインメニューへのショートカットを使用する手 順については、478 ページの『FORM メニュー オプションへの アクセス』で説明しています。 INFORMIX- SQL メインメニュー オプションについて簡単にまとめ たものを 478 ページの 図 49 で参照できます。 G FORM メニュー オプションへのアクセス 図 49 INFORMIX-SQL メインメニュー オプション Form Run、Modify、Generate、New、Compile、Drop Report Run、Modify、Generate、New、Compile、Drop Query-language New、Run、Modify、User-editor、Output、Choose、 Save、Info、Drop Database Create、Drop User-menu Run、Modify Table Create、Alter、Info、Drop FORM メニュー オプションへのアクセス オペレーティング システムのコマンド行から INFORMIX- SQL FORM メニュー オプションにアクセスするための構文は、次のとおりです。 isql -f -s isql -s database-name -f options form-name database-name options form-name INFORMIX- SQL のプログラム呼出しです。 silent オプションを呼び出し、不要な画面メッセージを抑制し ます。 現行ディレクトリにあるデータベースの名前または DBPATH 環 境変数で示されるディレクトリです。 INFORMIX- SQL メインメニューから Form オプションを呼び出し ます。 選択する FORM メニュー オプションの最初の文字です。-f とオ プション文字の間に空白を入れないでください。 アクセスするフォームの名前です。拡張子を付けないでくださ い。 指定された操作が INFORMIX- SQL で完了すると、オペレーティング システム に戻ります。 478 IBM Informix SQL リファレンス マニュアル REPORT メニュー オプションへのアクセス 次のコマンドは、customer フォームを実行します。 isql -fr customer 次のコマンドは、stores7 デモンストレーション データベースを基にした フォームを生成します。 isql stores7 -fg REPORT メニュー オプションへのアクセス オペレーティング システムのコマンド行から INFORMIX- SQL REPORT メニュー オプションにアクセスするための構文は、次のとおりです。 -r isql database-name -s isql -s database-name -ansi -r options report-name -ansi option report-name INFORMIX- SQL のプログラム呼出しです。 silent オプションを呼び出し、不要な画面メッセージを抑制し ます。 現行ディレクトリにあるデータベースの名前または DBPATH 環 境変数で示されるディレクトリです。 レポートのコンパイル時に INFORMIX- SQL が SELECT 文に対する Informix の拡張機能を見つけると、警告が生成されます。 INFORMIX- SQL メインメニューから Report オプションを呼び出 します。 選択する REPORT メニュー オプションの最初の文字です。-r と オプション文字の間に空白を入れないでください。 アクセスするレポートの名前です。レポート名に拡張子を付け ないでください。 指定された操作が INFORMIX- SQL で完了すると、オペレーティング システム に戻ります。 次のコマンド行は、clist1 レポートをコンパイルします。 isql -rc clist1 オペレーティング システムからプログラムへのアクセス 479 QUERY-LANGUAGE メニュー オプションへのアクセス QUERY-LANGUAGE メニュー オプションへのアク セス オペレーティング システムのコマンド行から INFORMIX- SQL QUERY-LANGUAGE メニュー オプションにアクセスするための構文は、次のとおりです。 -q isql database-name -s -ansi isql -s - database-name -ansi -q options command-file options commandfile-name INFORMIX- SQL のプログラム呼出しです。 silent オプションを呼び出し、不要な画面メッセージを抑制し ます。 データベース名がコマンド ファイルで作成または確立されるこ とを示します。 現行ディレクトリにあるデータベースの名前または DBPATH 環 境変数で示されるディレクトリです。 INFORMIX- SQL が ANSI 構文に対する Informix の拡張機能を見 つけると、警告が生成されます。 INFORMIX- SQL メインメニューから Query-language オプション を呼び出します。 選択する QUERY-LANGUAGE メニュー オプションの最初の文字で す。-q とオプション文字の間に空白を入れないでください。 アクセスする .sql ファイルの名前です。コマンド ファイル名 に拡張子を付けないでください。 指定された操作が INFORMIX- SQL で完了すると、オペレーティング システム に戻ります。 次のコマンドは、ex1 ファイルを選択し、現行文を含む SQL 文を作成しま す。 isql -s stores7 -qc ex1 480 IBM Informix SQL リファレンス マニュアル DATABASE メニュー オプションへのアクセス DATABASE メニュー オプションへのアクセス オペレーティング システムのコマンド行から INFORMIX- SQL DATABASE メ ニュー オプションにアクセスするための構文は、次のとおりです。 isq -d -s isql -s database-name -d options database-name database-name option database-name INFORMIX- SQL のプログラム呼出しです。 silent オプションを呼び出し、不要な画面メッセージを抑制し ます。 現行ディレクトリにあるデータベースの名前または DBPATH 環 境変数で示されるディレクトリです。 INFORMIX- SQL メインメニューから Database オプションを呼び 出します。 選択する DATABASE メニュー オプションの最初の文字です。-d とオプション文字の間に空白を入れないでください。 アクセスするデータベースの名前です。 指定された操作が INFORMIX- SQL で完了すると、オペレーティング システム に戻ります。 次の文は、DATABASE メニューの Select オプションを呼び出します。 isql -s -ds オペレーティング システムからプログラムへのアクセス 481 USER-MENU メニュー オプションへのアクセス USER-MENU メニュー オプションへのアクセス オペレーティング システムのコマンド行から INFORMIX- SQL USER-MENU メ ニュー オプションにアクセスするための構文は、次のとおりです。 -u database-name -s isql -s database-name -u options user-menu-name options user-menu-name INFORMIX- SQL のプログラム呼出しです。 silent オプションを呼び出し、不要な画面メッセージを抑制 します。 現行ディレクトリにあるデータベースの名前または DBPATH 環 境変数で示されるディレクトリです。 INFORMIX- SQL メインメニューから User-menu オプションを呼 び出します。 選択する USER-MENU メニュー オプションの最初の文字です。 -u とオプション文字の間に空白を入れないでください。 実行するユーザ メニューの名前です。 指定された操作が INFORMIX- SQL で完了すると、オペレーティング システム に戻ります。 次のコマンドは、stores7 デモンストレーション データベースのユーザ メニューを実行します。 isql stores7 -ur 482 IBM Informix SQL リファレンス マニュアル TABLE メニュー オプションへのアクセス TABLE メニュー オプションへのアクセス オペレーティング システムのコマンド行から INFORMIX- SQL TABLE メニュー オプションにアクセスするための構文は、次のとおりです。 -t isql -s isql -s database-name -t options table-name database-name options table-name INFORMIX- SQL のプログラム呼出しです。 silent オプションを呼び出し、不要な画面メッセージをすべて 抑制します。 現行ディレクトリにあるデータベースの名前または DBPATH 環 境変数で示されるディレクトリです。 INFORMIX- SQL メインメニューから Table オプションを呼び出し ます。 選択する TABLE メニュー オプションの最初の文字です。-t と オプション文字の間に空白を入れないでください。 アクセスする表の名前です。 指定された操作が INFORMIX- SQL で完了すると、オペレーティング システム に戻ります。 次のコマンドは、stores7 データベースに表を作成します。 isql -s stores7 -tc オペレーティング システムからプログラムへのアクセス 483 FORMBUILD FORMBUILD オペレーティング システムから直接、カスタマイズされたスクリーン フォームをコンパイルするためのコマンド構文は、次のとおりです。 sformbld -d filename -s sformbld -s -l lines -c cols -v -l -c -v FORMBUILD のプログラム呼出しです。 silent オプションを呼び出し、不要な画面メッセージを抑制しま す。 端末で ( 垂直方向に ) 表示できる文字の合計行数を指定するオプ ションの記号および整数です。( デフォルトは 24 です。) 画面の幅を文字数で指定するオプションの記号および整数です。 ( デフォルトは、SCREEN ( スクリーン ) セクションで指定されて いる画面レイアウトの最大長の行の文字数です。) FORMBUILD で、フォーム仕様の SCREEN ( スクリーン ) セクション で指定されているフィールドと、対応する列のフィールド幅が整 合性があることを検査することを指示します。 FORMBUILD は矛盾があると、これを filename.err というファイルに書き込 みます。 filename -d フォーム仕様ファイルの名前です。コマンド行で .per 拡張子 (filename.per) を付けないでください。 filename を置き換え、デフォルト フォーム仕様の作成およびコ ンパイルに必要な情報を入力するプロンプトを出すよう FORMBUILD に指示します。 -d オプションを指定すると、FORMBUILD はデフォルト サイズを強調するた めに SCREEN SIZE 20 文を作成します。 484 IBM Informix SQL リファレンス マニュアル FORMBUILD 使用法 コンパイルが成功すると、FORMBUILD は filename.frm という名前のコンパ イル済みフォーム仕様を作成します。このコンパイル済みフォーム仕様を、 PERFORM を用いてスクリーン フォームとして使用できます。コンパイルが 失敗すると、FORMBUILD は filename.err という名前のエラー ファイルを作 成します。スクリーン フォームを使用できるようにするには、エラー ファイルを編集し、エラー メッセージを削除してから、FORMBUILD を用い て再コンパイルする必要があります。 オペレーティング システムから直接、INFORMIX- SQL メインメニュー オプ ションへのショートカットを使用して、カスタマイズされたスクリーン フォームを作成することもできます。この方法については、この付録で前 述しています。 オペレーティング システムからプログラムへのアクセス 485 FORMBUILD PERFORM オペレーティング システムから直接、コンパイル済みスクリーン フォー ムを実行するためのコマンド構文は、次のとおりです。 sperform sperform filename filename PERFORM のプログラム呼出しです。 コンパイル済みフォーム仕様ファイルの名前です。コマンド行で .frm 拡張子 (filename.frm) を付けないでください。 使用法 コマンド行に含めることのできる filenames の最大数は、オペレーティン グ システムによって決まります。 PERFORM は各フォームを、コマンド行で表示する順序で表示します。 PERFORM でフォームを表示できない場合は、異状終了します。コマンド行に 複数のファイル名が含まれていると、後続のファイル名は表示されません。 オペレーティング システムから直接、INFORMIX- SQL メインメニュー オプ ションへのショートカットを使用して、コンパイル済みスクリーン フォー ムを実行することもできます。この方法については、この付録で前述して います。 486 IBM Informix SQL リファレンス マニュアル FORMBUILD ACEPREP オペレーティング システムから直接、カスタマイズされたレポート フォームをコンパイルするためのコマンド構文は、次のとおりです。 filename saceprep -s -ansi -o directory-name saceprep ACEPREP のプログラム呼出しです。 -s silent オプションを呼び出し、不要な画面メッセージを抑 -ansi -o directory-name filename 制します。 レポート内で ACEPREP が SELECT 文に対する Informix の拡 張機能を見つけると、警告を生成するよう指示します。 出力ファイル ( コンパイル済みレポート仕様またはエラー ファイルのいずれか ) を指定されたディレクトリに置くよ う、ACEPREP に指示します。 レポート仕様ファイルの名前です。コマンド行で .ace 拡張 子 (filename.ace) を付けないでください。 使用法 コンパイルが成功すると、ACEPREP は filename.arc という名前のコンパイ ル済みレポート仕様ファイルを作成します。このコンパイル済みレポート 仕様を ACEGO を用いて使用し、レポートを生成できます。コンパイルが失 敗すると、ACEPREP は filename.err という名前のエラー ファイルを作成 します。レポートを実行できるようにするには、エラー ファイルを編集 し、エラー メッセージを削除してから、ACEPREP を用いて再コンパイルす る必要があります。 オペレーティング システムから直接、INFORMIX- SQL メインメニュー オプ ションへのショートカットを使用して、カスタマイズされたレポート フォームをコンパイルすることもできます。この方法については、479 ページの『REPORT メニュー オプションへのアクセス』で説明しています。 オペレーティング システムからプログラムへのアクセス 487 FORMBUILD ACEGO オペレーティング システムから直接、コンパイル済みレポートを実行する ためのコマンド構文は、次のとおりです。 filename sacego -s sacego -s -d database-name filename -d database-name ACEGO のプログラム呼出しです。 silent オプションを呼び出し、不要な画面メッセージを抑制 します。 レポート仕様で指定されているデータベース名を上書きし、 database-name と置き換えます。 コンパイル済みレポート仕様ファイルの名前です。コマンド 行で .ace 拡張子 (filename.ace) を付けないでください。 使用法 コマンド行に含めることのできる filenames の最大数は、オペレーティン グ システムによって決まります。 ACEGO は各レポートを、コマンド行で表示する順序で実行します。 ACEGO でレポートを実行できない場合は、異常終了します。コマンド行に複 数のファイル名が含まれていると、後続のファイル名は実行されません。 オペレーティング システムから直接、INFORMIX- SQL メインメニュー オプ ションへのショートカットを使用して、コンパイル済みレポートを実行す ることもできます。この方法については、479 ページの『REPORT メニュー オプションへのアクセス』で説明しています。 488 IBM Informix SQL リファレンス マニュアル 特記事項 本書に記載の製品、サービス、または機能が日本においては提供されてい ない場合があります。日本で利用可能な製品、サービス、および機能につ いては、日本 IBM の営業担当員にお尋ねください。本書で IBM 製品、プロ グラム、またはサービスに言及していても、その IBM 製品、プログラム、 または サービスのみが使用可能であることを意味するものではありませ ん。これらに代えて、IBM の知的所有権を侵害することのない、機能的に 同等の製品、プログラム、またはサービスを使用することができます。た だし、IBM 以外の製品とプログラムの操作またはサービスの評価および検 証は、お客様の責任で行っていただきます。 IBM は、本書に記載されている内容に関して特許権 ( 特許出願中のものを 含む ) を保有している場合があります。本書の提供は、お客様にこれらの 特許権について 実施権を許諾することを意味するものではありません。実 施権についてのお問い合わせは、書面にて下記宛先にお送りください。 〒 106-0032 東京都港区六本木 3-2-31 IBM World Trade Asia Corporation Licensing 以下の保証は、国または地域の法律に沿わない場合は、適用されません。 IBM およびその直接または間接の子会社は、本書を特定物として現存する ままの状態で提供し、商品性の保証、特定目的適合性の保証および法律上 の瑕疵担保責任を含む すべての明示もしくは黙示の保証責任を負わないも のとします。国または地域によっては、法律の強行規定により、保証責任 の制限が禁じられる場合、強行規定の制限を受けるものとします。 特記事項 489 この情報には、技術的に不適切な記述や誤植を含む場合があります。本書 は定期的に見直され、必要な変更は本書の次版に組み込まれます。IBM は 予告なしに、随時、この文書に記載されている製品またはプログラムに対 して、改良または変更を行うことがあります。 本書において IBM 以外の Web サイトに言及している場合がありますが、便 宜のため記載しただけであり、決してそれらの Web サイトを推奨するもの ではありません。それらの Web サイトにある資料は、この IBM 製品の資料 の一部ではありません。それらの Web サイトは、お客様の責任でご使用く ださい。 IBM は、お客様が提供するいかなる情報も、お客様に対してなんら義務も 負うことのない、自ら適切と信ずる方法で、使用もしくは配布することが できるものとします。 本プログラムのライセンス保持者で、(i) 独自に作成したプログラムとそ の他のプログラム(本プログラムを含む)との間での情報交換、および (ii) 交換された情報の相互利用を可能にすることを目的として、本プログ ラムに関する情報を必要とする方は、下記に連絡してください。 IBM Corporation J74/G4 555 Bailey Ave P.O. Box 49023 San Jose, CA 95161-9023 U.S.A. 本プログラムに関する上記の情報は、適切な使用条件の下で使用すること ができますが、有償の場合もあります。 本書で説明されているライセンス・プログラムまたはその他のライセンス 資料は、IBM 所定のプログラム契約の契約条項、IBM プログラムのご使用 条件、またはそれと同等の条項に基づいて、IBM より提供されます。 この文書に含まれるいかなるパフォーマンス・データも、管理環境下で決 定されたものです。そのため、他の操作環境で得られた結果は、異なる可 能性があります。一部の測定が、開発レベルのシステムで行われた可能性 がありますが、その測定値が、一般に利用可能なシステムのものと同じで ある保証はありません。さらに、一部の測定値が、推定値である可能性が あります。実際の結果は、異なる可能性があります。お客様は、お客様の 特定の環境に適したデータを確かめる必要があります。 490 IBM Informix SQL リファレンス マニュアル IBM 以外の製品に関する情報は、その製品の供給者、出版物、もしくはそ の他の公に利用可能なソースから入手したものです。IBM は、それらの製 品のテストは行っておりません。したがって、他社製品に関する実行性、 互換性、またはその他の要求については確証できません。IBM 以外の製品 の性能に関する質問は、それらの製品の供給者にお願いします。 IBM の将来の方向または意向に関する記述については、予告なしに変更ま たは撤回される場合があり、単に目標を示しているものです。 表示されている IBM の価格は IBM が小売り価格として提示しているもの で、現行価格であり、通知なしに変更されるものです。卸価格は、異なる 場合があります。 本書には、日常の業務処理で用いられるデータや報告書の例が含まれてい ます。より具体性を与えるために、それらの例には、個人、企業、ブラン ド、あるいは製品などの名前が含まれている場合があります。これらの名 称はすべて架空のものであり、名称や住所が類似する企業が実在している としても、それは偶然にすぎません。 著作権使用許諾 : 本書には、様々なオペレーティング・プラットフォームで のプログラミング手法を例示するサンプル・アプリケーション・プログラ ムがソース言語で掲載されています。お客様は、サンプル・プログラムが 書かれているオペレーティング・ プラットフォームのアプリケーション・ プログラミング・インターフェースに準拠したアプリケーション・プログ ラムの開発、使用、販売、配布を目的として、いかなる形式においても、 IBM に対価を支払うことなくこれを複製し、改変し、配布することができ ます。このサンプル・プログラムは、あらゆる条件下における完全なテス トを経ていません。従って IBM は、これらのサンプル・プログラムについ て信頼性、利便性もしくは機能性があることをほのめかしたり、保証する ことはできません。お客様は、IBM のアプリケーション・プログラミング・ インターフェースに準拠したアプリケーション・プログラムの開発、使用、 販売、配布を目的として、いかなる形式においても、IBM に対価を支払う ことなくこれを複製し、改変し、配布することができます。 特記事項 491 商標 それぞれの複製物、サンプル・プログラムのいかなる部分、またはすべて の派生的創作物にも、次のように、著作権表示を入れていただく必要があ ります。 © ( お客様の会社名 ) ( 西暦年 ). このコードの一部は、 IBM Corp. のサンプル・プログラムから取られています。© Copyright IBM Corp. ( 年を入れる ) All rights reserved. この情報をソフトコピーでご覧になっている場合は、写真やカラーの図表 は表示されない場合があります。 商標 以下は、IBM Corporation の商標です。AIX; DB2; DB2 Universal Database; Distributed Relational Database Architecture; NUMA-Q; OS/2, OS/390, and OS/400; IBM Informix® C- ISAM®; Foundation.2000TM; IBM Informix® 4GL; IBM Informix® DataBlade® Module; Client SDKTM; CloudscapeTM; CloudsyncTM; IBM Informix® Connect; IBM Informix® Driver for JDBC; Dynamic ConnectTM; IBM Informix® Dynamic Scalable ArchitectureTM (DSA); IBM Informix® Dynamic ServerTM; IBM Informix® Enterprise Gateway Manager (Enterprise Gateway Manager); IBM Informix® Extended Parallel ServerTM; i.Financial ServicesTM; J/FoundationTM; MaxConnectTM; Object TranslatorTM; Red Brick Decision ServerTM; IBM Informix® SE; IBM Informix® SQL; InformiXMLTM; RedBack®; SystemBuilderTM; U2TM; UniData®; UniVerse®; wintegrate® Java およびすべての Java 関連の商標およびロゴは、Sun Microsystems, Inc. の米国およびその他の国における商標または登録商標です。 Windows、Windows NT および Excel ロゴは、Microsoft Corporation の米 国およびその他の国における商標です。 UNIX は、X/Open Company Limited がライセンスしている米国およびその他 の国における商標です。 本書で言及しているその他の会社名、製品名およびサービス名はそれぞれ 各社の商標または登録商標です。 492 IBM Informix SQL リファレンス マニュアル 索引 索引 数字 10 進数 (DECIMAL) 型 フォームでのフォーマット設 定 86 フォームにおける 155 10 進数 (DECIMAL) 型のデータ型 GLS における 411 3 桁区切り記号 284, 401 A a ( 曲折アクセント記号 )、コー ディング 430, 431 ACE レポート C 関数の呼出し 332 sacego の使用 361 saceprep の使用 336 コンパイル方法 336 仕様ファイルの DEFINE セクショ ン 332 仕様ファイルの FORMAT セクショ ン 332 例 363, 365 ACE レポート ライタ AFTER GROUP OF コントロール ブ ロック 237 ASCII 式 268 ASCII 文 206 BEFORE GROUP OF コントロール ブ ロック 240 BOTTOM MARGIN 文 220 CLIPPED 式 270 COLUMN 式 271 CURRENT 式 272 DATABASE ( データベース ) セク ション 202, 204 DATE 式 273 DATE( ) function 274 DAY( ) 関数 275 DEFINE セクション 202 EVERY ROW 文 233 FIRST PAGE HEADER コントロール ブロック 243 FOR 文 253 FORMAT セクション 203 IF THEN ELSE 文 254 INPUT セクション 202 LEFT MARGIN 文 217 LET 文 256 LINENO 式 276 MDY( ) 関数 277 MONTH( ) 関数 278 NEED 文 258 ON EVERY ROW コントロール ブ ロック 245 ON LAST ROW コントロール ブロッ ク 247 OUTPUT セクション 202 PAGE HEADER コントロール ブ ロック 248 PAGE LENGTH 文 221 PAGE TRAILER コントロール ブ ロック 250 PAGENO 式 279 PARAM 文 208 PAUSE 文 259 PRINT FILE 文 262 PRINT 文 260 PROMPT FOR 文 212 READ セクション 202 READ 文 227 REPORT TO 文 215 RIGHT MARGIN 文 218 SELECT セクション 202 SELECT 文 224 SKIP TO TOP OF PAGE 文 264 SKIP 文 263 SPACES 式 280 TIME 式 281 TODAY 式 282 TOP MARGIN 文 219 TOP OF PAGE 文 222 USING 式 283 WEEKDAY( ) 関数 293 WHILE 文 265 WORDWRAP 式 294 YEAR( ) 関数 295 エラー メッセージ 201 コマンド行オプション 197 コントロール ブロック 236 式 199 式、フォーマット 284 数値式のフォーマット 284 数値式、フォーマット 284 セクションのサマリ 202 データのグループ化 236 内部の節 202 ファイル名規則 198 複合文 252 メニュー 194 メニューを使用した方法 194 レポート仕様 202, 380 レポート仕様のコンパイル 193 レポートの実行 193 ACEGO、を使用してコンパイル済み レポートを実行 488 ACEPREP、を使用してレポート仕様 をコンパイル 336, 487 AFTER GROUP OF コントロール ブ ロック、ACE レポートにおけ る 237 AFTER コントロール ブロック、 PERFORM の 119 ALS. 東アジア言語サポートの参照 ALTER TABLE 文 GLS における 412 ANSI 準拠 および予約語 467, 474 AS キーワード 472 ASCII コード セット 414 式、ACE レポートにおける 268 文、ACE レポートにおける 206 文字セット 410, 412 文字の図表 464 ASCII 以外の文字 414 ATTRIBUTES ( 属性 ) セクション AUTONEXT 76 CENTURY 77 COLOR 79 COMMENTS 82 DEFAULT 83 DOWNSHIFT 85 FORMAT 86 INCLUDE 89 INVISIBLE 91 LOOKUP 92 NOENTRY 94 NOUPDATE 95 PICTURE 96 PROGRAM 98 QUERYCLEAR 100 REQUIRED 101 REVERSE 102 RIGHT 103 UPSHIFT 104 VERIFY 105 WORDWRAP 106 ZEROFILL 109 構文 75 の説明 52 AUTONEXT 属性 76, 77 B BEFORE GROUP OF コントロール ブ ロック、ACE レポートにおけ る 240 BEFORE コントロール ブロック、 PERFORM の 118 BLOB ( バイナリ ラージ オブジェ クト ) DEFAULT の使用 84 INFORMIX-OnLine での問合せ 32 LOAD および UNLOAD を使った転 送 32 フォームで外部プログラムを指 定 98 494 IBM Informix SQL リファレンス マニュアル フォームでの指定 108 BOTTOM MARGIN 文、ACE レポートに おける 220 Bourne シェル 環境変数の設定方法 395 .profile ファイル 394 C C 関数 ACE からの呼出し 334 ACE レポートにおいて 336 PERFORM 画面を制御する 349 PERFORM からの呼出し 337 PERFORM フォームにおいて 341 式において 338, 340 に値を渡す 344 レポート仕様ファイルでの宣 言 332, 333 レポート仕様ファイルでの呼出 し 334 C 関数に値を渡す 344 C 関数の宣言、ACE において 332, 333 C 関数の呼出し、ACE において 334 C シェル 環境変数の設定方法 395 .cshrc ファイル 394 .login ファイル 394 C プログラム構造 strreturn マクロ 348 userfuncs 配列 344 valueptr 343 戻り値マクロ 348 cace プログラム、sacego のカスタ マイズに使用 361 CALL キーワード ACE レポート仕様ファイルにおい て 335 PERFORM フォーム仕様ファイルに おいて 338 CENTURY 属性 77 CLIENT_LOCALE 426 CLIENT_LOCALE 環境変数 414 CLIPPED 式、ACE レポートにおけ る 270 COLLATE ロケール カテゴリ 416 COLOR 属性 PERFORM の 77, 79 強調オプション リスト 79 COLUMN 式、ACE レポートにおけ る 271 COMMENTS 属性、PERFORM の 82 COMPRESS キーワード 108 cperf プログラム、sperform のカ スタマイズに使用 361 CREATE TABLE 文 GLS における 412 crtcmap ユーティリティ 433 CURRENT 式、ACE レポートにおけ る 272 D DATABASE ( データベース ) セク ション フォーム仕様の 51, 54 フォームの、キーワード WITHOUT NULL INPUT 83 レポート仕様において 204 DATE 式、ACE レポートにおけ る 273 DATE( ) 関数、ACE レポートにおけ る 274 DAY( ) 関数、ACE レポートにおけ る 275 DBASCIIBC 環境変数 423 DBCODESET 環境変数 423 DBCONNECT 環境変数 423 DBCSOVERRIDE 環境変数 423 DBDATE 環境変数 413 DBFORM 環境変数 398 DBFORMAT 環境変数 401, 413, 427 DBLANG 環境変数 426 DBMONEY 環境変数 413, 427 DBTEMP 環境変数 405 DB_LOCALE 環境変数 425 DEFAULT 属性 BLOB ( バイナリ ラージ オブジェ クト ) での 84 PERFORM の 83 キーワード WITHOUT NULL INPUT を伴う 83 DEFINE セクション ASCII 文 206 C 関数の宣言 332 PARAM 文 208 PROMPT FOR 文 212 VARIABLE 文 209 DOWNSHIFT 属性 GLS における 412 PERFORM の 85 E en_us.8859-1 420 en_us.8859-1 ロケール 5 EVERY ROW 文、ACE レポートにおけ る 233 F finderr スクリプト 14 FIRST PAGE HEADER コントロール ブロック、ACE レポートにおけ る 243 FOR 文、ACE レポートにおける 253 FORM メニュー 「Modify」オプション 28 FORMAT 数値データ 86, 284 通貨データ 284 日付データ 87, 285 FORMAT 属性 GLS における 412 PERFORM の 86 FORMBUILD トランザクション フォーム生成プログラム ATTRIBUTES ( 属性 ) セクショ ン 52 BEGIN キーワード 136 BELL キーワード 135 CURRENT キーワード 131 DATABASE ( データベース ) セク ション 51 END キーワード 136 EXITNOW キーワード 133 INSTRUCTIONS ( インストラク ション ) セクション 52 REVERSE キーワード 135 SCREEN ( スクリーン ) セクショ ン 51 sformbld 50 TABLES ( 表 ) セクション 52 TODAY 131 オペレーティング システム、 フォーム作成での使用 50 オペレーティング システム、 フォーム生成で使用 484 カスタマイズされたフォームのコ ンパイル 341, 484 カスタム フォームのコンパイ ル 48 カスタム フォームの作成 48 区切り記号 57 現行リスト 117 コントロール ブロック 117 実数 (FLOAT) 型のフォーマッ ト 86 主列 74 小桁実数 (SMALLFLOAT) 型の フォーマット 86 照合結合 74 デフォルト フォーム仕様ファイ ル 48, 50 日付 (DATE) 型のフォーマッ ト 87 表示専用フィールド 58, 100 表示フィールド 57 フィールド 57 フィールド タグ 57 フィールドの幅 57 フォーム、サンプル 47 文字 (CHAR) 型列のサブスクリプ ト付け 59 「ORDER INFORMATION」画面 141 G GLS ディレクトリ構造 420 GL_DATE 環境変数 413 GL_DATETIME 環境変数 413 I IF THEN ELSE 文、ACE レポートに おける 254 INCLUDE 属性、PERFORM の 89 INFORMIXDIR 環境変数 398 INFORMIX-NET 429 INFORMIX-SE データベース サー バ 415 索引 495 INFORMIX-SQL アクセス方法 20 テキスト入力画面 21 メインメニュー 20 メニュー画面 20 ユーザ メニューへのアクセス方 法 300 INFORMIXTERM 環境変数 435, 454 informix.rc ファイル 394 INSTRUCTIONS ( インストラクショ ン ) セクション ABORT 129 ADD 123 AFTER 119 BEFORE 118 COMMENTS 135 COMPOSITES 111 DELIMITERS 113 DISPLAY 127 EDITADD 121 EDITUPDATE 121 IF-THEN-ELSE 136 LET 130 MASTER OF 115 NEXTFIELD 133 QUERY 125 REMOVE 126 UPDATE 124 フォーム仕様の 52 INVISIBLE 属性、PERFORM の 91 ISO 8859-1 コード セット 5 J JA 7.20 サプリメント 421 K KO 7.20 サプリメント 421 Korn シェル 環境変数の設定方法 395 .profile ファイル 394 L LEFT MARGIN 文、ACE レポートにお ける 217 LET 文 ACE レポートにおける 256 NLS における 412 LINENO 式、ACE レポートにおけ る 276 LOAD 文 GLS における 412 INFORMIX-OnLine での 33 可変長文字 (VARCHAR) 型および BLOB を使う 33 LOCK TABLE 文、PERFORM におけ る 167 LOOKUP 属性、PERFORM の 92 M MDY( ) 関数、ACE レポートにおけ る 277 menuform スクリーン フォーム sysmenuitems 表へのアクセ ス 305 sysmenus 表へのアクセス 305 定義 304 フィールド内でのデータ入力 312 「Menu Name」フィールド 313 「Menu Title」フィールド 314 「Selection Action」フィール ド 320 「Selection Number」フィール ド 315 「Selection Text」フィール ド 319 「Selection Type」フィール ド 317 MONTH( ) 関数、ACE レポートにお ける 278 N NEED 文、ACE レポートにおけ る 258 NOUPDATE 属性、PERFORM の 95 LANG 環境変数 428 496 IBM Informix SQL リファレンス マニュアル O ON BEGINNING 制御ブロック、 PERFORM において 339 ON ENDING 制御ブロック、PERFORM において 339 ON EVERY ROW コントロール ブロッ ク、ACE レポートにおける 245 ON LAST ROW コントロール ブロッ ク、ACE レポートにおける 247 OUTPUT セクション BOTTOM MARGIN 文 220 LEFT MARGIN 文 217 PAGE LENGTH 文 221 REPORT TO 文 215 RIGHT MARGIN 文 218 TOP MARGIN 文 219 TOP OF PAGE 文 222 P PAGE HEADER コントロール ブロッ ク、ACE レポートにおける 248 PAGE LENGTH 文、ACE レポートにお ける 221 PAGE TRAILER コントロール ブロッ ク、ACE レポートにおける 250 PAGENO 式、ACE レポートにおけ る 279 PARAM 文、ACE レポートにおけ る 208 PAUSE 文、ACE レポートにおけ る 259 PERFORM C 関数の呼出し 337 CALL キーワード 338 INSTRUCTIONS セクション 337 menuform スクリーン フォームの 使用 304 menuform フォームによるアクセ ス 304 ON BEGINNING 制御ブロック 339 ON ENDING 制御ブロック 339 sperform の使用 361 オペレーティング システム コマ ンドの実行 154 カーソル移動 158 コマンド行からアクセス 486 コンパイル方法 341 式 338, 340 実行方法 147 データ型 154 データのチェック 163 特殊機能 158 フィールド編集キー 159 フォーム例 367 マルチライン エディタの起 動 162 メインメニューからのアクセ ス 148 メニュー データの入力 306 メニュー構造の作成 299 メニュー構造の変更 299 メニューの作成 304 ライブラリ関数 349 「Add」オプション 166 「Current」オプション 168 「Detail」オプション 169 「Exit」オプション 171 「FORM OUTPUT FILE」メ ニュー 175 「Master」オプション 172 「Next」オプション 173 「OUTPUT FORMAT」メニュー 176 「Output」オプション 174 「Previous」オプション 179 「Query」オプション 180 「Remove」オプション 184 「Screen」オプション 185 「Table」オプション 186 「Update」オプション 187 「View」オプション 188 PERFORM 画面 3 つのセクションで構成され る 150 状態行 153 情報行 150 スクリーン フォーム 152 データの入力 154 リストされるメニュー オプショ ン 151 PERFORM 画面トランザクション プ ロセッサ LOCK 文 167 上書きモード 159 カーソル移動キー 158 現行リスト 117 コメント行 82, 98 最高値演算子 183 最低値演算子 183 終了方法 151 挿入モード 159 データ型 154 でのスクリーン フォーム 152 でのデータ追加 154 内部でのオペレーティング シス テム コマンド 154 の状態行 150, 153 の情報行 150, 151 のワイルドカード文字 182 フィールド編集 159 メインメニューからのアクセ ス 148 メニュー オプション 151 呼出し方法 148 「Add」オプション 151 「Current」オプション 152 「Detail」オプション 152 「Exit」オプション 152 「Master」オプション 152 「Next」オプション 151 「Output」オプション 152 「Previous」オプション 151 「Query」オプション 151 「Remove」オプション 151 「Screen」オプション 152 「Table」オプション 152 「Update」オプション 151 「View」オプション 151 PERFORM 関数 pf_gettype() 350 pf_getval() 352 pf_msg() 360 pf_nxfield() 358 pf_putval() 355 PERFORM のキーワード ABORT 129 AFTER 119 AFTER ADD OF 123 AFTER DISPLAY OF 127 AFTER QUERY OF 125 AFTER UPDATE OF 124 ALLOWING INPUT 71 AUTONEXT 76, 77 BEFORE 118 BELL 135 BY 55 COLOR 77, 79 COMMENTS 82, 135 COMPOSITES 111 COMPRESS 106 DATABASE 54 DEFAULT 83 DELIMITERS 113 DISPLAYONLY 71 DOWNSHIFT 85 EDITADD 121 EDITUPDATE 121 END 65 EXITNOW 133 FORMAT 86 IF-THEN-ELSE 136 INCLUDE 89 INVISIBLE 91 JOINING 92 LET 130 LOOKUP 92 MASTER OF 115 NEXTFIELD 133 NOT NULL 71 NOUPDATE 95 OF 118, 119 PICTURE 96 QUERYCLEAR 100 REMOVE OF 126 REQUIRED 101 REVERSE 102, 135 RIGHT 103 SCREEN 55 SIZE 55 TABLES 65 TYPE 71 UPSHIFT 104 VERIFY 105 WHERE 77, 79 WITHOUT NULL INPUT 54 WORDWRAP 106 ZEROFILL 109 pf_gettype( ) 関数、PERFORM にお いて 350 pf_getval( ) 関数、PERFORM にお いて 352 pf_msg( ) 関数、PERFORM におい て 360 索引 497 pf_nxfield( ) 関数、PERFORM にお いて 358 pf_putval( ) 関数、PERFORM にお いて 355 PRINT FILE 文、ACE レポートにお ける 262 PRINT 文、ACE レポートにおけ る 260 PROMPT FOR 文、ACE レポートにお ける 212 R R 記号、CENTURY 77 READ セクション、READ 文 227 READ 文、レポート仕様におけ る 227 REPORT TO 文、ACE レポートにおけ る 215 RIGHT MARGIN 文、ACE レポートに おける 218 S sacego ACE 用にカスタマイズ 361 cace プログラムの使用 361 構文 488 saceprep、レポート仕様のコンパ イル 336, 487 SCREEN ( スクリーン ) セクション FORMBUILD 51 のグラフィックス文字 51 SELECT 文、ACE レポートにおけ る 224 SERVER_LOCALE 環境変数 423 sformbld および .PER 拡張子 341 構文 484 の定義 50 SKIP TO TOP OF PAGE 文、ACE レ ポートにおける 264 SKIP 文、ACE レポートにおけ る 263 SPACES 式、ACE レポートにおけ る 280 sperform cperf プログラムの使用 361 PERFORM 用にカスタマイズ 361 構文 486 新規フォームの作成 51 SQL 識別子 415 SQL 文 実行 30 修正 30 選択 30 保存 31 stores7 デモンストレーション データベース 6 オリジナルの復元 373 記載されている 371 コピー 371 作成 373 ユーザ メニューの設計概要 303 sysmenuitems 表 PERFORM によるアクセス 305 定義 305 sysmenus 表 PERFORM によるアクセス 305 格納されているサンプル デー タ 307 定義 305 TOP MARGIN 文、ACE レポートにお ける 219 TOP OF PAGE 文、ACE レポートにお ける 222 U UNIX BSD および System V で設定する 環境変数 395 BSD のデフォルト印刷機能 397 System V のデフォルト印刷機 能 397 UNLOAD 文 GLS における 412 INFORMIX-OnLine での 33 可変長文字 (VARCHAR) 型および BLOB を使う 33 UPSHIFT 属性 GLS における 412 User-menu 使用のガイドライン 41 USING 式 ACE レポートにおける 283 GLS における 412 T TABLES ( 表 ) セクション、フォー ム仕様の 52 termcap ファイル カラーおよび強調 442 スクリーン フォームでのグラ フィックス文字 439 スクリーン フォームのグラ フィックス文字 62 説明 436 terminfo ディレクトリ スクリーン フォームでのグラ フィックス文字 457 スクリーン フォームのグラ フィックス文字 62 説明 454 TH 7.20 サプリメント 421 TIME 式、ACE レポートにおけ る 281 TODAY 式、ACE レポートにおけ る 282 498 IBM Informix SQL リファレンス マニュアル W WEEKDAY( ) 関数、ACE レポートに おける 293 WHILE 文、ACE レポートにおけ る 265 WITHOUT NULL INPUT オプション 83 WORDWRAP BLOB ( バイナリ ラージ オブジェ クト ) 108 可変長文字 (VARCHAR) 型デー タ 107 キーワード 108 式、ACE レポートにおける 294 X X/Open 422 Y え Y2K 対応 77 YEAR( ) 関数、ACE レポートにおけ る 295 英語以外の文字 431 英数字 415 エディタ、マルチライン 162 Z お ZHCN 7.20 サプリメント 421 ZHTW 7.20 サプリメント 421 オペレーティング システムを使用 したフォーム作成 50 オンライン エラー メッセージ 14 オンライン マニュアル 14 あ アイコン 機能 8 構文ダイアグラム 10 製品 8 プラットフォーム 8 アジア言語 408, 417 アジア言語サポート (ALS) 値 ACE に戻す 348 C 関数に渡す 344 PERFORM に戻す 348 アットマーク (@) 記号 後書きの通 貨記号を参照。 後書きの通貨記号 285, 401 アプリケーション サーバ クラス ライブラリ 422 アンダスコア (_) 記号 415 い 依存関係、ソフトウェア 5 一時 ファイル、DBTEMP でディレクト リを指定 405 印刷可能文字 414 印刷可能文字を含む文字列 414 印刷不可の文字 414 引用符付きストリング 413 う 上書きモード、PERFORM におけ る 159 か カスタム スクリーン フォーム、 FORMBUILD 50 各国語可変長文字 (NVARCHAR) 型の データ型 409, 411 各国語サプリメント 421 各国語サポート (NLS) 424 各国語のサプリメント 421 各国語文字 (NCHAR) 型のデータ 型 409, 411 可変長文字 (VARCHAR) 型 INFORMIX-OnLine での問合せ 32 LOAD および UNLOAD を使った転 送 32 フォームにおける 157 列の定義 39 レポート内での定義 209 可変長文字 (VARCHAR) 型データ、 WORDWRAP 107 可変長文字 (VARCHAR) 型のデータ 型 GLS における 411 画面 menuform のフィールド 312 PERFORM 150 PERFORM のサンプル、顧客情 報 140 PERFORM のサンプル、注文情 報 140 RUN FORM 22 テキスト入力 21 メニュー 20 環境構成ファイル 格納場所 394 例 394 環境に関するデフォルト解釈 396 環境変数 7 Bourne シェルでの設定方法 395 C シェルでの設定方法 395 CLIENT_LOCALE 414, 426 DBDATE 413, 417 DBEDIT 49 DBFORM 398 DBFORMAT 401, 413, 417, 427 DBLANG 426 DBMONEY 413, 427 DBTEMP 405 DB_LOCALE 425 INFORMIXDIR 398 INFORMIXTERM 435, 454 Korn シェルでの設定方法 395 LANG 428 SERVER_LOCALE 423 Windows システム言語変数 428 および大文字と小文字の区別 395 環境構成ファイル内で定義 394 コマンド行で設定 394 シェル ファイルで設定 394 設定の上書き 394 設定場所 394 デフォルト解釈 396 優先順位のルール 397 環境変数の設定 395 関係演算子 416 韓国語 421, 422 関数 PERFORM 画面を制御する 349 集計関数のリスト 131 列名として使用する名前 468 関数ライブラリ pf_gettype 350 pf_getval 352 pf_msg 360 pf_nxfield 358 pf_putval 355 き キー カーソル移動、PERFORM におけ る 158 特殊機能、PERFORM の 158 索引 499 フィールド編集、PERFORM におけ る 159 キーワード、列名として使用する 名前 469 機能アイコン 8 ギリシャ語 422, 430 キリル文字のアルファベット 422 金額 (MONEY) 型 フォームにおける 156 金額 (MONEY) 型のデータ型 GLS における 411 禁則処理 417 く 空白文字 408, 415, 419 空白文字、文字型のデフォルト 値 54 区切り記号 417 FORMBUILD 57 クライアント ロケール 422 グラフィックス文字、フォーム の 61 グラフィック置換変換 432 け 形式 金額データ 393, 401 数値データ 393, 401 結合 424 FORMBUILD 73, 74 主列 74 照合 74 複合 111 結合列 スクリーン フォームでの 73 現行リスト、PERFORM の 117 こ 広域言語サポート (GLS) 5, 407 サポートされる機能 410 構文 PERFORM の ATTRIBUTES ( 属性 ) セクションの 75 PERFORM の DISPLAY 命令 128 PERFORM の「Query」オプション の 181 構文ダイヤグラム、要素 9 構文の表記規則 使用されるアイコン 10 説明 9 コード セット 408 コード セット変換 処理 429 表 414 コード ポイント 414 国際化 コード セット変換 429 UNIX で使用可能化 433 コマンド行 ACE へのアクセス 197 ACEGO の使用 488 ACEPREP の使用 487 DATABASE メニューへのアクセ ス 481 FORM メニューへのアクセス 478 I-SQL モジュールへのアクセ ス 477 PERFORM へのアクセス 486 QUERY-LANGUAGE メニューへのア クセス 480 REPORT メニューへのアクセ ス 479 sperform の使用 51 TABLE メニューへのアクセス 483 USER-MENU メニューへのアクセ ス 482 カスタマイズされたスクリーン フォームのコンパイル 484 カスタマイズされたレポート フォームのコンパイル 487 コントロール ブロック ACE レポートの FORMAT セクショ ン 236 AFTER GROUP OF 237 BEFORE GROUP OF 240 FIRST PAGE HEADER 243 FORMBUILD 117 ON EVERY ROW 245 ON LAST ROW 247 PAGE HEADER 248 PAGE TRAILER 250 コンパイル saceprep を使用 336 500 IBM Informix SQL リファレンス マニュアル sformbld を使用する 341 フォーム仕様 29, 341 レポート 36 レポート仕様 336, 487 さ サーバ ロケール 422 最高値演算子、PERFORM の 183 最低値演算子、PERFORM の 183 索引名 415 作成 スクリプト メニュー 322 ユーザ メニューによるメ ニュー 304 サブストリング 419 参考文献 15 サンプル フォーム仕様 顧客 374 サンプル 377 受注フォーム 375 サンプル レポート仕様、ACE 380 し シェル、ファイルで環境変数を設 定 394 時間隔 (INTERVAL) 型、フォームに おける 156 式 ACE における 199 PERFORM 制御ブロックにおい て 338, 340 の定義 338, 340 識別子 415 GLS における 410 メニュー名のルール 313 識別子の長さ 415 システム条件 ソフトウェア 5 データベース 5 実数 (FLOAT) 型 フォームにおける 156 実数 (FLOAT) 型のデータ型 GLS における 411 実数 (FLOAT) データ型 フォームでのフォーマット設 定 86 シノニム、SQL 識別子 415 集計関数のリスト 131 主列 FORMBUILD 74 結合 74 順序 表示フィールドの 68 表の 68 主 / 詳細関係 指定 115 「Detail」メニュー オプション、 PERFORM の 169 「Master」メニュー オプション、 PERFORM の 172 小桁実数 (SMALLFLOAT) 型 フォームでのフォーマット設 定 86 フォームにおける 156 小桁実数 (SMALLFLOAT) 型のデータ 型 GLS における 411 小桁整数 (SMALLINT) 型 フォームにおける 155 照合 410, 412 照合結合 FORMBUILD 74 PERFORM の 74 照合順序 408, 416 照合のコード セット順序 408, 416 小数点記号 284, 401 小数点 427 状態行について 82 省略された年 77 シリアル (SERIAL) 型、フォームに おける 155 資料、オンライン マニュアル 14 資料、タイプ 参考文献 15 シングルバイト ロケール 418 せ 制御ブロック ACE 仕様ファイルにおいて 334 ON BEGINNING 339 ON ENDING 339 整数 (INTEGER) 型 表示フィールドでの 54 フォームにおける 155 製品アイコン 8 制約名 415 ゼロ、時間隔 (INTERVAL) 型のデ フォルト値 54 先行の通貨記号 285, 401 そ 挿入モード、PERFORM におけ る 159 ソフトウェア要件 5 た タイ語 417, 422 端末特性 termcap ファイル 436 terminfo ディレクトリ 454 ち 置換変換 432 中国語 408, 422 中国語 ( 簡体字 ) 421, 422 中国語 ( 繁体字 ) 421, 422 つ 通貨記号 417 す スクリプト メニュー、作成方 法 322 ストアド プロシジャ 415 て ディレクトリ構造、GLS 製品にお いて 420 データ PERFORM で画面に表示 57 PERFORM での更新 187 PERFORM でのフィールドへの入 力 154 PERFORM フィールドにおける チェック 163 メニューについての入力 306 ユーザ メニューによる入力 310 データ型 10 進数 (DECIMAL) 型、GLS にお ける 411 10 進数 (DECIMAL) 型、フォーム における 155 INFORMIX-OnLine での選択 39 各国語可変長文字 (NVARCHAR) 型 409, 411 各国語文字 (NCHAR) 409 各国語文字 (NCHAR) 型 411 可変長文字 (VARCHAR) 型 39 可変長文字 (VARCHAR) 型、GLS における 411 金額 (MONEY) 型、GLS におけ る 411 金額 (MONEY) 型、フォームにお ける 156 実数 (FLOAT) 型、GLS におけ る 411 実数 (FLOAT) 型、フォームにお ける 156 シノニム 154 小桁実数 (SMALLFLOAT) 型、GLS における 411 小桁実数 (SMALLFLOAT) 型、 フォームにおける 156 小桁整数 (SMALLINT) 型、フォー ムにおける 155 シリアル (SERIAL) 型、フォーム における 155 整数 (INTEGER) 型、フォームに おける 155 テキスト (TEXT) 型 40 日時 (DATETIME) 型、フォームに おける 156 の定義 154 バイト (BYTE) 型 40 日付 (DATE) 型、GLS におけ る 411 日付 (DATE) 型、フォームにおけ る 156 フォームでのフォーマット設 定 86 索引 501 文字 (CHAR) 型、GLS におけ る 411 文字 (CHAR) 型、フォームにおけ る 155, 157 データのソート 照会において 416 レポートにおいて 416 データベース 記載されている stores7 デモン ストレーション データベー ス 371 接続 424, 425 名前 415 データベースの問合せ 可変長文字 (VARCHAR) 型、テキ スト (TEXT) 型、およびバイ ト (BYTE) 型データ 32 テキスト ラベル 417 テキスト (TEXT) 型 フォームでの指定 108 列の定義 40 レポート内での使用 199, 241, 245 テキスト (TEXT) 型 BLOB 413 テキスト幾何学 417 テキスト入力画面 22 テキスト、入力方法 21 デフォルト ロケール 5 デモンストレーション データベー ス stores7、の表 371 オリジナル データベースの復 元 373 コピー 371 サンプル フォーム 47 と 問合せ、PERFORM の構文 181 トルコ語 422 な 名前付き値 413 日時 (DATETIME) 型 許容値 156 フォームにおける 156 日本語 408, 421, 422 ね 年、省略された 77 は バイト (BYTE) 型 フォームでの指定 108 列の定義 40 バイトに基づく文字操作 418 発音区別記号 408 範囲演算子、PERFORM の 182 ひ 東アジア言語 417 日付 (DATE) 型 フォーマット設定 77 フォームでのフォーマット設 定 86 フォームにおける 156 日付 (DATE) 型のデータ型 GLS における 411 ビュー名 415 表 INFORMIX-OnLine での作成および 変更 32 sysmenuitems 305 sysmenus 305 主 / 詳細関係の作成 115 フォーム内での順序 68 別名 66 表示専用フィールド、 FORMBUILD 58 表示幅 418 表示フィールド FORMBUILD 57 順序 68 表名 415 に 西ヨーロッパ言語 422 502 IBM Informix SQL リファレンス マニュアル ふ ファイル SE の一時 405 環境構成 394 シェル 394 ファイル拡張子 ACE レポートのコンパイル 336 PERFORM フォームのコンパイ ル 341 .ACE 194, 196, 198, 336 .ARC 195, 196, 198 .C 361 .EC 361 .ERR 49, 195, 198 .FRM 49, 398 .PER 50, 341 フィールド FORMBUILD 57 区切り記号、PERFORM の 113 データベース列にリンクされ る 69 表示順序 68 表示する 57 表示専用 71 ルックアップ 69 フィールド タグ、FORMBUILD 57 フィールドの幅、FORMBUILD 57 不一致の処理 432 フォーマット設定 ACE 284 日付 (DATE) 型の値 77 フォームでのデータ型 86 フォーム BLOB ( バイナリ ラージ オブジェ クト ) を使う 108 オペレーティング システムで作 成 50 外部表のシノニムの使用 66 外部表の使用 66 カスタムの作成とコンパイル 48 コンパイル 28 コンパイル、リンク、実行 361 実行 28 デフォルト 28 のグラフィックス文字 61 フォーム仕様 ATTRIBUTES ( 属性 ) セクショ ン 52, 67 DATABASE ( データベース ) セク ション 51, 54 INSTRUCTIONS ( インストラク ション ) セクション 52, 110 SCREEN ( スクリーン ) セクショ ン 51, 55 TABLES ( 表 ) セクション 52, 64 カスタマイズ 48 コンパイル 29, 484 サンプル ファイル 138 セクション 51 デフォルト 48, 50 編集 29 フォーム仕様のコンパイル 484 フォーム、可変長文字 (VARCHAR) 型データ 107 フォント要件 408 複合結合、PERFORM の 111 複合文、ACE における 252 複合文字 417, 422 複合文字以外のタイ語 422 太文字 7 部分文字 418 プラットフォーム アイコン 8 プログラム example, p_ex1.per 367 デモンストレーション データ ベースの例 362 例、stamp.c 369 文 ACE 202 ASCII 206 BOTTOM MARGIN 220 EVERY ROW 233 FOR 253 IF THEN ELSE 254 LEFT MARGIN 217 LET 256 NEED 258 PAGE LENGTH 221 PARAM 208 PAUSE 259 PRINT 260 PRINT FILE 262 PROMPT FOR 212 READ 227 REPORT TO 215 RIGHT MARGIN 218 SKIP 263 SKIP TO TOP OF PAGE 264 TOP MARGIN 219 TOP OF PAGE 222 VARIABLE 209 WHILE 265 リンク 68 へ 米国英語 (U.S. English) 言語コー ド 408 ページ レイアウト 57 別名、表 66 ま マッピング ファイル 433 マルチバイト ロケール 418 マルチライン エディタ、起動方 法 162 め 命名規則、ユーザ メニューの名 前 313 メインメニュー INFORMIX-SQL メニュー階層の全 体像 23 終了方法 27 「Form」オプション 28, 48 「Query-language」オプション 30 「Report」オプション 35 「Table」オプション 37 「User-menu」オプション 41 メニュー FORM 28 REPORT 35 SQL 30 TABLE 37 USER-MENU 41 アクセス方法 300 階層の全体像 23 各国語の 398 スクリプトの作成 322 設計 302 データの入力 306 独自に作成 304 独自に作成したものを修正 312 独自に作成したものを名前指 定 313 メニューあたりの最大オプション 数 302 ユーザ メニュー機能を使用した カスタムの作成 299 ユーザ メニュー構造におけるレ ベル 302 メニュー項目 417 も モード 上書き、PERFORM における 159 挿入、PERFORM における 159 文字 (CHAR) 型 フォームにおける 155 文字 (CHAR) 型のデータ型 GLS における 411 文字セット 414, 430 文字列 引用符付き 413 文字 414 戻り値マクロ、C プログラム構造 において 348 ゆ ユーザ メニュー sysmenuitems 情報 305 sysmenus 情報 305 アクセス方法 300 サンプルの設計概要 303 独自に作成したメニューの修 正 312 独自のデータを入力するための手 順 310 メニュー データの入力 306 メニュー データ、入力 306 メニューあたりの最大オプショ ン 302 メニューの設計 302 メニューのレベル 302 レイアウト仕様 302 ユーザ メニュー構造におけるメ ニューのレベル 302 索引 503 ユーザ メニューによるメニューの 設計 302 ユーザのロケール ロケールを参 照。 優先順位、環境変数のルール 397 ら ライブラリ関数 PERFORM において 349 pf_gettype() 350 pf_getval() 352 pf_msg() 360 pf_nxfield() 358 pf_putval() 355 ラウンド トリップ変換 432 ラテン語のアルファベット 422 る ルックアップ フィールド LOOKUP 属性を使って指定 69 れ 列名 415 列、結合 73 レポート コントロール ブロックを使用し たカスタマイズ 236 コンパイル 36, 193 コンパイル、リンク、実行 361 実行 35, 193 編集 36 レポート仕様の FORMAT セクション AFTER GROUP OF コントロール ブ ロック 237 BEFORE GROUP OF コントロール ブ ロック 240 EVERY ROW 文 233 FIRST PAGE HEADER コントロール ブロック 243 FOR 文 253 IF THEN ELSE 文 254 LET 文 256 NEED 文 258 ON EVERY ROW コントロール ブ ロック 245 ON LAST ROW コントロール ブロッ ク 247 PAGE HEADER コントロール ブ ロック 248 PAGE TRAILER コントロール ブ ロック 250 PAUSE 文 259 PRINT FILE 文 262 PRINT 文 260 SKIP TO TOP OF PAGE 文 264 SKIP 文 263 WHILE 文 265 コントロール ブロック 236 ろ ローカライズ照合順序 408 ログ ファイル名 415 ロケール 5 クライアント 422, 426 サーバ 422, 425 ロケール カテゴリ COLLATE 416 ロケール変数 428 論理文字 408, 418 論理文字に基づく操作 418 わ ワイルドカード文字、PERFORM の 182 特殊文字 .informix 環境構成ファイル 394 「Add」オプション PERFORM 166 「Alter」オプション、 「TABLE」メ ニュー 37 「Choose」オプション、「SQL」メ ニュー 30 「Compile」オプション 「FORM」メニュー 29 「REPORT」メニュー 36 「Create」オプション 504 IBM Informix SQL リファレンス マニュアル 「DATABASE」メニュー 27 「TABLE」メニュー 37 「Current」オプション、PERFORM の 168 「DATABASE」メニュー 使用法 27 「Create」オプション 27 「Drop」オプション 27 「Exit」オプション 26 「Select」オプション 27 「Detail」オプション、PERFORM の 169 「Drop」オプション 「DATABASE」メニュー 27 「FORM」メニュー 28 「REPORT」メニュー 35 「SQL」メニュー 31 「TABLE」メニュー 38 「Exit」オプション PERFORM 171 「DATABASE」メニュー 26 「FORM」メニュー 28 「REPORT」メニュー 35 「SQL」メニュー 31 「TABLE」メニュー 37 「USER-MENU」メニュー 41 「FORM OUTPUT FILE」メニュー、 PERFORM の 175 「FORM」メニュー 「Compile」オプション 29 「Drop」オプション 28 「Exit」オプション 28 「Generate」オプション 28 「New」オプション 28 「Run」オプション 28, 148 「Generate」オプション 「FORM」メニュー 28 「REPORT」メニュー 35 「Info」オプション 「SQL」メニュー 31 「TABLE」メニュー 37 「Master」オプション、PERFORM の 172 「Modify」オプション 「FORM」メニュー 28 「REPORT」メニュー 35 「SQL」メニュー 30 「USER-MENU」メニュー 41 「New」オプション 「FORM」メニュー 28 「REPORT」メニュー 35 「SQL」メニュー 30 「Next」オプション、PERFORM の 173 「OUTPUT FORMAT」画面、PERFORM の 176 「Output」オプション PERFORM 174 「SQL」メニュー 30 「Previous」オプション、PERFORM の 179 「Query-language」オプション、メ インメニュー 30 「Query」オプション、PERFORM の 180 「Remove」オプション、PERFORM の 184 「REPORT」メニュー 使用法 36 「Drop」オプション 35 「Exit」オプション 35 「Generate」オプション 35 「Modify」オプション 35 「New」オプション 35 「Run」オプション 35 「Run」オプション 「FORM」メニュー 28 「REPORT」メニュー 35 「SQL」メニュー 30 「USER-MENU」メニュー 41 「Save」オプション、「SQL」メ ニュー 31 「Screen」オプション、PERFORM の 185 「Select」オプション、「DATABASE」 メニュー 27 「SQL」メニュー 使用法 30, 31 「Choose」オプション 30 「Drop」オプション 31 「Exit」オプション 31 「Info」オプション 31 「Modify」オプション 30 「New」オプション 30 「Output」オプション 30 「Run」オプション 30 「Save」オプション 31 「Use-editor」オプション 30 「Table」オプション、PERFORM の 186 「TABLE」メニュー 使用法 38 「Alter」オプション 37 「Create」オプション 37 「Drop」オプション 38 「Exit」オプション 37 「Info」オプション 37 「Update」オプション、PERFORM の 187 「Use-editor」オプション、「SQL」 メニュー 30 「USER-MENU」メニュー 使用法 41 メイン メニューからのアクセス 方法 300 「Exit」オプション 41 「Modify」オプション 41 「Run」オプション 41 「View」オプション、PERFORM の 188 索引 505 506 IBM Informix SQL リファレンス マニュアル 507 GB88-8662-00 日本アイ・ビー・エム株式会社 〒 106-8711 東京都港区六本木 3-2-12