2

このSQLは問題ないようですが、コンパイル中にエラーが発生しました..

SELECT COUNT(*)
INTO :W9-TOT-TRXN
FROM IRC02
WHERE SUBSTR(P9_IRC_PST_DT,1,6) = :Ws-DATE-YM
AND F9_IRC_FI = :W9-FI-PARAM
AND P9_IRC_PRIN_CRN = :F9-IR025-CRN
AND F9_IRC_LOC_ACCT = :F9-IR025-LOC-ACCT

以下のようなエラーメッセージ:

ファイル RCCO.cbl の行 757、列 60 のエラー

                    WHERE SUBSTR(P9_IRC_PST_DT,1,6) = :Ws-DATE-YM

PCB-S-00204、グループ項目は INTO または VALUES 句以外では使用できません

01 Ws-DATE-YMD.
03 Ws-DATE-YM.
   05 W9-DATE-YY      PIC 9(04) VALUE ZEROES.
   05 W9-DATE-MM      PIC 9(02) VALUE ZEROES.
03 W9-DATE-DD         PIC 9(02) VALUE ZEROES.

何か案が ?ありがとう :)

4

2 に答える 2

2

REDEFINESを使用して、MOVEステートメントの追加を回避することもできます。

03 Ws-DATE-YM.
   05 W9-DATE-YY      PIC 9(04) VALUE ZEROES.
   05 W9-DATE-MM      PIC 9(02) VALUE ZEROES.
03 Wx-DT-YM PIC 9(6) REDEFINES Ws-DATE-YM.
于 2012-09-17T21:47:57.657 に答える
1

whereエラーが示すように、グループ項目はのホスト変数として使用できません。次のように、基本項目を個別に参照する必要があります。

SELECT COUNT(*)
INTO :W9-TOT-TRXN
FROM IRC02
WHERE SUBSTR(P9_IRC_PST_DT,1,4) = :Ws-DATE-YM.W9-DATE-YY
AND SUBSTR(P9_IRC_PST_DT,5,2) = :Ws-DATE-YM.W9-DATE-MM
AND F9_IRC_FI = :W9-FI-PARAM
AND P9_IRC_PRIN_CRN = :F9-IR025-CRN
AND F9_IRC_LOC_ACCT = :F9-IR025-LOC-ACCT

または、よりパフォーマンスが高いかもしれません:

WHERE SUBSTR(P9_IRC_PST_DT,1,6) = :Ws-DATE-YM.W9-DATE-YY || :Ws-DATE-YM.W9-DATE-MM

私は経験からではなくドキュメントから行っていますが、これは完全にテストされていません。Ws-DATE-YMDまた、両方の部分の前に親を含める必要があるかどうか、または 1 つのレベルで満足できるかどうかもわかりません。

于 2012-09-12T08:19:49.607 に答える