13.1 LANSAオブジェクト名
すべてのオブジェクト命名規則を確認することを強くお勧めします。
オブジェクトの名前と識別子の関係
各LANSAオブジェクトには 2 つの名前があります。つまり、識別子 (オブジェクト名またはショートネーム) とロングネームです。RDMLX 区画では、どちらの名前を使用してもLANSAオブジェクトを参照できます。
RDML区画の場合は、識別子 (ショートネーム) のみの使用が許可されています。アプリケーションを IBM i で実行する場合は、識別子が使用されます。
LANSAエディタには識別子をすべてのダイアログに表示するオプションがあります。このオプションが選択されていると、エディタのウィンドウで識別子 (オブジェクト名) が表示されます。
LANSAガイドで"オブジェクト名"という言葉が使用されている場合、ロング・ネームでもショート・ネームでも使用できますが、通常はどちらであるか指定されています。
一般的な命名規則
ここでは、LANSAリポジトリに格納されるすべてのオブジェクトに適用される一般的なルールとガイドラインの一部を説明します。
- LANSA 識別子は、LANSA区画内で一意でなければなりません。例えば、フィールドを名前EMPNOで作成した場合、他のオブジェクト(ファイル、コンポーネント、ファンクションなど)にこの名前を使用することはできません。
- ロング・ネームを既存の識別子と同一にすることはできませんし、その逆も同じくできません。こうすることで、それぞれが区画内で一意の名前となり、オブジェクト名が必要な時にどちらの名前でも使用することができます。
- 名前は、大文字と小文字が区別されません。EMPNO、Empno、EmpNoは、同じ名前とみなされます。
- 名前の途中でブランク文字を入れることはできません。例えば、"EMP NO"は有効な名前ではありません。ただし、"EMP_NO"は一部のオブジェクトでは有効な名前です。
- オブジェクト名に次の予約接頭辞および予約名を使用しないことをお勧めします。_、X、X_、COM、COM_、SYS、SYS_、SYSTEM、SYSTEM_、LAN、LAN_、LANSA、LANSA_、PRIM_
(ロング・ネーム) 命名規則
- 最初の128文字は、LANSA区画内で一意でなければならず、識別子と同じにはできません。
- 名前は、a-z、A-Zの文字、および 0-9のみを含むものでなければいけません。
- 読みやすいように入力時の大文字・小文字がそのまま残されますが、大文字・小文字の区別なく一意でなければいけません。例えば、ロング・ネームAaはAaとして保存され、常にAaと表示されますが、AAやaaという名前を別のオブジェクト名にすることはできません。
- すべての LANSAの命名規則は同じですが、フィールド名とファイル名は、以下に示されているように必要なターゲット・データベースにより実装が異なります。
Oracle および DB2 のフィールド名の命名規則
- OracleおよびIBM i のDB2では、列識別子の最大長は30文字です。ターゲットがこのいずれかのデータベースで、LANSAファイルのフィールド名が30文字より長い場合、全てのデータベース内の全列でLANSAフィールドの識別子が使用されます。
Oracle ファイル名の命名規則
- 物理ファイルまたは論理ビューの名前が 9 文字よりも少ない場合、識別子が代わりに使われます。
- Oracleのテーブル識別子の最大長は30文字です。ターゲットがOracleで、ファイル名が30文字より長い場合、全てのデータベースでテーブル識別子にLANSAファイルの識別子が使用されます。
- このテーブル識別子に対する制限はOracleのみです。その他のサポートされているデータベースでは128バイトが使用されています。
識別子 (ショート・ネーム) の命名規則
簡単にするために、LANSAオブジェクト名には、A~Zと1~9だけを使用することを強くお勧めします。特殊な文字(#、_、@、$など)は、一部のオブジェクト名で使用可能ですが、可搬性などに影響する可能性があります。
- すべての識別子はLANSAによってリポジトリで大文字に変換されます。
- 名前の先頭の文字には、A~Zを使用してください(文字$、@、#は、一部の名前で使用できますが、推奨されません)。
- 先頭の文字にはA~Zを使用する必要があります。フィールド識別子には@を使用しないでください。文字$、_、#を使用することはできますが、お勧めしません。
- フィールド識別子は、最大9文字に制限されています。
- SQLxxx のようなフィールド識別子の使用は控えてください。SQL(Structured Query Language)機能を使用するファンクションでこのようなフィールド識別子が使用された場合、問題が発生する可能性があります(IEコマンド SELECT_SQL)。
- 先頭の文字にはA~Zを使用する必要があります。コンポーネント識別子には@を使用しないでください。文字$、_、#を使用することはできますが、お勧めしません。
- コンポーネント識別子は、最大9文字に制限されています。
次のルールは、物理ファイル識別子と論理ファイル識別子の両方に適用されます。
- テーブル識別子は、ターゲット・オペレーティング・システムとDBMSに対して有効でなければなりません。
- テーブル識別子は、最大10文字に制限されています。
- 先頭の文字には、A~Z、$、#、@のいずれかを使用する必要があります。残りの文字には、A~Z、0~9、$、#、@を使用することができます。ただし、"_"(アンダースコア)を使用することはできません。
- アクセス経路は、個別のLANSAオブジェクトではなく、テーブル定義の一部とみなされます。アクセス経路の名前は、ファイル定義内で一意でなければなりません。アクセス経路の名前は、一般の命名規則に従う必要があります。
- プロセス識別子は、LANSAシステム全体で一意でなければなりません。
- 最大8文字の使用が推奨されています。プロセス識別子の最大長は、10文字です。
- IBM i:プロセス識別子は、LANSA区画内で一意でなければなりません。ファンクション名は、そのファンクションが作成されるプロセス内で一意でなければなりません。
- Windows:プロセス識別子は、LANSAシステム全体で一意でなければなりません。すべてのファンクションは、タイプ*DIRECTとして定義する必要があります。ファンクション識別子は、区画内で一意でなければなりません。
- Windows:Windowsで10文字のプロセス識別子を使用した場合、一部のプログラム名の生成時に先頭の文字が切り捨てられるため、残りの9文字は一意である必要があります。
- RDML ファンクション識別子に"_"(アンダースコア)を使用することはできません。
- ファンクション識別子、Fnnnnnn/Cnnnnnn/Pnnnnnn(nnnnnnには、1から99999までの数値が入ります)は、予約語です。
- ファンクション識別子、MENU、EXIT、HELP、SELECT、EOJ、ERROR、RETRN、*ANYは、予約語です。
- ファンクション識別子は、最大7文字に制限されています。
- IBM i:ファンクション識別子は、そのファンクションが作成されるプロセス内で一意でなければなりません。
- Windows:すべてのファンクションは、タイプ*DIRECTとして定義する必要があります。ファンクション識別子は、区画内で一意でなければなりません。
識別子のプラットフォーム考慮事項
- #、$、@などの文字は、アプリケーションが複数の国で実行される場合、言語コードの変換問題が発生する可能性があります。オブジェクト識別子では、特殊な文字を注意して使用するか、特殊な文字を使用しないようにしてください。
- マルチプラットフォーム・アプリケーションの場合、LANSAオブジェクト識別子には、A~Z、0~9だけを使用してください。A~Z、0~9は、コード・ページが異なっても変化しません。したがって、異なるプラットフォームのオペレーティング・システム間で通信を使用したとき、オブジェクト名識別子は正確に一致します。