1.1.1 フィールド・タイプについて
フィー ルド定義
· す べての区画で「Alpha」、「Packed」、 および「Signed」の フィールド・タイプを使用することができます。
· 「RDMLX使用可能区画」で は、フィールド・タイプの「Date」、「Time」、「DateTime」、「Binary」、「Varbinary」、「String」、「Nvarchar」、「Nchar」、 「Char」、「Integer」、「Float」、「BLOB」、 および「CLOB」を 使用する必要があります。詳細については、『Visual LANSA 管理者ガイド』の「RDML 区画および RDMLX区画」を参照してください。
· Packed、 Signed、およびIntegerには編集コードと編集語の使用が許されます。他のフィールド・タイプは編集コードと編集語はサポートされていません。
· キー ボード・シフト・ブランクは、Binary、Varbinary、Date、Time、DateTime、Integer、Float、 Nvarchar、Nchar、BLOBおよびブール値だ けに有効な値です。
· RDMLX 区画では、参照フィールドにより定義されたフィールドは参照フィールドと異なる属性を持つことはできません。これはシステム定義の *IMPREFFLDNOPROPフラグに関係なく適用されます。
· Date、 Time、DateTime、Binary、Varbinary、BLOB、およびCLOBタイプの新しいフィールドは、デフォルトでASQN属性([入力属性]の 共通属性を参照)が有効になります。
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区画だ けを使用した開発について記述されています。
· LANSA には「Float」な ど、その他のファイルでの使用が基本的にサポートされているフィールド・タイプもありますが、ビジネス・アプリケーションでの使用はお勧めしません。多く の数値データには、Integerま たはPackedフィー ルドを使用することをお勧めします。また、RDML区画では、Signedの 使用もお勧めします。
· 文 字データは「Alpha」、「String」、 「Char」、「Nvarchar」 および 「Nchar」 タイプのフィールドで保管することができます。可能な場合は「Alpha」フィー ルドの使用をお勧めします。
· 導 入先にベンダー特定のDBMSを選択する場合、選択したDBMSで特定のフィールド範囲のサポートの問題がないように、ファイルを作成/編集するときにす べての警告を必ずレビューしてください。
プラッ トフォームについて
· LANSA ファイルを作成する時に、LANSAフィールド・タイプは、各ベンダーがサポートする特定のDBMSデータ・タイプに変換されます。例えば、 Integerフィールドは(その長さに依存して)TINYINT、SMALLINT、INTEGER、BIGINT、NUMBER(3)、NUMBER (5)、またはその他のタイプで実装されます。これはサポートされる特定ベンダーのDBMSレイヤーにより異なります。「[external or warnings link]」を参照してください。
· 場 合によって特定ベンダーのDBMSがフィールド長のすべてを処理できないことがありますが、これはLANSAで有効なデータ長がベンダーのデータベースで 有効なデータ長よりも長い場合です。導入先のDBMSシステムを選択することはできますが、フィールドが正確に保持されない場合は警告が表示されます。こ の場合、データは切り捨てられるかまたは拒否されます。例えば29桁に定義されたDateTime の場合、Oracleでは完全な小数点以下9桁での保管をサポートしますが、他のDBMSではデータは自動的に切り捨てられ、小数点以下は0、3、または 6桁になります。
さら に、次のトピックも参照してください。