8.41 DEFINE_SPACE_CELL

指定されたスペース・オブジェクト内でセル(またはカラム)を定義します。その他の「スペース組み込み関数」も参照してください。

 

引数

番号

タイプ

必須/任意

記述

最小長

最大長

最小小数桁数

最大小数桁数

1

A

必須

セルが定義されるスペースの名前

1

256

 

 

2

A

必須

このスペース・セルを定義する際、定義がプロトタイプとして使用されるフィールドの名前

これは、フィールドの名前であってフィールドそのものではないことに注意してください。このため、社員番号フィールドの場合は、#EMPNOではなく、EMPNOと指定する必要があります(#EMPNOフィールドのコンテンツには、フィールド名も含まれるということです)。

1

10

 

 

3

A

任意

セル属性

複数のセル属性を指定する場合は、1つのスペースで区切ってください。

有効な値は次のとおりです(大文字と小文字は区別されません)。

KEY:このセルがスペースのコンテンツへのキーとなることを指定します。スペース・オブジェクトには、常に最低1つのキー・セルが必要です。

DESCEND:このセルには降順を適用することを指定します。この属性は、KEY属性と共に使用された場合にのみ有効で、それ以外は無視されます。

NOCASE:キーの大文字/小文字の別は無視され、すべてのキーが小文字として比較されることを指定します。この属性は、英数字のKEYセルと共に使用された場合にのみ有効で、それ以外は無視されます。

1

256

 

 

 

 

戻り値

番号

タイプ

必須/任意

記述

最小長

最大長

最小小数桁数

最大小数桁数

1

A

O

標準戻りコード

OK:セルが定義された

ER:セルの定義が失敗した。発行されるメッセージに失敗の原因が示されます。

2

2

 

 

 

 

技術上の注記

指定されたスペース・オブジェクト内でセルを定義する前に、そのスペース・オブジェクトそのものが定義されている必要があります(組み込み関数 CREATE_SPACEを参照)。

指定された名前を持つフィールドの最初のインスタンスが見つかるまで、現在アクティブな呼び出しスタックが逆方向に検索されます。

フィールド名のインスタンスが見つかった場合、スペース・セルに対する定義のプロトタイプとして即座に使用されます(タイプ、長さ等)。

フィールド名のインスタンスが見つからなかった場合、回復不能メッセージが出力され、アプリケーションが停止します。

スペース・オブジェクト内で、すべてのKEYセルを最初のセルとして定義することをお勧めします。

キー・セルが定義される順番は、集合キー内部のセル行に対する順序を暗黙的に示しています。

すべてのセルが定義される順序は、INSERT_IN_SPACEおよびFETCH_IN_SPACEなどの他のスペース・コマンドに挿入または取り出しのマッピング順序を暗黙的に示します。

個々の項目を固有に識別するためにスペース内のデータにキーの複数のレベルが必要な場合は、複数のセルをキーとして定義する必要があります。

使用例

例 1

このサンプルは、現在のコンポーネント名 + ".emp" という名前のスペースを作成して、その中に3つのセルを定義するものです。3つのセルのタイプと長さは、それぞれEMPNO、GIVENAME、SURNAMEの定義に基づきます。最初のセルは、スペースへのキーです。

Define #SpaceName *char 20
Use TConcat (*component '.EMP') (#SpaceName)
Use Create_Space (#SpaceName)
Use Define_Space_Cell (#SpaceName EmpNo Key)
Use Define_Space_Cell (#SpaceName GiveName)
 

Use Define_Space_Cell (#SpaceName SurName);

例 2

LANSAデモンストレーション・システムのセクション・ファイル (SECTAB) では、任意の指定レコードを識別するために2つのレベルのキーを指定する必要があります。スペースは類似するフォーマットで定義する必要があります。そうでないと、SELECT_IN_SPACEおよびSELECT_NEXT_IN_SPACEを使用してスペースからデータを取得しようとしたときに予期しない結果が生じます。

Define field(#SpaceName) type(*char) length(20)
Use TConcat (*component '.EMP') #SpaceName)
Use Create_Space (#SpaceName)
Use Define_Space_Cell (#SpaceName Deptment Key)
Use Define_Space_Cell (#SpaceName Section Key)
Use Define_Space_Cell (#SpaceName Secdesc)