2010-12-06 10 views
0

私は通常、当店でBASICTYPE 'P'を使用していますが、プロジェクトに 'U'を使用する機会があり、属性マークで区切られた動的配列上でロケートできないことに気付きました。@ AMのBASICTYPE 'U'でUnidataでどのようにLOCATEを実行しますか?

ドキュメントを参照すると、タイプUでは、属性式を指定しないと構文エラーが発生することが明示されています。これは私にとって大きな見通しのようだ。

forループでこれらのアイテムを検索する必要はありません。

+0

質問は少し誤解を招くと思います。タイトルは、あなたが属性マークを探したいという印象を与えます。ダイナミックアレイとマークされた属性内に配置しようとしているという質問の詳細ははっきりしています。 –

答えて

0

LOCATE文の

一つの二つの形式がありますが(; YYY; XXXをZZZ)を探し AAA他のBBBその後、ZZZの設定YYYで探しXXXの形を取り、他の後、AAA他のBBB

+1

これは私の質問に答えていないようです。 LOCATE()のfuntionバージョンには、このBASICTYPEの違いはありませんか? – slestak

0

BASICTYPE 'U'では、代わりにFINDステートメントを使用できます。マニュアルから

構文
FIND expr IN dyn.array[,occur] SETTING f [,v[,s]] {THEN statements | ELSE statements}

UniBasicコマンドを見つける説明
は、ダイナミックアレイ内の所与の表現の位置を決定します。 FINDは、見つかった 文字列の属性、値、および小数値の位置を返します。

LOCATE expression IN array_name SETTING position_var THEN | ELSE ... 

それは見つけるために少しトリッキーです:式があなたの配列が属性マークで区切られている場合MATC

1

を作るために全体の配列要素と一致する必要があり、単にあなたの次の構文内で検索を行う必要があります値の区切りの配列内では、次のようになります。

LOCATE expression IN array_name<1> SETTING position_var THEN | ELSE ... 
関連する問題