1.1.1 フィールド・タイプについて
フィールド定義
- Packed、Signed、および Integer には編集コードと編集語の使用が許されます。他のフィールド・タイプは編集コードと編集後はサポートされていません。
- 鍵盤シフト・ブランクは、Binary、VarBinary、Date、Time、DateTime、Integer、Float、NVarChar、NChar、BLOB、Boolean のみで有効な値です。
- RDMLX区画では、参照フィールドにより定義されたフィールドは参照フィールドと異なる属性を持つことはできません。これはシステム定義の*IMPREFFLDNOPROPフラグに関係なく適用されます。
- Date、Time、DateTime、Binary、VarBinary、BLOB、およびCLOBタイプの新しいフィールドは、デフォルトで ASQN 属性 (1.2.17 [入力属性] の共通属性を参照) が有効になります。
LANSAでのフィールドの使用
- LANSAは、強い型付け (ストロング・タイピング) をすべてのフィールド・タイプに実装しました。
- Alpha、String、Charはすべて、文字列タイプに分類されます。これらは「A」タイプの LANSA 引数に有効です。
- Packed、Signed、Float、およびIntegerは数字に分類されます。したがって、これらは「N」タイプの LANSA 引数に有効です。
- Date、DateTime、およびBLOBなどのその他のタイプはすべて独自タイプに分類されます。「A」または「N」タイプのどちらにも有効ではありません。
- 16 進数 00 は、LANSA の Alpha、String、Char、NVarChar および NChar フィールドではサポートされません。その動作は、使用プラットフォームおよびデータの書き込み先データベースによって異なります。IBM i の RDML において、オーバーレイが使用されるAlphaの作業フィールドで16進数を使用することに正当な目的がある場合もありますが、ユーザーの責任で、アプリケーションが実行されるすべてのプラットフォームおよびデータベースでアプリケーションの必要性がLANSAの動作により満たされるようにしてください。
- フィールド・タイプにはデフォルト・プロパティ (通常.Value) と、必要に応じて追加されたプロパティができます。以下は日付フィールドの#MyDateの例ですが、すべて同じ処理を表しています。
Define Field(#MyDate) Type(*DATE)
Change #MyDate To(1972-03-04)
Set #MyDate Value(1972-03-04)
#MyDate.Value := "1972-03-04"
- BLOB および CLOB タイプのフィールドのデフォルト・プロパティは、.Valueではなく、.FileName です。このフィールドの「値」を変更することは、実際にはそのデフォルト・プロパティつまりファイル名プロパティが変更されるということを明確に示しています。
- SQL NULL可能フィールドは、*ISまたは*ISNOT *SQLNULLによって検査できます。また、このフィールドには.IsSqlNullという組み込みプロパティがあります。この組み込みプロパティを使用すると、フィールドの現在の状態を特定できます。例えば、以下のようになります。
If (#Std_Num.IsSqlNull)
If (#Std_Num *ISNOT *SqlNull)
If ((*Not #Std_Num.IsSqlNull) *AndIf (#Std_Num > 45.00))
If ( ([your expression] *IS *SqlNull )
組み込み関数の引数/戻り値のタイプ
ヒントとテクニック
- LANSAは、強い型付け (ストロング・タイピング) をすべてのフィールド・タイプに実装しました。例えば、Alphaの使用が許される組み込みファンクションでは String もサポートされます。しかしDateTimeの使用は許されません。DateTimeを使用する場合は、単純に#MyDateTim.asStringを使って文字列形式の使用を明示します。
- RDML区画を使用する場合は『LANSA/AD ユーザーガイド』を参照してください。この資料はRDML区画だけを使用した開発について記述されています。
- 導入先にベンダー特定のDBMSを選択する場合、選択したDBMSで特定のフィールド範囲のサポートの問題がないように、ファイルを作成/編集するときにすべての警告を必ずレビューしてください。
プラットフォームについて
- LANSA ファイル作成時、LANSA フィールド・タイプは、各ベンダーがサポートする特定の DBMS データ・タイプに変換されます。例えば、Integerフィールドは(その長さに依存して)TINYINT、SMALLINT、INTEGER、BIGINT、NUMBER(3)、NUMBER(5)、またはその他のタイプで実装されます。これはサポートされる特定ベンダーのDBMSレイヤーにより異なります。ファイル x_dbmenv.dat がこの動作を制御しますが、これは変更することはできません。
- 場合によって特定ベンダーの DBMS がフィールド長のすべてを処理できないことがありますが、これは LANSA で有効なデータ長がベンダーのデータベースで有効なデータ長よりも長い場合です。導入先のDBMSシステムを選択することはできますが、フィールドが正確に保持されない場合は警告が表示されます。この場合、データは切り捨てられるかまたは拒否されます。例えば 29 桁に定義された DateTime の場合、Oracle では完全な小数点以下 9 桁での保管をサポートしますが、他の DBMS ではデータは自動的に切り捨てられ、小数点以下は 0、3、または 6 桁になります。
次のトピックも参照してください。