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

COBOLプログラムから呼び出され、ファイルのレコードを一行読んでレコードの内容を返すというcサブルーチンを作っているのですが、COBOL←→c間でのインタフェースの扱いかたがよくわからなくて困っています。(ちなみにこのモジュールはcからも呼ばれる事がある)
COBOLはコピー句(test001.cbl, test002.cbl)に値を入れて、cサブルーチンにそれを渡しています。
テストはCOBOL85を使用してるので、cサブルーチンの中のデータを見ることができません。なので、返ってくるコピー句の中身を見るのですが、とにかく値が設定されてかえってこないのです。ただ単にロジックのバグと言う可能性もあるけど(^^;

私はインタフェース環境の事がまだ良く解っていないので、今回こちらに質問した次第です。経験者の方がいましたら、どうかおしえてください。

あ、それからCOBOLから渡される値は、c側では全てchar型で受け取らなければいけないような話しを聞いたのですが、本当でしょうか?

もう一つ。
コピー句の中で「F-CODE PIC X(2)」のようにハイフンがあるのですが、cではハイフンが使えないからダメなんでしょうか?

たくさん質問してしまいましたが、どうかよろしく。

/COBOL側/
--------------------------------------------------

CALL 'TEST1' USING BY VALUE TEST001 TEST002.

--------------------------------------------------

/cサブルーチン側/
--------------------------------------------------
int TEST1(test001, test002)

char *test001;
char *test002;
{
    ・
    ・
    ・
return (0);
}
--------------------------------------------------

A 回答 (2件)

「マニュアルを読め」と言う No.1 の回答が本質だとは思いますが、想像できる範囲で。



> 返ってくるコピー句の中身を見るのですが、とにかく値が設定されてかえってこない

引数で指定した変数の内容を、C の関数で設定して、それを COBOL 側で参照したい、
ということですよね。であれば、

> CALL 'TEST1' USING BY VALUE TEST001 TEST002.

CALL 'TEST1' USING BY REFERENCE TEST001 TEST002.

ということだと思いますよ。詳細は、マニュアルの CALL 文のところを読むと
わかる(かもしれない)でしょう。


> COBOLから渡される値は、c側では全てchar型で受け取らなければいけない

その言い方は正確ではないですが、だいたいの場合に当てはまるはずです。
C には、変数に対する桁数の指定、という概念がありません。

USAGE 句で BINARY とか指定した変数は、C 側では short で受取れるはずです。


> コピー句の中で「F-CODE PIC X(2)」のようにハイフンがあるのですが、cではハイフンが使えないからダメなんでしょうか?

仮引数と実引数の変数名は一致している必要はありません。呼び側と受け側で一致
している必要があるのは、その型と順序です。


# 実は、COBOL をやった事がありません (^^;
# 仕事で COBOL のソースを読むはめになりそうなので、自分の勉強に利用させて
# もらいます。「専門家」のチェックは「計算機屋」だ、という意味でチェックしました。
    • good
    • 0
この回答へのお礼

ありがとうございます。
とても参考になりました。
計算機屋も大変でね。(^^;
作る人にもよりますが、他人の書いたソースはわかりずらいですよね。(笑
がんばってください。

お礼日時:2001/10/23 13:22

言語間インタフェースは規格化されていないケースがほとんどだと思いますし、


仮に規格化されていても、お使いの言語処理系がそれに準拠しているとも
限りませんから、まずはお使いの言語処理システムのマニュアルを参照された
方がよいと思います。その上で、なお分からないということでしたら、お使いの
環境(OS・言語処理ソフト等)を示した上で質問されれば、あるいは知っている
人がいるかもしれません。
    • good
    • 0
この回答へのお礼

聞く前にまず自分で調べるのは当然ですよね。(^^;
今回は、切羽詰っていたので皆さんに頼ってしまいました。
でも、こちらのサイトは本当に頼りになります。
アドバイスありがとうございます。

お礼日時:2001/10/23 13:16

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