私は通常、ショップで BASICTYPE 'P' を使用しますが、プロジェクトで 'U' を使用する機会があり、属性マークで区切られた動的配列で検索できないことに気付きました。
ドキュメントを参照すると、タイプ U では、属性式を指定しないと構文エラーになることが明確に示されています。これは私にとって大きな見落としのようです。
これらの項目を検索するために for ループに頼らずに、これを行うにはどうすればよいでしょうか?
配列が属性マークで区切られている場合は、次の構文で場所を特定する必要があります。
LOCATE expression IN array_name SETTING position_var THEN | ELSE ...
次のように、値マークで区切られた配列内で特定するのは少しトリッキーです。
LOCATE expression IN array_name<1> SETTING position_var THEN | ELSE ...
BASICTYPE 'U' の場合は、代わりに FIND ステートメントを使用できます。
マニュアルから:
構文
FIND expr IN dyn.array[,occur] SETTING f [,v[,s]] {THEN statements | ELSE statements}
説明
UniBasic FIND コマンドは、動的配列内の指定された式の位置を決定します。FIND は、見つかった文字列の属性、値、およびサブ値の位置を返します。matc を作成するには、式が配列要素全体と一致する必要があります。
LOCATE ステートメントには 2 つの形式があります。
1 つは Locate xxx in yyy setting zzz then aaa else bbb の形式を取り、もう 1 つは Locate(xxx;yyy;zzz) then aaa else bbb の形式を取ります。