1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ILERPGAdvent Calendar 2022

Day 4

エラーが発生したときの原因を確認する方法

Last updated at Posted at 2022-12-03

はじめに

皆さんはエラーが発生した際にどのように原因を調査していますか?
STRDBGを使用してデバッグする事もあるかと思います。

しかし私自身、原因が曖昧なままSTRDBGを使用すると問題解決までに必要以上に時間を要することがあります。

この記事では、エラーが発生した際の基本的な原因の確認方法をご紹介します。

コンパイル時のエラー

コンパイルエラーの原因はスプールファイルを確認することで調査することが可能です。

  1. 「メッセージの要約」から MSG-ID とエラー内容を確認する。(画像1)
  2. MSG-ID を検索する。
  3. 問題となっているプログラム内の SEQ(行番号)とエラーの詳細を確認する。(画像2)

(画像1)
errorCauseInvestigation_01.png

(画像2)
errorCauseInvestigation_02.png

上記の手順により、プログラム内でエラーとなっている箇所を調査することが可能です。

プログラム実行中のエラー

プログラム実行中にエラーが発生した際は ① スプールファイル、② プログラムメッセージ、又は ③ メッセージ識別コードから調査することが可能です。

① スプールファイル

エラーのプログラムメッセージが表示された際の応答に「D:RPG 定様式ダンプの取得」を選択することで、エラー発生時にフィールドに何がセットされていたかを調査することができます。
例として(画像3)の場合、数字型である W#INT002 に文字型がセットされているため、W#INT002 に値をセットするロジックに問題があることが分かります。

(画像3)
errorCauseInvestigation_03.png

② プログラムメッセージ

エラーメッセージは、(画像4)のようにコンパイルした際のスプールファイルに対するステートメント番号(行番号)を表示しています。(※プログラム内の行番号を表示することも可能です。)
このステートメント番号からプログラム内でエラーとなっている箇所を調査することが可能です。

(画像4)
errorCauseInvestigation_04.png

③ メッセージ識別コード

コマンドDSPMSGDのパラメーターであるメッセージ ID の下限値にエラーメッセージに表示されているメッセージ識別コードを指定し、実行することで表示されているメッセージ自体の詳細を知ることが可能です。(画像5)

この方法は見当がつかないエラーに対処する際、解決への手掛かりとなる場合があります。

(画像5)
errorCauseInvestigation_05.png

おわりに

IBM i は様々な方法でエラーの原因を調査することができます。

ご参考になれば幸いです。最後までお読み頂きありがとうございます。

関連した投稿

エラーが発生したときにプログラムの SEQ(行番号)を表示する方法

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?