9.34 DEFINE_SPACE_CELL

LANSA

9.34 DEFINE_SPACE_CELL


Þ 注:組 み込み関数の規則

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

各製品の対応

LANSA/AD

使 用可

RDMLX でのみ使用可

Visual LANSA for Windows

使 用可

 

Visual LANSA for Linux

使 用可

 

 

引数

番号

タイプ

必須/任意

記述

最小長

最大長

最小小数桁数

最大小数桁数

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)