ページの先頭行へ戻る
Symfoware Server V10.0.0 トラブルシューティング集

8.2.1 CまたはCOBOLで開発する

CまたはCOBOLで開発する場合によくある質問と、その回答について説明します。

クライアントパソコン上でCまたはCOBOLの埋込みSQLプログラムを開発する場合に必要となるソフトウェアは?

参照

必要なソフトウェアについては、“インストールガイド(クライアント編)”の“関連ソフトウェア”を参照してください。

COBOLで利用可能なグループ化項目は、SQL文の出力変数として利用可能か?

【質問】

COBOLで利用可能なグループ化項目を、SQL文の出力変数として利用できますか。基本的には、FETCH処理で利用します。
またグループ化項目群にOCCURS句やREDEFINEが含まれていても問題ないですか。

グループ化項目例          ・・・(1)グループ化項目定義
01 G1-G
05 ITEM1 PICX(1)
05 ITEM2 PICX(1)
05 ITEM3 PICX(1)
05 ITEM4 PICX(1)
05 ITEM5 PICX(1)
SQL文                     ・・・(2)グループ化項目全体を使用
EXEC SQL
SELECT KOUMOKU_1, KOUMOKU_2, KOUMOKU_3, KOUMOKU_4, KOUMOKU_5
INTO:G1-G
END EXEC
SQL文                     ・・・(3)グループ化項目の一部を使用
EXEC SQL
SELECT KOUOKU_1, KOUMOKU_2, KOUMOKU_5
INTO:ITEM1, :ITEM2, :ITEM5
END EXEC.
【回答】

(1)、(2)の使い方で問題ありません。
(3)のようにグループ化項目の一部を代入先に指定する場合は、“グループ化項目名.メンバ名”のように、間をピリオドでつないで指定します。

具体的には以下のように記述します。

    SQL文                     ・・・(3)グループ化項目の一部を使用
    EXEC SQL
    SELECT KOUOKU_1, KOUMOKU_2, KOUMOKU_5
    INTO :G1-G.ITEM1, :G1-G.ITEM2, :G1-G.ITEM5
    END EXEC.

また、OCCURS句については問題なく使用できますが、REDEFINEは使用できません。

参照

詳細は、“アプリケーション開発ガイド(埋込みSQL編)”の“集団項目ホスト変数の記述方法”を参照してください。
また、関連する質問として下記の“Symfoware Serverでは構造体(集団項目)にデータを格納できるか?”があります。必要に応じて参照してください。

Symfoware Server構造体(集団項目にデータを格納できか?

質問

Symfoware Serverで構造体(集団項目)格納はできますか。
たとえば、以下のように“INSERT A B C D”ではなく“INSERT α”として処理を行いたいのですが。

【回答】

COBOLプログラムの場合には可能です。
COBOLプログラムでは、集団項目ホスト変数を使用できます。

参照

使い方の詳細については、“アプリケーション開発ガイド(埋込みSQL編)”の“集団項目ホスト変数の記述方法”、および“SQLリファレンス”の“INSERT文”、“SQL埋込みCOBOLプログラム”を参照してください。
また、関連する質問として上記の“COBOLで利用可能なグループ化項目は、SQL文の出力変数として利用可能か?”があります。必要に応じて参照してください。