BASEVALファンクションは、連結ディメンションのループ処理を行い、連結ディメンションのベース・ディメンションの値を返します。ベース・ディメンションが連結ディメンションの場合は、そのベース・ディメンションの値も返します。
戻り値
BASEVALの戻り値のデータ型は次のルールに従って決まります。
concatdimの任意のコンポーネント・ディメンションのデータ型がNTEXTの場合、または任意のコンポーネント・ディメンションがNTEXT型の単純なディメンションを使用する結合ディメンションの場合、戻り値のデータ型はNTEXTになります。
すべてのコンポーネント・ディメンションのデータ型が同じで、コンポーネント・ディメンションの中に結合ディメンションが存在しない場合、戻り値のデータ型はコンポーネント・ディメンションのデータ型になります。
これ以外の場合、戻り値のデータ型はTEXTになります。
例
例7-30 NTEXT値の戻り値
次の例では、単純なディメンション2つと一意でない連結ディメンション1つを作成し、連結ディメンションの値を取得します。
DEFINE textdim DIMENSION TEXT DEFINE ntextdim DIMENSION NTEXT MAINTAIN textdim ADD 'v1' 'v2' MAINTAIN ntextdim ADD 'n1' 'n2' DEFINE concatdim DIMENSION CONCAT(textdim ntextdim) REPORT w 18 BASEVAL(concatdim)
この文によって生成される出力は、次のとおりです。
CONCATDIM BASEVAL(CONCATDIM) -------------------- ------------------ <textdim: v1> v1 <textdim: v2> v2 <ntextdim: n1> n1 <ntextdim: n2> n2
戻り値のデータ型はNTEXTです。v1
およびv2
というTEXT値は、BASEVALファンクションによってNTEXT値に変換されてから返されます。
例7-31 ベース連結ディメンションのベース値の戻り値
この例では、単純なディメンションstate
およびcity
を定義し、これらに値を追加します。ベースとしてstate
およびcity
を持つ一意でない連結ディメンションstatecity
を定義し、次に、ベースとしてregion
、district
およびstatecity
を持つ一意でない別の連結ディメンションgeog
を定義します。最後に、BASEVALファンクションによって返される値がREPORT文によって返されます。
DEFINE city DIMENSION TEXT DEFINE state DIMENSION TEXT MAINTAIN city ADD 'Boston' 'Worcester' 'Portsmouth' 'Portland' - 'Burlington' 'Hartford' 'New York' 'Albany' MAINTAIN state ADD 'MA' 'NH' 'ME' 'VT' 'CT' 'NY' DEFINE statecity DIMENSION CONCAT(state city) DEFINE geog DIMENSION CONCAT(region district statecity) LCOLWIDTH = 20 REPORT W 16 BASEVAL(geog)
この文によって生成される出力は、次のとおりです。
GEOG BASEVAL(GEOG) -------------------- ---------------- <region: East> East <region: Central> Central <region: West> West <district: Boston> Boston <district: Atlanta> Atlanta <district: Chicago> Chicago <district: Dallas> Dallas <district: Denver> Denver <district: Seattle> Seattle <state: MA> MA <state: NH> NH <state: ME> ME <state: VT> VT <state: CT> CT <state: NY> NY <city: Boston> Boston <city: Worcester> Worcester <city: Portsmouth> Portsmouth <city: Portland> Portland <city: Burlington> Burlington <city: Hartford> Hartford <city: New York> New York <city: Albany> Albany