10代と話して驚いたこと

Oracle8i、ProCOBOL でソフト開発中の者です。

ProCOBOLで SELECT文で読み込んだ項目が NULL かどうか
を判定する方法がわからず困ってます。

SymfoWareServer の時は、次の様にしてやりました。

01 ID01 PIC S9(04) BINARY. *>INDICATOR
  ・・・・・
  ・・・・・
EXEC SQL
SELECT ITEM01
INTO :ABC.ITEM01 :ID01
FROM ABC
END-EXEC.

IF ID01 = -1
・・・・NULL ・・・
END-IF.

SELECT文を実行した後で ID01 の内容を聞けば
その項目が NULL かどうか判定できたんです。

Oracle+ProCOBOLの場合はどうするのかご存じの方
おりましたらお教え下さい。

A 回答 (1件)

標識変数(9iではインジケータ変数になってます)を使います。



標識変数が-1の時、値はNULLです。
標識変数は、PIC S9(4) COMP として明示的に宣言します。

01 EMP-NAME PIC X(10) VALUE SPACE.
01 SALARY PIC S9(5)V99 COMP-3.
01 COMMISSION PIC S9(5)V99 COMP-3.
01 COMM-IND PIC S9(4) COMP.

...
EXEC SQL SELECT SAL, COMM
INTO :SALARY, :COMMISSION:COMM-IND FROM EMP
WHERE EMPNO = :EMP-NUMBER
END-EXEC.
IF COMM-IND = -1
COMPUTE PAY = SALARY
ELSE
COMPUTE PAY = SALARY + COMMISSION.

詳細は、Oracle8i 8.1.7 Pro*COBOLプリコンパイラ・プログラマーズガイド P4-22から書いてありますのでOTNからダウンロードしてください(ユーザー登録すればマニュアルは無償で入手できますので)

参考URL:http://otn.oracle.co.jp/document/products/oracle …
    • good
    • 0
この回答へのお礼

ありがとうございました。
大変参考になりました。
参考URLも行ってみます。

お礼日時:2004/02/12 22:23

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


おすすめ情報