...

IBM Informix SQL リファレンス マニュアル バージョン 7.3 GB88-8662-00

by user

on
Category: Documents
194

views

Report

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
Fly UP