プロジェクト

全般

プロフィール

QA #1172

未完了

メソッド詳細シート メソッド.集配更新エリア加減算(ID毎)のプロパティ.集配票マスタ更新データについて

高橋 歩 さんが1年以上前に追加. 1年以上前に更新.

ステータス:
解決
優先度:
通常
担当者:
開始日:
期日:
進捗率:

0%

予定工数:
実開始日:
DD名:
INCLUDE:
DSN:
バグ区分:
QA分析:
仕様確認(処理)
方針(第一貨物):
テーブル種:
データ移行要否:
実終了日:
ツールのバージョン:
AsIsSource行:
進捗計画:
設計・開発者:
画面ID:
機能区分:
機能ID:
レビュー指摘区分:
検査完了日:
検査依頼日:

説明

59行目からの処理について、変数.集配票マスターキー != 変数.ループキー2 の場合、
集配マスター更新エリア確保メソッドでプロパティ.集配票マスタ更新データに値がセットされた状態で参照されますが、
以外の場合は処理なしとなり、プロパティ.集配票マスタ更新データに値がセットされていない状態で参照されてしまいます。
よろしいでしょうか?

追記
値がセットされていない状態で参照してしまう箇所が他にもあったので、こちらの確認もお願いいたします。
・メソッド詳細シート 83行目の「プロパティ.委託マスター更新データ」
・メソッド詳細シート 158行目の「プロパティ.バッチ間2~3更新用データA」

高橋 歩 さんが1年以上前に更新 · 編集済み

柳川 岳志 さんが1年以上前に更新 · 編集済み

  • ステータス を 新規 から 作業中 に変更
  • 担当者 を 柳川 岳志 から 高橋 歩 に変更
  • AsIsSource行 を 仕様確認(処理) にセット

該当の箇所は32行目から始まるループ内の処理となっており、インデータの専門集配票NO・KEY店所コード・集配区分が前回のループ時と同じ間繰り返される処理となっています。
プロパティ.集配票マスタ更新データ内の値はループ処理の外(492行目)で初期化されるまで保持されており、また初回のループ処理では集配マスター更新エリア確保メソッドで値をセットしてるため
59行目の条件分岐でELSEを通った場合もプロパティ内の値はセットされた状態である想定での設計となります。

初回のループで集配マスター更新エリア確保メソッドを通らない条件がある、もしくはループ内で集配票マスタ更新データがクリアされる箇所があるということでしょうか。

また、追記に関しましてはプロパティ.委託マスター更新データ、プロパティ.バッチ間2~3更新用データAについても同様の想定で設計していましたが、
委託マスター更新データについては設計上の不備があったため後ほど変更依頼を発行します。

高橋 歩 さんが1年以上前に更新 · 編集済み

  • ステータス を 作業中 から 保留中 に変更
  • 担当者 を 高橋 歩 から 柳川 岳志 に変更

ご回答ありがとうございます。
ご指摘の通り、ループで集配マスター更新エリア確保メソッドを通らない可能性があるのではないかと思いました。

59行目の条件で、変数.集配票マスターキーと変数.ループキー2が一致する場合は処理なしとなるため、
メソッド.集配マスター更新エリア確保がコールされないという認識ですが、処理なしになるケースは存在しないのでしょうか?

追記したプロパティ.委託マスター更新データについては、83行目で「プロパティ.委託マスター更新データ」内の値をセットしようとしていますが、
プロパティ.委託マスター更新データにセットしている処理が83行目以降で行われているため、セットされていない状態で参照されてしまうのではないかと考えられます。

同様にプロパティ.バッチ間2~3更新用データAについても、158行目以降でプロパティ.バッチ間2~3更新用データAのセット処理を行っているため、
158行目の時点ではセットされていない状態で参照されてしまうと考えられます。

これらのことから、各プロパティのデータに対してセットされていない状態が存在すると考えたのですが、いかがでしょうか。

柳川 岳志 さんが1年以上前に更新 · 編集済み

  • ステータス を 保留中 から 作業中 に変更
  • 担当者 を 柳川 岳志 から 高橋 歩 に変更

59行目のIF文は現在ループ処理しているインデータの専門集配票NO・KEY店所コード・集配区分(以下、キー部)と前回ループ時のキー部を比較しているものとなります。
キー部が一致すれば処理なし、一致しなければ集配マスター更新エリア確保メソッドを通って集配票マスタ更新データに値をセットします。

このキー部の比較は32行目からのループ処理の条件にもなっており、191行目で次のインデータのレコードを参照した際にキー部が一致しなければループを抜けます。

集配票マスタ更新データはループ外の492行目でクリアされるまで保持され続け、クリアされた後は再び32行目からのループに入るため59行目の条件でTrueとなり集配マスター更新エリア確保メソッドを通ります。

そのため、59行目の分岐で集配マスター更新エリア確保メソッドを通らず処理なしとなるケースは存在しますが、集配票マスタ更新データには前回ループ時にセットされた値が入っているため以後の処理に問題はないと考えます。

追記箇所については、値をセットされる前のプロパティには初期値が入っているという認識で設計書を起こしていたため、初回のループ処理時では
プロパティの型としているテーブル定義(構造体定義)の初期値が入るものと解釈いただければと思います。
現在対応している変更箇所の修正が終わり次第、設計書にはメインメソッド開始時に委託マスター更新データおよびバッチ間2~3更新用データAに初期値をセットする旨の記述を追記します。

よろしくお願いします。

高橋 歩 さんが1年以上前に更新 · 編集済み

  • ステータス を 作業中 から 解決 に変更

初期値が入っているという認識を持つことで全て理解しました。
処理の概要を細かく説明していただきありがとうございました。

また、設計書の修正についても承知しました。

他の形式にエクスポート: Atom PDF