アプリ版:「スタンプのみでお礼する」機能のリリースについて

プログラミングでコンパイルエラーがでて困っています。
問題があったら 指摘していただきたいです。

IF文の条件に合致したときは上のSELECT文
合致しなかったときは下のSELECT文を実行するプログラム

コンパイルエラーの内容 条件中のオペランドに誤りがあります。
               IF文の書き方が不完全です。
:VSL.MECIDENPYO_NO は定義がなされているものとします

IF  :VSL.MECIDENPYO_NO NOT = SPACE
EXEC SQL
SELECT  抽出したい項目1,
 抽出したい項目2,
抽出したい項目3,
抽出したい項目4        
   *
FROM テーブル名
*
WHERE
条件1
AND 条件2
AND 条件3
  END-EXEC
ELSE
EXEC SQL
    SELECT   抽出したい項目1,
 抽出したい項目2,
抽出したい項目3,
抽出したい項目4        
   *
FROM テーブル名
WHERE
条件1
AND 条件2
END-EXEC
  END-IF

A 回答 (5件)

COBOLもEND-IFを使うならTHENが必要だったはず。


if ・・・ then
EXEC SQL ・・・END-EXEC
else
EXEC SQL ・・・END-EXEC
end if

また、data divisionに
:VSL.MECIDENPYO_NO
が定義されていない。
というより、:を含む項目名は定義できないので別の項目名にする必要がありますけれど。
(以上は一般的なCOBOLの文法のはず。といってもCOBOL85くらいまでしか知りませんが。)
    • good
    • 0
この回答へのお礼

.ありがとうございます。無事コンパイルが通りました!!

お礼日時:2011/10/11 11:25

データベースとCOBOLのコンパイラの組み合わせにもよりますが、


たいていは、:で始まる変数を記述できるのはEXEC-SQLからEND-EXECの間だけなのです。
EXEC-SQLからEND-EXECの外では:始まりの変数は使えないので、
>IF  :VSL.MECIDENPYO_NO NOT = SPACE
ではなく
IF  VSL.MECIDENPYO_NO NOT = SPACE
としてみてください。
    • good
    • 0
この回答へのお礼

ありがとうございます。無事コンパイルが通りました!!

お礼日時:2011/10/11 11:24

IF  :VSL.MECIDENPYO_NO NOT = SPACE



IF  :VSL.  に . が有るので

IF分がここで終わっていると判断されていると思われます。

変数名を変更するとOKでしょう
    • good
    • 0
この回答へのお礼

.ありがとうございます。無事コンパイルが通りました!!
..

お礼日時:2011/10/11 11:25

IFの後のはプログラムで定義しているデータ項目なんですよね?


「:」がついてるのはなぜでしょう?
SQL文の中ではホスト変数につけますけど、こういう使い方はみたことがないような…
    • good
    • 0
この回答へのお礼

.ありがとうございます。無事コンパイルが通りました!!
..

お礼日時:2011/10/11 11:26

「項目」や「条件」と置き換わっていたり半角スペースや全角スペースが混じっていたりで、正確にどこが悪いのか判断が付きません。



どのコンパイラにも言えることですが、エラー内容はコンパイル時に問題が起きた箇所であって、それが問題の原因の箇所とは限りません。どこが間違っているか分からない場合は問題の切り分けをしてみましょう。

まずはIF文が正しいかを判断してみてください。

IF :VSL.MECIDENPYO_NO NOT = SPACE
ELSE
END-IF

のようにIF文のみにしてコンパイルしてみてください。
エラーがでなければIF文ではなく中身のSELECT文がおかしいことになります。

IF文のみでのコンパイルが通った場合は、そのIF文を一旦コメントアウトしておいて、TRUEだった場合の処理、FALSEだった場合の処理だけでそれぞれコンパイルしてみます。エラーになった箇所がありましたら、その部分を修正してIF文として組み立てなおしてください。
    • good
    • 0
この回答へのお礼

.ありがとうございます。無事コンパイルが通りました!!
..

お礼日時:2011/10/11 11:27

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!