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)