これは可能ではないことを何年にもわたって検索してもかなり確かですが、とにかく尋ねます。AS400 RPGLE /操作中のフリー・ダイナミック変数
問題は、フィールド名がわからないときに操作で動的変数を使用できるかどうかです。たとえば、私は数百のフィールドを含むデータ構造を持っています。オペレータはこれらのフィールドの1つを選択し、プログラムは渡されたデータ構造からフィールドにどのデータが存在するかを知る必要があります。それで、100のフィールドがあり、フィールド50はオペレータが操作を選択したものです。プログラムは、FLDNAM変数のフィールド名(field50)で渡されます。プログラムは通常の方法でこれを読んでいます:
/free
if field50 = 'XXX'
// do something
endif;
/end-free
問題は、すべての操作でこれを100回コーディングしなければならないということです。例:
/free
if fldnam = 'field1';
// do something
elseif fldnam = 'field2';
// do something
..
elseif fldnam = 'field50';
// do something
endif;
未知のフィールドで操作を実行する方法はありますか。 (つまり、FLDNAM(ポインタデータ)=「XXX」の場合は何かを実行します)
RPGは厳密に型指定された言語です。フィールドは事前に定義されていなければなりません。フィールドの名前は、動的に取得または指定できる方法では決してプログラムには認識されません。配列を使用できますか、またはフィールドがすべて異なっていますか? – jmarkmurphy
こんにちは。応答してくれてありがとう。私は必要に応じて、高速処理のためだけに配列を使用することを考えた。私は、フィールド名の配列だけでなく、データ領域を読み込むことになるだろうし、同様に位置配列。このコードはメンテナンスが非常に複雑になる可能性がありますが、動的変数を使用できない場合のバックアップ計画です。すべてのフィールドは長さが異なり、いくつかはパックされた10進数などです。配列を使用することは可能ですが、他のオプションがあるかどうかを確認して確認します。 – user1420914
これは絶対に行うことができます。クエリを考えてみましょう。あなたが始める前にあなたが望むフィールドが分かっていますか?フィールドを選択する手助けはできますか? – danny117