重複チェックagain

重複チェック。かなりの確率で出てくる事になるだろうロジック。前にも重複チェックは書いていて、その時には一度サブファイル表示したものを①配列に格納して②LOOKUPしていた。
が、2ステップじゃなくいっぺんにできると言われた。頭いいなーと思いましたw
それはサブファイルから配列にしまうときにLOOKUPもやってしまうということ。ステップ数が減らせるし分かりやすい。

	S1STCD	LOOKUP	ARREY1  N  		90
			MOVE	S1STCD  ARREY1

これを繰り返すだけ。スマートやんなー。

別の面の話題だけど、ハンドリング難しいのは重複した二つの対象を反転させたい時。
「重複したもの2」を反転させるのは簡単だけど「重複したもの1」を反転させようとするとサブファイルの相対レコードNo.が変わってしまって連続した処理にしづらい。やれないこともないけど、二つの相対レコードNo.をハンドリングしないといけない。しかもこのときのサブファイルは1レコード中に2フィールドチェックするものがあり(振替マスタの表示で、元と先がセットで1レコードだった)、サブファイルの仕様としてどのレコードもフラグは共通なので、4つハンドリングしないといけなかった。
元コードのチェックで「重複したもの1」を反転させに行くと、そのレコードの先コードも重複チェックしないといけない。この時ばかりはサブファイルの仕様がうざったくてしかたなかった。
相対レコードNo.5でフィールド1と2のフラグがオン・オフの時に、相対レコードNo.2を読みに行くとなんで5と同じオン・オフが適用されなければいけないのか!気持ち的にはレコードごとにフラグ持ってていいだろと思う。
話を戻すと、解決策は、自分でサブファイルのレコードにフラグのオンオフ状況を非表示フィールドで持たせることだった。こうすれば反転させに帰った時も、もう一方のフラグがどうあるべきなのかきちんと分かるようになる。これができるから仕様はあんななのかなとも思った。