• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:COBOL プログラミング)

COBOLプログラミングでコンパイルエラーが発生!解決方法を教えてください

このQ&Aのポイント
  • COBOLプログラミングでコンパイルエラーが発生し、困っています。具体的にはIF文の条件に誤りがあり、書き方が不完全です。また、SELECT文の実行方法にも問題があります。正しい書き方や解決方法を教えていただきたいです。
  • COBOLプログラミングにおいて、コンパイルエラーが発生しました。エラーの内容は、IF文の条件中のオペランドに誤りがあるというものです。また、IF文の書き方が不完全であることも指摘されています。詳細な問題点や解決策を教えてください。
  • COBOLプログラミングでのコンパイルエラーに困っています。具体的には、IF文の条件に誤りがあり、書き方が不完全であるという問題があります。また、SELECT文の実行方法にも問題があります。正しい書き方や解決方法を教えていただけると助かります。

質問者が選んだベストアンサー

  • ベストアンサー
  • Siegrune
  • ベストアンサー率35% (316/895)
回答No.3

COBOLもEND-IFを使うならTHENが必要だったはず。 if ・・・ then EXEC SQL ・・・END-EXEC else EXEC SQL ・・・END-EXEC end if また、data divisionに :VSL.MECIDENPYO_NO が定義されていない。 というより、:を含む項目名は定義できないので別の項目名にする必要がありますけれど。 (以上は一般的なCOBOLの文法のはず。といってもCOBOL85くらいまでしか知りませんが。)

noname#179158
質問者

お礼

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

その他の回答 (4)

  • SaKaKashi
  • ベストアンサー率24% (755/3136)
回答No.5

データベースとCOBOLのコンパイラの組み合わせにもよりますが、 たいていは、:で始まる変数を記述できるのはEXEC-SQLからEND-EXECの間だけなのです。 EXEC-SQLからEND-EXECの外では:始まりの変数は使えないので、 >IF  :VSL.MECIDENPYO_NO NOT = SPACE ではなく IF  VSL.MECIDENPYO_NO NOT = SPACE としてみてください。

noname#179158
質問者

お礼

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

  • ricman
  • ベストアンサー率58% (10/17)
回答No.4

IF  :VSL.MECIDENPYO_NO NOT = SPACE IF  :VSL.  に . が有るので IF分がここで終わっていると判断されていると思われます。 変数名を変更するとOKでしょう

noname#179158
質問者

お礼

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

回答No.2

IFの後のはプログラムで定義しているデータ項目なんですよね? 「:」がついてるのはなぜでしょう? SQL文の中ではホスト変数につけますけど、こういう使い方はみたことがないような…

noname#179158
質問者

お礼

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

  • tunamelt
  • ベストアンサー率75% (9/12)
回答No.1

「項目」や「条件」と置き換わっていたり半角スペースや全角スペースが混じっていたりで、正確にどこが悪いのか判断が付きません。 どのコンパイラにも言えることですが、エラー内容はコンパイル時に問題が起きた箇所であって、それが問題の原因の箇所とは限りません。どこが間違っているか分からない場合は問題の切り分けをしてみましょう。 まずはIF文が正しいかを判断してみてください。 IF :VSL.MECIDENPYO_NO NOT = SPACE ELSE END-IF のようにIF文のみにしてコンパイルしてみてください。 エラーがでなければIF文ではなく中身のSELECT文がおかしいことになります。 IF文のみでのコンパイルが通った場合は、そのIF文を一旦コメントアウトしておいて、TRUEだった場合の処理、FALSEだった場合の処理だけでそれぞれコンパイルしてみます。エラーになった箇所がありましたら、その部分を修正してIF文として組み立てなおしてください。

noname#179158
質問者

お礼

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